Remove SDNR seed code 61/71461/2
authorTimoney, Dan (dt5972) <dtimoney@att.com>
Tue, 30 Oct 2018 13:39:59 +0000 (09:39 -0400)
committerTimoney, Dan (dt5972) <dtimoney@att.com>
Tue, 30 Oct 2018 19:59:04 +0000 (15:59 -0400)
Remove SDNR seed code to resolve license issues.  Code is not currently
used, so it will be removed for now and a cleaned version resubmitted
for Dublin release.

Change-Id: I37ca0feb458012626bf448739ff2497679fcb357
Issue-ID: CCSDK-641
Signed-off-by: Timoney, Dan (dt5972) <dtimoney@att.com>
764 files changed:
ms/vlantag-api/pom.xml
sdnr/README.md [deleted file]
sdnr/model/README.md [deleted file]
sdnr/model/yang/README.md [deleted file]
sdnr/model/yang/bbf-tr-196-2-0-3-full@2018-04-08.yang [deleted file]
sdnr/model/yang/core-model@2017-03-20.yang [deleted file]
sdnr/model/yang/g.874.1-model@2017-03-20.yang [deleted file]
sdnr/model/yang/ietf-inet-types@2010-09-24.yang [deleted file]
sdnr/model/yang/ietf-inet-types@2013-07-15.yang [deleted file]
sdnr/model/yang/ietf-netconf-acm@2012-02-22.yang [deleted file]
sdnr/model/yang/ietf-netconf-monitoring@2010-10-04.yang [deleted file]
sdnr/model/yang/ietf-netconf-partial-lock@2009-10-19.yang [deleted file]
sdnr/model/yang/ietf-netconf-with-defaults@2011-06-01.yang [deleted file]
sdnr/model/yang/ietf-netconf@2011-06-01.yang [deleted file]
sdnr/model/yang/ietf-ptp-dataset@2017-02-08.yang [deleted file]
sdnr/model/yang/ietf-restconf@2013-10-19.yang [deleted file]
sdnr/model/yang/ietf-system@2014-08-06.yang [deleted file]
sdnr/model/yang/ietf-yang-library@2016-04-09.yang [deleted file]
sdnr/model/yang/ietf-yang-types@2013-07-15.yang [deleted file]
sdnr/model/yang/ltp-path@2017-05-26.yang [deleted file]
sdnr/model/yang/microwave-model@2017-03-24.yang [deleted file]
sdnr/model/yang/nc-notifications@2008-07-14.yang [deleted file]
sdnr/model/yang/notifications@2008-07-14.yang [deleted file]
sdnr/model/yang/notifications@2018-05-30.yang [deleted file]
sdnr/model/yang/onf-core-model-conditional-packages@2017-04-02.yang [deleted file]
sdnr/model/yang/onf-core-model-conditional-packages@2018-04-08.yang [deleted file]
sdnr/model/yang/onf-ethernet-conditional-packages@2017-04-02.yang [deleted file]
sdnr/model/yang/onf-otn-odu-conditional-packages@2017-10-20.yang [deleted file]
sdnr/model/yang/onf-ptp-dataset@2017-05-08.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/README.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/features/.gitignore [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/features/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/features/src/main/features/features.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/AaiServlet.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/EsServlet.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/MSServlet.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/MyProperties.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/test/SimpleTests.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/test/resources/log4j.properties [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/commons/binding-parent/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/commons/config-parent/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/commons/configuration/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/README.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/api/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/api/src/main/java/org/opendaylight/mwtn/devicemanager/api/DeviceManagerService.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/api/src/main/yang/devicemanager-api.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/config/default-config.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/aaiConnector/impl/AaiProviderClient.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/aaiConnector/impl/AaiWebApiClient.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/EsObject.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDataBase.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDataBaseReaderAndWriter.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseClientAbstract.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseNode.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseUpdateFile.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseWebAPIClient.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtMapper.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/IndexClientBuilder.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/IsEsObject.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/JsonMapperBase.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/http/BaseHTTPClient.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/http/BaseHTTPResponse.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/Environment.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/FileWatchdog.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/IniConfigurationFile.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/InternalDateAndTime.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/InternalSeverity.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/InventoryInformation.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/Resources.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/TemplateFile.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/AllPm.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/Capabilities.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ExtendedAirInterfaceHistoricalPerformanceType.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ExtendedAirInterfaceHistoricalPerformanceType12.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/GenericTransactionUtils.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/InternGenericCurrentProblemType.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/LinkIdentifyingObject.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/NetconfTimeStamp.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreEmpty.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreInterfacePac.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElement10.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElement12.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElementBase.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElementFactory.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElementRepresentation.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFLayerProtocolName.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/AaiClientPropertiesFile.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/AaiConfig.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/AkkaConfig.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/BaseSubConfig.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/DcaeConfig.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/EsConfig.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/GeoConfig.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/HtDevicemanagerConfiguration.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/HtLogger.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/PmConfig.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeMessages.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeProviderClient.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeProviderTask.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeSender.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeSenderImpl.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/test/DcaePrivateTester.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/test/DcaeTestClient.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/test/HttpsClient.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/Checker.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitor.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorImpl.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorProblems.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorSupport.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorTask.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/DeviceManagerImpl.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/ProviderClient.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/service/HtDatabaseEventsService.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsEventBase.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsFaultCurrent.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsFaultLog.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsVersionInfo.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/MicrowaveEventListener.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/MicrowaveEventListener12.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/NetconfChangeListener.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/ODLEventListener.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/AttributeValueChangedNotificationXml.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/GetEventType.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/MwtNotificationBase.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/ObjectCreationNotificationXml.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/ObjectDeletionNotificationXml.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/ProblemNotificationXml.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/WebSocketServiceClient.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/XmlMapper.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/index/impl/IndexConfigService.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/index/impl/IndexMwtnService.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/index/impl/IndexUpdateService.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/PerformanceManagerImpl.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/PerformanceManagerTask.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/service/MicrowaveHistoricalPerformanceWriterService.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformance15Minutes.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformance24Hours.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformanceBase.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformanceLogEntry.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsPerformanceData10.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsPerformanceData12.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/GeoLocation.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/LogicalTerminationPoint.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/Path.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/PtpManagerImpl.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/devicemanager/impl/rev170317/DeviceManagerImplModule.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/devicemanager/impl/rev170317/DeviceManagerImplModuleFactory.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/aots/addreq.tmpl.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/aots/inqreq.tmpl.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/elasticsearch.yml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/config/opendaylight.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/CoreModel-ForMicrowave.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/G.874.1-ForMicrowave.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel-ObjectClasses-AirInterface.yin.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel-ObjectClasses-EthernetContainer.yin.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel-ObjectClasses-PureEthernetStructure.yin.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/core-model.schema-information.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/g.874.1-model.schema-information.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/microwave-model.schema-information.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/microwave-model.yin.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-core-model-conditional-packages.schema-information.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-core-model-conditional-packages.yin.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-ethernet-conditional-packages.schema-information.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-ethernet-conditional-packages.yin.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-ptp-dataset.schema-information.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/otn-odu-conditional-packages.yin.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/mwtnMapping.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/mwtnV1Alias.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/sdnevents/sdneventsMapping.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/sdnperformance/sdnperformanceMapping.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/plugins/delete-by-query.zip [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/plugins/head.zip [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/bbf-tr-196-2-0-3-full@2018-04-08.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/core-model@2017-03-20.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/g.874.1-model@2017-03-20.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-inet-types@2010-09-24.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-inet-types@2013-07-15.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-acm@2012-02-22.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-monitoring@2010-10-04.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-partial-lock@2009-10-19.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-with-defaults@2011-06-01.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf@2011-06-01.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-ptp-dataset@2017-02-08.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-restconf@2013-10-19.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-system@2014-08-06.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-yang-library@2016-04-09.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-yang-types@2013-07-15.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/microwave-model@2017-03-24.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/nc-notifications@2008-07-14.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/notifications@2008-07-14.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/notifications@2018-05-30.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-core-model-conditional-packages@2017-04-02.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-core-model-conditional-packages@2018-04-08.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-ethernet-conditional-packages@2017-04-02.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-otn-odu-conditional-packages@2017-10-20.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-ptp-dataset@2017-05-08.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/version.properties [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/AaiTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/AkkaConfigTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/ConfigTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/ESWebAPITest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/GeoConfigTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/ResTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/TestFileChangeNotification.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/org/opendaylight/mwtn/base/database/DBPluginExtractTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/yang/devicemanager-impl.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreFoundationModule-StateModel@2016-08-09.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages@2016-07-10.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreFoundationModule-TypeDefinitions@2016-07-01.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreNetworkModule-ObjectClasses@2016-08-11.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreNetworkModule-TypeDefinitions@2016-07-10.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Data_Types@2016-07-10.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Information_Object_Classes-Q_822@2016-08-11.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Information_Object_Classes-X_721@2016-07-10.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Information_Object_Classes-X_739@2016-07-10.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Object_Classes@2016-07-10.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Type_Definitions@2016-07-10.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-NetworkElement-CurrentProblemList@2016-11-20.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-Notifications@2016-08-09.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-AirInterface@2016-09-01.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-AirInterfaceDiversity@2016-09-02.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-EthernetContainer@2016-09-02.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-HybridMwStructure@2016-09-02.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-PureEthernetStructure@2016-09-02.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-SuperClasses@2016-08-09.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-TdmContainer@2016-09-02.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-TypeDefinitions@2016-09-02.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/NetworkElement@2016-02-03.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/bbf-tr-196-2-0-3-full@2018-04-08.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/core-model@2017-03-20.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/g.874.1-model@2017-03-20.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/ietf-ptp-dataset@2017-02-08.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/ltp-path@2017-05-26.yang.wronghere [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/microwave-model@2017-03-24.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-core-model-conditional-packages@2017-04-02.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-core-model-conditional-packages@2018-04-08.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-ethernet-conditional-packages@2017-04-02.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-otn-odu-conditional-packages@2017-10-20.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-ptp-dataset@2017-05-08.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/.gitignore [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/.gitreview [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/LICENSE [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/README.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/distribution-karaf-0.6.1-Carbon.dluxloader.tar.gz [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/.bowerrc [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/Gruntfile.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/README.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json.1.6.5 [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json.1.6.5.2 [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json.orig [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/build.config.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/clean [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/config/development.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/config/env.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/config/production.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/karma/karma-unit.tpl.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/module.prefix [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/module.suffix [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/optimize.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/package.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/README.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/LICENSE [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/README.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/app.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/app.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/core/core.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/core/core.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/core/core.spec.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/routingConfig.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/LICENSE [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/README.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/authentification/auth.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/authentification/auth.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/authentification/auth.spec.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/config/env.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.directives.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.filters.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.navigation.directives.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.navigation.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/finishRender.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/layout/index.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/layout/layout.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/forgot_password.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.less [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.spec.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/register.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/nav_item_template.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation-min.less [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.less [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.spec.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/messages.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/notifications.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/tasks.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.directives.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.less [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/user_menu.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/index.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/design.less [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/main.less [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/mixins.less [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/other.less [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/variables.less [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/main.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/test-main.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/README.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/java/org/opendaylight/dlux/loader/exception/DluxLoaderException.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/java/org/opendaylight/dlux/loader/implementation/DluxLoader.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/java/org/opendaylight/dlux/loader/implementation/DluxLoaderIndexServlet.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/resources/CommonAppModules.properties [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/test/java/org/opendaylight/dlux/loader/DluxLoaderIndexServletTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/features/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/features/src/main/features/features.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/HelpServlet.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/data/Environment.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/data/ExtactBundleResource.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/data/HelpInfrastructureObject.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/resources/.gitignore [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/test/SimpleTests.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/test/resources/log4j.properties [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/features/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/features/src/main/features/features.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/java/com/highstreet/technologies/info/InfoServlet.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/java/com/highstreet/technologies/info/KarafBundle.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/java/com/highstreet/technologies/info/KarafBundleList.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/css/bootstrap.min.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/css/bootstrap.min.css.map [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/index.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/app.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/bootstrap.min.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/bootstrap.min.js.map [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/jquery-3.3.1.min.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/popper.min.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/test/SimpleTests.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/test/java/BundleListTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/test/java/CompressionTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/test/resources/log4j.properties [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/info/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/src/main/yang/ltp-path@2017-05-26.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/src/main/yang/route.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/src/main/yang/threshold@2017-06-15.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/features/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/features/src/main/features/features.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/PathHolder.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/RouteProvider.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/RouteRPC.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/FC.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/LtpInOdlCreator.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/Path.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/PathDelegate.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/PredefinePath.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/listener/ACMListener.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/BandwidthCalculator.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/DataBrokerHolder.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/FC2Executor.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/JsonUtil.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/MountPointServiceHolder.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/NeExecutor.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/RPCHolder.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/Unit.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/resources/topology.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/test/java/org/opendaylight/route/TestBandwidthCalculator.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/test/java/org/opendaylight/route/TestJson.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/route/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/api/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/api/src/main/yang/websocketmanager.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/config/default-config.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/WebsocketImpl.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/WebsocketmanagerProvider.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/dto/UserDto.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/utils/AkkaConfig.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/utils/Utils.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/websocket/SyncWebSocketClient.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/websocket/WebSocketServerHandler.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/websocket/WebSocketServerInitializer.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/websocketmanager/impl/rev141210/WebsocketmanagerModule.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/websocketmanager/impl/rev141210/WebsocketmanagerModuleFactory.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/test/AkkaConfigTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/test/WebsocketClientTest.java [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/yang/websocketmanager-impl.yang [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/docs/README2CreateApp4Carbon.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/docs/README2CreateTarBundle.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment_1_eclipseinst.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment_2_secureStore.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/docs/READMEMigrateBoronSR1-2-SR3.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/docs/READMEOperateAndDebugODL.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/docs/dist.conf [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/docs/installServiceExample.sh [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/docs/software_architecture.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/features/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/features/src/main/features/features.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/odl [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/images/ethService.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/features/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/features/src/main/features/features.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.controller.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.module.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.service.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.tree.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.tree.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.utilities.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/images/help.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/lib/marked.d.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/lib/marked.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/help/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/images/mwtnBrowser.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/images/mwtnConfig.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/frame.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/mwtnPtpClockViewer.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/mwtnPtpPorts.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/ptpDefaultDsConfigView.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/ptpPortConfigView.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/images/mwtnClosedLoop.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/README.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/bower.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/bowerInstall.sh [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/bower_components_patches/angular-chart.js.patch [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/locale/locale-en_US.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnFooter.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnGrid.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnJsonViewer.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnSelectNetworkElement.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/openConfigView.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/showGridCellDetail.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/xml2json.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/images/mwtnCompare.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.directives.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/templates/compare.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/images/mwtnConnect.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/images/sdncConnect.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/addToRequired.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/confirmDelete.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/confirmHide.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/mountPointDetails.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/images/mwtnEvents.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/xml2json.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/images/mwtnFault.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.directives.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/templates/alarmStatus.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/templates/clearLogConfirmation.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipment.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipment.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipmentGroup.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipmentGroup.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/images/mwtnInventory.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/models/equipment.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.controller.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.module.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.service.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/templates/_ [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/templates/accordeonHeader.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/images/mwtnLog.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/templates/clearLogConfirmation.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/class.mediator.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/images/mwtnMediator.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/frame.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/mediatorCreateNew.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/mediatorDetails.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/mediatorServerConfigCtrl.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/images/mwtnPerformance.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/images/mwtnPerformance.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/images/mwtnPerformance.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/images/bluelight.gif [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/images/mwtnSpectrum.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/images/mwtnTdm.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/templates/frame.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/images/mwtnTest.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/templates/frame.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/doc/mwtnTopology.builinfo.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/doc/mwtnTopology.fs.md [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/images/mwtnTopology.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.rest [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/accordeonHeader.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/clocksGrid.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ethConnectionsGrid.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ethernetView.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/frame.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ieee1588View.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/linkDetails.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/links.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/linksGrid.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/maps.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/networkElementsGrid.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/nodes.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/physicalView.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/portsGrid.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ptpLinksGrid.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteDetails.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteGrid.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteLinkGrid.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/sitePathGrid.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteView.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/topology.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/logo_chat.gif [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/images/onapAai.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/images/onap-5g-architecture.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/images/onapDcae.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/images/onap-end-to-end-slicing.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/images/onapSo.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/images/otnBrowser.png [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser-custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.services.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-bundle/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/pom.xml [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/build.config.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/gulpfile.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/package.json [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.controller.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.controller.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.custom.css [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.module.js [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.module.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.service.ts [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.tpl.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/templates/userDetails.html [deleted file]
sdnr/wireless-transport/code-Carbon-SR1/ux/ux-dev.sh [deleted file]

index 1ba3cfc..61b11b2 100644 (file)
@@ -18,7 +18,6 @@
                <java.version>1.8</java.version>
                <springboot.version>2.0.4.RELEASE</springboot.version>
                <mariadb.connector.version>2.1.1</mariadb.connector.version>
-               <ccsdk.sli.adaptors.version>0.3.1-SNAPSHOT</ccsdk.sli.adaptors.version>
                <docker.registry>TBD:5100</docker.registry>
                <serviceArtifactName>vlantagapi</serviceArtifactName>
 
diff --git a/sdnr/README.md b/sdnr/README.md
deleted file mode 100644 (file)
index 31da937..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# CCSDK - apps - SDN-R
-
-This folder contains wireless SDN-Controller applications as part of CCSDK.
\ No newline at end of file
diff --git a/sdnr/model/README.md b/sdnr/model/README.md
deleted file mode 100644 (file)
index bc0e7be..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# CCSDK - apps - SDN-R - model
-
-This folder contains models, schema and API descritption used by SDN-R applications.
\ No newline at end of file
diff --git a/sdnr/model/yang/README.md b/sdnr/model/yang/README.md
deleted file mode 100644 (file)
index 0b6525d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# CCSDK - apps - SDN-R - model - yang
-
-This folder contains yang modules used by CCSDK/SDN-R.
\ No newline at end of file
diff --git a/sdnr/model/yang/bbf-tr-196-2-0-3-full@2018-04-08.yang b/sdnr/model/yang/bbf-tr-196-2-0-3-full@2018-04-08.yang
deleted file mode 100644 (file)
index 4fe1b8d..0000000
+++ /dev/null
@@ -1,17233 +0,0 @@
-module bbf-tr-196-2-0-3-full {
-  namespace "urn:onf:otcc:wireless:yang:radio-access";
-  prefix ran;
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  organization
-    "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Project";
-  contact
-    "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-     WG List:  <mailto:wireless-transport@login.opennetworking.org>
-     WG Chair: Lyndon Ong         <mailto:lyong@ciena.com>
-     WG Chair: Giorgio Cazzaniga  <mailto:giorgio.cazzaniga@sm-optics.com>
-     Editors:  Ramakrishnan, Shanthakumar (Shanth) <Shanthakumar.Ramakrishnan@commscope.com>                    Martin Skorupski   <mailto:martin.skorupski@highstreet-technologies.com>";
-  description
-    "This module contains a collection of YANG definitions for managing radio access network (RAN) devices.";
-
-  revision 2018-04-08 {
-    description
-      "Initial version, used only for ONAP PoC 2018-06-25";
-    reference
-      "ONF TR ???: A YANG Data Model for Radio Access Networks.
-       BBF TR-196 2.0.3 full";
-  }
-
-  list fap-service {
-    key "alias";
-    uses fap-service-g;
-    container x-0005b9-lte {
-      uses x-0005b9-lte-g;
-    }
-    container capabilities {
-      uses capabilities-g;
-      description
-        "Container for object class FAPService.{i}.Capabilities.";
-      container capabilities-umts {
-        uses capabilities-umts-g;
-        description
-          "Container for object class FAPService.{i}.Capabilities.UMTS.";
-        container capabilities-umts-self-config {
-          uses capabilities-umts-self-config-g;
-          description
-            "Container for object class FAPService.{i}.Capabilities.UMTS.SelfConfig.";
-        }
-      }
-      container capabilities-lte {
-        uses capabilities-lte-g;
-        description
-          "Container for object class FAPService.{i}.Capabilities.LTE.";
-      }
-      container capabilities-cdma2000 {
-        uses capabilities-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.Capabilities.CDMA2000.";
-        container capabilities-cdma2000-one-x {
-          uses capabilities-cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.Capabilities.CDMA2000.OneX.";
-          container capabilities-cdma2000-one-x-self-config {
-            uses capabilities-cdma2000-one-x-self-config-g;
-            description
-              "Container for object class FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.";
-          }
-        }
-        container capabilities-cdma2000-hrpd {
-          uses capabilities-cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.Capabilities.CDMA2000.HRPD.";
-          container capabilities-cdma2000-hrpd-self-config {
-            uses capabilities-cdma2000-hrpd-self-config-g;
-            description
-              "Container for object class FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.";
-          }
-        }
-      }
-    }
-    container fap-control {
-      uses fap-control-g;
-      description
-        "Container for object class FAPService.{i}.FAPControl.";
-      container fap-control-umts {
-        uses fap-control-umts-g;
-        description
-          "Container for object class FAPService.{i}.FAPControl.UMTS.";
-        container fap-control-umts-self-config {
-          uses fap-control-umts-self-config-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.UMTS.SelfConfig.";
-        }
-        container fap-control-umts-gateway {
-          uses fap-control-umts-gateway-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.UMTS.Gateway.";
-        }
-      }
-      container fap-control-lte {
-        uses fap-control-lte-g;
-        description
-          "Container for object class FAPService.{i}.FAPControl.LTE.";
-        container fap-control-lte-gateway {
-          uses fap-control-lte-gateway-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.LTE.Gateway.";
-        }
-      }
-      container fap-control-cdma2000 {
-        uses fap-control-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.FAPControl.CDMA2000.";
-        container fap-control-cdma2000-time {
-          uses fap-control-cdma2000-time-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.Time.";
-        }
-        container fap-control-cdma2000-one-x {
-          uses fap-control-cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.";
-          container fap-control-cdma2000-one-x-active-handin-measurement {
-            uses fap-control-cdma2000-one-x-active-handin-measurement-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.";
-          }
-          container fap-control-cdma2000-one-x-self-config {
-            uses fap-control-cdma2000-one-x-self-config-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.";
-          }
-        }
-        container fap-control-cdma2000-gateway {
-          uses fap-control-cdma2000-gateway-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.Gateway.";
-        }
-        container fap-control-cdma2000-hrpd {
-          uses fap-control-cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.";
-          container fap-control-cdma2000-hrpd-self-config {
-            uses fap-control-cdma2000-hrpd-self-config-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.";
-          }
-          container fap-control-cdma2000-hrpd-a13 {
-            uses fap-control-cdma2000-hrpd-a13-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.";
-            list fap-control-cdma2000-hrpd-a13-color-code-to-uati104 {
-              key "color-code uati104";
-              uses fap-control-cdma2000-hrpd-a13-color-code-to-uati104-g;
-              description
-                "List of object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.";
-            }
-            list fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip {
-              key "a13-ip-address";
-              uses fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip-g;
-              description
-                "List of object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.";
-            }
-          }
-        }
-      }
-    }
-    container access-mgmt {
-      uses access-mgmt-g;
-      description
-        "Container for object class FAPService.{i}.AccessMgmt.";
-      container access-mgmt-umts {
-        uses access-mgmt-umts-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.UMTS.";
-        list access-mgmt-umts-member-detail {
-          key "imsi";
-          uses access-mgmt-umts-member-detail-g;
-          description
-            "List of object class FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.";
-        }
-        container access-mgmt-umts-local-ip-access {
-          uses access-mgmt-umts-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.";
-        }
-      }
-      container access-mgmt-lte {
-        uses access-mgmt-lte-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.LTE.";
-        container access-mgmt-lte-local-ip-access {
-          uses access-mgmt-lte-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.";
-        }
-      }
-      container access-mgmt-cdma2000 {
-        uses access-mgmt-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.";
-        list access-mgmt-cdma2000-member-detail {
-          key "imsi";
-          uses access-mgmt-cdma2000-member-detail-g;
-          description
-            "List of object class FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.";
-        }
-        container access-mgmt-cdma2000-local-ip-access {
-          uses access-mgmt-cdma2000-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.";
-          container access-mgmt-cdma2000-local-ip-access-hrpd {
-            uses access-mgmt-cdma2000-local-ip-access-hrpd-g;
-            description
-              "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.";
-            list access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter {
-              key "subnet subnet-mask";
-              uses access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter-g;
-              description
-                "List of object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.";
-            }
-          }
-        }
-      }
-      container access-mgmt-legacy {
-        uses access-mgmt-legacy-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.Legacy.";
-        container access-mgmt-legacy-local-ip-access {
-          uses access-mgmt-legacy-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.";
-          list access-mgmt-legacy-local-ip-access-rule {
-            key "dest-ip-address dest-subnet-mask protocol";
-            uses access-mgmt-legacy-local-ip-access-rule-g;
-            description
-              "List of object class FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.";
-          }
-        }
-      }
-    }
-    container cell-config {
-      uses cell-config-g;
-      description
-        "Container for object class FAPService.{i}.CellConfig.";
-      container umts {
-        uses umts-g;
-        description
-          "Container for object class FAPService.{i}.CellConfig.UMTS.";
-        container umts-cn {
-          uses umts-cn-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.UMTS.CN.";
-          container umts-cn-cs-domain {
-            uses umts-cn-cs-domain-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.CN.CSDomain.";
-          }
-          container umts-cn-ps-domain {
-            uses umts-cn-ps-domain-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.CN.PSDomain.";
-          }
-        }
-        container umts-ran {
-          uses umts-ran-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.";
-          container umts-ran-csg {
-            uses umts-ran-csg-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CSG.";
-            container umts-ran-csg-csgpsc-split-info {
-              uses umts-ran-csg-csgpsc-split-info-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.";
-            }
-          }
-          container umts-ran-cell-selection {
-            uses umts-ran-cell-selection-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.";
-          }
-          container umts-ran-rrc-timers {
-            uses umts-ran-rrc-timers-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.";
-          }
-          container umts-ran-drx {
-            uses umts-ran-drx-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.DRX.";
-          }
-          container umts-ran-power-control {
-            uses umts-ran-power-control-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.";
-          }
-          container umts-ran-cell-restriction {
-            uses umts-ran-cell-restriction-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.";
-          }
-          container umts-ran-intra-freq-meas {
-            uses umts-ran-intra-freq-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.";
-            list umts-ran-intra-freq-meas-instance {
-              key "intra-frequency-event-identity";
-              uses umts-ran-intra-freq-meas-instance-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.";
-            }
-          }
-          container umts-ran-inter-freq-meas {
-            uses umts-ran-inter-freq-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.";
-            list umts-ran-inter-freq-meas-instance {
-              key "intra-frequency-event-identity";
-              uses umts-ran-inter-freq-meas-instance-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.";
-            }
-          }
-          container umts-ran-inter-rat-meas {
-            uses umts-ran-inter-rat-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.";
-            list umts-ran-inter-rat-meas-instance {
-              key "inter-rat-event-identity";
-              uses umts-ran-inter-rat-meas-instance-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.";
-            }
-          }
-          container umts-ran-ue-internal-meas {
-            uses umts-ran-ue-internal-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.";
-          }
-          container umts-ran-rf {
-            uses umts-ran-rf-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.RF.";
-          }
-          container umts-ran-neighbor-list {
-            uses umts-ran-neighbor-list-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.";
-            list umts-ran-neighbor-list-intra-freq-cell {
-              key "pcpich-scrambling-code";
-              uses umts-ran-neighbor-list-intra-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.";
-            }
-            list umts-ran-neighbor-list-inter-freq-cell {
-              key "pcpich-scrambling-code uarfcndl";
-              uses umts-ran-neighbor-list-inter-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.";
-            }
-            container umts-ran-neighbor-list-inter-rat-cell {
-              uses umts-ran-neighbor-list-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.";
-              list umts-ran-neighbor-list-inter-rat-cell-gsm {
-                key "bccharfcn";
-                uses umts-ran-neighbor-list-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.";
-              }
-            }
-          }
-          container umts-ran-neighbor-list-in-use {
-            uses umts-ran-neighbor-list-in-use-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.";
-            list umts-ran-neighbor-list-in-use-intra-freq-cell {
-              key "pcpich-scrambling-code";
-              uses umts-ran-neighbor-list-in-use-intra-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.";
-            }
-            list umts-ran-neighbor-list-in-use-inter-freq-cell {
-              key "pcpich-scrambling-code uarfcndl";
-              uses umts-ran-neighbor-list-in-use-inter-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.";
-            }
-            container umts-ran-neighbor-list-in-use-inter-rat-cell {
-              uses umts-ran-neighbor-list-in-use-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.";
-              list umts-ran-neighbor-list-in-use-inter-rat-cell-gsm {
-                key "bccharfcn";
-                uses umts-ran-neighbor-list-in-use-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-              }
-            }
-          }
-        }
-        container umts-rab {
-          uses umts-rab-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.UMTS.RAB.";
-        }
-      }
-      container lte {
-        uses lte-g;
-        description
-          "Container for object class FAPService.{i}.CellConfig.LTE.";
-        list lte-tunnel {
-          key "tunnel-ref";
-          uses lte-tunnel-g;
-          description
-            "List of object class FAPService.{i}.CellConfig.LTE.Tunnel.{i}.";
-        }
-        container lte-epc {
-          uses lte-epc-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.LTE.EPC.";
-          list lte-epc-plmn-list {
-            key "plmnid";
-            uses lte-epc-plmn-list-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.";
-          }
-          list lte-epc-qo-s {
-            key "qci";
-            uses lte-epc-qo-s-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.";
-          }
-        }
-        container lte-ran {
-          uses lte-ran-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.LTE.RAN.";
-          container lte-ran-common {
-            uses lte-ran-common-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Common.";
-          }
-          container lte-ran-s1-ap {
-            uses lte-ran-s1-ap-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.S1AP.";
-          }
-          container lte-ran-s1-u {
-            uses lte-ran-s1-u-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.S1U.";
-          }
-          container lte-ran-rf {
-            uses lte-ran-rf-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RF.";
-          }
-          container lte-ran-phy {
-            uses lte-ran-phy-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.";
-            container lte-ran-phy-antenna-info {
-              uses lte-ran-phy-antenna-info-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.";
-            }
-            container lte-ran-phy-pdsch {
-              uses lte-ran-phy-pdsch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.";
-            }
-            container lte-ran-phy-srs {
-              uses lte-ran-phy-srs-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.";
-            }
-            container lte-ran-phy-prach {
-              uses lte-ran-phy-prach-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.";
-            }
-            container lte-ran-phy-pucch {
-              uses lte-ran-phy-pucch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.";
-            }
-            container lte-ran-phy-pusch {
-              uses lte-ran-phy-pusch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.";
-              container lte-ran-phy-pusch-ulrs {
-                uses lte-ran-phy-pusch-ulrs-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.";
-              }
-            }
-            container lte-ran-phy-ul-power-control {
-              uses lte-ran-phy-ul-power-control-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.";
-            }
-            container lte-ran-phy-mbsfn {
-              uses lte-ran-phy-mbsfn-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.";
-              list lte-ran-phy-mbsfn-sf-config-list {
-                key "radio-frame-allocation-period radioframe-allocation-offset radio-frame-allocation-size";
-                uses lte-ran-phy-mbsfn-sf-config-list-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.";
-              }
-            }
-            container lte-ran-phy-prs {
-              uses lte-ran-phy-prs-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.";
-            }
-            container lte-ran-phy-tdd-frame {
-              uses lte-ran-phy-tdd-frame-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.";
-            }
-          }
-          container lte-ran-mac {
-            uses lte-ran-mac-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.";
-            container lte-ran-mac-rach {
-              uses lte-ran-mac-rach-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.";
-            }
-            container lte-ran-mac-drx {
-              uses lte-ran-mac-drx-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.";
-            }
-            container lte-ran-mac-ulsch {
-              uses lte-ran-mac-ulsch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.";
-            }
-          }
-          container lte-ran-rlc {
-            uses lte-ran-rlc-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.";
-            container lte-ran-rlc-srb1 {
-              uses lte-ran-rlc-srb1-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.";
-            }
-            container lte-ran-rlc-srb2 {
-              uses lte-ran-rlc-srb2-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.";
-            }
-          }
-          container lte-ran-rrc-timers {
-            uses lte-ran-rrc-timers-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.";
-          }
-          container lte-ran-cell-restriction {
-            uses lte-ran-cell-restriction-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.";
-          }
-          container lte-ran-mobility {
-            uses lte-ran-mobility-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.";
-            container lte-ran-mobility-idle-mode {
-              uses lte-ran-mobility-idle-mode-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.";
-              container lte-ran-mobility-idle-mode-common {
-                uses lte-ran-mobility-idle-mode-common-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.";
-              }
-              container lte-ran-mobility-idle-mode-intra-freq {
-                uses lte-ran-mobility-idle-mode-intra-freq-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.";
-              }
-              container lte-ran-mobility-idle-mode-inter-freq {
-                uses lte-ran-mobility-idle-mode-inter-freq-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.";
-                list lte-ran-mobility-idle-mode-inter-freq-carrier {
-                  key "eutra-carrier-arfcn";
-                  uses lte-ran-mobility-idle-mode-inter-freq-carrier-g;
-                  description
-                    "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.";
-                }
-              }
-              container lte-ran-mobility-idle-mode-irat {
-                uses lte-ran-mobility-idle-mode-irat-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.";
-                container lte-ran-mobility-idle-mode-irat-utra {
-                  uses lte-ran-mobility-idle-mode-irat-utra-g;
-                  description
-                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.";
-                  list lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq {
-                    key "utra-carrier-arfcn";
-                    uses lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq-g;
-                    description
-                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.";
-                  }
-                }
-                container lte-ran-mobility-idle-mode-irat-geran {
-                  uses lte-ran-mobility-idle-mode-irat-geran-g;
-                  description
-                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.";
-                  list lte-ran-mobility-idle-mode-irat-geran-geran-freq-group {
-                    key "bccharfcn";
-                    uses lte-ran-mobility-idle-mode-irat-geran-geran-freq-group-g;
-                    description
-                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.";
-                  }
-                }
-                container lte-ran-mobility-idle-mode-irat-cdma2000 {
-                  uses lte-ran-mobility-idle-mode-irat-cdma2000-g;
-                  description
-                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.";
-                  list lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band {
-                    key "band-class";
-                    uses lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band-g;
-                    description
-                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.";
-                  }
-                }
-              }
-            }
-            container lte-ran-mobility-conn-mode {
-              uses lte-ran-mobility-conn-mode-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.";
-              container lte-ran-mobility-conn-mode-eutra {
-                uses lte-ran-mobility-conn-mode-eutra-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.";
-              }
-              container lte-ran-mobility-conn-mode-irat {
-                uses lte-ran-mobility-conn-mode-irat-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.";
-              }
-            }
-          }
-          container lte-ran-neighbor-list {
-            uses lte-ran-neighbor-list-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.";
-            list lte-ran-neighbor-list-lte-cell {
-              key "plmnid cid";
-              uses lte-ran-neighbor-list-lte-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.";
-            }
-            container lte-ran-neighbor-list-inter-rat-cell {
-              uses lte-ran-neighbor-list-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.";
-              list lte-ran-neighbor-list-inter-rat-cell-umts {
-                key "plmnid cid";
-                uses lte-ran-neighbor-list-inter-rat-cell-umts-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.";
-              }
-              list lte-ran-neighbor-list-inter-rat-cell-gsm {
-                key "plmnid lac ci";
-                uses lte-ran-neighbor-list-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.";
-              }
-              list lte-ran-neighbor-list-inter-rat-cell-cdma2000 {
-                key "cid";
-                uses lte-ran-neighbor-list-inter-rat-cell-cdma2000-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.";
-              }
-            }
-          }
-          container lte-ran-neighbor-list-in-use {
-            uses lte-ran-neighbor-list-in-use-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.";
-            list lte-ran-neighbor-list-in-use-lte-cell {
-              key "plmnid cid";
-              uses lte-ran-neighbor-list-in-use-lte-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.";
-            }
-            container lte-ran-neighbor-list-in-use-inter-rat-cell {
-              uses lte-ran-neighbor-list-in-use-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.";
-              list lte-ran-neighbor-list-in-use-inter-rat-cell-umts {
-                key "plmnid cid";
-                uses lte-ran-neighbor-list-in-use-inter-rat-cell-umts-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.";
-              }
-              list lte-ran-neighbor-list-in-use-inter-rat-cell-gsm {
-                key "plmnid lac ci";
-                uses lte-ran-neighbor-list-in-use-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-              }
-              list lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000 {
-                key "cid";
-                uses lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.";
-              }
-            }
-          }
-        }
-      }
-      container cdma2000 {
-        uses cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.CellConfig.CDMA2000.";
-        container cdma2000-one-x {
-          uses cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.";
-          container cdma2000-one-x-ran {
-            uses cdma2000-one-x-ran-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.";
-            container cdma2000-one-x-ran-rf {
-              uses cdma2000-one-x-ran-rf-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.";
-            }
-            container cdma2000-one-x-ran-network-listen-mode-config {
-              uses cdma2000-one-x-ran-network-listen-mode-config-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.";
-            }
-            container cdma2000-one-x-ran-access-parameters {
-              uses cdma2000-one-x-ran-access-parameters-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.";
-            }
-            container cdma2000-one-x-ran-system-parameters {
-              uses cdma2000-one-x-ran-system-parameters-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.";
-            }
-            container cdma2000-one-x-ran-extended-system-parameters {
-              uses cdma2000-one-x-ran-extended-system-parameters-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.";
-            }
-            container cdma2000-one-x-ran-forward-pwr-ctr {
-              uses cdma2000-one-x-ran-forward-pwr-ctr-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.";
-            }
-            container cdma2000-one-x-ran-hard-handoff {
-              uses cdma2000-one-x-ran-hard-handoff-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.";
-              container cdma2000-one-x-ran-hard-handoff-stats {
-                uses cdma2000-one-x-ran-hard-handoff-stats-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.";
-              }
-            }
-            container cdma2000-one-x-ran-power-control {
-              uses cdma2000-one-x-ran-power-control-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.";
-            }
-            list cdma2000-one-x-ran-neighbor-list {
-              key "one-x-neighbor-index neighbor-pn";
-              uses cdma2000-one-x-ran-neighbor-list-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.";
-            }
-            container cdma2000-one-x-ran-apidm {
-              uses cdma2000-one-x-ran-apidm-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.";
-            }
-            container cdma2000-one-x-ran-apidtm {
-              uses cdma2000-one-x-ran-apidtm-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.";
-            }
-            container cdma2000-one-x-ran-appim {
-              uses cdma2000-one-x-ran-appim-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.";
-              list cdma2000-one-x-ran-appim-appirec {
-                key "apsid apnid apband apfreq appnrectype appnreclen appnrec";
-                uses cdma2000-one-x-ran-appim-appirec-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.";
-              }
-            }
-          }
-          container cdma2000-one-x-pcf-config {
-            uses cdma2000-one-x-pcf-config-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.";
-            container cdma2000-one-x-pcf-config-pcf-performance-stats {
-              uses cdma2000-one-x-pcf-config-pcf-performance-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.";
-            }
-          }
-          list cdma2000-one-x-batch-pcfpdsn {
-            key "batch-table-number";
-            uses cdma2000-one-x-batch-pcfpdsn-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.";
-          }
-          list cdma2000-one-x-pcfpdsn {
-            key "pdsn-number security-parameter-index security-key";
-            uses cdma2000-one-x-pcfpdsn-g;
-            container cdma2000-one-x-pcfpdsn-a11-reg-update-stats {
-              uses cdma2000-one-x-pcfpdsn-a11-reg-update-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.";
-            }
-            container cdma2000-one-x-pcfpdsn-pcfpdsn-stats {
-              uses cdma2000-one-x-pcfpdsn-pcfpdsn-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.";
-            }
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.";
-          }
-          container cdma2000-one-x-stats {
-            uses cdma2000-one-x-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.";
-          }
-          container cdma2000-one-x-redirect {
-            uses cdma2000-one-x-redirect-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.";
-          }
-        }
-        container cdma2000-hrpd {
-          uses cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.";
-          container cdma2000-hrpd-ran {
-            uses cdma2000-hrpd-ran-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.";
-            container cdma2000-hrpd-ran-rf {
-              uses cdma2000-hrpd-ran-rf-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.";
-            }
-          }
-          container cdma2000-hrpd-pcf-config {
-            uses cdma2000-hrpd-pcf-config-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.";
-            container cdma2000-hrpd-pcf-config-pcf-performance-stats {
-              uses cdma2000-hrpd-pcf-config-pcf-performance-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.";
-            }
-          }
-          list cdma2000-hrpd-batch-pcfpdsn {
-            key "batch-table-number batch-table-security-parameter-index batch-table-secret-key";
-            uses cdma2000-hrpd-batch-pcfpdsn-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.";
-          }
-          list cdma2000-hrpd-pcfpdsn {
-            key "pdsn-number security-parameter-index security-key";
-            uses cdma2000-hrpd-pcfpdsn-g;
-            container cdma2000-hrpd-pcfpdsn-a11-session-update-stats {
-              uses cdma2000-hrpd-pcfpdsn-a11-session-update-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.";
-            }
-            container cdma2000-hrpd-pcfpdsn-a11-reg-update-stats {
-              uses cdma2000-hrpd-pcfpdsn-a11-reg-update-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.";
-            }
-            container cdma2000-hrpd-pcfpdsn-aux-a10-stats {
-              uses cdma2000-hrpd-pcfpdsn-aux-a10-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.";
-            }
-            container cdma2000-hrpd-pcfpdsn-pcfpdsn-stats {
-              uses cdma2000-hrpd-pcfpdsn-pcfpdsn-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.";
-            }
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.";
-          }
-          container cdma2000-hrpd-redirect {
-            uses cdma2000-hrpd-redirect-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.";
-          }
-          container cdma2000-hrpd-call-control-stats {
-            uses cdma2000-hrpd-call-control-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.";
-          }
-          container cdma2000-hrpd-qo-s-stats {
-            uses cdma2000-hrpd-qo-s-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.";
-          }
-          container cdma2000-hrpd-rnc-sig-apps-stats {
-            uses cdma2000-hrpd-rnc-sig-apps-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.";
-          }
-          container cdma2000-hrpd-access-auth-config {
-            uses cdma2000-hrpd-access-auth-config-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.";
-          }
-          container cdma2000-hrpd-access-auth-stats {
-            uses cdma2000-hrpd-access-auth-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.";
-          }
-        }
-        container cdma2000-beacon {
-          uses cdma2000-beacon-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.CDMA2000.Beacon.";
-          list cdma2000-beacon-beacon-list {
-            key "beacon-index";
-            uses cdma2000-beacon-beacon-list-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.";
-          }
-          list cdma2000-beacon-hrpd-beacon-list {
-            key "beacon-index";
-            uses cdma2000-beacon-hrpd-beacon-list-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.";
-          }
-        }
-      }
-    }
-    container rem {
-      uses rem-g;
-      description
-        "Container for object class FAPService.{i}.REM.";
-      container rem-umts {
-        uses rem-umts-g;
-        description
-          "Container for object class FAPService.{i}.REM.UMTS.";
-        container rem-umts-wcdma {
-          uses rem-umts-wcdma-g;
-          description
-            "Container for object class FAPService.{i}.REM.UMTS.WCDMA.";
-          list rem-umts-wcdma-cell {
-            key "rem-umts-wcdma-cell-key";
-            uses rem-umts-wcdma-cell-g;
-            container rem-umts-wcdma-cell-rf {
-              uses rem-umts-wcdma-cell-rf-g;
-              description
-                "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.";
-            }
-            container rem-umts-wcdma-cell-bcch {
-              uses rem-umts-wcdma-cell-bcch-g;
-              description
-                "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.";
-              container rem-umts-wcdma-cell-bcch-csgpsc-split-info {
-                uses rem-umts-wcdma-cell-bcch-csgpsc-split-info-g;
-                description
-                  "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.";
-              }
-              container rem-umts-wcdma-cell-bcch-reference-position {
-                uses rem-umts-wcdma-cell-bcch-reference-position-g;
-                description
-                  "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.";
-              }
-            }
-            description
-              "List of object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.";
-          }
-        }
-        container rem-umts-gsm {
-          uses rem-umts-gsm-g;
-          description
-            "Container for object class FAPService.{i}.REM.UMTS.GSM.";
-          list rem-umts-gsm-cell {
-            key "arfcn bsic";
-            uses rem-umts-gsm-cell-g;
-            description
-              "List of object class FAPService.{i}.REM.UMTS.GSM.Cell.{i}.";
-          }
-        }
-      }
-      container rem-lte {
-        uses rem-lte-g;
-        description
-          "Container for object class FAPService.{i}.REM.LTE.";
-        list rem-lte-cell {
-          key "rem-lte-cell-key";
-          uses rem-lte-cell-g;
-          container rem-lte-cell-rf {
-            uses rem-lte-cell-rf-g;
-            description
-              "Container for object class FAPService.{i}.REM.LTE.Cell.{i}.RF.";
-          }
-          container rem-lte-cell-bcch {
-            uses rem-lte-cell-bcch-g;
-            description
-              "Container for object class FAPService.{i}.REM.LTE.Cell.{i}.BCCH.";
-            list rem-lte-cell-bcch-plmn-list {
-              key "plmnid";
-              uses rem-lte-cell-bcch-plmn-list-g;
-              description
-                "List of object class FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.";
-            }
-          }
-          description
-            "List of object class FAPService.{i}.REM.LTE.Cell.{i}.";
-        }
-        list rem-lte-carrier-meas {
-          key "carrier-arfcndl carrier-ch-width";
-          uses rem-lte-carrier-meas-g;
-          description
-            "List of object class FAPService.{i}.REM.LTE.CarrierMeas.{i}.";
-        }
-      }
-      container rem-cdma2000 {
-        uses rem-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.REM.CDMA2000.";
-        container rem-cdma2000-one-x {
-          uses rem-cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.REM.CDMA2000.OneX.";
-          list rem-cdma2000-one-x-channel {
-            key "sniffing-band-class sniffing-channel-number";
-            uses rem-cdma2000-one-x-channel-g;
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.";
-          }
-          list rem-cdma2000-one-x-cell {
-            key "rem-cdma2000-one-x-cell-key";
-            uses rem-cdma2000-one-x-cell-g;
-            container rem-cdma2000-one-x-cell-rf {
-              uses rem-cdma2000-one-x-cell-rf-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.";
-            }
-            container rem-cdma2000-one-x-cell-control-channel {
-              uses rem-cdma2000-one-x-cell-control-channel-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.";
-            }
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.";
-          }
-        }
-        container rem-cdma2000-hrpd {
-          uses rem-cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.";
-          list rem-cdma2000-hrpd-channel {
-            key "sniffing-band-class sniffing-channel-number";
-            uses rem-cdma2000-hrpd-channel-g;
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.";
-          }
-          list rem-cdma2000-hrpd-cell {
-            key "rem-cdma2000-hrpd-cell-key";
-            uses rem-cdma2000-hrpd-cell-g;
-            container rem-cdma2000-hrpd-cell-rf {
-              uses rem-cdma2000-hrpd-cell-rf-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.";
-            }
-            container rem-cdma2000-hrpd-cell-control-channel {
-              uses rem-cdma2000-hrpd-cell-control-channel-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.";
-            }
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.";
-          }
-        }
-        container rem-cdma2000-macro-timing {
-          uses rem-cdma2000-macro-timing-g;
-          description
-            "Container for object class FAPService.{i}.REM.CDMA2000.MacroTiming.";
-          list rem-cdma2000-macro-timing-channel {
-            key "band-class channel-number";
-            uses rem-cdma2000-macro-timing-channel-g;
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.";
-          }
-        }
-      }
-    }
-    container transport {
-      uses transport-g;
-      description
-        "Container for object class FAPService.{i}.Transport.";
-      container transport-sip {
-        uses transport-sip-g;
-        description
-          "Container for object class FAPService.{i}.Transport.SIP.";
-        container transport-sip-fcs {
-          uses transport-sip-fcs-g;
-          description
-            "Container for object class FAPService.{i}.Transport.SIP.FCS.";
-        }
-      }
-      container transport-sctp {
-        uses transport-sctp-g;
-        description
-          "Container for object class FAPService.{i}.Transport.SCTP.";
-        list transport-sctp-assoc {
-          key "primary-peer-address local-port";
-          uses transport-sctp-assoc-g;
-          description
-            "List of object class FAPService.{i}.Transport.SCTP.Assoc.{i}.";
-        }
-      }
-      container transport-real-time {
-        uses transport-real-time-g;
-        description
-          "Container for object class FAPService.{i}.Transport.RealTime.";
-        container transport-real-time-perf {
-          uses transport-real-time-perf-g;
-          description
-            "Container for object class FAPService.{i}.Transport.RealTime.Perf.";
-        }
-      }
-      container transport-packet {
-        uses transport-packet-g;
-        description
-          "Container for object class FAPService.{i}.Transport.Packet.";
-      }
-      container transport-security {
-        uses transport-security-g;
-        description
-          "Container for object class FAPService.{i}.Transport.Security.";
-        list transport-security-secret {
-          key "uicc-card-id";
-          uses transport-security-secret-g;
-          description
-            "List of object class FAPService.{i}.Transport.Security.Secret.{i}.";
-        }
-      }
-    }
-    description
-      "List of object class FAPService.{i}.";
-  }
-
-  grouping fap-service-g {
-    description
-      "The Femto Access Point (FAP) Service Object.";
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Alias";
-    }
-    leaf device-type {
-      type enumeration {
-        enum "standalone" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType - Standalone";
-        }
-        enum "integrated" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType - Integrated";
-        }
-      }
-      description
-        "The type of FAP device.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType";
-    }
-    leaf dn-prefix {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The Distinguished Name prefix (DNPrefix) is an operator-configurable prefix string that is pre-pended to object distinguished names in the {{bibref|TR-157a5}} alarm object. See {{bibref|3GPP-TS.32.300}} for the formal definition and examples of DNPrefix as applied to 3GPP alarm objects";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.DNPrefix";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.";
-  }
-
-  grouping x-0005b9-lte-g {
-    leaf phy-cell-id-in-use {
-      type uint64;
-      default 0;
-    }
-  }
-  grouping capabilities-g {
-    description
-      "This object contains parameters relating to the hardware capabilities of the FAP device.";
-    leaf gps-equipped {
-      type boolean;
-      description
-        "Indicates whether the FAP is equipped with a GPS receiver or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.GPSEquipped";
-    }
-    leaf max-tx-power {
-      type uint64;
-      units "dBm";
-      description
-        "Indicates the maximum possible transmit power in {{units}} that the FAP hardware can support.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.MaxTxPower";
-    }
-    leaf-list supported-systems {
-      type enumeration {
-        enum "umts" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - UMTS";
-        }
-        enum "lte" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - LTE";
-        }
-        enum "cdma1x" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - CDMA1x";
-        }
-        enum "cdmahrpd" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - CDMAHRPD";
-        }
-      }
-      description
-        "{{list}} Each entry is a type of system that the FAP supports. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems";
-    }
-    leaf beacon {
-      type boolean;
-      description
-        "Indicates whether FAP can support beacon transmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.Beacon";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.";
-  }
-
-  grouping capabilities-umts-g {
-    description
-      "This object contains parameters relating to the system and RF aspect of the FAP device that supports the UMTS system.";
-    leaf duplex-mode {
-      type enumeration {
-        enum "fdd-mode" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.DuplexMode - FDDMode";
-        }
-      }
-      description
-        "Indicates the mode supported by the FAP. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.DuplexMode";
-    }
-    leaf gsm-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the FAP hardware supports the receiving function of GSM or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxSupported";
-    }
-    leaf hsdpa-supported {
-      type boolean;
-      description
-        "Indicates whether the FAP hardware supports the HSDPA capability or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.HSDPASupported";
-    }
-    leaf max-hsdpa-data-rate-supported {
-      type uint64;
-      units "Kbps";
-      description
-        "If the FAP hardware supports HSDPA ({{param|HSDPASupported}} is {{true}}), this parameter indicates the maximum HSDPA data rate in {{units}} that the device supports.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSDPADataRateSupported";
-    }
-    leaf hsupa-supported {
-      type boolean;
-      description
-        "Indicates whether the FAP hardware supports the HSUPA capability or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.HSUPASupported";
-    }
-    leaf max-hsupa-data-rate-supported {
-      type uint64;
-      units "Kbps";
-      description
-        "If the FAP hardware supports HSUPA ({{param|HSUPASupported}} is {{true}}), this parameter indicates the maximum HSUPA data rate in {{units}} that the device supports.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSUPADataRateSupported";
-    }
-    leaf max-hspdsc-hs-supported {
-      type uint8 {
-        range "0..15";
-      }
-      description
-        "If the FAP hardware supports HSPA family (either {{param|HSDPASupported}} is {{true}} or {{param|HSUPASupported}} is {{true}}), this parameter indicates the available number of codes at the defined spreading factor (SF=16), within the complete code tree. See {{bibref|3GPP-TS.32.642|Section 6.3.9}} for more details.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSPDSCHsSupported";
-    }
-    leaf max-hsscc-hs-supported {
-      type uint64;
-      description
-        "If the FAP hardware supports HSPA family (either {{param|HSDPASupported}} is {{true}} or {{param|HSUPASupported}} is {{true}}), this parameter indicates the available number of HS-SCCHs for one cell. See {{bibref|3GPP-TS.32.642|Section 6.3.9}} for more details.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSSCCHsSupported";
-    }
-    leaf-list fdd-bands-supported {
-      type string;
-      min-elements 1;
-      max-elements "16";
-      description
-        "{{list}} Indicates the UMTS bands that the FAP supports {{bibref|3GPP-TS.25.104}}, Release 8. At least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.25.104}} Version 8.3.0 defines 14 UMTS bands (I through XIV). Each individual band is identified by its upper case Roman numeral. The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.25.104}}, the corresponding new upper case Roman numeral will be included in the valid band indicators. The followings are examples of valid values: :\"I\" (specifies only band-I is supported) :\"I,II,V\" (specifies 3 bands are supported) :\"II,VII,I\" (specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.FDDBandsSupported";
-    }
-    leaf-list gsm-rx-bands-supported {
-      type enumeration {
-        enum "t-gsm380" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM380";
-        }
-        enum "t-gsm410" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM410";
-        }
-        enum "gsm450" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM450";
-        }
-        enum "gsm480" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM480";
-        }
-        enum "gsm710" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM710";
-        }
-        enum "gsm750" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM750";
-        }
-        enum "t-gsm810" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM810";
-        }
-        enum "gsm850" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM850";
-        }
-        enum "p-gsm900" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - P-GSM900";
-        }
-        enum "e-gsm900" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - E-GSM900";
-        }
-        enum "r-gsm900" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - R-GSM900";
-        }
-        enum "t-gsm900" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM900";
-        }
-        enum "dcs1800" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - DCS1800";
-        }
-        enum "pcs1900" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - PCS1900";
-        }
-      }
-      description
-        "{{list}} Indicates the GSM receive bands that the FAP supports {{bibref|3GPP-TS.45.005}}. At least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.45.005}} defines 14 GSM bands. {{enum}} The order of the band indicators in the string has no significance. The following is an example of a valid value. :\"GSM850,PCS1900\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.";
-  }
-
-  grouping capabilities-umts-self-config-g {
-    description
-      "This object contains parameters relating to the self-configuration capabilities of the FAP. Self-configuration is enabled in {{object|.FAPControl.UMTS.SelfConfig.}}";
-    leaf uarfcn-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the UTRA Absolute Radio Frequency Channel Number (UARFCN). If {{true}} multiple values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.UARFCNDL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.UARFCNDL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.UARFCNConfig";
-    }
-    leaf primary-scrambling-code-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Primary Scrambling Code (PSC). If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig";
-    }
-    leaf maxfap-tx-power-expanded-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig";
-    }
-    leaf pcpich-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the P-CPICH power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}} as an upper bound.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig";
-    }
-    leaf max-ul-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum UL Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig";
-    }
-    leaf lacracura-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the LAC, RAC, and URA. If {{true}} multiple values MAY be provided in {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.LACRACURAConfig";
-    }
-    leaf neighbor-list-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the neighbor list. If {{true}} the ACS uses the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.}} tables to explicitly include or exclude entries and the FAP uses that information to determine the final configuration found in the {{object|.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.}} tables. If {{false}} the ACS uses the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.}} tables to only specify the included entries and the FAP uses that list.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.NeighborListConfig";
-    }
-    leaf cell-re-selection-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine cell-reselection values. If {{true}} {{object|.CellConfig.UMTS.RAN.CellSelection.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.CellSelection.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.CellReSelectionConfig";
-    }
-    leaf intra-freq-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine intra-frequency measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.IntraFreqMeasConfig";
-    }
-    leaf inter-freq-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine inter-frequency measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.InterFreqMeasConfig";
-    }
-    leaf inter-rat-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine inter-RAT measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.InterRATMeasConfig";
-    }
-    leaf ue-internal-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine UE internal measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.UEInternalMeasConfig";
-    }
-    leaf noise-rise-limit-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the selfconfiguration capability to determine the Noise Rise Limit. If {{true}} {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} and {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}}. MAY provide a range of values to select from. If {{false}} {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}} provides only a single value to be used. The value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} is ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.";
-  }
-
-  grouping capabilities-lte-g {
-    description
-      "This object contains parameters relating to the system and RF aspect of the FAP device that supports the LTE system.";
-    leaf duplex-mode {
-      type enumeration {
-        enum "fdd-mode" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode - FDDMode";
-        }
-        enum "tdd-mode" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode - TDDMode";
-        }
-      }
-      description
-        "Indicates the mode supported by the LTE FAP. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode";
-    }
-    leaf-list bands-supported {
-      type uint8 {
-        range "1..21 | 33..40";
-      }
-      min-elements 1;
-      max-elements "16";
-      description
-        "{{list}} Indicates the LTE bands that the LTE FAP supports {{bibref|3GPP-TS.36.101|Section 5.5}}. At least one band MUST be supported and multiple bands MAY be supported. Each individual band is identified by arabic number (1, 2,...). The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.36.101}}, the corresponding new band number will be included in the valid band indicators. The followings are examples of valid values: :\"1\" (specifies only band-1 is supported) :\"1,2,11\" (specifies 3 bands are supported) :\"2,11,1\" (specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.BandsSupported";
-    }
-    leaf nnsf-supported {
-      type boolean;
-      description
-        "Indicates whether LTE FAP supports the NAS Node Selection Function (NNSF) or not. NNSF is described in {{bibref|3GPP-TS.36.300|Section 19.2.1.7 and Section 4.6.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.NNSFSupported";
-    }
-    leaf umts-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the LTE FAP hardware supports the receiving function of UMTS or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.UMTSRxSupported";
-    }
-    leaf-list umts-rx-bands-supported {
-      type string;
-      max-elements "16";
-      description
-        "{{list}} Indicates the UMTS receive bands that the LTE FAP supports {{bibref|3GPP-TS.25.104}}, Release 8. If {{param|UMTSRxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. Each individual band is identified by its upper case Roman numeral. The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.25.104}}, the corresponding new upper case Roman numeral will be included in the valid band indicators. The followings are examples of valid values: :\"I\" (specifies only band-I is supported) :\"I,II,V\" (specifies 3 bands are supported) :\"II,VII,I\" (specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.UMTSRxBandsSupported";
-    }
-    leaf gsm-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the LTE FAP hardware supports the receiving function of GSM or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxSupported";
-    }
-    leaf-list gsm-rx-bands-supported {
-      type enumeration {
-        enum "t-gsm380" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM380";
-        }
-        enum "t-gsm410" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM410";
-        }
-        enum "gsm450" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM450";
-        }
-        enum "gsm480" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM480";
-        }
-        enum "gsm710" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM710";
-        }
-        enum "gsm750" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM750";
-        }
-        enum "t-gsm810" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM810";
-        }
-        enum "gsm850" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM850";
-        }
-        enum "p-gsm900" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - P-GSM900";
-        }
-        enum "e-gsm900" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - E-GSM900";
-        }
-        enum "r-gsm900" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - R-GSM900";
-        }
-        enum "t-gsm900" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM900";
-        }
-        enum "dcs1800" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - DCS1800";
-        }
-        enum "pcs1900" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - PCS1900";
-        }
-      }
-      description
-        "{{list}} Indicates the GSM receive bands that the LTE FAP supports {{bibref|3GPP-TS.45.005}}. If {{param|GSMRxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.45.005}} defines 14 GSM bands. {{enum}} The order of the band indicators in the string has no significance. The following is an example of a valid value. :\"GSM850,PCS1900\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported";
-    }
-    leaf cdma2000-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the LTE FAP hardware supports the receiving function of CDMA2000 or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.CDMA2000RxSupported";
-    }
-    leaf-list cdma2000-rx-bands-supported {
-      type string;
-      max-elements "16";
-      description
-        "{{list}} Indicates the CDMA2000 receive bands that the LTE FAP supports. If {{param|CDMA2000RxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. The order of the band indicators in the string has no significance. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057-B}}. The following are example values: :\"0\" (specifies US Cellular) :\"1,3,14\" (specifies US PCS, Japan Cellular and US PCS 1.9Ghz) specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.CDMA2000RxBandsSupported";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.";
-  }
-
-  grouping capabilities-cdma2000-g {
-    description
-      "This object contains parameters relating to the capability attributes for CDMA2000 FAP.";
-    leaf remote-ip-access-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of providing remote IP access service as defined in {{bibref|3GPP2-X.S0059}}. If {{true}}, the FAP is capable of remote IP access service. If {{false}}, the FAP is not capable of remote IP access service.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.RemoteIPAccessCapable";
-    }
-    leaf-list band-class-supportedfap-beacon {
-      type string;
-      max-elements "32";
-      description
-        "{{list}} Indicates the band classes that the FAP supports for beacon transmission. One or multiple bands MAY be supported. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057}}. List is empty if FAP can not support beacon transmissions.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.BandClassSupportedFAPBeacon";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.";
-  }
-
-  grouping capabilities-cdma2000-one-x-g {
-    description
-      "This object contains parameters relating to the capability attributes for the CDMA2000 1x radio technology portions of a CDMA2000 FAP.";
-    leaf band-class-supportedfap {
-      type string {
-        length "0..32";
-      }
-      description
-        "{{list}} Indicates the CDMA bands that the FAP supports. At least one band MUST be supported and multiple bands MAY be supported. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057}}. The following are example values: \"0\" (specifies US Cellular) \"1,3,14\" (specifies US PCS, Japan Cellular and US PCS 1.9Ghz)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.BandClassSupportedFAP";
-    }
-    leaf active-handin-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of accepting hand-in of active 1x call from another base station. If {{true}}, the FAP is capable of accepting hand-in. If {{false}}, the FAP is not capable of accepting hand-in.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.ActiveHandinCapable";
-    }
-    leaf femto-overhead-messages-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP supports Access Point Identification, Access Point Pilot Information, and Access Point Identification Text messages specified in {{bibref|3GPP2-C.S0005}}. If {{true}}, the FAP supports these messages. If {{false}}, the FAP does not supports these messages.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.";
-  }
-
-  grouping capabilities-cdma2000-one-x-self-config-g {
-    description
-      "This object contains parameters relating to the self-configuration capabilities of the FAP. Self-configuration is enabled in {{object|.FAPControl.CDMA2000.OneX.SelfConfig.}}.";
-    leaf rfcnfl-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Radio Frequency Channel Number. If {{true}} multiple values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig";
-    }
-    leaf pilot-pn-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the pilot PN offset. If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig";
-    }
-    leaf maxfap-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig";
-    }
-    leaf maxfap-beacon-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Beacon Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.";
-  }
-
-  grouping capabilities-cdma2000-hrpd-g {
-    description
-      "This object contains parameters relating to the capability attributes for the CDMA2000 HRPD radio technology portions of a CDMA2000 FAP.";
-    leaf a13-session-transfer-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of supporting A13 session transfer. See {{bibref|3GPP2-C.S0024-B}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.A13SessionTransferCapable";
-    }
-    leaf a16-session-transfer-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of supporting A16 session transfer. See {{bibref|3GPP2-C.S0024-B}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.A16SessionTransferCapable";
-    }
-    leaf local-ip-access-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of supporting Local IP access. See {{bibref|3GPP2-C.S0024-B}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.LocalIPAccessCapable";
-    }
-    leaf dedicated-hrpd-beacon {
-      type boolean;
-      description
-        "Indicated whether the FAP supports a dedicated transmission of HRPD beacon independent of the generalized beacon.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.DedicatedHRPDBeacon";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.";
-  }
-
-  grouping capabilities-cdma2000-hrpd-self-config-g {
-    description
-      "This object contains parameters relating to the self-configuration capability attributes for the CDMA2000 HRPD radio technology portions of a CDMA2000 FAP.";
-    leaf rfcnfl-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Radio Frequency Channel Number. If {{true}} multiple values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig";
-    }
-    leaf pilot-pn-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the pilot PN offset. If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig";
-    }
-    leaf maxfap-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig";
-    }
-    leaf maxfap-beacon-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Beacon Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPBeaconTxPowerConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.";
-  }
-
-  grouping fap-control-g {
-    description
-      "This object contains parameters relating to state management and provisioning aspects of the FAP.";
-    leaf-list self-config-events {
-      type enumeration {
-        enum "initial-rem" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.SelfConfigEvents - InitialREM";
-        }
-      }
-      config false;
-      description
-        "{{list}} Each item is an event that causes the FAP to perform self configuration as defined by {{object|.FAPControl.UMTS.SelfConfig.}}, {{object|.FAPControl.CDMA2000.OneX.SelfConfig.}}, or {{object|.FAPControl.CDMA2000.HRPD.SelfConfig.}}. Vendors can extend the enumerated values with vendor-specific extensions, in which case the rules outlined in {{bibref|TR-106a2|Section3.3}} MUST be adhered to.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.SelfConfigEvents";
-    }
-    leaf enclosure-tampering-detected {
-      type boolean;
-      config false;
-      description
-        "This parameter indicates whether or not physical tampering of the device enclosure occurred, such as illegal opening of the box. If {{true}} device tampering is detected. If {{false}} no sign of device tampering is detected. Tampering state MUST be persisted across reboots and the device MUST never reset it back from {{true}} to {{false}} even after a factory reset.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.EnclosureTamperingDetected";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.";
-  }
-
-  grouping fap-control-umts-g {
-    description
-      "This object contains parameters relating to the UMTS system specific information.";
-    leaf op-state {
-      type boolean;
-      description
-        "Current operational state of the UMTS FAP as defined in {{bibref|ITU-X.731}}. If {{true}} the UMTS FAP is currently enabled. If {{false}} the UMTS FAP is currently disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.OpState";
-    }
-    leaf admin-state {
-      type boolean;
-      config false;
-      description
-        "Lock or unlock the UMTS FAP. This controls the administrative state of the UMTS FAP as defined in {{bibref|ITU-X.731}}. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition UMTS FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the UMTS FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: # location verification (including meeting the governing regulatory requirements) # verifying the UMTS FAP configuration # if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.AdminState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this UMTS FAP RF transmitter. {{true}} indicates that the UMTS FAP Tx transmitter is on. {{false}} indicates that the UMTS FAP Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. :When the ACS sets {{param|AdminState}} to {{true}}, then the UMTS FAP has permission to turn on the RF transmitter. :When the ACS sets {{param|AdminState}} to {{false}}, then the UMTS FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.RFTxStatus";
-    }
-    leaf pm-config {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The value MUST be the path name of a row in the optional ''FAP.PerfMgmt.Config.'' table (see {{bibref|TR-262}}). This is the performance management related configuration for the UMTS FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.PMConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.";
-  }
-
-  grouping fap-control-umts-self-config-g {
-    description
-      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
-    leaf uarfcn-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.UMTS.RAN.CSG.UARFCNDLList}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable";
-    }
-    leaf primary-scrambling-code-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable";
-    }
-    leaf maxfap-tx-power-expanded-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable";
-    }
-    leaf pcpich-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable";
-    }
-    leaf max-ul-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable";
-    }
-    leaf lacracura-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable";
-    }
-    leaf neighbor-list-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values in the object {{object|.CellConfig.UMTS.RAN.NeighborList.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.NeighborListSelfConfigEnable";
-    }
-    leaf cell-re-selection-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine Cell Selection/Reselection-related parameters in {{object|.CellConfig.UMTS.RAN.CellSelection.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.CellReSelectionSelfConfigEnable";
-    }
-    leaf intra-freq-meas-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine intra-frequency measurement -related parameters in {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.IntraFreqMeasSelfConfigEnable";
-    }
-    leaf inter-freq-meas-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine inter-frequency measurement -related parameters in {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.InterFreqMeasSelfConfigEnable";
-    }
-    leaf inter-rat-meas-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine inter-RAT measurement -related parameters in {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.InterRATMeasSelfConfigEnable";
-    }
-    leaf ue-internal-meas-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine UE internal measurement-related parameters in {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.UEInternalMeasConfigEnable";
-    }
-    leaf noise-rise-limit-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitInUse}}. If {{true}} the FAP self-configures the value, based on the limits specified in {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} and {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}}. If {{false}} the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.";
-  }
-
-  grouping fap-control-umts-gateway-g {
-    description
-      "This object contains parameters relating to the Gateways that FAP is connected to.";
-    leaf sec-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer1";
-    }
-    leaf sec-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer2";
-    }
-    leaf sec-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer3";
-    }
-    leaf fap-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer1";
-    }
-    leaf fap-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer2";
-    }
-    leaf fap-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer3";
-    }
-    leaf fap-gw-port {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Port number of FAPGW used for initial Iuh SCTP contact. This value is specified as 29169 according to IANA definition per {{bibref|IANA-portnumbers}}, registered on 2009-09-08. Use of IANA-defined value is recommended.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWPort";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.";
-  }
-
-  grouping fap-control-lte-g {
-    description
-      "This object contains parameters relating to the LTE system specific information.";
-    leaf op-state {
-      type boolean;
-      description
-        "Current operational state of the LTE FAP as defined in {{bibref|ITU-X.731}}. If {{true}} the LTE FAP is currently enabled. If {{false}} the LTE FAP is currently disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.OpState";
-    }
-    leaf admin-state {
-      type boolean;
-      config false;
-      description
-        "Lock or unlock the LTE FAP. This controls the administrative state of the LTE FAP as defined in {{bibref|ITU-X.731}}. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition LTE FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the LTE FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: # location verification (including meeting the governing regulatory requirements) # verifying the LTE FAP configuration # if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.AdminState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this LTE FAP RF transmitter. {{true}} indicates that the LTE FAP Tx transmitter is on. {{false}} indicates that the LTE FAP Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. :When the ACS sets {{param|AdminState}} to {{true}}, then the LTE FAP has permission to turn on the RF transmitter. :When the ACS sets {{param|AdminState}} to {{false}}, then the LTE FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.RFTxStatus";
-    }
-    leaf pm-config {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The value MUST be the path name of a row in optional the ''.FAP.PerfMgmt.Config.'' table (see {{bibref|TR-262}}). This is the performance management related configuration for the LTE FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.PMConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.";
-  }
-
-  grouping fap-control-lte-gateway-g {
-    description
-      "This object contains parameters relating to the Gateways that the LTE FAP is connected to.";
-    leaf sec-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer1";
-    }
-    leaf sec-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer2";
-    }
-    leaf sec-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer3";
-    }
-    leaf-list s1-sig-link-server-list {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a S1 signaling connection end point (-GW or MME) the LTE FAP attempts to establish connection with. It is in the form of either hostname or IPaddress. LTE FAP's behavior in terms of the number of S1 connection to established with is determined by {{param|S1ConnectionMode}} parameter. If {{param|S1ConnectionMode}} has the value of {{enum|One|S1ConnectionMode}}, then LTE FAP attempts to establish S1 connection with only one address following the ordering of the list. If {{param|S1ConnectionMode}} has the value of {{enum|All|S1ConnectionMode}}, then LTE FAP attempts to establish connection with all addresses in the list.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1SigLinkServerList";
-    }
-    leaf s1-connection-mode {
-      type enumeration {
-        enum "one" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode - One";
-        }
-        enum "all" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode - All";
-        }
-      }
-      config false;
-      description
-        "Indicates how many of the configured far-end S1 link address(es),as defined in {{param|S1SigLinkServerList}}, LTE FAP SHOULD attempt to establish connection with simultaneously. If {{param}} parameter is not explicitly configured, then LTE FAP shall assume the value to be {{enum|One|S1ConnectionMode}} as default.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode";
-    }
-    leaf s1-sig-link-port {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Port number of S1AP signaling connection end point (-GW or MME) used for initial S1 SCTP contact. This value is specified as 36412 according to IANA definition per {{bibref|IANA-portnumbers}}, registered on 2009-09-01. Use of IANA-defined value is recommended.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1SigLinkPort";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.";
-  }
-
-  grouping fap-control-cdma2000-g {
-    description
-      "This object contains parameters relating to the configuration for the control portions of a CDMA2000 FAP.";
-    leaf home-domain {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "A string containing one of operator's home domains in URI format. FAP is preconfigured with a default home domain, which can be overwritten later by ACS. See {{bibref|3GPP2-X.S0059}}. If the''.ManagementServer.URL'' is null, then the FAP shall use the value of this attribute to construct the ''.ManagementServer.URL'' attribute. If {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} is null, then the FAP shall use the value of this attribute to construct the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} attribute. If the FAP is unable to connect to the management server indicated by the value of the ''.ManagementServer.URL'' attribute and this attribute is not null, the FAP may use the value of this attribute to construct the ''.ManagementServer.URL'' attribute. If the FAP is unable to connect to any security gateway indicated by the value of the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}}, {{param|.FAPControl.CDMA2000.Gateway.SecGWServer2}}, and {{param|.FAPControl.CDMA2000.Gateway.SecGWServer3}} attributes and this attribute is not null, the FAP may use the value of this attribute to construct the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} attribute.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HomeDomain";
-    }
-    leaf remote-ip-access-enable {
-      type boolean;
-      config false;
-      description
-        "Enable or disable remote IP access service as defined in {{bibref|3GPP2-X.S0059}}. If {{true}} remote IP access is enabled. If {{false}} remove IP access is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.RemoteIPAccessEnable";
-    }
-    leaf pm-config {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The value MUST be the path name of a row in the ''.FAP.PerfMgmt.Config.'' table. This is the performance management related configuration for the CDMA2000 FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.PMConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.";
-  }
-
-  grouping fap-control-cdma2000-time-g {
-    description
-      "This object contains parameters related to time syncronization with CDMA2000 System Time (see {{bibref|3GPP2-C.S0005}}).";
-    leaf local-time-zone {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The local time zone for CDMA2000 operational purposes. E.g., \"+HH:MM JST\" for Japan. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.LocalTimeZone";
-    }
-    leaf current-local-time {
-      type string {
-        length "0..64";
-      }
-      description
-        "The current CDMA System Time (see {{bibref|3GPP2-C.S0005}}), expressed as date and time in the CPE's local time zone. The format of this field is \"YYYY-MM-DDThh:mm:ss.sTZD\" (e.g., 1997-07-16T19:20:30.45+01:00), where: YYYY = four-digit year MM = two-digit month (01=January, etc.) DD = two-digit day of month (01 through 31) hh = two digits of hour (00 through 23) (am/pm NOT allowed) mm = two digits of minute (00 through 59) ss = two digits of second (00 through 59) s = one or more digits representing a decimal fraction of a second TZD = time zone designator (Z or +hh:mm or -hh:mm)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.CurrentLocalTime";
-    }
-    leaf leap-seconds {
-      type int64;
-      units "seconds";
-      config false;
-      description
-        "Number of leap seconds (in {{units}} to be applied between CurrentLocalTime and CDMA System Time. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.LeapSeconds";
-    }
-    leaf daylight-savings-used {
-      type boolean;
-      config false;
-      description
-        "Whether or not daylight savings time is in use in the FAP's local time zone with respect to CDMA2000 System Time (see {{bibref|3GPP2-C.S0005}}). {true}} if daylight savings time is being used; otherwise {{false}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.DaylightSavingsUsed";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.";
-  }
-
-  grouping fap-control-cdma2000-one-x-g {
-    description
-      "This object contains all global attributes of the 1xFemto application.";
-    leaf admin-state {
-      type enumeration {
-        enum "lock" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState - Lock";
-        }
-        enum "unlock" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState - Unlock";
-        }
-      }
-      config false;
-      description
-        "Administrative state for 1x";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState";
-    }
-    leaf op-state {
-      type enumeration {
-        enum "enabled" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState - Enabled";
-        }
-        enum "disabled" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState - Disabled";
-        }
-      }
-      description
-        "Operational state of the 1x";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this RF transmitter. {{true}} indicates that the 3G Tx transmitter is on. {{false}} indicates that the 3G Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. When the ACS sets AdminState to {{true}}, then the FAP has permission to turn on the RF transmitter. When the ACS sets AdminState to {{false}}, then the FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.RFTxStatus";
-    }
-    leaf daylight {
-      type int64;
-      config false;
-      description
-        "If Daylight Savings Time is being used with respect to CDMA2000 1x overhead parameters (see {{bibref|3GPP2-C.S0005}}), then {{param}} should be set to {{true}}. Otherwise, {{param}} should be set to {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.Daylight";
-    }
-    leaf max-p-rev {
-      type int64;
-      config false;
-      description
-        "Protocol revision supported by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.MaxPRev";
-    }
-    leaf reregister {
-      type uint64;
-      config false;
-      description
-        "{{param}} triggers a re-registration of all mobiles. The FAP triggers re-registration of all registered mobiles everytime this number changes";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.Reregister";
-    }
-    leaf emergency-session-period {
-      type uint16 {
-        range "15..1800";
-      }
-      units "seconds";
-      config false;
-      description
-        "The period (in {{units}}) the session of an unauthorized user is kept alive after an emergency call.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.EmergencySessionPeriod";
-    }
-    leaf location-area-code {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "This is the location area code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.LocationAreaCode";
-    }
-    leaf msc-id {
-      type uint64;
-      config false;
-      description
-        "This is the FAP's MSCID. This ID is used in PANI header.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.MSCId";
-    }
-    leaf active-handin-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP performs active hand-in from another base station. If {{true}} active hand-in is enabled; if {{false}} active hand-in is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.";
-  }
-
-  grouping fap-control-cdma2000-one-x-active-handin-measurement-g {
-    description
-      "CDMA2000 1x active handin operational parameters.";
-    leaf active-handin-measurement-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP performs active hand-in measurement if a request is received. If {{true}} active hand-in measurement is enabled; if {{false}} active hand-in measurement is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.ActiveHandinMeasurementEnable";
-    }
-    leaf active-hand-in-measurement-duration {
-      type uint16 {
-        range "0..65535";
-      }
-      units "1.25 ms slots";
-      config false;
-      description
-        "The minimum duration in {{units}} for which FAP should take a mobile's RL pilot strength measurements for active hand-in purpose when directed by the network. Instead of continuous measurement for this entire duration, a FAP can make multiple measurements by sampling over shorter durations. In such a case, this value specifies the minimum time separation required between the first and last measurement samples.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.ActiveHandInMeasurementDuration";
-    }
-    leaf measurement-report-threshold {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "The threshold (in {{units}}) for the FAP to report an active hand-in measurement. If the metric to be reported is below the threshold, the FAP may not send any report.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.MeasurementReportThreshold";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.";
-  }
-
-  grouping fap-control-cdma2000-one-x-self-config-g {
-    description
-      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
-    leaf rfcnfl-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable";
-    }
-    leaf pilot-pn-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable";
-    }
-    leaf maxfap-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable";
-    }
-    leaf maxfap-beacon-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.";
-  }
-
-  grouping fap-control-cdma2000-gateway-g {
-    description
-      "CDMA2000 FAP Security Gateway operational parameters.";
-    leaf sec-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First SecGW the FAP attempts to contact. Either FQDN or IP address";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer1";
-    }
-    leaf sec-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second SecGW the FAP attempts to contact. Either FQDN or IP address";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer2";
-    }
-    leaf sec-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third SecGW that the FAP attempts to contact. Can contain either FQDN or IP address";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer3";
-    }
-    leaf sec-gw-switchover-count {
-      type uint64;
-      description
-        "Counter indicating how many times FAP has switched between SecGW";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWSwitchoverCount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-g {
-    description
-      "Operational parameters for the HRPD portion of a CDMA2000 FAP.";
-    leaf op-state {
-      type boolean;
-      description
-        "Current operational state of the FAP as defined in ITU-X.731 [32]. If {{true}} the FAP is currently enabled. If {{false}} the FAP is currently disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.OpState";
-    }
-    leaf admin-state {
-      type boolean;
-      config false;
-      description
-        "Lock or unlock the FAP. This controls the administrative state of the FAP as defined in ITU-X.731 [32]. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: location verification (including meeting the governing regulatory requirements) verifying the FAP configuration if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.AdminState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this RF transmitter. {{true}} indicates that the 3G Tx transmitter is on. {{false}} indicates that the 3G Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. When the ACS sets AdminState to {{true}}, then the FAP has permission to turn on the RF transmitter. When the ACS sets AdminState to {{false}}, then the FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.RFTxStatus";
-    }
-    leaf a13-session-transfer-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP performs A13 session transfer. If {{true}} A13 session transfer is enabled; if {{false}} A13 session transfer is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13SessionTransferEnable";
-    }
-    leaf local-ip-access-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP can assign local IP address to capable ATs. If {{true}} local IP address is assigned.; if {{false}} local IP address is not assigned.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.LocalIPAccessEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-self-config-g {
-    description
-      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
-    leaf rfcnfl-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable";
-    }
-    leaf pilot-pn-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable";
-    }
-    leaf maxfap-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}} . If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable";
-    }
-    leaf max-hrpd-beacon-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPower}}. If {{true}} the FAP self-configures the value. If {{false}} The ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.MaxHRPDBeaconTxPowerSelfConfigEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-a13-g {
-    description
-      "This object contains attributes related to A13 Session Transfer";
-    leaf color-code-to-uati104-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104NumberOfEntries";
-    }
-    leaf hrpd-subnet-to-ip-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIPNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-a13-color-code-to-uati104-g {
-    description
-      "HRPD ColorCode to UATI Mapping Table number of entries.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.Alias";
-    }
-    leaf color-code {
-      type uint16 {
-        range "0..256";
-      }
-      description
-        "Color Code mapped to UATI104 in the following field";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.ColorCode";
-    }
-    leaf uati104 {
-      type binary {
-        length "0..13";
-      }
-      description
-        "The UATI104 of the AT that accesses with the ColorCode field";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.UATI104";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip-g {
-    description
-      "This object contains attributes related to A13 Session Transfer";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.Alias";
-    }
-    leaf hrpd-subnet-length {
-      type uint8 {
-        range "1..104";
-      }
-      units "bits";
-      config false;
-      description
-        "The number of MSBs (in {{units}}) in the following field that is part of HRPDSubnet";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.HRPDSubnetLength";
-    }
-    leaf hrpd-subnet {
-      type binary {
-        length "0..13";
-      }
-      config false;
-      description
-        "The {{param|HRPDSubnetLength}} MSBs of this field contain the HRPD subnet that maps to the IP address in the following field";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.HRPDSubnet";
-    }
-    leaf a13-ip-address {
-      type inet:ip-address;
-      description
-        "This field contains the IP address of A13 endpoint that corresponds to the HRPD subnet";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.A13IPAddress";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.";
-  }
-
-  grouping access-mgmt-g {
-    description
-      "This object contains parameters relating to Access Management for the different radio technologies.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.";
-  }
-
-  grouping access-mgmt-umts-g {
-    description
-      "This object contains parameters relating to Access Management for UMTS FAP (ACL, CSG, LIPA). Closed Subscriber Group (CSG) service behavior is specified in {{bibref|3GPP-TS.22.011}}. Note: Cell barring and 3GPP access class parameters are contained in {{object|.CellConfig.UMTS.RAN.CellRestriction.}} (UMTS FAP).";
-    leaf access-mode {
-      type enumeration {
-        enum "open access" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Open Access";
-        }
-        enum "closed access" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Closed Access";
-        }
-        enum "hybrid access" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Hybrid Access";
-        }
-      }
-      default "open access";
-      config false;
-      description
-        "Indicates the type of access mode the FAP operates in. {{enum}} When the value is not {{enum|Open Access}} non-CSG-capable UE are handled according to {{param|NonCSGUEAccessDecision}}. Note: This parameter controls the setting of the CSGindicator bit, specified in MIB in {{bibref|3GPP-TS.25.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode";
-    }
-    leaf non-csgue-access-decision {
-      type enumeration {
-        enum "local" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - Local";
-        }
-        enum "query fap-gw" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - Query FAPGW";
-        }
-        enum "by core" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - By Core";
-        }
-      }
-      default "local";
-      config false;
-      description
-        "Indicates how the access decision is made for non-CSG-capable UE. Parameter is ignored when {{param|AccessMode}} is {{enum|Open Access|AccessMode}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision";
-    }
-    leaf csg-membership-determined-locally {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Indicates how the access decision is made for CSG-capable UE. Parameter is ignored when {{param|AccessMode}} is {{enum|Open Access|AccessMode}}. If {{true}} access decision is determined the same way as for {{param|NonCSGUEAccessDecision}}. (E.g. if core network doesn't (yet) support full CSG functionality.) If {{false}} FAP always allows access for CSG-capable UE. CSG enforcement is performed by MSC/SGSN (with support from HSS), or by FGW. {{bibref|3GPP-TS.22.011}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.CSGMembershipDeterminedLocally";
-    }
-    leaf max-u-es-served {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent UEs allowed at a cell. Valid for any {{param|AccessMode}}. A value of -1 allows an unlimited number of concurrent UEs up to the limit of FAP capacity. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxUEsServed";
-    }
-    leaf max-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent CSG member UEs allowed at a hybrid or closed cell. A value of -1 allows an unlimited number of CSG members up to the limit of FAP capacity. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls. {{bibref|3GPP-TS.22.011}}, {{bibref|3GPP-TS.22.220}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxCSGMembers";
-    }
-    leaf max-non-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurerent non-CSG member UEs allowed at a hybrid cell. Valid only if {{param|AccessMode}} is {{enum|Hybrid Access|AccessMode}}. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxNonCSGMembers";
-    }
-    leaf max-resource-non-csg-members {
-      type uint8 {
-        range "0..100";
-      }
-      config false;
-      description
-        "Maximum percentage of physical resource that can be assigned to non-CSG members aggregately at one time. In UMTS FAP, this applies to RB resource.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxResourceNonCSGMembers";
-    }
-    leaf hnb-name {
-      type string {
-        length "0..48";
-      }
-      config false;
-      description
-        "Home NodeB name. An operator-defined string that is broadcast by a CSG cell or a hybrid cell and displayed on the UE for the purpose of manual cell selection or indication that the UE is camped on the cell as specified in {{bibref|3GPP-TS.22.220|Section 5.4.2}}. Corresponds to parameter 'hnb-Name' specified in SIB20 in {{bibref|3GPP-TS.25.331|Section 10.2.48.8.23}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.HNBName";
-    }
-    leaf csgid {
-      type uint32 {
-        range "0..134217727";
-      }
-      config false;
-      description
-        "Defines the Closed Subscriber Group of the Access Control List. The UMTS FAP broadcasts this CSG ID in SIB3 depending on the AccessMode. The LTE FAP broadcasts this in SIB1, and corresponds to parameter csg-Identity in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.CSGID";
-    }
-    leaf-list access-control-list {
-      type string {
-        length "0..15";
-      }
-      config false;
-      max-elements "1024";
-      description
-        "{{list}} Each entry is an IMSI.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessControlList";
-    }
-    leaf max-member-detail-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.AccessMgmt.UMTS.MemberDetail.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxMemberDetailEntries";
-    }
-    leaf member-detail-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetailNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.";
-  }
-
-  grouping access-mgmt-umts-member-detail-g {
-    description
-      "Details for CSG and Non-CSG members.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the MemberDetail entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.Alias";
-    }
-    leaf imsi {
-      type string {
-        length "0..15";
-      }
-      description
-        "International Mobile Subscriber Identity of the UE.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.IMSI";
-    }
-    leaf msisdn {
-      type string {
-        length "0..15";
-      }
-      config false;
-      description
-        "Mobile Station International Subscriber Identity Number. Set to {{empty}} if unknown.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.MSISDN";
-    }
-    leaf membership-expires {
-      type yang:date-and-time;
-      config false;
-      description
-        "Time when the ACL membership expires. An Unknown Time value, as defined in {{bibref|TR-106a2|Section 3.2}}, indicates that the membership doesn't expire. Upon expiry the FAP MUST remove the IMSI from the {{param|.AccessMgmt.UMTS.AccessControlList}}, but the entry in {{object|.AccessMgmt.UMTS.MemberDetail.{i}.}} remains. {{bibref|3GPP-TS.22.011}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.MembershipExpires";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.";
-  }
-
-  grouping access-mgmt-umts-local-ip-access-g {
-    description
-      "Local IP access for UMTS FAP.";
-    leaf enable {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enables/disables the Local IP Access (LIPA) functionality.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.Enable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-lte-g {
-    description
-      "This object contains parameters relating to Access Management, as defined in {{bibref|3GPP-TS.32.592}}/ Closed Subscriber Group (CSG) service behavior is specified in {{bibref|3GPP-TS.22.011}}. Note: Cell barring and 3GPP access class parameters are contained in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-    leaf access-mode {
-      type enumeration {
-        enum "open access" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Open Access";
-        }
-        enum "closed access" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Closed Access";
-        }
-        enum "hybrid access" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Hybrid Access";
-        }
-      }
-      default "open access";
-      config false;
-      description
-        "Indicates the type of access mode the FAP operates in. {{enum}} Note: This parameter controls the setting of the CSGindicator bit, specified in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode";
-    }
-    leaf max-u-es-served {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent UEs allowed at a cell. Valid for any {{param|AccessMode}}. A value of -1 allows an unlimited number of concurrent UEs up to the limit of FAP capacity. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxUEsServed";
-    }
-    leaf max-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent CSG member UEs allowed at a hybrid or closed cell. A value of -1 allows an unlimited number of CSG members up to the limit of FAP capacity. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls. {{bibref|3GPP-TS.22.011}}, {{bibref|3GPP-TS.22.220}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxCSGMembers";
-    }
-    leaf max-non-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurerent non-CSG member UEs allowed at a hybrid cell. Valid only if {{param|AccessMode}} is {{enum|Hybrid Access|AccessMode}}. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxNonCSGMembers";
-    }
-    leaf max-resource-non-csg-members {
-      type uint8 {
-        range "0..100";
-      }
-      config false;
-      description
-        "Maximum percentage of physical resource that can be assigned to non-CSG members aggregately at one time. This applies to PDSCH physical resource blocks.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxResourceNonCSGMembers";
-    }
-    leaf csgid {
-      type uint32 {
-        range "0..134217727";
-      }
-      config false;
-      description
-        "Defines the Closed Subscriber Group of the Access Control List. The LTE FAP broadcasts this in SIB1, and corresponds to parameter csg-Identity in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.CSGID";
-    }
-    leaf hnb-name {
-      type string {
-        length "0..48";
-      }
-      config false;
-      description
-        "Home NodeB name. An operator-defined string that is broadcast by a CSG cell or a hybrid cell and displayed on the UE for the purpose of manual cell selection or indication that the UE is camped on the cell as specified in {{bibref|3GPP-TS.22.220|Section 5.4.2}}. Corresponds to parameter 'hnb-Name' specified in SIB9 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.HNBName";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.";
-  }
-
-  grouping access-mgmt-lte-local-ip-access-g {
-    description
-      "Local IP access for LTE FAP.";
-    leaf enable {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enables/disables the Local IP Access (LIPA) functionality.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.Enable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-cdma2000-g {
-    description
-      "This object contains configurable and observable attributes related to CDMA2000 Access and Admission Control of the FAP.";
-    leaf access-mode {
-      type uint8 {
-        range "0 | 1 | 3";
-      }
-      config false;
-      description
-        "Defines the access control mode of FAP. Allowed modes are Open, Closed, and Signaling Association (refer to {{bibref|3GPP2-A.S0024}}). AccessMode 2 (Hybrid) is not applicable to CDMA2000 FAPs. 0- Open,1-Closed, 2-Reserved, 3-Signaling Association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.AccessMode";
-    }
-    leaf max-total-active-calls-allowed {
-      type uint16 {
-        range "1..1024";
-      }
-      config false;
-      description
-        "Total number of active calls allowed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MaxTotalActiveCallsAllowed";
-    }
-    leaf access-control-list {
-      type string {
-        length "0..1024";
-      }
-      config false;
-      description
-        "{{list}} (maximum item length 15). Each entry is an IMSI.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.AccessControlList";
-    }
-    leaf max-member-detail-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.AccessMgmt.CDMA2000.MemberDetail.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MaxMemberDetailEntries";
-    }
-    leaf member-detail-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetailNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.";
-  }
-
-  grouping access-mgmt-cdma2000-member-detail-g {
-    description
-      "At most one enabled entry in this table can exist with a given value for IMSI and HRPDIdentifierValue. The IMSI field may be empty.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.Alias";
-    }
-    leaf imsi {
-      type string {
-        length "0..15";
-      }
-      description
-        "International Mobile Subscriber Identity of the UE.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.IMSI";
-    }
-    leaf hrpd-identifier-type {
-      type int64;
-      config false;
-      description
-        "Type of identifier used for the HRPD AT. 0-invalid 1-ESN 2-MEID 3-A12NAI. If IMSI in this record is valid, then this attribute is set to 0.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.HRPDIdentifierType";
-    }
-    leaf hrpd-identifier-value {
-      type string {
-        length "0..128";
-      }
-      config false;
-      description
-        "The value of this attribute depends on {{param|HRPDIdentifierType}}. ESN and MEID shall be defined as Hex.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.HRPDIdentifierValue";
-    }
-    leaf membership-expires {
-      type yang:date-and-time;
-      config false;
-      description
-        "The time that the current ACL membership expires.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.MembershipExpires";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.";
-  }
-
-  grouping access-mgmt-cdma2000-local-ip-access-g {
-    description
-      "Local IP access support as defined in 3GPP2";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-cdma2000-local-ip-access-hrpd-g {
-    description
-      "Local IP access support as defined in 3GPP2";
-    leaf filter-type {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Value of '0' indicates that the FAP shall allow only IP packets with destination address matching the local IP subnet on Local IP access interface. Value of '1' indicates that the FAP shall allow any IP packets with destination address matching either the local IP subnet or the subnets listed in Local IP egress filter parameter on Local IP access interface. Value of '2' indicates that the FAP shall allow any IP packets with destination addresses that do not match the Local IP egress filter parameter on Local IP access interface.Value of '3' indicates that the FAP shall allow any IP packets on the local IP address interface.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterType";
-    }
-    leaf filter-in-use {
-      type string {
-        length "0..256";
-      }
-      description
-        "This parameter is set to the IPCP Vendor Specific Option which the FAP uses to send Local IP access packet filter on AN-PPP interface.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterInUse";
-    }
-    leaf egress-filter-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilterNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.";
-  }
-
-  grouping access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter-g {
-    description
-      "HRPD LIPA Egress Filter Table entries.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Alias";
-    }
-    leaf subnet {
-      type inet:ipv4-address;
-      description
-        "The IP subnet of the egress filter to be installed to the AT. The meaning of this field depends on the {{param|.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterType}} field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Subnet";
-    }
-    leaf subnet-mask {
-      type uint8 {
-        range "0..32";
-      }
-      description
-        "The length of the IP subnetmask associated with the IP subnet in the previous field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.SubnetMask";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.";
-  }
-
-  grouping access-mgmt-legacy-g {
-    description
-      "This object contains configurable and observable attributes related to Access and Admission Control of the FAP, which are not not covered by 3GPP and 3GPP2 specifications.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.";
-  }
-
-  grouping access-mgmt-legacy-local-ip-access-g {
-    description
-      "Old Local IP access object, included on special request.";
-    leaf enable {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enables/disables the Local IP Access (LIPA) functionality.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Enable";
-    }
-    leaf max-rules-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.MaxRulesEntries";
-    }
-    leaf rule-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.RuleNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-legacy-local-ip-access-rule-g {
-    description
-      "Policy for selecting traffic for local IP access. Originated traffic will be NAT'ed. The rule is bi-directional, i.e. return traffic is allowed. Rules do NOT affect traffic to/from the FAP itself (such as TR-069 or control). The rules are applied to the mobile station data traffic (PS-domain) via deep packet inspection or similar method.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the forwarding entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Alias";
-    }
-    leaf dest-ip-address {
-      type inet:ip-address;
-      description
-        "Destination IP Address. {{empty}} indicates no destination address is specified. An entry for which {{param}} and {{param|DestSubnetMask}} are both {{empty}} is a default route.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.DestIPAddress";
-    }
-    leaf dest-subnet-mask {
-      type inet:ip-address;
-      description
-        "Destination subnet mask (IPv4) or prefix (IPv6). {{empty}} indicates no destination subnet mask or prefix is specified. If a destination subnet mask or prefix is specified, {{param}} is ANDed with the destination address before comparing with {{param|DestIPAddress}}. Otherwise, the full destination address is used as-is. An entry for which {{param|DestIPAddress}} and {{param}} are both {{empty}} is a default route.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.DestSubnetMask";
-    }
-    leaf protocol {
-      type int64;
-      description
-        "IP Protocol Identifier. -1 matches any protocol.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Protocol";
-    }
-    leaf action {
-      type enumeration {
-        enum "tunnel" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action - Tunnel";
-        }
-        enum "napt" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action - NAPT";
-        }
-      }
-      config false;
-      description
-        "Action to be taken for traffic matching this rule.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action";
-    }
-    leaf interface {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "Specifies the egress interface when {{param|Action}} is set to {{enum|NAPT|Action}}. {{reference}} layer-3 connection object. Example: InternetGatewayDevice.LANDevice.{i}.LANEthernetInterfaceConfig.{i}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Interface";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.";
-  }
-
-  grouping cell-config-g {
-    description
-      "This object contains parameters relating to configuring the FAP.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.";
-  }
-
-  grouping umts-g {
-    description
-      "This object contains parameters relating to configuring UMTS system specific information.";
-    leaf tunnel-instance {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "This is the reference to the IPsec tunnel instance used by the UMTS FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.TunnelInstance";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.";
-  }
-
-  grouping umts-cn-g {
-    description
-      "This object contains parameters relating to configuring UMTS CN.";
-    leaf plmn-type {
-      type enumeration {
-        enum "gsm-map" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType - GSM-MAP";
-        }
-        enum "ansi-41" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType - ANSI-41";
-        }
-      }
-      config false;
-      description
-        "Type of Public Land Mobile Network (PLMN).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNID";
-    }
-    leaf-list equiv-plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each item is a PLMNID. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.EquivPLMNID";
-    }
-    leaf sac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Service Area Code (SAC) {{bibref|3GPP-TS.23.003}}. The concatenation of PLMN ID (MCC+MNC), LAC, and SAC uniquely identifies the Service Area ID (SAI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.SAC";
-    }
-    leaf broadcast-sac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Service Area Code (SAC) for broadcast. The format of this parameter is the same with {{param|SAC}}, and it uniquely identifies the Service Area ID (SAI) for Earthquake and Tsunami Warning Services (ETWS) {{bibref|3GPP-TS.25.469|Section 9.1.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.BroadcastSAC";
-    }
-    leaf-list lacrac {
-      type string;
-      config false;
-      max-elements "256";
-      description
-        "{{list}} Each item is a LAC/RAC combination expressed in the following format: :<LAC or LACrange>':'<RAC or RACrange> Where LAC and RAC are single values, while LACrange and RACrange are inclusive and can be expressed in the following format: :<Start-value>\"..\"<End-value> Location Area Code (LAC) consists of up to 5 numerical characters. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}. Routing Area Code (RAC) consists of up to 3 numerical characters. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}. The FAP is to select one LAC and RAC from the combination(s) expressed in this parameter for use in {{param|LACInUse}} and {{param|RACInUse}} respectively. If a LAC occurs more than once in the list, this shall not increase the chance that it is selected over other LAC values in the list. The following are examples of the valid LACRAC combination formats: :\"64000:210\" ::(one list item with single value for LAC and RAC) :\"64000..64100:210, 64101:211\" ::(two list items, first item has a LAC range) :\"64000:210..214, 64001:215..219\" ::(two list items, both items have a RAC range for a specific LAC value) :\"64000..64100:210..214\" ::(one list item both have a LAC range and a RAC range)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.LACRAC";
-    }
-    leaf lac-in-use {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "The LAC being used by the FAP. Self-configuration for LAC is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|LACRAC}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first LAC value in {{param|LACRAC}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.LACInUse";
-    }
-    leaf rac-in-use {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "The RAC being used by the FAP. Self-configuration for RAC is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|LACRAC}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first RAC value in {{param|LACRAC}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.RACInUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.";
-  }
-
-  grouping umts-cn-cs-domain-g {
-    description
-      "This object contains parameters relating to configuring the CS domain of the UMTS CN.";
-    leaf t3212 {
-      type uint32 {
-        range "0..91800";
-      }
-      units "seconds";
-      config false;
-      description
-        "T3212 timeout value specified in {{units}} {{bibref|3GPP-TS.24.008|section 10.5.1.12.2}}. The values are implemented by steps of 360 {{units}}, which aligns with values in decihours in {{bibref|3GPP-TS.24.008}}. The value of 0 is used for infinite timeout value i.e. periodic updating shall not be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.T3212";
-    }
-    leaf imsi-attach-detach-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates the UE behavior regarding IMSI attach/detach procedure to the CN {{bibref|3GPP-TS.24.008}}. If {{true}} UE SHALL apply IMSI attach and detach procedure If {{false}} UE SHALL NOT apply IMSI attach and detach procedure";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.IMSIAttachDetachEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.";
-  }
-
-  grouping umts-cn-ps-domain-g {
-    description
-      "This object contains parameters relating to configuring the PS domain of the UMTS CN.";
-    leaf network-mode-operation-combined {
-      type boolean;
-      config false;
-      description
-        "Network Mode of Operation of the CN. {{bibref|3GPP-TS.23.060}} {{bibref|3GPP-TS.24.008}} If {{true}} (Network Mode of Operation II) Combined procedures between CS and PS domain are not supported (i.e. Gs interface is not present). If {{false}} (Network Mode of Operation I) Combined procedures between CS and PS domain are supported (i.e. Gs interface is present).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PSDomain.NetworkModeOperationCombined";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PSDomain.";
-  }
-
-  grouping umts-ran-g {
-    description
-      "This object contains parameters relating to the RAN-level configuration.";
-    leaf-list ura-list {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      min-elements 1;
-      max-elements "50";
-      description
-        "{{list}} Each item is a URA (UTRAN Registration Area) to which the FAP belongs. The order of the URA values has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.URAList";
-    }
-    leaf ura-in-use {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "The URA being used by the FAP. Self-configuration for URA is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for URA is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|URAList}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first URA value in {{param|URAList}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.URAInUse";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID allocated to the FAP. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RNCID";
-    }
-    leaf cell-id {
-      type uint32 {
-        range "0..268435455";
-      }
-      config false;
-      description
-        "Cell Identity. {{bibref|3GPP-TS.25.401|Section 6.1.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellID";
-    }
-    leaf t-rat-c {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Guard period in {{units}} before sending a \"RANAP:RESET ACKNOWLEDGE\" message towards the Femto GW. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRatC";
-    }
-    leaf t-raf-c {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} that the FAP SHOULD wait for receiving a \"RANAP:RESET ACKNOWLEDGE\" message from the Femto GW after sending a Reset to the Femto GW. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRafC";
-    }
-    leaf n-raf-c {
-      type uint64 {
-        range "1..max";
-      }
-      config false;
-      description
-        "Maximum number for RESET procedure that can be repeated in FAP. {{bibref|3GPP-TS.25.413|Section 8.26.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NRafC";
-    }
-    leaf tig-or {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Amount of time in {{units}} used to determine when the additional level of traffic reduction in CN overload SHOULD take place. While this timer is running all OVERLOAD messages or signalling pointing to congested information received by the FAP are ignored. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TigOR";
-    }
-    leaf tin-tr {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Amount of time in {{units}} used to determine when the CN overload can be considered cleared. While this timer is running, the FAP is not allowed to increase traffic. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TinTR";
-    }
-    leaf t-data-fwd {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} for Data Forwarding at FAP. Timer is started when a \"RANAP:SRNS Data Forward Command\" message (or a \"RANAP:Relocation Command\" message) is received. At timer expiry the \"SRNS Data Forwarding\" procedure is completed. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TDataFwd";
-    }
-    leaf t-reloc-prep {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} for the Relocation Preparation procedure. Timer is started when a \"RANAP:Relocation Required\" message is sent. Timer is stopped when a \"RANAP:Relocation Command\" or a \"RANAP:Relocation Preparation Failure\" message is received. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRelocPrep";
-    }
-    leaf t-reloc-overall {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} for protection of the overall Relocation procedure. Timer is started when a \"RANAP:Relocation Command\" message is received. Timer is stopped when a \"RANAP:Iu Release Command\" is received or the relocation procedure is cancelled. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRelocOverall";
-    }
-    leaf hnbid-realm {
-      type string {
-        length "0..182";
-      }
-      config false;
-      description
-        "The \"realm\" portion of the HNB-ID where HNB-ID is defined in {{bibref|3GPP-TS.25.469}} and is shown as follows: 0<IMSI>@<realm> Or 1<OUI>-<SerialNumber>@<realm> The other identifiers before \"@\" are device dependent values. Both <OUI> and <SerialNumber> are defined in {{bibref|TR-069a2|Table 36}}. <IMSI> is obtained from the USIM if it is equipped in the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HNBIDRealm";
-    }
-    leaf hs-flag {
-      type boolean;
-      config false;
-      description
-        "Enables/disables the HSDPA function in the FAP. If {{true}} HSDPA is enabled (this is equivalent to a \"1\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{false}} HSDPA is disabled (this is equivalent to a \"0\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HSFlag";
-    }
-    leaf hs-enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables HSDPA in the cell. If {{true}} HSDPA is enabled (this is equivalent to a \"1\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{false}} HSDPA is not enabled (this is equivalent to a \"0\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{param|HSFlag}} is {{false}} then this value MUST be {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HSEnable";
-    }
-    leaf num-of-hspdsc-hs {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "The number of codes at the defined spreading factor (SF=16), within the complete code tree. {{bibref|3GPP-TS.32.642|Section 6.3.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NumOfHSPDSCHs";
-    }
-    leaf num-of-hsscc-hs {
-      type uint64;
-      config false;
-      description
-        "The number of HS-SCCHs for one cell. {{bibref|3GPP-TS.32.642|Section 6.3.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NumOfHSSCCHs";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.";
-  }
-
-  grouping umts-ran-csg-g {
-    description
-      "This object contains parameters relating to the Closed Subscriber Group (CSG).";
-    leaf csg-indicator {
-      type boolean;
-      description
-        "The CSG-indicator Information Element (IE) in the Master Information Block reflects the access mode of the CSG cell. It is hence dependent on the value of {{param|.AccessMgmt.UMTS.AccessMode}}. If {{true}} the CSG-indicator IE is present, reflecting access to the CSG cell is closed. If {{false}} the CSG-indicator IE is absent, reflecting access to the CSG cell is not closed. {{bibref|3GPP-TS.25.331|Section 10.2.48.8.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGIndicator";
-    }
-    leaf-list uarfcndl-list {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      max-elements "128";
-      description
-        "{{list}} Each item is a UTRA Absolute Radio Frequency Channel Number (UARFCN) in the DL direction dedicated to the CSG cells. {{param}} is broadcast in SIB 11bis {{bibref|3GPP-TS.25.331|Section 10.2.48.8.14a}}. The corresponding UTRA Absolute Radio Frequency Channel Number (UARFCN) in the UL direction is derived based on the fixed offset applicable for the frequency band.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.UARFCNDLList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.";
-  }
-
-  grouping umts-ran-csg-csgpsc-split-info-g {
-    description
-      "This object contains parameters relating to the Primary Scrambling Code (PSC) split information for the CSG. Defined in SIB3/11bis {{bibref|3GPP-TS.25.331|Section 10.3.2.8 and 10.3.2.9}}.";
-    leaf start-psc-range1-coefficient {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "The value of this Information Element (IE) multiplied by 8 specifies the start PSC value of the first PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.StartPSCRange1Coefficient";
-    }
-    leaf number-of-ps-cs {
-      type enumeration {
-        enum "5" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 5";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 10";
-        }
-        enum "15" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 15";
-        }
-        enum "20" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 20";
-        }
-        enum "30" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 30";
-        }
-        enum "40" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 40";
-        }
-        enum "50" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 50";
-        }
-        enum "64" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 64";
-        }
-        enum "80" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 80";
-        }
-        enum "120" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 120";
-        }
-        enum "160" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 160";
-        }
-        enum "256" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 256";
-        }
-        enum "alltherest" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - alltherest";
-        }
-        enum "spare3" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare3";
-        }
-        enum "spare2" {
-          value 15;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare2";
-        }
-        enum "spare1" {
-          value 16;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare1";
-        }
-      }
-      config false;
-      description
-        "This Information Element (IE) specifies the number of PSCs reserved for CSG cells in each PSC range.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs";
-    }
-    leaf psc-range2-offset {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "If this Information Element (IE) is included, the UE shall calculate the second PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}. If this Information Element (IE) is not included, the UE shall consider the second PSC range to be not present.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.PSCRange2Offset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.";
-  }
-
-  grouping umts-ran-cell-selection-g {
-    description
-      "This object contains parameters related to cell selection and reselection.";
-    leaf quality-measure-cpich {
-      type enumeration {
-        enum "ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH - Ec/No";
-        }
-        enum "rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH - RSCP";
-        }
-      }
-      config false;
-      description
-        "Which mechanism to use when doing CPICH quality measurements. {{bibref|3GPP-TS.25.331|Section 10.3.7.47}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH";
-    }
-    leaf qqual-min {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Minimum required quality measure, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3 and Section 10.3.2.4}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QqualMin";
-    }
-    leaf qqual-min-offset {
-      type uint8 {
-        range "1..16";
-      }
-      units "dB";
-      default "1";
-      config false;
-      description
-        "Offset for {{param|QqualMin}} specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QqualMinOffset";
-    }
-    leaf q-rx-lev-min {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Minimum required RX level in the cell, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only odd values are valid, use of an even value MUST be rejected by the CPE. This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QRxLevMin";
-    }
-    leaf delta-q-rx-lev-min {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Delta for the minimum required RX level in the cell, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3 and Section 10.3.2.4}} The actual value of {{param|QRxLevMin}} = {{param|QRxLevMin}} + {{param}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.DeltaQRxLevMin";
-    }
-    leaf q-rx-lev-min-offset {
-      type uint8 {
-        range "2 | 4 | 6 | 8 | 10 | 12 | 14 | 16";
-      }
-      units "dB";
-      default "2";
-      config false;
-      description
-        "Offset for {{param|QRxLevMin}}, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QRxLevMinOffset";
-    }
-    leaf q-hyst1s {
-      type uint8 {
-        range "0..40";
-      }
-      config false;
-      description
-        "GSM and FDD Cell reselection hysteresis 1. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only even values are valid, use of an odd value MUST be rejected by the CPE.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHyst1s";
-    }
-    leaf q-hyst2s {
-      type uint8 {
-        range "0..40";
-      }
-      config false;
-      description
-        "FDD Cell reselection hysteresis 2. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only even values are valid, use of an odd value MUST be rejected by the CPE. This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored. By default when {{param|QHyst1s}} is set and {{param}} is not, then the value for {{param}} SHOULD match the value of {{param|QHyst1s}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHyst2s";
-    }
-    leaf t-reselections {
-      type uint8 {
-        range "0..31";
-      }
-      units "seconds";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. A UE triggers the reselection of a new cell if the cell reselection criteria are fulfilled during the time interval in {{units}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TReselections";
-    }
-    leaf s-intrasearch {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for intra-frequency measurements, and for the HCS measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SIntrasearch";
-    }
-    leaf s-intersearch {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for inter-frequency measurements, and for the HCS measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SIntersearch";
-    }
-    leaf s-search-hcs {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for intrafrequency and interfrequency measurement rules in HCS. Below this limit in the serving cell, the UE initiates measurements of all intrafrequency and interfrequency neighbouring cells of the serving cell. Only odd values are valid, use of an even value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SSearchHCS";
-    }
-    leaf s-search-rat {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the RAT (GSM) specific threshold for inter-RAT measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SSearchRAT";
-    }
-    leaf shcsrat {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the RAT (GSM) specific threshold for inter-RAT measurement rules in HCS. Only odd values are valid, use of an even value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SHCSRAT";
-    }
-    leaf s-limit-search-rat {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for skipping inter-RAT measurement rules in HCS. Above this RAT (GSM) specific threshold in the serving UTRA cell, the UE does not need to perform any inter-RAT measurements. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SLimitSearchRAT";
-    }
-    leaf non-hcstcr-max {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - not used";
-        }
-        enum "30" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 30";
-        }
-        enum "60" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 60";
-        }
-        enum "120" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 120";
-        }
-        enum "180" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 180";
-        }
-        enum "240" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 240";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the duration in seconds for evaluating the allowed amount of cell reselections. If the number of cell reselections during the time period defined by {{param}} exceeds {{param|NonHCSNCR}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax";
-    }
-    leaf non-hcsncr {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the maximum number of cell reselections. If the number of cell reselections during the {{param|NonHCSTCRMax}} time period exceeds the value of {{param}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSNCR";
-    }
-    leaf non-hcstcr-max-hyst {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - not used";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 10";
-        }
-        enum "20" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 20";
-        }
-        enum "30" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 30";
-        }
-        enum "40" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 40";
-        }
-        enum "50" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 50";
-        }
-        enum "60" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 60";
-        }
-        enum "70" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 70";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the cell reselection hysteresis for reverting from UE high-mobility measurements. The additional time period in seconds before UE reverts to low-mobility measurements. When the number of cell reselections during the time period defined by {{param|TCRMax}} no longer exceeds {{param|NCR}}, UE continues measurements during the time period defined by {{param|TCRMaxHyst}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst";
-    }
-    leaf qhcs {
-      type uint8 {
-        range "0..99";
-      }
-      default "0";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the quality threshold levels for applying prioritised hierarchical cell reselection. {{bibref|3GPP-TS.25.331|Section 10.3.7.12 and Section 10.3.7.54a}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHCS";
-    }
-    leaf use-of-hcs {
-      type boolean;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Indicate whether HCS is used in this cell or not. {{bibref|3GPP-TS.25.331|Section 10.3.7.47}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.UseOfHCS";
-    }
-    leaf hcs-prio {
-      type uint8 {
-        range "0..7";
-      }
-      default "0";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the HCS priority of this cell. {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.HCSPrio";
-    }
-    leaf tcr-max {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - not used";
-        }
-        enum "30" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 30";
-        }
-        enum "60" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 60";
-        }
-        enum "120" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 120";
-        }
-        enum "180" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 180";
-        }
-        enum "240" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 240";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the duration in seconds for evaluating the allowed amount of cell reselections. If the number of cell reselections during the time period defined by {{param}} exceeds {{param|NCR}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax";
-    }
-    leaf ncr {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the maximum number of cell reselections. If the number of cell reselections during the {{param|TCRMax}} time period exceeds the value of {{param}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NCR";
-    }
-    leaf tcr-max-hyst {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - not used";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 10";
-        }
-        enum "20" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 20";
-        }
-        enum "30" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 30";
-        }
-        enum "40" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 40";
-        }
-        enum "50" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 50";
-        }
-        enum "60" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 60";
-        }
-        enum "70" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 70";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the cell reselection hysteresis for reverting from UE high-mobility measurements. The additional time period in seconds before UE reverts to low-mobility measurements. When the number of cell reselections during the time period defined by {{param|TCRMax}} no longer exceeds {{param|NCR}}, UE continues measurements during the time period defined by {{param}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst";
-    }
-    leaf ue-tx-pwr-max-rach {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the maximum transmit power level, specified in {{units}}, that an UE MAY use when accessing the cell on RACH. Used to calculate Pcompensation, which is: max(UE_TXPWR_MAX_RACH - P_MAX, 0), where UE_TXPWR_MAX_RACH is {{param}} and P_MAX is the max transmit power for a UE. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} {{bibref|3GPP-TS.25.304|Section 5.2.3}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.UETxPwrMaxRACH";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.";
-  }
-
-  grouping umts-ran-rrc-timers-g {
-    description
-      "This object contains parameters related to miscellaneous RRC timers and constants.";
-    leaf t300 {
-      type uint16 {
-        range "100..8000";
-      }
-      units "milliseconds";
-      default "1000";
-      config false;
-      description
-        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T300";
-    }
-    leaf t301 {
-      type uint16 {
-        range "100..8000";
-      }
-      units "milliseconds";
-      default "2000";
-      config false;
-      description
-        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T301";
-    }
-    leaf t302 {
-      type uint16 {
-        range "100..8000";
-      }
-      units "milliseconds";
-      default "4000";
-      config false;
-      description
-        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T302";
-    }
-    leaf t304 {
-      type uint16 {
-        range "100 | 200 | 400 | 1000 | 2000";
-      }
-      units "milliseconds";
-      default "2000";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T304";
-    }
-    leaf t305 {
-      type int64;
-      units "minutes";
-      default "30";
-      config false;
-      description
-        "Timer measured in {{units}}. -1 indicates an unbounded timer in which there is no update. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T305";
-    }
-    leaf t307 {
-      type uint8 {
-        range "5 | 10 | 15 | 20 | 30 | 40 | 50";
-      }
-      units "seconds";
-      default "30";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T307";
-    }
-    leaf t308 {
-      type uint16 {
-        range "40 | 80 | 160 | 320";
-      }
-      units "milliseconds";
-      default "160";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T308";
-    }
-    leaf t309 {
-      type uint8 {
-        range "1..8";
-      }
-      units "seconds";
-      default "5";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T309";
-    }
-    leaf t310 {
-      type uint16 {
-        range "40 | 80 | 120 | 160 | 200 | 240 | 280 | 320";
-      }
-      units "milliseconds";
-      default "160";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T310";
-    }
-    leaf t311 {
-      type uint16 {
-        range "250 | 500 | 750 | 1000 | 1250 | 1500 | 1750 | 2000";
-      }
-      units "milliseconds";
-      default "2000";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T311";
-    }
-    leaf t312 {
-      type uint8 {
-        range "0..15";
-      }
-      units "seconds";
-      default "1";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T312";
-    }
-    leaf t313 {
-      type uint8 {
-        range "0..15";
-      }
-      units "seconds";
-      default "3";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T313";
-    }
-    leaf t314 {
-      type uint8 {
-        range "0 | 2 | 4 | 6 | 8 | 12 | 16 | 20";
-      }
-      units "seconds";
-      default "12";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T314";
-    }
-    leaf t315 {
-      type uint16 {
-        range "0 | 10 | 30 | 60 | 180 | 600 | 1200 | 1800";
-      }
-      units "seconds";
-      default "180";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T315";
-    }
-    leaf t316 {
-      type int64;
-      units "seconds";
-      default "30";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}. -1 indicates an unbounded timer in which there is no update.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T316";
-    }
-    leaf t317 {
-      type uint16 {
-        range "0 | 10 | 30 | 60 | 180 | 600 | 1200 | 1800";
-      }
-      units "seconds";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T317";
-    }
-    leaf n300 {
-      type uint8 {
-        range "0..7";
-      }
-      default "3";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N300";
-    }
-    leaf n301 {
-      type uint8 {
-        range "0..7";
-      }
-      default "2";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N301";
-    }
-    leaf n302 {
-      type uint8 {
-        range "0..7";
-      }
-      default "3";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N302";
-    }
-    leaf n304 {
-      type uint8 {
-        range "0..7";
-      }
-      default "2";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N304";
-    }
-    leaf n310 {
-      type uint8 {
-        range "0..7";
-      }
-      default "4";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N310";
-    }
-    leaf n312 {
-      type uint16 {
-        range "1..1000";
-      }
-      default "1";
-      config false;
-      description
-        "Counter. Only the following values are considered valid: 1, 2, 4, 10, 20, 50, 100, 200, 400, 600, 800, and 1000. Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N312";
-    }
-    leaf n313 {
-      type uint8 {
-        range "1 | 2 | 4 | 10 | 20 | 50 | 100 | 200";
-      }
-      default "20";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N313";
-    }
-    leaf n315 {
-      type uint16 {
-        range "1..1000";
-      }
-      default "1";
-      config false;
-      description
-        "Counter. Only the following values are considered valid: :1, 2, 4, 10, 20, 50, 100, 200, 400, 600, 800, and 1000. Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N315";
-    }
-    leaf wait-time {
-      type uint8 {
-        range "0..15";
-      }
-      units "seconds";
-      config false;
-      description
-        "Time period the UE has to wait before repeating the rejected procedure. This is an IE used when sending RRC connection reject, redirecting the requesting UE to another frequency. 0 indicates that repetition is not allowed. {{bibref|3GPP-TS.25.331|Section 10.3.3.50}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.WaitTime";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.";
-  }
-
-  grouping umts-ran-drx-g {
-    description
-      "This object contains parameters related to DRX parameters.";
-    leaf drx-cycle-length-coefficient-cs {
-      type uint8 {
-        range "6..9";
-      }
-      config false;
-      description
-        "Defines the DRX cycle length coefficient for CS domain to optimize paging in idle mode. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 10.3.3.6}}. {{param}} refers to 'k' in the formula as specified in {{bibref|3GPP-TS.25.304}}, Discontinuous reception. Used by the CN CS domain to count paging occasions for discontinuous reception in Idle Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for CN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.DRXCycleLengthCoefficientCS";
-    }
-    leaf drx-cycle-length-coefficient-ps {
-      type uint8 {
-        range "6..9";
-      }
-      config false;
-      description
-        "Defines the DRX cycle length coefficient for PS domain to optimize paging in idle mode. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 10.3.3.6}}. {{param}} refers to 'k' in the formula as specified in {{bibref|3GPP-TS.25.304}}, Discontinuous reception. Used by the CN PS domain to count paging occasions for discontinuous reception in Idle Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for CN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.DRXCycleLengthCoefficientPS";
-    }
-    leaf utrandrx-cycle-length-coefficient {
-      type uint8 {
-        range "3..9";
-      }
-      config false;
-      description
-        "Defines the DRX cycle length used by UTRAN to count paging occasions for discontinuous reception in Connected Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for UTRAN. {{param}} SHOULD be used by the UTRAN/FAP for UEs in Cell_PCH/Cell_FACH state. {{bibref|3GPP-TS.25.331|Section 10.3.3.49}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.UTRANDRXCycleLengthCoefficient";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.";
-  }
-
-  grouping umts-ran-power-control-g {
-    description
-      "This object contains parameters related to power control and RACH.";
-    leaf constant-value {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Used by the UE to calculate the initial output power, specified in {{units}}, on PRACH according to the open loop power control procedure. Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.11}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.ConstantValue";
-    }
-    leaf power-ramp-step-up {
-      type uint8 {
-        range "1..8";
-      }
-      units "dB";
-      config false;
-      description
-        "Used for the Uplink Common Channel. Defines the Power ramp setup, specified in {{units}}, on PRACH preamble when no acquisition indicator (AI) is detected by the UE. Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.54}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PowerRampStepUp";
-    }
-    leaf preamble-retrans-max {
-      type uint8 {
-        range "1..64";
-      }
-      config false;
-      description
-        "Used for the Uplink Common Channel. Defines the maximum number of preambles allowed in one preamble ramping cycle. PRACH Preamble Retrans Max is part of \"PRACH power offset\" which is part of \"PRACH system information list\". Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.54}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PreambleRetransMax";
-    }
-    leaf persistence-scale-factor {
-      type uint8 {
-        range "2..9";
-      }
-      config false;
-      description
-        "Persistence Scaling Factor for overload control. Parameter in SIB5. The value is the scaling factor multiplied by 10, e.g. 2 is a scaling factor of 0.2";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PersistenceScaleFactor";
-    }
-    leaf m-max {
-      type uint8 {
-        range "1..32";
-      }
-      config false;
-      description
-        "Maximum number of RACH preamble cycles. Defines how many times the PRACH preamble ramping procedure can be repeated before UE MAC reports a failure on RACH transmission to higher layers. Maximum number of RACH preamble cycles is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.MMax";
-    }
-    leaf nb01-min {
-      type uint8 {
-        range "0..50";
-      }
-      config false;
-      description
-        "RACH random back-off lower bound. {{param}} is the lower bound of the waiting time in 10 millisecond increments (i.e. 1 corresponds to 10 ms and 50 corresponds to 500 ms). {{param}} is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.NB01Min";
-    }
-    leaf nb01-max {
-      type uint8 {
-        range "0..50";
-      }
-      config false;
-      description
-        "RACH random back-off upper bound. {{param}} is the Upper bound of the waiting time in 10 millisecond increments (i.e. 1 corresponds to 10 ms and 50 corresponds to 500 ms). {{param}} is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.NB01Max";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.";
-  }
-
-  grouping umts-ran-cell-restriction-g {
-    description
-      "This object contains parameters related to cell access restriction.";
-    leaf cell-barred {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP is barred from service or not. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.CellBarred";
-    }
-    leaf intra-freq-cell-reselection-indicator {
-      type boolean;
-      config false;
-      description
-        "When {{param|CellBarred}} is {{true}}, this indicates whether the intra-frequency cell re-selection is allowed or not. {{param}} has no meaning if {{param|CellBarred}} is {{false}} and MUST be ignored in such cases. {{true}} means that intra-frequency cell re-selection is allowed. {{false}} means that intra-frequency cell re-selection is not allowed. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.IntraFreqCellReselectionIndicator";
-    }
-    leaf t-barred {
-      type uint16 {
-        range "10 | 20 | 40 | 80 | 160 | 320 | 640 | 1280";
-      }
-      units "seconds";
-      config false;
-      description
-        "The time period in {{units}} during which the UE is barred from accessing the FAP. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.TBarred";
-    }
-    leaf-list access-class-barred-list-cs {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "{{list}} Each entry is an Access Class that is barred from CS service. The order of the list has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.AccessClassBarredListCS";
-    }
-    leaf-list access-class-barred-list-ps {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "{{list}} Each entry is an Access Class that is barred from PS service. The order of the list has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.AccessClassBarredListPS";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP is reserved for operator use or not. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.CellReservedForOperatorUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.";
-  }
-
-  grouping umts-ran-intra-freq-meas-g {
-    description
-      "This object contains parameters relating to the intra-freq HO control parameters.";
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - CPICH RSCP";
-        }
-        enum "pathloss" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - Pathloss";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for intra-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.38}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the equivalent time constant of the low pass filter applied to the CPICH quality measurements, or {{enum|CPICH Ec/No|MeasurementQuantity}}. {{bibref|3GPP-TS.25.331|Section 8.6.7.2 and Section 10.3.7.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.FilterCoefficient";
-    }
-    leaf-list intra-frequency-event-identity {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each entry is an Event ID from the list of: 1a, 1b, 1c, 1d, 1e, 1f, 1g, 1h, 1i Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.34}} Since the FAP can determine this on its own, it might not be necessary to configure it.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.IntraFrequencyEventIdentity";
-    }
-    leaf-list triggering-condition2-event1a {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Active and Monitored";
-        }
-        enum "detected" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Detected";
-        }
-        enum "detected and monitored" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Detected and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1a. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a";
-    }
-    leaf-list triggering-condition1-event1b {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Active and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1b. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b";
-    }
-    leaf-list triggering-condition2-event1e {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Active and Monitored";
-        }
-        enum "detected" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Detected";
-        }
-        enum "detected and monitored" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Detected and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1e. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e";
-    }
-    leaf-list triggering-condition1-event1f {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Active and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1f. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f";
-    }
-    leaf reporting-range-event1a {
-      type uint8 {
-        range "0..29";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines a constant in the inequality criterion that needs to be satisfied for an Event 1a to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingRangeEvent1a";
-    }
-    leaf reporting-range-event1b {
-      type uint8 {
-        range "0..29";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines a constant in the inequality criterion that needs to be satisfied for an Event 1b to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingRangeEvent1b";
-    }
-    leaf weighting-factor-event1a {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.WeightingFactorEvent1a";
-    }
-    leaf weighting-factor-event1b {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.WeightingFactorEvent1b";
-    }
-    leaf report-deactivation-threshold-event1a {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Defines the maximum number of cells allowed in the \"active cell set\" for Event 1a to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportDeactivationThresholdEvent1a";
-    }
-    leaf reporting-amount-event1a {
-      type int64;
-      config false;
-      description
-        "Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingAmountEvent1a";
-    }
-    leaf reporting-amount-event1c {
-      type int64;
-      config false;
-      description
-        "Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1c The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingAmountEvent1c";
-    }
-    leaf reporting-interval-event1a {
-      type uint16 {
-        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingIntervalEvent1a";
-    }
-    leaf reporting-interval-event1c {
-      type uint16 {
-        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1c. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingIntervalEvent1c";
-    }
-    leaf hysteresis-event1a {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1a";
-    }
-    leaf hysteresis-event1b {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1b";
-    }
-    leaf hysteresis-event1c {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1c";
-    }
-    leaf hysteresis-event1d {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1d";
-    }
-    leaf hysteresis-event1e {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1e";
-    }
-    leaf hysteresis-event1f {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1f";
-    }
-    leaf time-to-trigger-event1a {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1a";
-    }
-    leaf time-to-trigger-event1b {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1b";
-    }
-    leaf time-to-trigger-event1c {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1c";
-    }
-    leaf time-to-trigger-event1d {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1d";
-    }
-    leaf time-to-trigger-event1e {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1e";
-    }
-    leaf time-to-trigger-event1f {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1f";
-    }
-    leaf threshold-used-frequency-event1e {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ThresholdUsedFrequencyEvent1e";
-    }
-    leaf threshold-used-frequency-event1f {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ThresholdUsedFrequencyEvent1f";
-    }
-    leaf replacement-activation-threshold-event1c {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Defines the minimum number of cells allowed in the \"active cell set\" for Event 1c to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReplacementActivationThresholdEvent1c";
-    }
-    leaf instance-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.InstanceNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.";
-  }
-
-  grouping umts-ran-intra-freq-meas-instance-g {
-    description
-      "Table containing parameters relating to a particular instance of intra-freq events.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Alias";
-    }
-    leaf intra-frequency-event-identity {
-      type enumeration {
-        enum "1a" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1a";
-        }
-        enum "1b" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1b";
-        }
-        enum "1c" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1c";
-        }
-        enum "1d" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1d";
-        }
-        enum "1e" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1e";
-        }
-        enum "1f" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1f";
-        }
-      }
-      description
-        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.34}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity";
-    }
-    leaf event-description {
-      type string {
-        length "0..256";
-      }
-      description
-        "A free-form description of the way the event instance is meant to be used. E.g. \"hand-out to macro cells\", \"addition of enterprise HNB cell to Active Set\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.EventDescription";
-    }
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - CPICH RSCP";
-        }
-        enum "pathloss" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - Pathloss";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for intra-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.38}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the equivalent time constant of the low pass filter applied to the CPICH quality measurements, or {{enum|CPICH Ec/No|MeasurementQuantity}}. {{bibref|3GPP-TS.25.331|Section 8.6.7.2 and Section 10.3.7.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.FilterCoefficient";
-    }
-    leaf-list triggering-condition {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Active and Monitored";
-        }
-        enum "detected" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Detected";
-        }
-        enum "detected and monitored" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Detected and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger the event instance. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition";
-    }
-    leaf reporting-range {
-      type uint8 {
-        range "0..29";
-      }
-      units "dB";
-      config false;
-      description
-        "Applicable to events 1a, 1b, otherwise not needed. Defines a constant in the inequality criterion that needs to be satisfied for an Event 1b to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingRange";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Applicable to events 1a, 1b, otherwise not needed. Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.WeightingFactor";
-    }
-    leaf report-deactivation-threshold {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Applicable to events 1a, otherwise not needed. Defines the maximum number of cells allowed in the \"active cell set\" for Event 1a to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportDeactivationThreshold";
-    }
-    leaf reporting-amount {
-      type int64;
-      config false;
-      description
-        "Applicable to events 1a, 1c, otherwise not needed. Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingAmount";
-    }
-    leaf reporting-interval {
-      type uint16 {
-        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Applicable to events 1a, 1c, otherwise not needed. Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingInterval";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TimeToTrigger";
-    }
-    leaf threshold-used-frequency {
-      type int64;
-      config false;
-      description
-        "Applicable to events 1e, 1f, otherwise not needed. Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ThresholdUsedFrequency";
-    }
-    leaf replacement-activation-threshold {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Applicable only to event 1c Defines the minimum number of cells allowed in the \"active cell set\" for Event 1c to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReplacementActivationThreshold";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.";
-  }
-
-  grouping umts-ran-inter-freq-meas-g {
-    description
-      "This object contains parameters relating to the inter-freq HO related control parameters.";
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity - CPICH RSCP";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for inter-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.FilterCoefficient";
-    }
-    leaf-list inter-frequency-event-identity {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each entry is an Event ID from the list of: 2a, 2b, 2c, 2d, 2e,2f Defines the identity of the event used to trigger inter-frequency UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.InterFrequencyEventIdentity";
-    }
-    leaf weighting-factor-event2a {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2a";
-    }
-    leaf weighting-factor-event2b {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2b";
-    }
-    leaf weighting-factor-event2d {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2d";
-    }
-    leaf weighting-factor-event2f {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2f";
-    }
-    leaf hysteresis-event2a {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2a";
-    }
-    leaf hysteresis-event2b {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2b";
-    }
-    leaf hysteresis-event2d {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2d";
-    }
-    leaf hysteresis-event2f {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2f";
-    }
-    leaf time-to-trigger-event2a {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2a";
-    }
-    leaf time-to-trigger-event2b {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2b";
-    }
-    leaf time-to-trigger-event2d {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2d";
-    }
-    leaf time-to-trigger-event2f {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2f";
-    }
-    leaf threshold-used-frequency-event2b {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2b";
-    }
-    leaf threshold-used-frequency-event2d {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2d";
-    }
-    leaf threshold-used-frequency-event2f {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2f";
-    }
-    leaf instance-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.InstanceNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.";
-  }
-
-  grouping umts-ran-inter-freq-meas-instance-g {
-    description
-      "Table containing parameters relating to a particular instance of inter-freq events.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Alias";
-    }
-    leaf intra-frequency-event-identity {
-      type enumeration {
-        enum "2a" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2a";
-        }
-        enum "2b" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2b";
-        }
-        enum "2c" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2c";
-        }
-        enum "2d" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2d";
-        }
-        enum "2e" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2e";
-        }
-        enum "2f" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2f";
-        }
-      }
-      description
-        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity";
-    }
-    leaf event-description {
-      type string {
-        length "0..256";
-      }
-      description
-        "A free-form description of the way the event instance is meant to be used. E.g. \"detecting cell edge to prepare for hand-out\", \"cancel hand-out preparation\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.EventDescription";
-    }
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity - CPICH RSCP";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for inter-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.FilterCoefficient";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.WeightingFactor";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.TimeToTrigger";
-    }
-    leaf threshold-used-frequency {
-      type int64;
-      config false;
-      description
-        "Applicable to events 2b, 2d, 2f, otherwise not needed. Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.ThresholdUsedFrequency";
-    }
-    leaf threshold-non-used-frequency {
-      type int64;
-      config false;
-      description
-        "Applicable to events 2a, 2b, 2c, 2e otherwise not needed. Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold non used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.ThresholdNonUsedFrequency";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.";
-  }
-
-  grouping umts-ran-inter-rat-meas-g {
-    description
-      "This object contains parameters relating to the inter-RAT HO related control parameters. This is specifically for GERAN system.";
-    leaf gsm-filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.29}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.GSMFilterCoefficient";
-    }
-    leaf bsic-verification-required {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the BSIC verification is required or not for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.29}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.BSICVerificationRequired";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.WeightingFactor";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-RAT HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.TimeToTrigger";
-    }
-    leaf threshold-own-system {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold own system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.ThresholdOwnSystem";
-    }
-    leaf threshold-other-system {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold other system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.ThresholdOtherSystem";
-    }
-    leaf instance-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.InstanceNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.";
-  }
-
-  grouping umts-ran-inter-rat-meas-instance-g {
-    description
-      "Table containing parameters relating to a particular instance of inter-freq events.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Alias";
-    }
-    leaf inter-rat-event-identity {
-      type enumeration {
-        enum "3a" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3a";
-        }
-        enum "3b" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3b";
-        }
-        enum "3c" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3c";
-        }
-        enum "3d" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3d";
-        }
-      }
-      description
-        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity";
-    }
-    leaf event-description {
-      type string {
-        length "0..256";
-      }
-      description
-        "A free-form description of the way the event instance is meant to be used. E.g. \"hand-out to GSM macrocell\", \"cancel hand-out preparation due to decreasing macrocell quality\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.EventDescription";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.FilterCoefficient";
-    }
-    leaf bsic-verification-required {
-      type boolean;
-      config false;
-      description
-        "Applicable only to GSM events. Indicates whether the BSIC verification is required or not for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.29}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.BSICVerificationRequired";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.WeightingFactor";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-RAT HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.TimeToTrigger";
-    }
-    leaf threshold-own-system {
-      type int64;
-      config false;
-      description
-        "Applicable only to event 3a, otherwise not needed. Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold own system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.ThresholdOwnSystem";
-    }
-    leaf threshold-other-system {
-      type int64;
-      config false;
-      description
-        "Applicable to events 3a, 3b, 3c, otherwise not needed. Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold other system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.ThresholdOtherSystem";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.";
-  }
-
-  grouping umts-ran-ue-internal-meas-g {
-    description
-      "This object contains parameters relating to the UE internal measurement control parameters.";
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for UE internal measurement. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.79}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.FilterCoefficient";
-    }
-    leaf ue-tx-pwr-threshold-event6a {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Defines the threshold for UE transmit power above which Event 6a is reported. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.UETxPwrThresholdEvent6a";
-    }
-    leaf time-to-trigger-event6a {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the period in {{units}} between detection of Event 6a and sending of Measurement Report. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.TimeToTriggerEvent6a";
-    }
-    leaf ue-tx-pwr-threshold-event6b {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Defines the threshold for UE transmit power above which Event 6b is reported. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.UETxPwrThresholdEvent6b";
-    }
-    leaf time-to-trigger-event6b {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the period in {{units}} between detection of Event 6b and sending of Measurement Report. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.TimeToTriggerEvent6b";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.";
-  }
-
-  grouping umts-ran-rf-g {
-    description
-      "This object contains parameters relating to the RF configuration.";
-    leaf-list uarfcndl {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433|Section 9.2.1.65}} Self-configuration for UARFCN is controlled by {{param|.Capabilities.UMTS.SelfConfig.UARFCNConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for UARFCN is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|UARFCNDLInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The UARFCN values supplied to the list are derived based on the formula defined in {{bibref|3GPP-TS.25.104|Section 5.4.3}} The order of the UARFCN entries has no significance. The carrier spacing in FDD mode is fixed as defined in {{bibref|3GPP-TS.25.104}}. Therefore, the FAP can unambiguously derive the UL UARFCN value based on the selected DL UARFCN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDL";
-    }
-    leaf uarfcndl-in-use {
-      type uint64;
-      description
-        "The DL UARFCN being used by the FAP. Self-configuration for UARFCN is controlled by {{param|.Capabilities.UMTS.SelfConfig.UARFCNConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|UARFCNDL}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|UARFCNDL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDLInUse";
-    }
-    leaf uarfcnul-in-use {
-      type uint64;
-      description
-        "The UL UARFCN being used by the FAP. The UL UARFCN that corresponds to {{param|UARFCNDLInUse}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNULInUse";
-    }
-    leaf-list uarfcndl-to-protect {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each item is a DL UARFCNs to be protected from adjacent channel interference. \"Adjacent channel\" in this context means offset from the FAP's UARFCN by 5MHz. {{bibref|3GPP-TS.25.104|Section 6.4.6}} If any of the items in the list are adjacent to the FAP's own DL channel, the FAP MUST take the Primary CPICH code power measured on these channels into account as part of its maximum transmit power self-configuration. The UARFCNs in the list can belong to any operator, allowing for protection of the FAP operator's own macro layer as well as that of other operators (only the latter is mandated by the {{bibref|3GPP-TS.25.104}} requirements). The list SHOULD take into account the ability of the FAP to self-configure its own DL UARFCN and so SHOULD include any channels (requiring protection) which can potentially be adjacent to the UARFCN selected by the FAP. For example, if only adjacent operator protection is required and the FAP has the ability to self-configure to any channel owned by its operator, this list would be populated with the UARFCNs immediately above and below the range of channels owned by the FAP operator. Adjacent channel protection can cause the FAP transmit power to be reduced down to as low as 8dBm. If {{empty}} then it indicates that there are no channels adjacent to the FAP that require protection, or that self-configuration of the FAP transmit power is not enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDLToProtect";
-    }
-    leaf-list primary-scrambling-code {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a Primary DL Scrambling Code used by the FDD mode cell with a numeric range between 0 and 511 inclusive. {{bibref|3GPP-TS.25.433|Section 9.2.2.34}} Self-configuration for PSC is controlled by {{param|.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for {{param}} is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|PrimaryScramblingCodeInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PSC values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The following are examples of valid PSC string: :\"20\" ::(explicitly specifies a single PSC value) :\"20,30,40\" ::(specifies 3 possible PSC values to select from) \"20..40\" ::(specifies 21 possible values between 20 and 40, inclusive) \"20..40,50\" ::(specifies 22 possible values between 20 and 40 inclusive and a single value 50) The order of the items has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode";
-    }
-    leaf primary-scrambling-code-in-use {
-      type uint64;
-      description
-        "The PSC being used by the FAP. Self-configuration for PSC is controlled by {{param|.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|PrimaryScramblingCode}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|PrimaryScramblingCode}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PrimaryScramblingCodeInUse";
-    }
-    leaf maxfap-tx-power-expanded {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power allowed on the FAP, maximum value for the linear sum of the power of all downlink physical channels, that is allowed to be used in a cell. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -30.0 to 20.0 incremented by 0.1 dB. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded";
-    }
-    leaf maxfap-tx-power-in-use-expanded {
-      type int64;
-      units "dBm";
-      description
-        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -30.0 {{units}} to 20.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPowerExpanded}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerInUseExpanded";
-    }
-    leaf max-ul-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power level a UE can use on PRACH. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -50 to 33 incremented by 1. {{bibref|3GPP-TS.25.331|Section 10.3.6.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxULTxPower";
-    }
-    leaf max-ul-tx-power-in-use {
-      type int64;
-      units "dBm";
-      description
-        "The maximum transmission power level a UE can use on PRACH. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxULTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxULTxPowerInUse";
-    }
-    leaf pcpich-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "The value of the transmission power of the Primary Common PIlot CHannel (P-CPICH). The P-CPICH physical channel carries the common pilots of the cell. Parameter in SIB5. {{param}} is expressed as a range of allowed transmission power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its transmission power. Self-configuration for transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -10.0 to 20.0 incremented by 0.1 dB. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCPICHPower";
-    }
-    leaf pcpich-power-in-use {
-      type int64;
-      units "dBm";
-      description
-        "The P-CPICH power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -10.0 {{units}} to 20.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|PCPICHPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCPICHPowerInUse";
-    }
-    leaf power-offset-pilot-dpdch {
-      type uint8 {
-        range "0..24";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines the power offset between pilot channel and DPDCH. Actual values of the offset are 0.0 {{units}} to 6.0 {{units}} in steps of 0.25 {{units}}. The value of {{param}} divided by 4 yields the actual value of the offset. {{bibref|3GPP-TS.25.331|Section 10.3.6.18}} {{bibref|3GPP-TS.25.214|Section 5.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PowerOffsetPilotDPDCH";
-    }
-    leaf fap-coverage-target {
-      type uint8 {
-        range "50..150";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines the target value measured in {{units}} for the range of the FAP's DL coverage, in terms of RF propagation loss. This value can be used by the FAP's self-configuration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. {{bibref|3GPP-TS.25.967|Section 7.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FAPCoverageTarget";
-    }
-    leaf fap-quality-target-ec-io {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the target value measured in dB for the downlink signal quality of the FAP in terms of CPICH Ec/Io, thereby clarifying the meaning of \"FAPCoverageTarget\". Actual values of the FAPQualityTargetEcIo are -20 dB to 0 dB in steps of 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FAPQualityTargetEcIo";
-    }
-    leaf psch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the Primary SCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PSCHPower";
-    }
-    leaf ssch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the Secondary SCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.SSCHPower";
-    }
-    leaf pich-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the maximum transmission power offset measured in {{units}} of the PICH channel relative to the Primary CPICH transmission power. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.2.1.49A}} {{bibref|3GPP-TS.25.331|Section 10.3.6.50}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PICHPower";
-    }
-    leaf pch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the PCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.1.3.1 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCHPower";
-    }
-    leaf fach-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the FACH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.1.6.1 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FACHPower";
-    }
-    leaf bch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the BCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 9.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.BCHPower";
-    }
-    leaf aich-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of one AICH relative to the Primary CPICH power. Parameter defined in SIB5 {{bibref|3GPP-TS.25.331|Section 10.3.6.3}}. Transmission power level of AICH, AP-AICH and CD/CA-ICH channels compared to CPICH. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.2.2.D}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.AICHPower";
-    }
-    leaf ctch-allocation-period {
-      type uint8 {
-        range "1..255";
-      }
-      config false;
-      description
-        "The value defines 'N' multiples of M(TTI) for CBS DRX calculations at the UE side.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.CTCHAllocationPeriod";
-    }
-    leaf cbs-frame-offset {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Value of CBS frame offset (CTCH) on DL FACH. Parameter in SIB5";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.CBSFrameOffset";
-    }
-    leaf max-tti {
-      type uint8 {
-        range "1..255";
-      }
-      config false;
-      description
-        "Defines the number of radio frames in the TTI of the FACH used for CTCH (MTTI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxTTI";
-    }
-    leaf noise-rise-limit-lower-value {
-      type uint16 {
-        range "0..500";
-      }
-      config false;
-      description
-        "Defines the lower value of the Noise Rise Limit range that UMTS FAP is allowed to pick from. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB. the value MUST not exceed the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}} The Noise Rise Limit range identifies the limits between which the FAP can self-configure its uplink noise rise limit. Self-configuration for noise rise limit is controlled by {{param|.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable}} from an enabled perspective.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue";
-    }
-    leaf noise-rise-limit-upper-value {
-      type uint16 {
-        range "0..500";
-      }
-      config false;
-      description
-        "Defines the upper value of the Noise Rise Limit range that UMTS FAP is allowed to pick from. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB. the value MUST not be below the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} NoiseRiseLimit identifies the limits between which the FAP can self-configure its uplink noise rise limit. Self-configuration for noise rise limit is controlled by {{param|.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable}} from an enabled perspective.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue";
-    }
-    leaf noise-rise-limit-in-use {
-      type uint16 {
-        range "0..500";
-      }
-      description
-        "Actual value of the Noise Rise Limit that the FAP uses. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitInUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.";
-  }
-
-  grouping umts-ran-neighbor-list-g {
-    description
-      "This object contains parameters relating to the neighbor list.";
-    leaf max-intra-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.MaxIntraFreqCellEntries";
-    }
-    leaf max-inter-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.MaxInterFreqCellEntries";
-    }
-    leaf intra-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCellNumberOfEntries";
-    }
-    leaf inter-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.";
-  }
-
-  grouping umts-ran-neighbor-list-intra-freq-cell-g {
-    description
-      "Table containing the intra-frequency cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.URA";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PCPICHTxPower";
-    }
-    leaf collocated-inter-freq-cell {
-      type uint32 {
-        range "0..268435455";
-      }
-      config false;
-      description
-        "Provides identity of collocated inter-frequency Cell. Needed for pathloss estimation, in case the femto environment masks intra-frequency neighbor. Cell Identity. {{bibref|3GPP-TS.25.331|Section 10.3.2.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.CollocatedInterFreqCell";
-    }
-    leaf max-tx-power {
-      type int64;
-      units "0.1 dBm";
-      config false;
-      description
-        "Cell Max Tx Power. Parameter needed in HNB power calibration, for protection of neighbour cells. Actual values of the power are -30.0 dBm to 60.0 dBm in steps of 0.1 dB. The value of MaxTxPower divided by 10 yields the actual value of the power. C.f {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MaxTxPower";
-    }
-    leaf max-dpc-htx-power {
-      type int64;
-      units "0.1 dBm";
-      config false;
-      description
-        "Maximum DL DPCH Tx Power per UE configured in the cell (for CS UEs). Parameter may be used by FAP to protect the DL budget allocated to neighbouring UEs served by neighbour cells. C.f (max 10 dB below max Tx power) {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}} Actual values of the power are -40.0 dBm to 50.0 dBm in steps of 0.1 dB. The value of MaxDPCHtxPower divided by 10 yields the actual value of the power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MaxDPCHtxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-inter-freq-cell-g {
-    description
-      "Table containing the inter-frequency cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PCPICHTxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-inter-rat-cell-g {
-    description
-      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.25.331|Section 10.3.7.23}}";
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.MaxGSMEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSMNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.";
-  }
-
-  grouping umts-ran-neighbor-list-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GSM provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm 850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM 850";
-        }
-        enum "gsm 900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM 900";
-        }
-        enum "dcs 1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - DCS 1800";
-        }
-        enum "pcs 1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - PCS 1900";
-        }
-      }
-      config false;
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-g {
-    description
-      "This object contains parameters relating to the neighbor list used by the FAP based on its self-configuration capability and {{object|.CellConfig.UMTS.RAN.NeighborList.}} configuration of adding and excluding cells.";
-    leaf max-intra-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.MaxIntraFreqCellEntries";
-    }
-    leaf max-inter-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.MaxInterFreqCellEntries";
-    }
-    leaf intra-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCellNumberOfEntries";
-    }
-    leaf inter-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-intra-freq-cell-g {
-    description
-      "Table containing the intra-frequency cell list.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "C-ID of the intra-freq neighbour cell {{bibref|3GPP-TS.25.401|Section 6.1.5}}. If {{param|RNCID}} is larger than 4095, then {{param}} will be 12 bits (i.e. a range of [0:4095]), else {{param}} is 16 bits long (i.e. range of [4096:65535]). This is needed to facilitate Femto to Macro handover. Used in {{bibref|3GPP-TS.25.413|Section 9.2.1.28}} as part of Target Cell ID.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.URA";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.PCPICHScramblingCode";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-inter-freq-cell-g {
-    description
-      "Table containing the inter-frequency cell list.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "C-ID of the intra-freq neighbour cell {{bibref|3GPP-TS.25.401|Section 6.1.5}}. If {{param|RNCID}} is larger than 4095, then {{param}} will be 12 bits (i.e. a range of [0:4095]), else {{param}} is 16 bits long (i.e. range of [4096:65535]). This is needed to facilitate Femto to Macro handover. Used in {{bibref|3GPP-TS.25.413|Section 9.2.1.28}} as part of Target Cell ID.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.PCPICHScramblingCode";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-inter-rat-cell-g {
-    description
-      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.25.331|Section 10.3.7.23}}";
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.MaxGSMEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSMNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GSM.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm 850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM 850";
-        }
-        enum "gsm 900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM 900";
-        }
-        enum "dcs 1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - DCS 1800";
-        }
-        enum "pcs 1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - PCS 1900";
-        }
-      }
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-  }
-
-  grouping umts-rab-g {
-    description
-      "This object contains parameters relating to Radio Access layers {{bibref|3GPP-TS.32.405}}";
-    leaf rab-succ-estab-cs {
-      type uint64;
-      description
-        "The number of successfully established RABs (with or without queueing) for CS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABSuccEstabCS";
-    }
-    leaf rab-fail-estab-cs {
-      type uint64;
-      description
-        "The number of RAB establishment failures for CS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABFailEstabCS";
-    }
-    leaf rab-succ-estab-ps {
-      type uint64;
-      description
-        "The number of successfully established RABs for PS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABSuccEstabPS";
-    }
-    leaf rab-fail-estab-ps {
-      type uint64;
-      description
-        "The number of RABs failed to establish for PS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABFailEstabPS";
-    }
-    leaf rabcs-setup-time-mean {
-      type uint64;
-      units "milliseconds";
-      description
-        "The mean time in {{units}} for a FAP to establish a RAB CS connection. This measurement is obtained by accumulating the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for CS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs over a granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}). This end value of the time will then be divided by the number of successfully established RABs observed in the granularity period to give the arithmetic mean. The accumulator SHALL be reinitialized at the beginning of each granularity period.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABCSSetupTimeMean";
-    }
-    leaf rabcs-setup-time-max {
-      type uint64;
-      units "milliseconds";
-      description
-        "The maximum time in {{units}} for a FAP to establish a RAB CS connection. This measurement is obtained by monitoring the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for CS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs. The high tide mark of this time will be stored in a gauge; the gauge SHALL be reinitialized at the beginning of each granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABCSSetupTimeMax";
-    }
-    leaf rabps-setup-time-mean {
-      type uint64;
-      units "milliseconds";
-      description
-        "The mean time in {{units}} for a FAP to establish a RAB PS connection. This measurement is obtained by accumulating the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for PS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs over a granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}). This end value of the time will then be divided by the number of successfully established RABs observed in the granularity period to give the arithmetic mean. The accumulator SHALL be reinitialized at the beginning of each granularity period.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABPSSetupTimeMean";
-    }
-    leaf rabps-setup-time-max {
-      type uint64;
-      units "milliseconds";
-      description
-        "The maximum time in {{units}} for a FAP to establish a RAB PS connection. This measurement is obtained by monitoring the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for PS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs. The high tide mark of this time will be stored in a gauge; the gauge SHALL be reinitialized at the beginning of each granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABPSSetupTimeMax";
-    }
-    leaf fail-ho {
-      type uint64;
-      description
-        "The number of failed Handovers.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.FailHO";
-    }
-    leaf succ-ho {
-      type uint64;
-      description
-        "The number of successful Handovers.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.SuccHO";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.";
-  }
-
-  grouping lte-g {
-    description
-      "This object contains parameters relating to configuring the LTE FAP.";
-    leaf tunnel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.TunnelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.";
-  }
-
-  grouping lte-tunnel-g {
-    description
-      "This object contains a table of all tunnel instances configured for the LTE FAP.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.Alias";
-    }
-    leaf tunnel-ref {
-      type string {
-        length "0..256";
-      }
-      description
-        "This is the reference to an IPsec tunnel instance used by the LTE FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.TunnelRef";
-    }
-    leaf-list plmnid {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Optional list of PLMM IDs associated with the tunnel, which can be used for selecting the tunnel. Each PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.PLMNID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.";
-  }
-
-  grouping lte-epc-g {
-    description
-      "This object contains parameters relating to configuring LTE EPC.";
-    leaf-list allowed-ciphering-algorithm-list {
-      type enumeration {
-        enum "eea0" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - EEA0";
-        }
-        enum "128-eea1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - 128-EEA1";
-        }
-        enum "128-eea2" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - 128-EEA2";
-        }
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a ciphering algorithm allowed to be used for RRC and UP confidentiality protection as defined in {{bibref|3GPP-TS.33.401}}. If the list contains more than 1 item, it is in the order of the preferred algorithm to be used. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList";
-    }
-    leaf-list allowed-integrity-protection-algorithm-list {
-      type enumeration {
-        enum "128-eia1" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList - 128-EIA1";
-        }
-        enum "128-eia2" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList - 128-EIA2";
-        }
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a integrity protection algorithm allowed to be used for RRC as defined in {{bibref|3GPP-TS.33.401}}. If the list contains more than 1 item, it is in the order of the preferred algorithm to be used. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList";
-    }
-    leaf tac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "TAC (Tracking Area Code) for LTE FAP as specified in SystemInformationBlockType1 message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.TAC";
-    }
-    leaf eaid {
-      type uint32 {
-        range "0..16777216";
-      }
-      config false;
-      description
-        "Emergency Area ID that uniquely identifies the area of emergency for Earthquake and Tsunami Warning Services (ETWS). Corresponds to Emergency Area ID in {{bibref|3GPP-TS.36.413|Section 9.2.1.47}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.EAID";
-    }
-    leaf max-plmn-list-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.CellConfig.LTE.EPC.PLMNList.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.MaxPLMNListEntries";
-    }
-    leaf plmn-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNListNumberOfEntries";
-    }
-    leaf max-qo-s-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.EPC.QoS.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.MaxQoSEntries";
-    }
-    leaf qo-s-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoSNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.";
-  }
-
-  grouping lte-epc-plmn-list-g {
-    description
-      "This object contains parameters relating to list of PLMN identity specific to LTE EPC definition, called PLMN-IdentityList, as specified in SystemInformationBlockType1 message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Each instance in this object is a PLMN-IdentityInfo which consists of plmn-Identity and cellReservedForOperatorUse IEs. At minimum 1 item MUST be present in this list, and maximum of 6 items.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.Alias";
-    }
-    leaf is-primary {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this {{param|PLMNID}} is a primary PLMN or not. If there is more than one instance in {{object|.CellConfig.LTE.EPC.PLMNList.{i}.}} table, then ACS MUST set this {{param}} set to {{true}} in only one instance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.IsPrimary";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.PLMNID";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the cell is reserved for operator use or not. If {{true}}, it is reserved. If {{false}}, it is not reserved. Corresponds to \"reserved\" \"notReserved\" respectively as defined in PLMN-IdentityInfo in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.CellReservedForOperatorUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.";
-  }
-
-  grouping lte-epc-qo-s-g {
-    description
-      "This object contains parameters relating to configuring QoS in LTE EPC.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Alias";
-    }
-    leaf qci {
-      type uint8 {
-        range "1..20";
-      }
-      description
-        "QoS class identity as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.QCI";
-    }
-    leaf type {
-      type enumeration {
-        enum "gbr" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type - GBR";
-        }
-        enum "non-gbr" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type - Non-GBR";
-        }
-      }
-      config false;
-      description
-        "Defines the type of the QoS class as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type";
-    }
-    leaf priority {
-      type uint8 {
-        range "1..20";
-      }
-      config false;
-      description
-        "Priority of the QoS class as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Priority";
-    }
-    leaf packet-delay-budget {
-      type uint16 {
-        range "50 | 100 | 150 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 1000 | 1500 | 2000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the Packet delay budget, specified in {{units}}, as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.PacketDelayBudget";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.";
-  }
-
-  grouping lte-ran-g {
-    description
-      "This object contains parameters relating to the LTE RAN level configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.";
-  }
-
-  grouping lte-ran-common-g {
-    description
-      "This object contains parameters relating to the common configuration in LTE RAN.";
-    leaf cell-identity {
-      type uint32 {
-        range "0..268435455";
-      }
-      config false;
-      description
-        "Cell Identity as specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Common.CellIdentity";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Common.";
-  }
-
-  grouping lte-ran-s1-ap-g {
-    description
-      "This object contains parameters relating to the S1AP configuration.";
-    leaf-list t-reloc-prep {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a maximum time for the Handover Preparation procedure in the source LTE FAP, specified in seconds, with a numeric range between 0 and 300 inclusive. Only values in multiple of 5 are valid; use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The timer is started when the LTE FAP sends the HANDOVER REQUIRED message. Upon reception of the HANDOVER COMMAND message the LTE FAP shall stop the timer. Corresponds to parameter TS1RELOCprep defined in {{bibref|3GPP-TS.36.413|Section 8.4.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If the LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then the LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If the LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then the LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.TRelocPrep";
-    }
-    leaf-list t-reloc-overall {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a maximum time for the protection of the overall handover procedure in the source LTE FAP, specified in seconds, with a numeric range between 0 and 300 inclusive. Only values in multiple of 5 are valid; use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The timer is started reception of the HANDOVER COMMAND message. Corresponds to parameter TS1RELOCOverall defined in {{bibref|3GPP-TS.36.413|Section 8.4.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.TRelocOverall";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.";
-  }
-
-  grouping lte-ran-s1-u-g {
-    description
-      "This object contains parameters relating to the S1-U configuration.";
-    leaf gtpu-echo-interval {
-      type uint8 {
-        range "0 | 60..max";
-      }
-      units "seconds";
-      config false;
-      description
-        "Defines the interval in {{units}} between each GTP-U Echo Request that LTE FAP sends to the GTP-U peer, as specified in {{bibref|3GPP-TS.29.281|Section 7.2.1}}. If the value of {{param}} is equal to 0, then this functionality is supressed and thus LTE FAP does not send GTP-U Echo Request. If there is no GTP-U path in use, then no Echo Request is sent regardless of the value of {{param}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1U.GTPUEchoInterval";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1U.";
-  }
-
-  grouping lte-ran-rf-g {
-    description
-      "This object contains parameters relating to the RF, see {{bibref|3GPP-TS.32.592|Section 6.1.7.1}}.";
-    leaf-list earfcndl {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is an E-UTRA Absolute Radio Frequency Channel Number in the downlink direction. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter NDL specified in {{bibref|3GPP-TS.36.104|Table 5.7.3.1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.EARFCNDL";
-    }
-    leaf-list earfcnul {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is an E-UTRA Absolute Radio Frequency Channel Number in the uplink direction. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter NUL specified in {{bibref|3GPP-TS.36.104|Table 5.7.3.1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.EARFCNUL";
-    }
-    leaf freq-band-indicator {
-      type uint8 {
-        range "1..40";
-      }
-      config false;
-      description
-        "Frequency band indicator. Corresponds to parameter freqBandIndicator in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.FreqBandIndicator";
-    }
-    leaf-list dl-bandwidth {
-      type uint8 {
-        range "6 | 15 | 25 | 50 | 75 | 100";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a downlink transmission bandwidth, specified in number of Resource Blocks. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter dl_Bandwidth in MIB (Master Information Block) in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.DLBandwidth";
-    }
-    leaf-list ul-bandwidth {
-      type uint8 {
-        range "6 | 15 | 25 | 50 | 75 | 100";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is an uplink transmission bandwidth, specified in number of Resource Blocks. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter ul_Bandwidth in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.ULBandwidth";
-    }
-    leaf-list reference-signal-power {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a downlink reference-signal transmit power, specified in dBm, with a numeric range between -60 and 50 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.ReferenceSignalPower";
-    }
-    leaf-list phy-cell-id {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a physical cell ID with a numeric range between 0 and 503 inclusive. Represents the list of physical cell identities LTE FAP to choose from. In case there is more than one item in the list, the first item contains the most preferred value. As specified in {{bibref|3GPP-TS.36.211|Section 6.11}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PhyCellID";
-    }
-    leaf-list psch-power-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a power offset, specified in dB, of the Primary Synchronization Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PSCHPowerOffset";
-    }
-    leaf-list ssch-power-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a power offset, specified in dB, of the Secondary Synchronization Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.SSCHPowerOffset";
-    }
-    leaf-list pbch-power-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a power offset, specified in dB, of the Physical Broadcast Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PBCHPowerOffset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.";
-  }
-
-  grouping lte-ran-phy-g {
-    description
-      "This object contains parameters relating to the physical layer level configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.";
-  }
-
-  grouping lte-ran-phy-antenna-info-g {
-    description
-      "This object contains parameters relating to the antenna configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.1}}).";
-    leaf antenna-ports-count {
-      type uint8 {
-        range "1 | 2 | 4";
-      }
-      description
-        "Defines the number of cell specific antenna ports according to {{bibref|3GPP-TS.36.211|Section 6.2.1}}. A UE in IDLE mode acquires the information about the number of transmit antenna ports according to {{bibref|3GPP-TS.36.212|Section 5.3.1.1}}. Corresponds to antennaPortsCount IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.AntennaPortsCount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.";
-  }
-
-  grouping lte-ran-phy-pdsch-g {
-    description
-      "This object contains parameters relating to the PDSCH (Physical Downlink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.2}}).";
-    leaf-list pb {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a Eb/Ea value with a numeric range between 0 and 3 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of this parameter is the same for all UEs in the cell. Eb repsents EPRE of PDSCH REs type B, i.e. REs in OFDM symbols that include reference symbols, as specified in {{bibref|3GPP-TS.36.213|Section 5.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.Pb";
-    }
-    leaf-list pa {
-      type int64;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a Ea/Ers value. In case there is more than one item in the list, the first item contains the most preferred value. Ea represents EPRE of PDSCH REs type A, i.e. REs in OFDM symbols that do not include reference symbols. Ers represents EPRE of reference symbols REs. Specified in {{bibref|3GPP-TS.36.213|Section 5.2}}. Actual values of range are -6.00 to 3.00dB. The value of each item in {{param}} divided by 100 yields the actual value. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.Pa";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.";
-  }
-
-  grouping lte-ran-phy-srs-g {
-    description
-      "This object contains parameters relating to the UL SRS (Sounding Reference Signal) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.3}}).";
-    leaf srs-enabled {
-      type boolean;
-      config false;
-      description
-        "Indicates whether UL SRS (Sounding RS) is enabled or not. If {{true}}, UL Sounding RS is enabled. If {{false}}, UL Sounding RS is disabled. Corresponds to SoundingRS-UL-ConfigCommonIE defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSEnabled";
-    }
-    leaf-list srs-bandwidth-config {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a index into tables of cell specific SRS Bandwidth Configuration, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. SRS Bandwidth Configuration tables are specified in {{bibref|3GPP-TS.36.211|Table 5.5.3.2-1, 5.5.3.2-2, 5.5.3.2-3 and 5.5.3.2– 4}}. Corresponds to srs-BandwidthConfig IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSBandwidthConfig";
-    }
-    leaf srs-max-up-pts {
-      type boolean;
-      config false;
-      description
-        "Defines whether reconfiguration of SRS applies to UpPTS or not. If {{true}}, SRS applies to UpPTS. If {{false}}, SRS does not apply to UpPTS. Corresponds to srs-MaxUpPts specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and srsMaxUpPts specified in {{bibref|3GPP-TS.36.211|Section 5.5.3.2}}. This parameter is applicable to TDD mode only.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSMaxUpPTS";
-    }
-    leaf ack-nack-srs-simultaneous-transmission {
-      type boolean;
-      config false;
-      description
-        "Defines whether a UE can simultaneously transmit SRS and HARQ ACK/NACK or not. If {{true}}, simultaneous transmission is allowed. If {{false}}, simultaneous transmission is not allowed. Corresponds to ackNackSRS-SimultaneousTransmission specfied in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Simultaneous-AN-and-SRS specified in {{bibref|3GPP-TS.36.213|Section 8.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.AckNackSRSSimultaneousTransmission";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.";
-  }
-
-  grouping lte-ran-phy-prach-g {
-    description
-      "This object contains parameters relating to the PRACH (Physical Random Access Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.4}}).";
-    leaf-list root-sequence-index {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a Logical root sequence index with a numeric range between 0 and 837 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Logical root sequence index is used to determine 64 physical RACH preamble sequences available in the cell. Corresponds to RACH_ROOT_SEQUENCE parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Section 5.7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.RootSequenceIndex";
-    }
-    leaf-list configuration-index {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is an index to the table defining PRACH resources within the frame with a numeric range between 0 and 63 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to PRACH-Configuration-Index parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Section 5.7.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.ConfigurationIndex";
-    }
-    leaf high-speed-flag {
-      type boolean;
-      config false;
-      description
-        "Indicates whether restricted set or unrestricted set of preambles is used. If {{true}}, indicates restricted set. If {{false}}, indicates unrestricted set. Corresponds to highSpeedFlag parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and high-speed-flag parameter defined in {{bibref|3GPP-TS.36.211|Section 5.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.HighSpeedFlag";
-    }
-    leaf-list zero-correlation-zone-config {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a value used for preamble sequence generation with a numeric range between 0 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Each item corresponds to zeroCorrelationZoneConfig parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to NCS parameter defined in {{bibref|3GPP-TS.36.211|Section 5.7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.ZeroCorrelationZoneConfig";
-    }
-    leaf-list freq-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item represents the first available physical resource block number for PRACH. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to prach-FreqOffset parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and nPRBoffsetRA parameter defined {{bibref|3GPP-TS.36.211|Section 5.7.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.FreqOffset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.";
-  }
-
-  grouping lte-ran-phy-pucch-g {
-    description
-      "This object contains parameters relating to the PUCCH (Physical Uplink Control Channel) configuration. (see {{bibref|3GPP-TS.32.592|Section 6.1.1.5}})";
-    leaf delta-pucch-shift {
-      type enumeration {
-        enum "ds1" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds1";
-        }
-        enum "ds2" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds2";
-        }
-        enum "ds3" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds3";
-        }
-      }
-      config false;
-      description
-        "Defines the cyclic shift used for PUCCH formats 1/1a/1b in a resource block used for a mix of formats 1/1a/1b and 2/2a/2b. It is an integer multiple of deltaPUCCHShift within the range of {0, 1, ., 7} . Corresponds to deltaPUCCH-Shift parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Delta-shiftPUCCH parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift";
-    }
-    leaf-list nrbcqi {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a value that defines the bandwidth in terms of resource blocks available for use by PUCCH formats 2/2a/2b transmission in each slot, with a numeric range between 0 and 98 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to nRB-CQI parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRB(2) parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive.If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.NRBCQI";
-    }
-    leaf ncsan {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Defines the number of cyclic shift used for PUCCH formats 1/1a/1b in a resource block used for a mix of formats 1/1a/1b and 2/2a/2b. The value is an integer multiple of deltaPUCCHShift within the range of {0, 1, ., 7}. Corresponds to nCS-AN parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRB(1) parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.NCSAN";
-    }
-    leaf-list n1-pucchan {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value that determines resources used for transmission of PUCCH format 1/1a/1b and 2/2a/2b, with a numeric range between 0 and 2047 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to n1PUCCH-AN parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NPUCCH(1) parameter defined {{bibref|3GPP-TS.36.213|Section 10.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.N1PUCCHAN";
-    }
-    leaf-list cqipucch-resource-index {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value that indicates the position of PUCCH, with a numeric range between 0 and 1185 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. . Corresponds to the cqi-PUCCH-ResourceIndex IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. and to parameter nPUCCH(2) specified in {{bibref|3GPP-TS.36.213|Section 7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.CQIPUCCHResourceIndex";
-    }
-    leaf k {
-      type uint8 {
-        range "1..4";
-      }
-      units "Resource Blocks";
-      description
-        "Sub-band size for sub-band reporting mode expressed in units of physical {{units}}, see {{bibref|3GPP-TS.36.213|Section 7.2.2}}. This parameter corresponds to the K IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.K";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.";
-  }
-
-  grouping lte-ran-phy-pusch-g {
-    description
-      "This object contains parameters relating to the PUSCH (Physical Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.6}}).";
-    leaf nsb {
-      type uint8 {
-        range "1..4";
-      }
-      config false;
-      description
-        "Defines the number of sub-bands. This parameter corresponds to n-SB parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NSB parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.NSB";
-    }
-    leaf hopping-mode {
-      type enumeration {
-        enum "inter-sub-frame" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode - InterSubFrame";
-        }
-        enum "intra-and-inter-sub-frame" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode - IntraAndInterSubFrame";
-        }
-      }
-      config false;
-      description
-        "Indicates if hopping is \"inter-subframe\" or \"intra and inter-subframe\". Corresponds to hoppingMode parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Hopping-mode parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode";
-    }
-    leaf-list hopping-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a value to compute the set of physical resource blocks to be used for transmission on PUSCH if uplink frequency hopping mode is enabled, with a numeric range between 0 and 98 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. This parameter corresponds to pusch-HoppingOffset parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRBHO parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingOffset";
-    }
-    leaf enable64-qam {
-      type boolean;
-      description
-        "Indicates whether 64QAM is allowed or not. If {{true}}, 64QAM is allowed. If {{false}}, 64QAM is not allowed. Corresponds to enable64QAM parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.Enable64QAM";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.";
-  }
-
-  grouping lte-ran-phy-pusch-ulrs-g {
-    description
-      "This object contains parameters relating to the ULRS (Uplink Reference Signal) of PUSCH (Physical Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.6.1}}).";
-    leaf group-hopping-enabled {
-      type boolean;
-      config false;
-      description
-        "Indicates whether group hopping is enabled or not. If {{true}}, group hopping is enabled. If {{false}}, group hopping is not enabled. Corresponds to groupHoppingEnabled parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.and in {{bibref|3GPP-TS.36.211|Section 5.5.1.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.GroupHoppingEnabled";
-    }
-    leaf group-assignment-pusch {
-      type uint8 {
-        range "0..29";
-      }
-      description
-        "Corresponds to parameter groupAssignmentPUSCH specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.GroupAssignmentPUSCH";
-    }
-    leaf sequence-hopping-enabled {
-      type boolean;
-      config false;
-      description
-        "Indicates whether sequence hopping is enabled or not. If {{true}}, sequence hopping is enabled. If {{false}}, sequence hopping is not enabled. Corresponds to sequenceHoppingEnabled parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.and in {{bibref|3GPP-TS.36.211|Section 5.5.1.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.SequenceHoppingEnabled";
-    }
-    leaf cyclic-shift {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Corresponds to parameter cyclcShift specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.CyclicShift";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.";
-  }
-
-  grouping lte-ran-phy-ul-power-control-g {
-    description
-      "This object contains parameters relating to the uplink power control configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.7}}).";
-    leaf-list p0-nominal-pusch {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value to compute the UL UE transmit power for transmission on PUSCH for semi-persistant grants, with a numeric range between -126 and 24 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to p0-NominalPUSCH parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and PO_NOMINAL_PUSCH(0) parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.1.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.P0NominalPUSCH";
-    }
-    leaf-list alpha {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a value used to compute the UL UE transmit power for transmission on PUSCH, from the list of 0, 4, 5, 6, 7, 8, 9, 100. In case there is more than one item in the list, the first item contains the most preferred value. Actual values of range are from 0.00 to 1.00. The value of {{param}} divided by 100 yields the actual value. Corresponds to alpha parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to α parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.1.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.Alpha";
-    }
-    leaf-list p0-nominal-pucch {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value to compute the UL UE transmit power for transmission on PUCCH, with a numeric range between -126 and 24 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to p0-NominalPUCCH parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and PO_NOMINAL_PUCCH parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.2.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.P0NominalPUCCH";
-    }
-    leaf delta-fpucch-format1 {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format1 to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(1) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat1";
-    }
-    leaf delta-fpucch-format1b {
-      type uint8 {
-        range "1 | 3 | 5";
-      }
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format1b to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(1b) in {{units}} dB as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat1b";
-    }
-    leaf delta-fpucch-format2 {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format2 to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2";
-    }
-    leaf delta-fpucch-format2a {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format2a to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2a) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2a";
-    }
-    leaf delta-fpucch-format2b {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format2b to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2b) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2b";
-    }
-    leaf delta-preamble-msg3 {
-      type int64;
-      units "dB";
-      description
-        "Defines the parameter in {{units}} used to compute the UL UE transmit power for transmission of random access response grant. This parameter corresponds to deltaPreambleMsg3 parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to ?PREAMBLE_Msg3 parameter specified in {{bibref|3GPP-TS.36.213|Section 5.1.1.1}}. Actual value is 2x the value of this parameter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaPreambleMsg3";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.";
-  }
-
-  grouping lte-ran-phy-mbsfn-g {
-    description
-      "This object contains parameters relating to the MBSFN (Multimedia Broadcast multicast service Single Frequency Network) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.8}}).";
-    leaf neigh-cell-config {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Defines the information related to MBSFN and TDD UL/DL configuration of neighbour cells. Corresponds to NeighCellConfig IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Value 0: Not all neighbour cells have the same MBSFN sub-frame allocation as serving cell. Value 1: No MBSFN sub-frames are present in all neighbour cells. Value 2: The MBSFN sub-frame allocations of all neighbour cells are identical to or subsets of that in the serving cell. Value 3: Different UL/DL allocation in neighbouring cells for TDD compared to the serving cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.NeighCellConfig";
-    }
-    leaf max-sf-config-list-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.MaxSFConfigListEntries";
-    }
-    leaf sf-config-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.";
-  }
-
-  grouping lte-ran-phy-mbsfn-sf-config-list-g {
-    description
-      "This object contains parameters relating to the sub-frame that are reserved for MBSFN (Multimedia Broadcast multicast service Single Frequency Network) in downlink direction. For FDD mode, only one entry can exist in this table. For TDD mode, at most one entry can exist with a given value of stratumID (see {{bibref|3GPP-TS.32.592|Section 6.1.1.8}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.Alias";
-    }
-    leaf sync-stratum-id {
-      type uint8 {
-        range "1..8";
-      }
-      config false;
-      description
-        "This parameter is applicable to TDD mode only. Defines the synchronization stratum level to which the MBSFN configuration applies.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.SyncStratumID";
-    }
-    leaf radio-frame-allocation-period {
-      type uint8 {
-        range "1..2 | 4 | 8 | 16 | 32";
-      }
-      description
-        "Defines the period where MBSFN sub-frames occur in the radio frames. Radio frames contain MBSFN sub-frame when the following condition is met: ((SFN mod {{param}}) = {{param|RadioframeAllocationOffset}}). The value of 1 and 2 are only meaningful when the value of {{param|RadioFrameAllocationSize}} parameter is 1. Corresponds to radioFrameAllocationPeriod IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioFrameAllocationPeriod";
-    }
-    leaf radioframe-allocation-offset {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Defines the offset where MBSFN sub-frames occur in the radio frames. Radio frames contain MBSFN sub-frame when the following condition is met: ((SFN mod {{param|RadioFrameAllocationPeriod}}) = {{param}}). Corresponds to radioFrameAllocationOffset IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioframeAllocationOffset";
-    }
-    leaf radio-frame-allocation-size {
-      type uint8 {
-        range "1 | 4";
-      }
-      description
-        "Defines the number of connsecutive frames that the MBSFN allocation pertains to defined by the combination of {{param|RadioFrameAllocationPeriod}} and {{param|RadioframeAllocationOffset}} parameters.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioFrameAllocationSize";
-    }
-    leaf-list sub-frame-allocations {
-      type uint8 {
-        range "0 | 1";
-      }
-      config false;
-      max-elements "64";
-      description
-        "{{list}} The value of \"1\" indicates the position of sub-frames that is allocated to MBSFN within the radio frame. First item defines the MBSFN allocation for sub-frame #1, second item for #2, third item for #3, fourth item for #6, fifth item for #7, sixth item for #8. If the value of {{param|RadioFrameAllocationSize}} is 4, then this pattern repeats in the sequence of the four radio frames. The actual size of this parameter depends on the value of {{param|RadioFrameAllocationSize}} parameter. If the value of {{param|RadioFrameAllocationSize}} is 1, then the size of this parameter is 6; if the size {{param|RadioFrameAllocationSize}} is 4, then the size of this parameter is 24. Corresponds to subframeAllocation IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.SubFrameAllocations";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.";
-  }
-
-  grouping lte-ran-phy-prs-g {
-    description
-      "This object contains parameters relating to the PRS (Positioning Reference Signal) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.9}}).";
-    leaf num-prs-resource-blocks {
-      type uint64;
-      units "Resource Blocks";
-      config false;
-      description
-        "Defines the number of RBs ({{units}}) used for PRS. Corresponds to the parameter NRBPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.NumPRSResourceBlocks";
-    }
-    leaf prs-configuration-index {
-      type uint16 {
-        range "0..4095";
-      }
-      config false;
-      description
-        "Corresponds to the PRS configuration index defined as parameter IPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.3 and Table 6.10.4.3.-1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.PRSConfigurationIndex";
-    }
-    leaf num-consecutive-prs-subfames {
-      type uint8 {
-        range "1..2 | 4 | 6";
-      }
-      config false;
-      description
-        "Defines the number of consecutive positioning sub-frames. Corresponds to the parameter NPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.NumConsecutivePRSSubfames";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.";
-  }
-
-  grouping lte-ran-phy-tdd-frame-g {
-    description
-      "This object is applicable to TDD mode only. This object contains parameters relating to the TDD frame structure configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.10}}).";
-    leaf sub-frame-assignment {
-      type uint8 {
-        range "0..6";
-      }
-      config false;
-      description
-        "Defines the DL/UL sub-frame configuration. Corresponds to subframAssignment specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Table 4.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.SubFrameAssignment";
-    }
-    leaf special-subframe-patterns {
-      type uint8 {
-        range "0..8";
-      }
-      config false;
-      description
-        "Defines the configuration of the special sub-frame that contains the guard period between the downlink and uplink transmissions. Corresponds to the specialSubframePatterns specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Table 4.2.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.SpecialSubframePatterns";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.";
-  }
-
-  grouping lte-ran-mac-g {
-    description
-      "This object contains parameters relating to the MAC (Medium Access Control) configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.";
-  }
-
-  grouping lte-ran-mac-rach-g {
-    description
-      "This object contains parameters relating to the RACH (Random Access Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.1}}).";
-    leaf-list number-of-ra-preambles {
-      type uint8 {
-        range "4..64";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a number of non-dedicated random access preambles. Only values in multiple of 4 are valid (i.e. 4, 8, 12, 16,...64); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter numberOfRA-Preambles specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.NumberOfRaPreambles";
-    }
-    leaf-list size-of-ra-group-a {
-      type uint8 {
-        range "4..60";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a number of non-dedicated random access preambles in Random Acces Preambles group A. Only values in multiple of 4 are valid (i.e. 4, 8, 12, 16,...60); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter sizeOfRA-PreamblesGroupA specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.SizeOfRaGroupA";
-    }
-    leaf-list message-size-group-a {
-      type uint16 {
-        range "56 | 144 | 208 | 256";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a threshold for preamble selection, specified in bits. In case there is more than one item in the list, the first item contains the most preferred value. Defined in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. Corresponds to parameter messageSizeGroupA specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MessageSizeGroupA";
-    }
-    leaf-list message-power-offset-group-b {
-      type int64;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a threshold for preamble selection, specified in dB. In case there is more than one item in the list, the first item contains the most preferred value. Defined in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. Corresponds to parameter messagePowerOffsetGroupB specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. Value of -1 indicates \"minusinfinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MessagePowerOffsetGroupB";
-    }
-    leaf-list power-ramping-step {
-      type uint8 {
-        range "0 | 2 | 4 | 6";
-      }
-      config false;
-      min-elements 1;
-      max-elements "16";
-      description
-        "{{list}} Each item is a power increase factor between subsequent random access preamble transmissions, specified in dB. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter powerRampingStep specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PowerRampingStep";
-    }
-    leaf-list preamble-initial-received-target-power {
-      type int64;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a value used as the baseline for computation for random access transmission power, specified in dBm. Also used as a parameter in the criteria for preamble selection. Only even values are valid (i.e. -120, -118, -116,...-90); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter preambleInitialReceivedTargetPower specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. and section 5.1.3. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PreambleInitialReceivedTargetPower";
-    }
-    leaf-list preamble-trans-max {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a maximum number of random access preamble transmissions, from the list of 3, 4, 5, 6, 7, 8, 10, 20, 50, 100, 200. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter preambleTransMax specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.4 and section 5.1.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PreambleTransMax";
-    }
-    leaf-list response-window-size {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a duration of the random access response window, specified in sub-frames, with a numeric range between 2 and 10 inclusive (except value of 9). In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter ra-ResponseWindowSize specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.ResponseWindowSize";
-    }
-    leaf-list contention-resolution-timer {
-      type uint8 {
-        range "8..64";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a contention resolution timer, specified in sub-frames. Only values multiple of 8 are valid (i.e. 8, 16, 24,...64); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter mac-ContentionResolutionTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.ContentionResolutionTimer";
-    }
-    leaf-list max-harq-msg3-tx {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a maximum number of Msg3 HARQ transmissions by RRC, with a numeric range between 1 and 8 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter maxHARQ-Msg3Tx specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MaxHARQMsg3Tx";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.";
-  }
-
-  grouping lte-ran-mac-drx-g {
-    description
-      "This object contains parameters relating to the DRX (Discontinuous Reception) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.2}}).";
-    leaf drx-enabled {
-      type boolean;
-      config false;
-      description
-        "Specifies whether DRX operation is enabled or not. If {{true}}, DRX operation is enabled. If {{false}}, DRX operation is not enabled. Corresponds to drx-Configuration IE defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXEnabled";
-    }
-    leaf-list on-duration-timer {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is the DRX cycle during which UE actively monitors PDCCH, specified in number of PDCCH sub-frames, from the list of 1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50, 60, 80, 100, 200. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter onDurationTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.OnDurationTimer";
-    }
-    leaf-list drx-inactivity-timer {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item defines the number of inactive consecutive PDCCH sub-frame(s) that will activate short DRX cycle, specified in number of PDCCH sub-frames, from the list of 1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50, 60, 80, 100, 200, 300, 500, 750, 1280, 1920, 2560. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter drx-InactivityTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXInactivityTimer";
-    }
-    leaf-list drx-retransmission-timer {
-      type uint8 {
-        range "1 | 2 | 4 | 6 | 8 | 16 | 24 | 33";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item defines the maximum number of consecutive PDCCH sub-frame(s) UE MUST remain active expecting a DL retransmission, specified in number of PDCCH sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. The timer is started when a HARQ RTT Timer expires and the data in the soft buffer of the corresponding HARQ process was not successfully decoded. There is one timer for each active HARQ process. Corresponds to parameter drx-RetransmissionTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXRetransmissionTimer";
-    }
-    leaf-list long-drx-cycle {
-      type uint16 {
-        range "10 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 256 | 320 | 512 | 640 | 1024 | 1280 | 2048 | 2560";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is long DRX Cycle value, specified in number of sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. If shortDRX-Cycle is configured, this value MUST be a multiple of the {{param|ShortDRXCycle}} value. Corresponds to longDRX-Cycle parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}} and longDRX-CycleStartOffset specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.LongDRXCycle";
-    }
-    leaf-list drx-start-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item defines the starting frame of the DRX cycle within the long DRX cycle, with a numeric range between 0 and 2559 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The valid value range is dependent on {{param|LongDRXCycle}} parameter which defines the upper bound of this range, i.e., range definition is [0: ({{param|LongDRXCycle}}-1)]. Corresponds to drxStartOffset parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. Use of values bigger than ({{param|LongDRXCycle}}-1) MUST be rejected by the CPE. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXStartOffset";
-    }
-    leaf-list short-drx-cycle {
-      type uint16 {
-        range "2 | 5 | 8 | 10 | 16 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 256 | 320 | 512 | 640";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is the short DRX Cycle value, specified in number of sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. If shortDRX-Cycle is configured, the value of {{param|LongDRXCycle}} MUST be a multiple of the {{param}} value. Corresponds to shortDRX-Cycle parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.ShortDRXCycle";
-    }
-    leaf-list drx-short-cycle-timer {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item defined the duration of the short DRX cycle in multiples of {{param|ShortDRXCycle}} parameter, specified in number of sub-frames, with a numeric range between 1 and 16 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Denotes the number of consecutive sub-frame(s)the UE shall follow the short DRX cycle after the DRX Inactivity Timer has expired. Corresponds to drxShortCycleTimer parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXShortCycleTimer";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.";
-  }
-
-  grouping lte-ran-mac-ulsch-g {
-    description
-      "This object contains parameters relating to the ULSCH (Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.3}}).";
-    leaf max-harq-tx {
-      type uint8 {
-        range "1..8 | 10 | 12 | 16 | 20 | 24 | 28";
-      }
-      description
-        "Maximum number of UL HARQ transmissions. Corresponds to parameter maxHARQ-Tx specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.MaxHARQTx";
-    }
-    leaf periodic-bsr-timer {
-      type uint16 {
-        range "0 | 5 | 10 | 16 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 320 | 640 | 1280 | 2560";
-      }
-      units "subframes";
-      description
-        "Timer for Periodic BSR (Buffer Status Report) reporting, specified in number of {{units}}. UE transmits periodic BSR at the expiration of this timer. Corresponds to parameter periodicBSR-Timer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.5}}. Value of 0 indicates \"infinity.\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.PeriodicBSRTimer";
-    }
-    leaf retx-bsr-timer {
-      type uint16 {
-        range "320 | 640 | 1280 | 2560 | 5120 | 10240";
-      }
-      units "subframes";
-      description
-        "Timer for Regular BSR reporting, specified in number of {{units}}. UE transmits a Regular BSR at the expiration of this timer if data is available in the buffer. Corresponds to parameter retxBSR-Timer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.RetxBSRTimer";
-    }
-    leaf tti-bundling {
-      type boolean;
-      description
-        "Enables/disables TTI bundling. If {{true}}, TTI bundling is enabled. If {{false}}, TTI bundling is disabled. Corresponds to parameter ttiBundling specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.TTIBundling";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.";
-  }
-
-  grouping lte-ran-rlc-g {
-    description
-      "This object contains parameters relating to the RLC (Radio Link Control) configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.";
-  }
-
-  grouping lte-ran-rlc-srb1-g {
-    description
-      "This object contains parameters relating to the SRB1 (Signaling Radio Bearer 1) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.3.1}}).";
-    leaf default-configuration {
-      type boolean;
-      config false;
-      description
-        "Indicates the whether default RLC configuration for SRB1 is used or not. If {{true}}, the default RLC configuration is used as specified in {{bibref|3GPP-TS.36.331|Section 9.2.1.1}}. In this case, rest of the parameters defined under the current object are ignored by the CPE. If {{false}}, rest of the parameters defined under the current object are used by the CPE for RLC configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.DefaultConfiguration";
-    }
-    leaf-list t-poll-retransmit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a timer between successive poll transmissions, specified in milliseconds, specified in milliseconds, with a numeric range between 5 and 500 inclusive. Only the multiple of 5 are valid in the range between 5 and 250 inclusive (i.e. 5, 10, 15, 20,... 250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e., 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-PollRetransmit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TPollRetransmit";
-    }
-    leaf-list poll-pdu {
-      type uint16 {
-        range "0 | 4 | 8 | 16 | 32 | 64 | 128 | 256";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a counter of PDUs between successive poll transmissions, specified in the number of PDUs. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollPDU IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates \"infinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.PollPDU";
-    }
-    leaf-list poll-byte {
-      type uint16 {
-        range "0 | 25 | 50 | 75 | 100 | 125 | 250 | 375 | 500 | 750 | 1000 | 1250 | 1500 | 2000 | 3000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a counter of PDU bytes transmitted between successive poll transmissions, specified in kilobytes. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollByte IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates infinite amount of kilobytes. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.PollByte";
-    }
-    leaf-list max-retx-threshold {
-      type uint8 {
-        range "1..4 | 6 | 8 | 16 | 32";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item defines the maximum number of transmission retry used by the RLC entity to limit the number of retransmissions of an AMD PDU. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to maxRetxThreshold IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.MaxRetxThreshold";
-    }
-    leaf-list t-reordering {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an RLC entity in order to detect loss of RLC PDUs at lower layer, specified in milliseconds, with a numeric range between 0 and 200 inclusive. Only the multiple of 5 are valid in the range between 0 and 100 inclusive (i.e. 0, 5, 10, 15,...,100), and only the multiple of 10 are valid in the range between 110 and 200 inclusive (110, 120, 130,...,200). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-Reordering IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.1.2.2. and 5.1.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TReordering";
-    }
-    leaf-list t-status-prohibit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an AM RLC entity in order to prohibit transmission of a STATUS PDU, specified in milliseconds, with a numeric range between 0 and 500 inclusive. Only the multiple of 5 are valid in the range between 0 and 250 inclusive (i.e. 0, 5, 10, 15,...,250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e. 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-StatusProhibit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.3}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TStatusProhibit";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.";
-  }
-
-  grouping lte-ran-rlc-srb2-g {
-    description
-      "This object contains parameters relating to the SRB2 (Signaling Radio Bearer 2) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.3.1}}).";
-    leaf default-configuration {
-      type boolean;
-      config false;
-      description
-        "Indicates the whether default RLC configuration for SRB1 is used or not. If {{true}}, the default RLC configuration is used as specified in {{bibref|3GPP-TS.36.331|Section 9.2.1.1}}. In this case, rest of the parameters defined under the current object are ignored by the CPE. If {{false}}, rest of the parameters defined under the current object are used by the CPE for RLC configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.DefaultConfiguration";
-    }
-    leaf-list t-poll-retransmit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a timer between successive poll transmissions, specified in milliseconds, with a numeric range between 5 and 500 inclusive. Only the multiple of 5 are valid in the range between 5 and 250 inclusive (i.e. 5, 10, 15, 20,... 250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e., 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-PollRetransmit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TPollRetransmit";
-    }
-    leaf-list poll-pdu {
-      type uint16 {
-        range "0 | 4 | 8 | 16 | 32 | 64 | 128 | 256";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a counter of PDUs between successive poll transmissions, specified in the number of PDUs. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollPDU IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates \"infinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.PollPDU";
-    }
-    leaf-list poll-byte {
-      type uint16 {
-        range "0 | 25 | 50 | 75 | 100 | 125 | 250 | 375 | 500 | 750 | 1000 | 1250 | 1500 | 2000 | 3000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a counter of PDU bytes transmitted between successive poll transmissions, specified in kilobytes. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollByte IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates infinite amount of kilobytes. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.PollByte";
-    }
-    leaf-list max-retx-threshold {
-      type uint8 {
-        range "1..4 | 6 | 8 | 16 | 32";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item defines the maximum number of transmission retry used by the RLC entity to limit the number of retransmissions of an AMD PDU. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to maxRetxThreshold IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.MaxRetxThreshold";
-    }
-    leaf-list t-reordering {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an RLC entity in order to detect loss of RLC PDUs at lower layer, specified in milliseconds, with a numeric range between 0 and 200 inclusive. Only the multiple of 5 are valid in the range between 0 and 100 inclusive (i.e. 0, 5, 10, 15,...,100), and only the multiple of 10 are valid in the range between 110 and 200 inclusive (110, 120, 130,...,200). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-Reordering IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.1.2.2. and 5.1.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TReordering";
-    }
-    leaf-list t-status-prohibit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an AM RLC entity in order to prohibit transmission of a STATUS PDU, specified in milliseconds, with a numeric range between 0 and 500 inclusive. Only the multiple of 5 are valid in the range between 0 and 250 inclusive (i.e. 0, 5, 10, 15,...,250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e. 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-StatusProhibit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.3}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TStatusProhibit";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.";
-  }
-
-  grouping lte-ran-rrc-timers-g {
-    description
-      "This object contains parameters relating to the RRC timers and constants (see {{bibref|3GPP-TS.32.592|Section 6.1.6.1}}) and (see {{bibref|3GPP-TS.32.592|Section 6.1.6.2}}).";
-    leaf-list t300 {
-      type uint16 {
-        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is an interval, in milliseconds, between subsequent transmissions of RRCConnectionRequest. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t300 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T300";
-    }
-    leaf-list t301 {
-      type uint16 {
-        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is an interval, in milliseconds, between subsequent transmissions of RRCConnectionReestablishmentRequest. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t301 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T301";
-    }
-    leaf t302 {
-      type uint16 {
-        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Time to wait in {{units}} for cell re-selection or RRConnectionSetup after RRCConnectionReject. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T302";
-    }
-    leaf-list t304-eutra {
-      type uint16 {
-        range "50 | 100 | 150 | 200 | 500 | 1000 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a HO failure timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to t304 defined within IE MobilityControlInfo in RRCConnectionReconfiguration message in {{bibref|3GPP-TS.36.331|Section 5.3.5.4 and Section 6.3.4}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T304EUTRA";
-    }
-    leaf-list t304-irat {
-      type uint16 {
-        range "100 | 200 | 500 | 1000 | 2000 | 4000 | 8000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a HO failure timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to t304 defined within IE CellChangeOrder in MobilityFromEUTRACommand message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T304IRAT";
-    }
-    leaf-list t310 {
-      type uint16 {
-        range "0 | 50 | 100 | 200 | 500 | 1000 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a RLF declaration timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t310 specified in RLF-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T310";
-    }
-    leaf-list t311 {
-      type uint16 {
-        range "1000 | 3000 | 5000 | 10000 | 15000 | 20000 | 30000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a RLF recovery timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t311 specified in RLF-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T311";
-    }
-    leaf t320 {
-      type uint8 {
-        range "5 | 10 | 20 | 30 | 60 | 120 | 180";
-      }
-      units "minutes";
-      config false;
-      description
-        "Time in {{units}} after RRCConnection Release in which cell re-selection priority info supplied in RRCConnectionRelease MUST be observed. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. Corresponds to parameter t320 specified in RRCConnectionRelease message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. S";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T320";
-    }
-    leaf n310 {
-      type uint8 {
-        range "1..4 | 6 | 8 | 10 | 20";
-      }
-      config false;
-      description
-        "Number of consecutive \"out-of-sync\" indications received from lower layers that triggers timer T310. Corresponds to parameter n310 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6 and Section 7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.N310";
-    }
-    leaf n311 {
-      type uint8 {
-        range "1..6 | 8 | 10";
-      }
-      config false;
-      description
-        "Number of consecutive \"in-sync\" indications received from lower layers that stops timer T310. Corresponds to parameter n311 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6 and Section 7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.N311";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.";
-  }
-
-  grouping lte-ran-cell-restriction-g {
-    description
-      "This object contains parameters relating to the cell restriction configuration.";
-    leaf cell-barred {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the is barred or not. If {{true}}, the cell is barred. If {{false}}, the cell is not barred. Corresponds to parameter CellBarred specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.CellBarred";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the is reserved for operator's use or not. If {{true}}, the cell is reserved for operator use. If {{false}}, the cell is not reserved for operator use. Corresponds to parameter cellReservedForOperatorUse specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.CellReservedForOperatorUse";
-    }
-    leaf barring-for-emergency {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the is barred for Access Class 10 or not. If {{true}}, the cell is barred for Access Class 10. If {{false}}, the cell is not barred for Access Class 10. Corresponds to parameter ac-BarringForEmergency specified in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.BarringForEmergency";
-    }    
-    leaf x-0005b9-mo-sig-barring-factor {
-      type uint8 {
-        range "0 | 5 | 10 | 15 | 20 | 25 | 30 | 40 | 50 | 60 | 70 | 75 | 80 | 85 | 90 | 95";
-      }
-      default "95";
-      config false;
-      description
-        "In R1.5, Data and Signalling barring factors must be identical. SystemInformationBlockType2. Other discrete values not allowed";
-      reference "BBF TR-196 2.0.3 full -Device.Services.FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.X_0005B9_MOSigBarringFactor";
-    }      
-    leaf x-0005b9-mo-sig-barring-time {
-      type uint16 {
-        range "4 | 8 | 16 | 32 | 64 | 128 | 256 | 512";
-      }
-      default "4";
-      config false;
-      description
-        "In R1.5, Data and Signalling barring time are identical. In seconds. Other values not allowed.";
-      reference "BBF TR-196 2.0.3 full -Device.Services.FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.X_0005B9_MOSigBarringTime";
-    }  
-    leaf x-0005b9-mo-sig-barring-for-special-ac  {
-      type string {
-        length "8";
-      }
-      default "00000---";
-      config false;
-      description
-        "In R1.5, Data and Signalling special AC params are identical. Most significant 3 bits are ignored no matter the value they contain. Each of the following 5 bits can be set to '0' or '1' in any combination. '0' indicates that the specific special access class is NOT barred. ";
-      reference "BBF TR-196 2.0.3 full -Device.Services.FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.X_0005B9_MOSigBarringForSpecialAC ";
-    }     
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.";
-  }
-
-  grouping lte-ran-mobility-g {
-    description
-      "This object contains parameters relating to the UE's mobility configuration. It covers both idle mode and connected mode.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-g {
-    description
-      "This object contains parameters relating to the UE's mobility while it is in idle mode (cell (re-)selection). Parameters under this object determines the content in the SIB (System Information Block) that is broadcast by LTE .";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-common-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration that is common to all cell re-selection scenarios (intra/inter-freq, inter-RAT to UTRA (UMTS), GERAN (GSM) and CDMA2000) (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.1}}).";
-    leaf-list qhyst {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a hysteresis value applied to serving cell for evaluating cell ranking criteria specified in dB, with a numeric range between 0 and 24 inclusive. For the value greater than 6, only even numbers are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter q-Hyst specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.Qhyst";
-    }
-    leaf q-hyst-sf-medium {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Speed-dependent scaling factor for Qhyst in Medium-mobility state, specified in {{units}}. Corresponds to parameter q-HystSF:sf-Medium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.QHystSFMedium";
-    }
-    leaf q-hyst-sf-high {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Speed-dependent scaling factor for Qhyst in High-mobility state, specified in {{units}}. Corresponds to parameter q-HystSF:sf-High specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.QHystSFHigh";
-    }
-    leaf t-evaluation {
-      type uint8 {
-        range "30 | 60 | 120 | 180 | 240";
-      }
-      units "seconds";
-      config false;
-      description
-        "Duration for evaluating allowed amount of cell re-selection(s) required to enter mobility states, specified in {{units}}. Corresponds to parameter t-Evaluation specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter TCRmax specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.TEvaluation";
-    }
-    leaf t-hyst-normal {
-      type uint8 {
-        range "30 | 60 | 120 | 180 | 240";
-      }
-      units "seconds";
-      config false;
-      description
-        "Additional duration for evaluating criteria to enter normal mobility state, specified in {{units}}. Specifies the additional time period for evaluating criteria to enter Normal-mobility state. Corresponds to parameter t-HystNormal specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter TCRmaxHyst specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.THystNormal";
-    }
-    leaf n-cell-change-medium {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "Defines the number of cell re-selections within TEvaluation to enter Medium-mobility state. Corresponds to parameter n-cellChangeMedium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter NCR_M specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.NCellChangeMedium";
-    }
-    leaf n-cell-change-high {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "Defines the number of cell re-selections within TEvaluation to enter High-mobility state. Corresponds to parameter n-cellChangeHigh specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter NCR_H specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.NCellChangeHigh";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-intra-freq-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for intra-freq re-selection scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.2}}).";
-    leaf-list q-rx-lev-min-sib1 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSRP level of a E-UTRA cell for cell selection, specified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinSIB1";
-    }
-    leaf-list q-rx-lev-min-sib3 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSRP level for intra-frequency E-UTRA cell re-selection, specified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinSIB3";
-    }
-    leaf q-rx-lev-min-offset {
-      type uint8 {
-        range "1..8";
-      }
-      units "dBm";
-      config false;
-      description
-        "Defines offset with respect to QrxLevMin, specified in {{units}}. This offset is taken into account in the computation of Srxlev for cell selection evaluation of cells detected during a periodic search for a higher priority PLMN while camped normally in a VPLMN. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMinOffset in SIB1 specified in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinOffset";
-    }
-    leaf-list s-intra-search {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a threshold for intra-frequency measurements, specified in dB, with a numeric range between 0 and 31 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter s-IntraSearch specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.SIntraSearch";
-    }
-    leaf-list t-reselection-eutra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for intra-frequency E-UTRA cell re-selection, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionEUTRA specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRA";
-    }
-    leaf-list s-non-intra-search {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a threshold for inter-frequency and inter-RAT measurements with lower or equal priority, specified in dB, with a numeric range between 0 and 31 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter s-NonIntraSearch specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.SNonIntraSearch";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of the E-UTRAN serving carrier frequency used in the inter-frequency and inter-RAT cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.CellReselectionPriority";
-    }
-    leaf p-max {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Used to limit the allowed UE uplink transmission power on the serving frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. Corresponds to parameter p-Max specified in SIB1 and SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1 and Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.PMax";
-    }
-    leaf thresh-serving-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold for serving frequency used in evaluation of re-selection towards lower priority E-UTRAN frequency or inter-RAT, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshServingLow specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.ThreshServingLow";
-    }
-    leaf t-reselection-eutrasf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for intra-frequency TreselectionEUTRA in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-Medium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRASFMedium";
-    }
-    leaf t-reselection-eutrasf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for intra-frequency TreselectionEUTRA in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-High specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRASFHigh";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-inter-freq-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-freq re-selection scenario .";
-    leaf max-carrier-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.MaxCarrierEntries";
-    }
-    leaf carrier-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.CarrierNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-inter-freq-carrier-g {
-    description
-      "This object contains parameters relating to the carrier information for inter-freq re-selection scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.3}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.Alias";
-    }
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Indicates the ARFCN of this frequency carrier. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.EUTRACarrierARFCN";
-    }
-    leaf-list q-rx-lev-min-sib5 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSRP level on this E-UTRA frequency carrier, spcified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.QRxLevMinSIB5";
-    }
-    leaf-list q-offset-freq {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is an offset applicable between serving and this frequency carrier, specified in dBm, with a numeric range between -24 and 24 inclusive. For values less than or equal to -6, or values greater than or equal to 6, only the even values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-OffsetFreq in SIB5 specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.4.2.6}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.QOffsetFreq";
-    }
-    leaf-list t-reselection-eutra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for inter-frequency cell re-selection to this E-UTRA frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionEUTRA specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRA";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this E-UTRA frequency carrier, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting from a lower priority E-UTRAN frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting from a higher priority E-UTRAN frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.ThreshXLow";
-    }
-    leaf p-max {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Used to limit the allowed UE uplink transmission power on this carrier frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. Corresponds to parameter p-Max specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.PMax";
-    }
-    leaf t-reselection-eutrasf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-Medium specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRASFMedium";
-    }
-    leaf t-reselection-eutrasf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-High specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRASFHigh";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection scenario.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-utra-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to UTRA (UMTS) scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.4}}).";
-    leaf-list t-reselection-utra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for re-selection to a UTRA frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionUTRA specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRA";
-    }
-    leaf t-reselection-utrasf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionUTRA for inter-RAT re-selection to UTRA in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionUTRA-SF:sf-Medium specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRASFMedium";
-    }
-    leaf t-reselection-utrasf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionUTRA-SF:sf-High specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRASFHigh";
-    }
-    leaf max-utranfdd-freq-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.MaxUTRANFDDFreqEntries";
-    }
-    leaf utranfdd-freq-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreqNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq-g {
-    description
-      "This object contains parameters relating to the channel frequncy related information of UTRA (UMTS) system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.5, 6.1.5.1.6}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.Alias";
-    }
-    leaf utra-carrier-arfcn {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "Indicates the ARFCN of the frequency carrier. Corresponds to parameter CarrierFreq in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.UTRACarrierARFCN";
-    }
-    leaf-list q-rx-lev-min {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSCP level on this UTRA frequency carrier, specified in dBm, with a numeric range between -60 and -13 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2 + 1) yields the actual value. Corresponds to parameter q-RxLevMin in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.QRxLevMin";
-    }
-    leaf-list q-qual-min {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a required minimum received Ec/Io level on this UTRA FDD carrier, specified in dB, with a numeric range between -24 and 0 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter q-QualMin in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.QQualMin";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this UTRA FDD frequency carrier, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a higher priority UTRA FDD frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a lower priority UTRA FDD frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.ThreshXLow";
-    }
-    leaf p-max-utra {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Used to limit the allowed UE uplink transmission power on this UTRA FDD carrier frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. Corresponds to parameter p-MaxUTRA specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.PMaxUTRA";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-geran-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to GERAN (GSM) scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.6}}).";
-    leaf-list t-reselection-geran {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for re-selection to a GERAN frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionGERAN specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to TreselectionGERA in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERAN";
-    }
-    leaf t-reselection-geransf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionGERAN for inter-RAT re-selection to GERAN in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionGERAN-SF:sf-Medium specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERANSFMedium";
-    }
-    leaf t-reselection-geransf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionGERAN for inter-RAT re-selection to GERAN in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionGERAN-SF:sf-High specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERANSFHigh";
-    }
-    leaf max-geran-freq-group-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.MaxGERANFreqGroupEntries";
-    }
-    leaf geran-freq-group-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroupNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-geran-geran-freq-group-g {
-    description
-      "This object contains parameters relating to the channel frequncy related information of GERAN (GSM) system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.7}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.Alias";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - GSM850";
-        }
-        enum "gsm900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - GSM900";
-        }
-        enum "dcs1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - DCS1800";
-        }
-        enum "pcs1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - PCS1900";
-        }
-      }
-      config false;
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BCCHARFCN";
-    }
-    leaf-list q-rx-lev-min {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSSI level on this GERAN frequency carrier for re-selection to this UTRA FDD carrier, specified in dBm, with a numeric range between 0 and 63 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2 - 115) yields the actual value. Corresponds to parameter q-rxLevMin in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to RXLEV_ACCESS_MIN in {{bibref|3GPP-TS.45.008}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.QRxLevMin";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this GERAN frequency group, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a higher priority GERAN frequency group than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a lower priority GERAN frequency group than current serving E-UTRA frequency, specified in {{units}} dB. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.ThreshXLow";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-cdma2000-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to CDMA2000 system scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.8}}).";
-    leaf-list search-window-size {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a CDMA2000 parameter affecting the search for neighbouring pilots, with a numeric range between 0 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter searchWindowSize in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP2-C.S0005-A|Table 2.6.6.2.1-1}} and {{bibref|3GPP2-C.S0024-A|Table 8.7.6.2-4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.SearchWindowSize";
-    }
-    leaf-list t-reselection-cdma2000 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for a CDMA2000 band, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionCDMA2000 specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to TreselectionCDMA_HRPD or TreselectionCDMA_1xRTT in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000";
-    }
-    leaf t-reselection-cdma2000-sf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TReselectionCDMA2000 for inter-RAT re-selection to CDMA2000 in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionCDMA2000-SF:sf-Medium specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000SFMedium";
-    }
-    leaf t-reselection-cdma2000-sf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TReselectionCDMA2000 for inter-RAT re-selection to CDMA2000 in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionCDMA2000-SF:sf-High specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000SFHigh";
-    }
-    leaf max-cdma2000-band-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.MaxCDMA2000BandEntries";
-    }
-    leaf cdma2000-band-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000BandNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band-g {
-    description
-      "This object contains parameters relating to the channel frequncy related information of CDMA2000 system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.8}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.Alias";
-    }
-    leaf band-class {
-      type uint8 {
-        range "0..17";
-      }
-      units "bandclass number";
-      description
-        "Defines the CDMA2000 band in which the CDMA2000 carrier frequency can be found, specified in {{units}}. BandClass is defined in 3GPP2 C.S0057-B Table 1.5-1. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.BandClass";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this CDMA2000 band used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a higher priority CDMA2000 band than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a lower priority CDMA2000 band than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.ThreshXLow";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.";
-  }
-
-  grouping lte-ran-mobility-conn-mode-g {
-    description
-      "This object contains parameters relating to the UE's mobility while it is in connected mode (handover). Parameters under this object determines the content in the SIB (System Information Block) that is broadcast by LTE .";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.";
-  }
-
-  grouping lte-ran-mobility-conn-mode-eutra-g {
-    description
-      "This object contains parameters relating to the connected mode mobility (handover) configuration within LTE system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.2.1}}).";
-    leaf-list filter-coefficient-rsrp {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for RSRP measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficientRSRP parameter specified in QuantityConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.FilterCoefficientRSRP";
-    }
-    leaf-list filter-coefficient-rsrq {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for RSRQ measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficientRSRQ parameter specified in QuantityConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.FilterCoefficientRSRQ";
-    }
-    leaf a1-threshold-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A1. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.4-1}}. Corresponds to parameter a1-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A1ThresholdRSRP";
-    }
-    leaf a1-threshold-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A1. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in 3GPP TS 36.133}} table 9.1.7-1. Corresponds to parameter a1-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A1ThresholdRSRQ";
-    }
-    leaf a2-threshold-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A2. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.4-1}}. Corresponds to parameter a2-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A2ThresholdRSRP";
-    }
-    leaf a2-threshold-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A2. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.7-1}}. Corresponds to parameter a2-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A2ThresholdRSRQ";
-    }
-    leaf-list a3-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is an offset to be used in evaluation of EUTRA measurement report triggering condition for event A3, with a numeric range between -30 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a3-Offset specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A3Offset";
-    }
-    leaf report-on-leave {
-      type boolean;
-      config false;
-      description
-        "Indicates whether or not the UE shall initiate the measurement reporting procedure when the leaving condition is met for event A3 for a cell in cellsTriggeredList, as specified in {{bibref|3GPP-TS.36.331|Section 5.5.4.1 and Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportOnLeave";
-    }
-    leaf a4-threshold-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A4. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a4-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A4ThresholdRSRP";
-    }
-    leaf a4-threshold-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A4. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a4-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A4ThresholdRSRQ";
-    }
-    leaf a5-threshold1-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold1 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold1:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold1RSRP";
-    }
-    leaf a5-threshold1-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold1 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold1:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold1RSRQ";
-    }
-    leaf a5-threshold2-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold2 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold2:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold2RSRP";
-    }
-    leaf a5-threshold2-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold2 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold2:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold2RSRQ";
-    }
-    leaf-list hysteresis {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a hysteresis value applied to entry and leave condition of a report triggering event, with a numeric range between 0 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter hysteresis specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.Hysteresis";
-    }
-    leaf-list time-to-trigger {
-      type uint16 {
-        range "0 | 40 | 64 | 80 | 100 | 128 | 160 | 256 | 320 | 480 | 512 | 640 | 1024 | 1280 | 2560 | 5120";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a time period during which measurement report triggering condition needs to be met in order to trigger a measurement report, specified in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter timeToTrigger specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TimeToTrigger";
-    }
-    leaf trigger-quantity {
-      type enumeration {
-        enum "rsrp" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity - RSRP";
-        }
-        enum "rsrq" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity - RSRQ";
-        }
-      }
-      config false;
-      description
-        "Quantities used to evaluate a measurement report triggering condition. Corresponds to parameter triggerQuantity specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity";
-    }
-    leaf report-quantity {
-      type enumeration {
-        enum "same-as-trigger-quantity" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity - SameAsTriggerQuantity";
-        }
-        enum "both" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity - Both";
-        }
-      }
-      config false;
-      description
-        "Measrument quantities to be included in the measurement report. Corresponds to parameter reportQuantity specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The value {{enum|Both}} specifies that both the RSRP and RSRQ quantities are to be included in the measurement report.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity";
-    }
-    leaf max-report-cells {
-      type uint8 {
-        range "1..8";
-      }
-      description
-        "Maximum number of cells that can be included in a measurement report. Corresponds to parameter maxReportCells specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.MaxReportCells";
-    }
-    leaf report-interval {
-      type uint32 {
-        range "120 | 240 | 480 | 640 | 1024 | 2048 | 5120 | 10240 | 60000 | 360000 | 720000 | 1800000 | 3600000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Interval between successive measurement reports, specified in {{units}}. Corresponds to parameter reportInterval specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportInterval";
-    }
-    leaf report-amount {
-      type uint8 {
-        range "0..2 | 4 | 8 | 16 | 32 | 64";
-      }
-      config false;
-      description
-        "Number of times a measurement report is sent. Corresponds to parameter reportAmount specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. Value of 0 indicates \"infinity.\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportAmount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.";
-  }
-
-  grouping lte-ran-mobility-conn-mode-irat-g {
-    description
-      "This object contains parameters relating to the connected mode mobility (handover) configuration that is common to all inter-RAT handover scenarios (UTRA (UMTS), GERAN (GSM) and CDMA2000) (see {{bibref|3GPP-TS.32.592|Section 6.1.5.2.2}}).";
-    leaf-list qoffsett-utra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a UTRA-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectUTRA specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsettUTRA";
-    }
-    leaf-list filter-coefficient-utra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for UTRA measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficient parameter specified in QuantityConfigUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.FilterCoefficientUTRA";
-    }
-    leaf meas-quantity-utrafdd {
-      type enumeration {
-        enum "cpich-rscp" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD - CPICH-RSCP";
-        }
-        enum "cpich-ec-n0" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD - CPICH-EcN0";
-        }
-      }
-      config false;
-      description
-        "Measurement quantity used for UTRA measurements. Corresponds to measQuantityUTRA-FDD parameter specified in QuantityConfigUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD";
-    }
-    leaf b1-threshold-utrarscp {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "RSCP threshold to be used in UTRA measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b1-ThresholdUTRA:utra-RSCP specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdUTRARSCP";
-    }
-    leaf b1-threshold-utra-ec-n0 {
-      type uint8 {
-        range "0..49";
-      }
-      units "dBm";
-      config false;
-      description
-        "EcNo threshold to be used in UTRA measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b1-ThresholdUTRA:utra-EcNo specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdUTRAEcN0";
-    }
-    leaf-list qoffset-geran {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a GERAN-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectGERAN specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsetGERAN";
-    }
-    leaf-list filter-coefficient-geran {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for GERAN measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficient parameter specified in QuantityConfigGERAN IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.FilterCoefficientGERAN";
-    }
-    leaf b1-threshold-geran {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in GERAN measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b1-ThresholdGERAN specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdGERAN";
-    }
-    leaf-list qoffset-cdma2000 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a CDMA2000-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectCDMA2000 specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsetCDMA2000";
-    }
-    leaf meas-quantity-cdma2000 {
-      type enumeration {
-        enum "pilot-strength" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000 - PilotStrength";
-        }
-        enum "pilot-pn-phase-and-pilot-strength" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000 - PilotPnPhaseAndPilotStrength";
-        }
-      }
-      config false;
-      description
-        "Measurement quantity used for CDMA2000 measurements. Corresponds to measQuantityCDMA2000 parameter specified in QuantityConfigCDMA2000 IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000";
-    }
-    leaf b1-threshold-cdma2000 {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in CDMA2000 measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in {{bibref|3GPP-TS.45.008}}. Corresponds to parameter b1-ThresholdCDMA2000 specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdCDMA2000";
-    }
-    leaf b2-threshold2-utrarscp {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "RSCP threshold to be used in UTRA measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in {{bibref|3GPP-TS.25.133}}. Corresponds to parameter b2-Threshold2UTRA:utra-RSCP specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2UTRARSCP";
-    }
-    leaf b2-threshold2-utra-ec-n0 {
-      type uint8 {
-        range "0..49";
-      }
-      units "dBm";
-      config false;
-      description
-        "EcNo threshold to be used in UTRA measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b2-Threshold2UTRA:utra-EcNo specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2UTRAEcN0";
-    }
-    leaf b2-threshold2-geran {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in GERAN measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b2-Threshold2GERAN specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2GERAN";
-    }
-    leaf b2-threshold2-cdma2000 {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in CDMA2000 measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b2-Threshold2CDMA2000 specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2CDMA2000";
-    }
-    leaf-list hysteresis {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a hysteresis value applied to entry and leave condition of an IRAT report triggering event, with a numeric range between 0 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter hysteresis specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.Hysteresis";
-    }
-    leaf-list time-to-trigger {
-      type uint16 {
-        range "0 | 40 | 64 | 80 | 100 | 128 | 160 | 256 | 320 | 480 | 512 | 640 | 1024 | 1280 | 2560 | 5120";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a time period during which IRAT measurement report triggering condition needs to be met in order to trigger IRAT measurement report, specified in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value.. Corresponds to parameter timeToTrigger specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.TimeToTrigger";
-    }
-    leaf max-report-cells {
-      type uint8 {
-        range "1..8";
-      }
-      description
-        "Maximum number of IRAT cells that can be included in a measurement report. Corresponds to parameter maxReportCells specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MaxReportCells";
-    }
-    leaf report-interval {
-      type uint32 {
-        range "120 | 240 | 480 | 640 | 1024 | 2048 | 5120 | 10240 | 60000 | 360000 | 720000 | 1800000 | 3600000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Interval between successive IRAT measurement reports, specified in {{units}}. Corresponds to parameter reportInterval specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.ReportInterval";
-    }
-    leaf report-amount {
-      type uint8 {
-        range "0..2 | 4 | 8 | 16 | 32 | 64";
-      }
-      config false;
-      description
-        "Number of times an IRAT measurement report is sent. Corresponds to parameter reportAmount specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. Value of 0 indicates \"infinity.\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.ReportAmount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.";
-  }
-
-  grouping lte-ran-neighbor-list-g {
-    description
-      "This object contains parameters relating to the neighbor list.";
-    leaf max-lte-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.MaxLTECellEntries";
-    }
-    leaf lte-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.";
-  }
-
-  grouping lte-ran-neighbor-list-lte-cell-g {
-    description
-      "Table containing the E-UTRA (i.e. intra-RAT) cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.PLMNID";
-    }
-    leaf cid {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Cell Identity. {{bibref|3GPP-TS.36.331|Section 6.3.4}}. Combination of {{param|PLMNID}} and {{param}} constitutes the Cell Global ID (CGI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.CID";
-    }
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If the value of {{param}} is the same with the one currently being used by the, then it implies that this neighbor cell is an intra-frequency cell; otherwise, it is an inter-frequency cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.EUTRACarrierARFCN";
-    }
-    leaf phy-cell-id {
-      type uint16 {
-        range "0..503";
-      }
-      config false;
-      description
-        "Physical cell ID, as specified in {{bibref|3GPP-TS.36.211|Section 6.11}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.PhyCellID";
-    }
-    leaf q-offset {
-      type int64;
-      config false;
-      description
-        "Indicate a cell-specific offset applicable to a specific neighbouring cell. It is used for evaluating the cell as a candidate for cell re-selection in idle mode. Corresponds to parameter q-OffsetCell broadcast in SIB4 for intra-frequency cells and in SIB5 for inter-frequency cells, specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. For the value less than or equal to -8, and bigger than or equal to 8, only even numbers are valid. If the value is other than these, the CPE MUST reject the value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.QOffset";
-    }
-    leaf cio {
-      type int64;
-      config false;
-      description
-        "Cell individual offset applicable to a specific neighbouring cell. It is used for evaluating triggering conditions for measurement reporting in connected mode. Specified by cellIndividualOffset in MeasObjectEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. For the value less than or equal to -8, and bigger than or equal to 8, only even numbers are valid. If the value is other than these, the CPE MUST reject the value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.CIO";
-    }
-    leaf rs-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.RSTxPower";
-    }
-    leaf blacklisted {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this neighbor cell is allowed for UEs as handover target or not. If {{true}}, handover is prohibited towards this cell. If {{false}}, handover is allowed toward this cell. The {{param}} parameter allows this cell to be prohibited as a handover target, while still allowing this cell to be included in the BCCH SIB4 or 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Blacklisted";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-g {
-    description
-      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.36.331|Section 6.3.1 (SIB6, 7, 8)}}.";
-    leaf max-umts-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.}} table. There can be maximum of 16 UTRAN (UMTS) neighbor cells, as specified by carrierFreqListUTRA-FDD in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxUMTSEntries";
-    }
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.}} table. There can be maximum of 16 GERAN (GSM) neighbor cells, as specified by carrierFreqsInfoList in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxGSMEntries";
-    }
-    leaf max-cdma2000-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.}} table. There can be maximum of 32 bandclasses. In each bandclass, there can be maximum of 16 CDMA2000 carrier frequencies. In each carrier, there can be maximum of 16 CDMA2000 neighbor cells (PN offset). It is specified by neighCellList in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxCDMA2000Entries";
-    }
-    leaf umts-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTSNumberOfEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSMNumberOfEntries";
-    }
-    leaf cdma2000-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000NumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-umts-g {
-    description
-      "Table containing the inter-RAT cell list for UTRA (UMTS) provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID of an intra-RAT UMTS neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      config false;
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PCPICHTxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GERAN (GSM) provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM850";
-        }
-        enum "gsm900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM900";
-        }
-        enum "dcs1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - DCS1800";
-        }
-        enum "pcs1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - PCS1900";
-        }
-      }
-      config false;
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      config false;
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-cdma2000-g {
-    description
-      "Table containing the inter-RAT cell list for CDMA2000 provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.MustInclude";
-    }
-    leaf band-class {
-      type uint8 {
-        range "0..17";
-      }
-      config false;
-      description
-        "Defines the CDMA2000 band in which the CDMA2000 frequency carrier can be found, specified in bandclass number. BandClass is defined in {{bibref|3GPP2-C.S0057-B}} Table 1.5-1. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.BandClass";
-    }
-    leaf arfcn {
-      type uint16 {
-        range "0..2047";
-      }
-      config false;
-      description
-        "Defines the CDMA2000 frequency carrier within a CDMA2000 band, as specified by ARFCN-ValueCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and {{bibref|3GPP2-C.S0002-A}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.ARFCN";
-    }
-    leaf pn-offset {
-      type uint16 {
-        range "0..511";
-      }
-      config false;
-      description
-        "Defines the PN offset that represents the \"Physical cell identity\" in CDMA2000 system, as specified by PhysCellIdCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.PNOffset";
-    }
-    leaf type {
-      type enumeration {
-        enum "1x-rtt" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type - 1xRTT";
-        }
-        enum "hrpd" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type - HRPD";
-        }
-      }
-      config false;
-      description
-        "Indicates the type of the cell. This parameter determines the length of the CID parameter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type";
-    }
-    leaf cid {
-      type string {
-        length "0..16";
-      }
-      description
-        "Defines the global cell identity of the cell. For a 1xRTT cell, the cell identity is a binary string 47 bits long. For a HRPD cell, the cell identity is a binary string 128 bits long. The value of {{param}} parameter is interpreted as 128-bit long unsigned integer. If {{param|Type}} is {{enum|1xRTT|Type}}, the first 47 bits (6 octet) is used and the rest of this {{param}} parameter MUST be ignored by the CPE. If {{param|Type}} is {{enum|HRPD|Type}}, the entire 16 octet is used as {{param}}. Corresponds to IE CellGlobalIdCDMA2000 specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.CID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-g {
-    description
-      "This object contains parameters relating to the neighbor list used by the FAP based on its self-configuration capability and {{object|.CellConfig.LTE.RAN.NeighborList.}} configuration of adding and excluding cells.";
-    leaf max-lte-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.MaxLTECellEntries";
-    }
-    leaf lte-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-lte-cell-g {
-    description
-      "Table containing the LTE EUTRA (i.e. intra-RAT) cell list.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.PLMNID";
-    }
-    leaf cid {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Cell Identity. {{bibref|3GPP-TS.36.331|Section 6.3.4}}. Combination of {{param|PLMNID}} and {{param}} constitutes the Cell Global ID (CGI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.CID";
-    }
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If the value of {{param}} is the same with the one currently being used by the, then it implies that this neighbor cell is an intra-frequency cell; otherwise, it is an inter-frequency cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.EUTRACarrierARFCN";
-    }
-    leaf phy-cell-id {
-      type uint16 {
-        range "0..503";
-      }
-      description
-        "Physical cell ID, as specified in {{bibref|3GPP-TS.36.211|Section 6.11}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.PhyCellID";
-    }
-    leaf q-offset {
-      type int64;
-      description
-        "Indicate a cell-specific offset applicable to a specific neighbouring cell. It is used for evaluating the cell as a candidate for cell re-selection in idle mode. Corresponds to parameter q-OffsetCell broadcast in SIB4 for intra-frequency cells and in SIB5 for inter-frequency cells, specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.QOffset";
-    }
-    leaf cio {
-      type int64;
-      description
-        "Cell individual offset applicable to a specific neighbouring cell. It is used for evaluating triggering conditions for measurement reporting in connected mode. Specified by cellIndividualOffset in MeasObjectEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.CIO";
-    }
-    leaf rs-tx-power {
-      type int64;
-      units "dBm";
-      description
-        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.RSTxPower";
-    }
-    leaf blacklisted {
-      type boolean;
-      description
-        "Indicates whether this neighbor cell is allowed for UEs as handover target or not. If {{true}}, handover is prohibited towards this cell. If {{false}}, handover is allowed toward this cell. The {{param}} parameter allows this cell to be prohibited as a handover target, while still allowing this cell to be included in the BCCH SIB4 or 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.Blacklisted";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-g {
-    description
-      "Table containing the inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.36.331|Section 6.3.1 (SIB6, 7, 8)}}.";
-    leaf max-umts-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.}} table. There can be maximum of 16 UTRAN (UMTS) neighbor cells, as specified by carrierFreqListUTRA-FDD in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxUMTSEntries";
-    }
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.}} table. There can be maximum of 16 GERAN (GSM) neighbor cells, as specified by carrierFreqsInfoList in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxGSMEntries";
-    }
-    leaf max-cdma2000-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.}} table. There can be maximum of 32 banclasses. In each bandclass, there can be maximum of 16 CDMA2000 carrier frequencies. In each carrier, there can be maximum of 16 CDMA2000 neighbor cells (PN offset). It is specified by neighCellList in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxCDMA2000Entries";
-    }
-    leaf umts-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTSNumberOfEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSMNumberOfEntries";
-    }
-    leaf cdma2000-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000NumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-umts-g {
-    description
-      "Table containing the inter-RAT cell list for UTRA (UMTS) cell.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "RNC-ID of an intra-RAT UMTS neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PCPICHTxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GERAN (GSM) cell.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM850";
-        }
-        enum "gsm900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM900";
-        }
-        enum "dcs1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - DCS1800";
-        }
-        enum "pcs1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - PCS1900";
-        }
-      }
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000-g {
-    description
-      "Table containing the inter-RAT cell list for CDMA2000 cell.";
-    leaf band-class {
-      type uint8 {
-        range "0..17";
-      }
-      description
-        "Defines the CDMA2000 band in which the CDMA2000 frequency carrier can be found, specified in bandclass number. BandClass is defined in {{bibref|3GPP2-C.S0057-B|Table 1.5-1}}. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.BandClass";
-    }
-    leaf arfcn {
-      type uint16 {
-        range "0..2047";
-      }
-      description
-        "Defines the CDMA2000 frequency carrier within a CDMA2000 band, as specified by ARFCN-ValueCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and {{bibref|3GPP2-C.S0002-A}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.ARFCN";
-    }
-    leaf pn-offset {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Defines the PN offset that represents the \"Physical cell identity\" in CDMA2000 system, as specified by PhysCellIdCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.PNOffset";
-    }
-    leaf type {
-      type enumeration {
-        enum "1x-rtt" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type - 1xRTT";
-        }
-        enum "hrpd" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type - HRPD";
-        }
-      }
-      description
-        "Indicates the type of the cell. This parameter determines the length of the CID parameter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type";
-    }
-    leaf cid {
-      type string {
-        length "0..16";
-      }
-      description
-        "Defines the global cell identity of the cell. For a 1xRTT cell, the cell identity is a binary string 47 bits long. For a HRPD cell, the cell identity is a binary string 128 bits long. The value of {{param}} parameter is interpreted as 128-bit long unsigned integer. If {{param|Type}} is {{enum|1xRTT|Type}}, the first 47 bits (6 octet) is used and the rest of this {{param}} parameter MUST be ignored by the CPE. If {{param|Type}} is {{enum|HRPD|Type}}, the entire 16 octet is used as {{param}}. Corresponds to IE CellGlobalIdCDMA2000 specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.CID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.";
-  }
-
-  grouping cdma2000-g {
-    description
-      "This object contains parameters relating to configuring the CDMA2000 FAP.";
-    leaf tunnel-instance {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "This is the reference to the IPsec tunnel instance used by the CDMA2000 FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.TunnelInstance";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.";
-  }
-
-  grouping cdma2000-one-x-g {
-    description
-      "This object contains parameters relating to configuring the CDMA2000 1x FAP.";
-    leaf pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSNNumberOfEntries";
-    }
-    leaf max-batch-pcfpdsn-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.MaxBatchPCFPDSNEntries";
-    }
-    leaf batch-pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSNNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.";
-  }
-
-  grouping cdma2000-one-x-ran-g {
-    description
-      "This object contains parameters relating to RAN configuring the CDMA2000 1x FAP.";
-    leaf one-x-sector-nid {
-      type int64;
-      config false;
-      description
-        "SID for 1x. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXSectorNID";
-    }
-    leaf one-x-sector-sid {
-      type int64;
-      config false;
-      description
-        "NID for 1x . See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXSectorSID";
-    }
-    leaf one-xpzid {
-      type int64;
-      config false;
-      description
-        "packet Zone ID for 1x packet calls";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXPZID";
-    }
-    leaf base-id {
-      type int64;
-      config false;
-      description
-        "Base station ID (needed in SPM). This is also the CellID. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.BaseID";
-    }
-    leaf max-neighbor-list-entries {
-      type uint64;
-      description
-        "Maximum number of entries avaiable in {{object|.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.MaxNeighborListEntries";
-    }
-    leaf neighbor-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.";
-  }
-
-  grouping cdma2000-one-x-ran-rf-g {
-    description
-      "This object contains parameters relating to RF configuration of the FAP.";
-    leaf-list rfcnfl {
-      type string {
-        length "0..256";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a pair of 2-digit Band class number (as defined in {{bibref|3GPP2-C.S0057}}) followed by 4-digit FL Radio Frequency Channel Number (RFCN). Self-configuration for RFCN is controlled by {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}}. If the FAP's self-configuration capability for RFCN is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for RFCNFLInUse. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. An example value is \"010001, 030500\". If multiple items are specified, they are done in the order of preference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL";
-    }
-    leaf rfcnfl-band-in-use {
-      type string {
-        length "0..16";
-      }
-      description
-        "The FL Band being used by the FAP. Self-configuration for Band and RFCN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in RFCNFL. If the self-configuration capability is not available or not enabled, then this parameter contains the first band class value in RFCNFL.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFLBandInUse";
-    }
-    leaf rfcnfl-in-use {
-      type uint64;
-      description
-        "The FL RFCN being used by the FAP. Self-configuration for RFCN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in RFCNFL. If the self-configuration capability is not available or not enabled, then this parameter contains the first RFCN value in RFCNFL.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFLInUse";
-    }
-    leaf-list pilot-pn {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a pilot PN offset in units of 64 PN chips. Self-configuration for pilot PN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for Pilot PN Offset is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for PilotPNInUse. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PN offset values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The order of the items has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN";
-    }
-    leaf pilot-pn-in-use {
-      type uint16 {
-        range "0..511";
-      }
-      units "64 PN chips";
-      description
-        "The Pilot PN Offset being used by the FAP in {{units}}. Self-configuration for Pilot PN Offset is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in PilotPN. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in PilotPN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPNInUse";
-    }
-    leaf maxfap-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power allowed on the FAP. MaxFAPTxPower is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>;..<Pmax_high>;\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low>; and <Pmax_high>; are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower";
-    }
-    leaf maxfap-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      description
-        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPowerInUse";
-    }
-    leaf pch-pwr-percentage {
-      type uint32 {
-        range "1000..1000000";
-      }
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Paging Channel (expressed in {{units}}). For example, 93333 means 93.333% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PchPwrPercentage";
-    }
-    leaf pilot-pwr-percentage {
-      type uint32 {
-        range "1000..1000000";
-      }
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Pilot Channel (expressed in {{units}}). For example, 19950 means 19.95% of total.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPwrPercentage";
-    }
-    leaf sync-pwr-percentage {
-      type uint32 {
-        range "1000..1000000";
-      }
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Sync Channel (expressed in {{units}}). For example, 23458 means 23.4% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.SyncPwrPercentage";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.";
-  }
-
-  grouping cdma2000-one-x-ran-network-listen-mode-config-g {
-    description
-      "This object contains parameters relating to self-configuration of the MaxFAPTxPower of the FAP.";
-    leaf rfcnfl-margin {
-      type uint64;
-      config false;
-      description
-        "If self-configuration of RFCNFL is enabled, this value indicates the total received signal strength margin to be applied to the entries in RFCNFL when the FAP decides on the RFCNInUse in order to bias the selection of the most preferred frequency.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.RFCNFLMargin";
-    }
-    leaf fap-coverage-target {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Defines the target value measured in dB for the range of the FAP's FL coverage, in terms of RF propagation loss. This value can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. {{param}} is expressed as a range of the minimum coverage path loss and the maximum coverage path loss with \"..\" (two periods) between the minimum and maximum values, i.e., \"<FAPCoverageTarget_min>..<FAPCoverageTarget_max>\". These values can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. <FAPCoverageTarget_min> and <FAPCoverageTarget_max> are measured in dB and have a range of [50,150] incremented by 1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPCoverageTarget";
-    }
-    leaf fap-beacon-coverage-target {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Defines the target value measured in dB for the range of the FAP's FL Beacon coverage, in terms of RF propagation loss. This value can be used by the FAP's selfconfiguration algorithms to help derive beacon transmit power levels. {{param}} is expressed as a range of the minimum coverage path loss and the maximum coverage path loss with \"..\" (two periods) between the minimum and maximum values, i.e., \"<BeaconCoverageTarget_min>..<BeaconCoverageTarget_max>\". These values can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels for the beacon(s) in the presence of co-channel and adjacent channel interference.\" <BeaconCoverageTarget_min> and <BeaconCoverageTarget_max> are measured in dB and have a range of [50,150] incremented by 1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPBeaconCoverageTarget";
-    }
-    leaf max-coverage-edge-pilot-strength {
-      type int64;
-      units "0.1 dB";
-      config false;
-      description
-        "The maximum strength of the received pilot energy per chip, Ec, to total received spectral density, Io (signal and noise) desired for FAP users at the edge of the FAP coverage target in units of {{units}}. This value can be used by the FAP's self configuration algorithms to help prevent aggressive transmit power level settings .";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.MaxCoverageEdgePilotStrength";
-    }
-    leaf max-allowable-pilot-strength-degradation {
-      type int64;
-      units "0.1 dB";
-      config false;
-      description
-        "The maximum amount in dB by which the strength of the received pilot energy per chip, Ec, to total received spectral density, Io (signal and noise) for alien users can be degraded in the presence of FAP interference at the edge of FAP coverage, in {{units}} units.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.MaxAllowablePilotStrengthDegradation";
-    }
-    leaf-list rfcnfl-to-protect {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a FL RFCN corresponding to a CDMA2000 carrier that is adjacent to the RFCNFLInUse to be protected from adjacent channel interference. If any of the items in the list are adjacent to the FAP's own FL channel, the FAP MUST take the PilotStrength and total received power spectral density (Io) measured on these channels into account as part of its maximum transmit power selfconfiguration. The RFCNs in the list can belong to any operator, allowing for protection of the FAP operator's own macro layer as well as that of other operators. The list should take into account the ability of the FAP to self-configure its own FL RFCN and so SHOULD include any channels (requiring protection) which can potentially be adjacent to the RFCN selected by the FAP. For example, if only adjacent operator protection is needed and the FAP has the ability to self-configure to any channel owned by its operator, this list would be populated with the RFCNs immediately above and below the range of channels owned by the FAP operator. If an empty string then it indicates that there are no channels adjacent to the FAP that require protection, or that self-configuration of the FAP transmit power is not enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.RFCNFLToProtect";
-    }
-    leaf fap-allowed-adj-chan-coverage-hole {
-      type uint8 {
-        range "30..150";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines the maximum allowed coverage hole created on carriers listed in RFCNFLToProtect by the FAP transmission, measured in {{units}}, in terms of RF propagation loss such that the {{param|MaxAllowablePilotStrengthDegradation}} is maintained outside the {{param}} for MS on that {{param|RFCNFLToProtect}}. This value can be used by the FAP's self configuration algorithms to help derive transmit power levels.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPAllowedAdjChanCoverageHole";
-    }
-    leaf acir {
-      type uint64;
-      units "dB";
-      config false;
-      description
-        "AdjacentChannelInterferenceRatio value in {{units}} to be used when determining the coverage hole created on adjacent channels due to leakage.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.ACIR";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.";
-  }
-
-  grouping cdma2000-one-x-ran-access-parameters-g {
-    description
-      "The object used for configuring access parameter messages for 1x. See {{bibref|3GPP2-C.S0005}}.";
-    leaf nom-pwr {
-      type int64;
-      config false;
-      description
-        "Nominal power correction factor used by the mobile in open loop power adjustment. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NomPwr";
-    }
-    leaf init-pwr {
-      type int64;
-      config false;
-      description
-        "Initial power offset used by the mobile in open loop power adjustment. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.InitPwr";
-    }
-    leaf pwr-step-indb {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Power step increment in successive access probes. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PwrStepIndb";
-    }
-    leaf nom-pwr-ext {
-      type uint8 {
-        range "0..1";
-      }
-      units "dBm";
-      config false;
-      description
-        "{{param}} should be zero for BC0 and BC1. For other band classes, {{param}} is 1 if Mobile's correction factor is between -24dBm and -9dBm. Otherwise {{param}} is zero. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NomPwrExt";
-    }
-    leaf apm-auth {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Enabling/disabling global authentication. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.APMAuth";
-    }
-    leaf apm-rand-update-prd {
-      type uint16 {
-        range "16..14400";
-      }
-      units "seconds";
-      config false;
-      description
-        "The period (in {{units}}) that the BSS updates the RAND value sent via APM. Only 2 second multiples accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.APMRandUpdatePrd";
-    }
-    leaf initialpwr {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Initial power offset for access. The base station shall set this field to the correction factor to be used by mobile stations in the open loop power estimate for the initial transmission on an Access Channel, expressed as a two's complement value in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Initialpwr";
-    }
-    leaf pwr-step {
-      type uint8 {
-        range "0..7";
-      }
-      units "dB";
-      config false;
-      description
-        "Power increment. The base station shall set this field to the value by which mobile stations are to increase their transmit power between successive access probes in an access probe sequence, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PwrStep";
-    }
-    leaf num-step {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Number of access probes. The base station shall set this field to one less than the maximum number of access probes mobile stations are to transmit in a single access probe sequence.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NumStep";
-    }
-    leaf max-cap-size {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Maximum Access Channel message capsule size. The base station shall set this field to the value in the range 0 to 7. {{param}} is set to three less than the maximum number of Access Channel frames in an Access Channel message capsule.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxCapSize";
-    }
-    leaf preamble-size {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Access Channel preamble length. The base station shall set this field to one less than the number of Access Channel frames that mobile stations are to transmit in each Access Channel preamble.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PreambleSize";
-    }
-    leaf psist09 {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 0 - 9. A value of 63 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist09";
-    }
-    leaf psist10 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 10 (test Mobile). A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist10";
-    }
-    leaf psist11 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 11 (emergency Mobile). A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist11";
-    }
-    leaf psist12 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 12. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist12";
-    }
-    leaf psist13 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 13. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist13";
-    }
-    leaf psist14 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 14. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist14";
-    }
-    leaf psist15 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 15. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist15";
-    }
-    leaf msg-psist {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence modifier for access channel attempts transmitting a message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MsgPsist";
-    }
-    leaf reg-psist {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence modifier for registration message transmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.RegPsist";
-    }
-    leaf probe-pn-ran {
-      type uint8 {
-        range "0..9";
-      }
-      config false;
-      description
-        "Time randomization for access channel probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.ProbePNRan";
-    }
-    leaf acc-tmo {
-      type uint8 {
-        range "0..15";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "Access transmission timeout. Two less than the time the mobile has to wait before determining that the probe is not received by the BSS. It is in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.AccTmo";
-    }
-    leaf probe-bkoff {
-      type uint8 {
-        range "0..15";
-      }
-      units "frames";
-      config false;
-      description
-        "One less than maximum number for randomized delay between successive access probes in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.ProbeBkoff";
-    }
-    leaf bkoff {
-      type uint8 {
-        range "0..15";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "One less than maximum number for randomized delay between successive access sequences in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Bkoff";
-    }
-    leaf max-req-seq {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Maximum number of access probe sequences for an access request.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxReqSeq";
-    }
-    leaf max-rsp-seq {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Maximum number of access probe sequences for an access response";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxRspSeq";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.";
-  }
-
-  grouping cdma2000-one-x-ran-system-parameters-g {
-    description
-      "The object used for configuring system parameter messages for 1x";
-    leaf reg-zone {
-      type uint16 {
-        range "0..4095";
-      }
-      config false;
-      description
-        "registration zone number (refer to Section 2.6.5.1.5 of {{bibref|3GPP2-C.S0005}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.RegZone";
-    }
-    leaf total-zones {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Total number of zones the mobile shall retain for zone based registration. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.TotalZones";
-    }
-    leaf zone-timer {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "timer value to be used by the mobile in the zone registration timer. Refer to table 3.7.2.3.2.1-1 of the standard {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.ZoneTimer";
-    }
-    leaf reg-period {
-      type uint8 {
-        range "29..85";
-      }
-      config false;
-      description
-        "Registration period for timer based registration. Registration period is calculated from the formula 2^(REG_PRD/4) x 0.08 seconds. Thus a value of 59 corresponds to 1853.6 seconds (~ 1/2 hour). See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.RegPeriod";
-    }
-    leaf srch-win-a {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Search window size to be used ny the mobile for active set and candidate set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 11 corresponds to 130 chips";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinA";
-    }
-    leaf srch-win-n {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Search window size to be used by the mobile for neighbor set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 8 corresponds to 60 chips";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinN";
-    }
-    leaf srch-win-r {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Search window size to be used by the mobile for remaining set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 8 corresponds to 60 chips";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinR";
-    }
-    leaf nghbr-max-age {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "neighbor set maximum age beyond which the mobiles are supposed to drop a neighbor. This is the count of neighbout list updat or extended neighbor list updates a mobile shall receive before removing a neighbor from the neighbor list. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.NghbrMaxAge";
-    }
-    leaf pwr-rep-thresh {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Power control reporting threshold. Number of bad frames a mobile should receive before sending a PMRM message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepThresh";
-    }
-    leaf pwr-rep-frames {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Duration (in number of frames) for measuring bad frames - given by equation 2^(PWR_REP_FRAMES/2) x 5 frames. For example, 6 corresponds to 40 frames. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepFrames";
-    }
-    leaf pwr-thresh-enable {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "enable/disable power measurement report message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrThreshEnable";
-    }
-    leaf pwr-period-enable {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "enable/disable periodic power measurement report message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrPeriodEnable";
-    }
-    leaf pwr-rep-delay {
-      type uint8 {
-        range "0..32";
-      }
-      config false;
-      description
-        "Delay (in unit of four frames) following a PMRM before the mobile restarts counting bad frames for power control measuremnt. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepDelay";
-    }
-    leaf rescan {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "If {{param}} is set to 1, the mobiles should restart and reinitialize the System Parameters message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Rescan";
-    }
-    leaf tadd {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Power threshold (in {{units}}) for transferring a neighbor from neighbor set or remaining set to active set. For example, a value of 26 corresponds to -13 dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tadd";
-    }
-    leaf tdrop {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Drop threshold (in {{units}}) to start a handoff timer to drop a neighbor from active or candidate set. For example, 30 corresponds to -15dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tdrop";
-    }
-    leaf tcomp {
-      type uint8 {
-        range "0..15";
-      }
-      units "0.5 dB";
-      config false;
-      description
-        "If a pilot in condidate set exceeds the power of a pilot in active set by threshold, the mobile shall send a power strenght measurement report message. This threshold is defined in unit of {{units}}. For example, 5 corresponds to a threshold of 2.5 dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tcomp";
-    }
-    leaf t-tdrop {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Timer value for which an action is taken by the mobile for a neighbor in candidate set or in active set. Refer to Table 2.6.6.2.3-1 of the {{bibref|3GPP2-C.S0005}} for details. For example, 3 corresponds to four seconds";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.TTdrop";
-    }
-    leaf in-traffic-tadd {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "T-ADD value (in {{units}}) used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTadd";
-    }
-    leaf in-traffic-tdrop {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "T-Drop value (in {{units}}) used in in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTdrop";
-    }
-    leaf in-traffic-tcomp {
-      type uint8 {
-        range "0..15";
-      }
-      units "dB";
-      config false;
-      description
-        "T_Comp value (in {{units}}) used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTcomp";
-    }
-    leaf in-traffic-ttdrop {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "T_Tdrop timer value value used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTtdrop";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.";
-  }
-
-  grouping cdma2000-one-x-ran-extended-system-parameters-g {
-    description
-      "The object used for configuring extended system parameter messages for 1x";
-    leaf prev {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "protocol revision";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.Prev";
-    }
-    leaf p-min-rev {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "minimum protocol revision";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PMinRev";
-    }
-    leaf delete-for-tmsi {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Delete Foreign TMSI. The base station shall set this field to '1' to cause the mobile station to delete its TMSI if the TMSI was assigned in a different TMSI zone from that specified by the TMSI_ZONE field of this message; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.DeleteForTMSI";
-    }
-    leaf use-tmsi {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Use TMSI indicator. The base station shall set this field to the value shown next field corresponding to the type of MSID that the mobile station is to use on the Access Channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.UseTMSI";
-    }
-    leaf pref-msid-type {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Preferred Access Channel Mobile Station Identifier Type. F294. The base station shall set this field to the value shown as below corresponding to the type of MSDI that the mobile station is to use on the Access Channel. [useTMSI] [prefMSIDType] [description] 0 00 IMSI_S and ESN 0 10 IMSI 0 11 IMSI and ESN 1 10 TMSI; IMSI 1 11 TMSI; IMSI and ESN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PrefMSIDType";
-    }
-    leaf mcc {
-      type uint16 {
-        range "0..1023";
-      }
-      config false;
-      description
-        "Mobile Country Code. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MCC";
-    }
-    leaf imsi1112 {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "11th and 12th digits of IMSI. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.IMSI1112";
-    }
-    leaf tmsi-zone-len {
-      type uint8 {
-        range "1..8";
-      }
-      config false;
-      description
-        "TMSI zone length. The base station shall set this field to the number of octets included in the TMSI_ZONE. The base station shall set this field to a value in the range 1 to 8 inclusive.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.TMSIZoneLen";
-    }
-    leaf tmsi-zone {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "TMSI zone. The base station shall set this field to the TMSI zone number as specified in {{bibref|3GPP2-N.S0010}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.TMSIZone";
-    }
-    leaf bcast-index {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Broadcast slot cycle index. To enable periodic broadcast paging, the base station shall set this field to and unsigned 3-bit number in the range 1-7, equal to the broadcast slot cycle index. To disable periodic broadcast paging, the base station shall set this field to '000'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.BcastIndex";
-    }
-    leaf imsit-supported {
-      type int64;
-      config false;
-      description
-        "1: IMISI_T is supported, 0: IMSI_T is not supported. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.IMSITSupported";
-    }
-    leaf soft-slope {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "The slope in the inequality criterion for adding a pilot to the Active Set, or dropping a pilot from the Active Set. The base station shall set this field as an unsigned binary number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.SoftSlope";
-    }
-    leaf add-intercept {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "The intercept in the inequality criterion for adding a pilot to the Active Set. The base station shall set this field as a two's complement signed binary number, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AddIntercept";
-    }
-    leaf drop-intercept {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "The intercept in the inequality criterion for dropping a pilot from the Active Set. The base station shall set this field as a two's complement signed binary number, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.DropIntercept";
-    }
-    leaf max-num-alt-so {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Maximum number of alternative service options. The base station shall set this field to the maximum number of alternative service option numbers that the mobile station is allowed to include in the Origination Message or the Page Response Message. For mobile stations with MOB_P_REVs less than seven, the alternative service options are those service options defined in TSB-58B and related to SERVICE_OPTION in Origination Message and the Page Response Message. For mobile stations with MOB_P_REVs equal to or greater than seven, the alternative service options are those service options defined in TSB-58B without service group number assigned and related to SERVICE_OPTION in Origination Message and the Page Response Message. The base station sets this field to a value greater than zero, in addition, the base station shall allow the mobile station with MOB_P_REVs equal to or greater than 7 to include - a 4 or 8-bit service option bitmap in the Origination Message and the Page Response Message; - alternative service option numbers, not limited to MAX_ALT_SO_NUM, in the Enhanced Origination Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MaxNumAltSo";
-    }
-    leaf reselected-included {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "System reselection parameters included. If the base station is including system reselection parameters, the base station shall set this field to '1'; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.ReselectedIncluded";
-    }
-    leaf ec-thresh {
-      type uint64;
-      units "dBm";
-      config false;
-      description
-        "Pilot power threshold. If RESELECTINCLUDED is set to '1', the base station shall include the field EC_THRESH and set this field to: [ (pilot_power_threshold + 115 ) ] where pilot_power_threshold is the pilot power, Ec, in {{units}}/1.23 MHz, below which the mobile station is to perform system reselection; otherwise, the base station shall omit this field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.EcThresh";
-    }
-    leaf ec-io-thresh {
-      type uint64;
-      config false;
-      description
-        "Pilot Ec / Io threshold. If RESELECTINCLUDED is set to '1', the base station shall include the field EC_I0_THRESH and set this field to: [ - 20 x log10 (pilot_threshold) ] where pilot_threshold is the pilot Ec/Io below which the mobile station is to perform system reselection; otherwise, the base station shall omit this field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.EcIoThresh";
-    }
-    leaf pilot-report {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Pilot reporting indicator. The base station shall set this field to '1' if the mobile station is to report the additional pilots which have pilot strength exceeding T_ADD in all Access Channel messages. The base station shall set this field to '0' if the mobile station is to report the additional pilots which have pilot strengths exceeding T_ADD only in the Origination Message and the Page Response Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PilotReport";
-    }
-    leaf nghbr-set-entry-info {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Neighbor Set access entry handoff information included indicator. If the base station is including information on the Neighbor Set access entry handoff, the base station shall set this field to '1'; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NghbrSetEntryInfo";
-    }
-    leaf access-ho-order {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access entry handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access entry handoff after receiving a message while performing the Mobile Station Order and Message Processing Operation in the Mobile Station Idle State; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHOOrder";
-    }
-    leaf nghbr-set-access-info {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Neighbor Set access handoff included indicator. If the base station is including information on the Neighbor Set access handoff or access probe handoff, the base station shall set this field to '1', otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NghbrSetAccessInfo";
-    }
-    leaf access-ho {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access handoff; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHO";
-    }
-    leaf access-ho-msg-rsp {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access handoff permitted for message response indicator. If AccessHO is set to '1', the base station shall include this field and set it as described below; otherwise, the base station shall omit this field. The base station shall set this field to '1' if the mobile station is permitted to perform an access handoff after receiving a message and before responding to that message in the System Access State; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHOMsgRsp";
-    }
-    leaf access-probe-ho {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access probe handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the base station is permitted to perform an access probe handoff; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessProbeHO";
-    }
-    leaf acc-ho-list-upd {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access handoff list update permitted indicator. If AccessProbeHO is included and is set to '1', the base station shall set this field to '1' if the mobile station is permitted to update the access handoff list during an access attempt; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccHOListUpd";
-    }
-    leaf acc-probe-ho-other-msg {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access probe handoff permitted for messages other than the Origination Message and the Page Response Message. If AccessProbeHO is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access probe handoff for messages other than the Origination Message and the Page Response. The base station shall set this field to '0' if the mobile station is permitted to perform an access probe handoff only for the Origination Message and the Page Response Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccProbeHOOtherMsg";
-    }
-    leaf max-num-probe-ho {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Maximum number of times that mobile station is permitted to perform an access probe handoff. If AccessProbeHO is set to '1', the base station shall set this field to the maximum number of times the mobile station is allowed to perform an access probe handoff within an access attempt minus one.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MaxNumProbeHO";
-    }
-    leaf brdcast-gps-assit {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "If {{param}} is set to 1, then Braodcast GPS assist is supported. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.BrdcastGPSAssit";
-    }
-    leaf qpch-supported {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Quick Paging Channel Supported Indication. If the base station supports Quick Paging Channel operation, the base station shall set this field to '1'; otherwise the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHSupported";
-    }
-    leaf num-qpch {
-      type uint8 {
-        range "1..3";
-      }
-      config false;
-      description
-        "Number of Quick Paging Channels. If the base station sets QPCHSUPPORTED to '1', the base station shall include this field and set it as described below; otherwise, the base station shall omit this field. The base station shall set this field to the number of Quick Paging Channels on this CDMA Channel. The base station shall not set this field to '00'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NumQPCH";
-    }
-    leaf qpch-rate {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Quick Paging Channel indicator rate. See {{bibref|3GPP2-C.S0005}}. {{param}} is set as follows: 0: 4800bps; 1: 9600bps.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHRate";
-    }
-    leaf qpch-pwr-level-page {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Quick Paging Channel paging indicator transmit power level. {{param}} is set as follows: 0: 5 dB below; 1: 4 dB below; 2: 3 dB below; 3: 2 dB below; 4: 1 dB below; 5: Same; 6: 1 dB above; 7: 2dB above.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHPwrLevelPage";
-    }
-    leaf qpc-hcci-supported {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Quick Paging Channel configuration change indicator supported. {{param}} is set as follows: if the base station is to support configuration change indicators on the Quick Paging Channel, {{param}} to '1'; otherwise {{param}} is set to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHcciSupported";
-    }
-    leaf qpch-pwr-level-config {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Quick Paging Channel configuration change indicator CONFIG transmit power level. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHPwrLevelConfig";
-    }
-    leaf sdb-supported {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Short Data Burst supported indicator. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.SDBSupported";
-    }
-    leaf r-lgain-traffic-pilot {
-      type uint8 {
-        range "0..63";
-      }
-      units "0.125 dB";
-      config false;
-      description
-        "Gain adjustment of the Reverse Traffic Channel relative to the Reverse Pilot Channel for Radio Configurations greater than 2. {{param}} is set to the correction factor to be used by mobile stations in setting the power of a reverse traffic channel, expressed as a two's complement value in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RLgainTrafficPilot";
-    }
-    leaf rvs-pwr-ctrl-delay-incl {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Reverse Power Control Delay included indicator. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RvsPwrCtrlDelayIncl";
-    }
-    leaf rvs-pwr-ctrl-delay {
-      type uint8 {
-        range "0..3";
-      }
-      units "1.25 ms";
-      config false;
-      description
-        "The reverse power control delay. {{param}} is setto the closed-loop reverse power control delay minus one (the closed-loop reverse power control delay is the time between the end of a gated-on reverse PCG and the beginning of the Forward Power Control Subchannel in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RvsPwrCtrlDelay";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.";
-  }
-
-  grouping cdma2000-one-x-ran-forward-pwr-ctr-g {
-    description
-      "The object used for configuring extended channel assignment messages for 1x";
-    leaf fpcfch-init-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Initial Fundamental Channel outer loop Eb/Nt setpoint in {{units}}. For example, 56 corresponds to 7 dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHInitSetpt";
-    }
-    leaf fpc-subchan-gain {
-      type int64;
-      units "0.25 dB";
-      config false;
-      description
-        "Forward power control subchannel relative to fwd traffic channel in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCSubchanGain";
-    }
-    leaf rl-gain-adj {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Reverse Traffic Channel power relative to access power in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.RLGainAdj";
-    }
-    leaf fpcfchfer {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Fundamental Channel target frame error rate. Refer to table 3.7.3.3.2.25-2 of {{bibref|3GPP2-C.S0005}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHFER";
-    }
-    leaf fpcfch-min-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Minimum Fundamental Channel Outer Loop Eb/Nt setpoint in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHMinSetpt";
-    }
-    leaf fpcfch-max-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Maximum Fundamental Channel Outer Loop Eb/Nt setpoint in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHMaxSetpt";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.";
-  }
-
-  grouping cdma2000-one-x-ran-hard-handoff-g {
-    description
-      "This object provides configurable parameters for 1x Handout";
-    leaf handout-enable {
-      type boolean;
-      config false;
-      description
-        "Enabling handout operation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HandoutEnable";
-    }
-    leaf ho-pilot-power-thresh {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Pilot power threshold (in {{units}} relative to the FAP pilot power) for handout declaration";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HOPilotPowerThresh";
-    }
-    leaf ho-pilot-duration {
-      type uint8 {
-        range "20..50";
-      }
-      units "100ms";
-      config false;
-      description
-        "Timethreshold for handout declaration (in {{units}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HOPilotDuration";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.";
-  }
-
-  grouping cdma2000-one-x-ran-hard-handoff-stats-g {
-    description
-      "This object contains statistics for all Handouts of the 1x FAP.";
-    leaf tx-ho-required {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of Handout Required messages sent to the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxHORequired";
-    }
-    leaf rx-ho-command {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of Handout Command messegaes received from the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxHOCommand";
-    }
-    leaf ho-required-rejected {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of HO required requests rejected by the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HORequiredRejected";
-    }
-    leaf ho-required-unanswered {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of HO required requests for which no response received from the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HORequiredUnanswered";
-    }
-    leaf tx-uhdm {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number UHDMs sent to mobiles";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxUHDM";
-    }
-    leaf rx-ns-ack {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of MSAcks received from the mobile in response to UHDM";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxNSAck";
-    }
-    leaf ho-failure-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of Handout attempts declared as failure";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HOFailureCount";
-    }
-    leaf call-drop-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total numer of call drops after a HO attempt. RTC lost without MSack";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.CallDropCount";
-    }
-    leaf tx-ho-commence {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of Handout Commenced messages sent to MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxHOCommence";
-    }
-    leaf rx-ho-session-clear {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of session clear commands received form the core";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxHOSessionClear";
-    }
-    leaf return-on-failure-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of times a Return On Handoff failure was declared";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.ReturnOnFailureCount";
-    }
-    leaf one-pilot-report-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of times only one pilot was reported in HO Required message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.OnePilotReportCount";
-    }
-    leaf two-pilot-report-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of times only two pilot was reported in HO Required message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TwoPilotReportCount";
-    }
-    leaf three-pilot-report-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of times only three pilot was reported in HO Required message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.ThreePilotReportCount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.";
-  }
-
-  grouping cdma2000-one-x-ran-power-control-g {
-    description
-      "Configuration Managed Object for OTA power control attribute.";
-    leaf one-xpcfpc-incl {
-      type int64;
-      config false;
-      description
-        "Whether Forward power control information included in Power Control message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCIncl";
-    }
-    leaf one-xpcfpcfch-min-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "The value for the minimum Fundamental Channel Outer Loop Eb/Nt setpoint, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCFCHMinSetpt";
-    }
-    leaf one-xpcfpcfch-max-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "The value for the maximum Fundamental Channel Outer Loop Eb/Nt setpoint, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCFCHMaxSetpt";
-    }
-    leaf one-xpcrpc-incl {
-      type int64;
-      config false;
-      description
-        "Whether reverse Power control information included in the Power Control Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCRPCIncl";
-    }
-    leaf one-xpcfch-chan-adj-gain {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Channel adjustment gain (in {{units}}) for Reverse Fundamental Channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFCHChanAdjGain";
-    }
-    leaf one-xpc-pwr-rep-thresh {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The number of bad frames to be received in a measurement period on the channel which carries the Power Control Subchannel before mobile stations are to generate a Power easurement Report Message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepThresh";
-    }
-    leaf one-xpc-pwr-rep-frames {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Power control reporting frame count. Number of frames over which the mobile station measures frame errors. For example, 7 corresponds to 55 frames. Refer to {{bibref|3GPP2-C.S0005}} for mapping between this value and the actual frame count.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepFrames";
-    }
-    leaf one-x-pwr-thresh-enable {
-      type int64;
-      config false;
-      description
-        "Threshold report mode indicator. If the mobile station is to generate threshold Power Measurement Report Messages, the base station shall set this field to '1'. If the mobile station is not to generate threshold Power Measurement Report Messages, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPwrThreshEnable";
-    }
-    leaf one-xpc-pwr-period-enable {
-      type int64;
-      config false;
-      description
-        "Periodic report mode indicator. If the mobile station is to generate periodic Power Measurement Report Messages, the base station shall set this field to '1'. If the mobile station is not to generate periodic Power Measurement Report Messages, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrPeriodEnable";
-    }
-    leaf one-xpc-pwr-rep-delay {
-      type uint8 {
-        range "0..31";
-      }
-      units "4 frames";
-      config false;
-      description
-        "Power report delay. The period that the mobile station waits following a Power Measurement Report Message before restarting frame counting for power control purposes. The base station shall set this field to the power report delay values in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepDelay";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.";
-  }
-
-  grouping cdma2000-one-x-ran-neighbor-list-g {
-    description
-      "This object contains information common to all neighbors of a sector. This object has only one instance.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.Alias";
-    }
-    leaf pilot-inc {
-      type int64;
-      config false;
-      description
-        "pilot increment policy for this network. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.PilotInc";
-    }
-    leaf one-x-neighbor-index {
-      type int64;
-      description
-        "Macro neighbour index. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborIndex";
-    }
-    leaf neighbor-config {
-      type enumeration {
-        enum "same-config" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - SameConfig";
-        }
-        enum "same-paging" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - SamePaging";
-        }
-        enum "diff-paging" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - DiffPaging";
-        }
-        enum "unknown" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - Unknown";
-        }
-      }
-      config false;
-      description
-        "Neighbor configuration in terms of number of frequencies having paging channels as defined in Section 3.7.2.3.2 of the {{bibref|3GPP2-C.S0005}} standard";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig";
-    }
-    leaf neighbor-pn {
-      type int64;
-      description
-        "PN offset of the neighbor. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborPN";
-    }
-    leaf search-priority {
-      type enumeration {
-        enum "low" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - Low";
-        }
-        enum "medium" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - Medium";
-        }
-        enum "high" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - High";
-        }
-        enum "very-high" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - VeryHigh";
-        }
-      }
-      config false;
-      description
-        "priority level for serching this neighbor. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority";
-    }
-    leaf neighbor-band {
-      type enumeration {
-        enum "0" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 0";
-        }
-        enum "1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 1";
-        }
-        enum "2" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 2";
-        }
-        enum "3" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 3";
-        }
-        enum "4" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 4";
-        }
-        enum "5" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 5";
-        }
-        enum "6" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 6";
-        }
-      }
-      config false;
-      description
-        "Neighbor band class. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand";
-    }
-    leaf neighbor-frequency {
-      type int64;
-      config false;
-      description
-        "frequency of neighbor. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborFrequency";
-    }
-    leaf frequency-included {
-      type int64;
-      config false;
-      description
-        "Flag to indicate if the channel id included. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.FrequencyIncluded";
-    }
-    leaf in-traffic {
-      type int64;
-      config false;
-      description
-        "whether this neighbor can be used for in-traffic neighborlist message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.InTraffic";
-    }
-    leaf overhead-msg {
-      type int64;
-      config false;
-      description
-        "whether this neighbor can be used for overhead neighborlist message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OverheadMsg";
-    }
-    leaf base-identifier {
-      type int64;
-      config false;
-      description
-        "unique identifire of the neighboring cell (optional)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.BaseIdentifier";
-    }
-    leaf air-interface {
-      type enumeration {
-        enum "one-x" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - OneX";
-        }
-        enum "is95" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - IS95";
-        }
-        enum "hrpd" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - HRPD";
-        }
-        enum "other" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - Other";
-        }
-      }
-      config false;
-      description
-        "Air interface technology of the neighbor.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface";
-    }
-    leaf hand-out-capable {
-      type int64;
-      config false;
-      description
-        "Flag to indicate if the handOutCapability is possible.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.HandOutCapable";
-    }
-    leaf one-x-neighbor-longitude {
-      type string {
-        length "0..16";
-      }
-      config false;
-      description
-        "Longitude for this neighbor. Parameter is a string representing a floating point real number (+/- XXX.YY). Where + for East, - for West, XXX.Y ranges between 0.0 and 180.0 .";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborLongitude";
-    }
-    leaf one-x-neighbor-latitude {
-      type string {
-        length "0..16";
-      }
-      config false;
-      description
-        "Lattitude for this neighbor. Parameter is a string representing a floating point number (+/-XX.Y). + for North, - for South, XX.Y ranges between 0.0 and 90.0.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborLatitude";
-    }
-    leaf one-x-neighbor-msc-id {
-      type uint32 {
-        range "0..16777215";
-      }
-      config false;
-      description
-        "IOS MSCID of the neighbors. See {{bibref|3GPP2-A.S0014}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborMSCId";
-    }
-    leaf one-x-neighbor-ios-cell-id {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell Identifier of the neighbor (formatted according to Cell Identification Discriminator = '0000 0010', i.e., 12-bit cell value and 4-bit sector value). See {{bibref|3GPP2-A.S0014}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborIOSCellId";
-    }
-    leaf force-in-overhead {
-      type boolean;
-      config false;
-      description
-        "If {{param}} is set to {{true}}, the FAP SHOULD include this Neighbor List entry in the Neighbor List overhead messages (see {{bibref|3GPP2-C.S0005}}. Otherwise, {{param}} is set to {{false}}, in which case the FAP MAY include this Neighbor List entry in the Neighbor List overhead messages.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.ForceInOverhead";
-    }
-    leaf included-in-overhead {
-      type boolean;
-      description
-        "If {{param}} is set to {{true}}, the FAP is currently including this Neighbor List entry in the Neighbor List overhead messages (see {{bibref|3GPP2-C.S0005}}. Otherwise, {{param}} is set to {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.IncludedInOverhead";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.";
-  }
-
-  grouping cdma2000-one-x-ran-apidm-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf association-type {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "The FAP shall set this field to the value shown in {{bibref|3GPP2-C.S0005}} corresponding to the configuration of the base station.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.AssociationType";
-    }
-    leaf apidlen {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "The FAP shall set this field to the length of the access point identification in units of 16 bits. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APIDLEN";
-    }
-    leaf apid {
-      type binary {
-        length "0..16";
-      }
-      config false;
-      description
-        "Access Point Identification. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APID";
-    }
-    leaf apidmask {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Access Point identification Mask. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APIDMASK";
-    }
-    leaf iosmscid {
-      type uint32 {
-        range "0..16777215";
-      }
-      config false;
-      description
-        "MSC_ID of the base station. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.IOSMSCID";
-    }
-    leaf ioscellid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "CELL_ID of the base station. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.IOSCELLID";
-    }
-    leaf intrafreqhohysincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTRAFREQHOHYS field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOHYSINCL";
-    }
-    leaf intrafreqhohys {
-      type uint8 {
-        range "0..127";
-      }
-      config false;
-      description
-        "Intra Frequency Handoff Hysteresis. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOHYS";
-    }
-    leaf intrafreqhoslopeincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTRAFREQHOSLOPE field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOSLOPEINCL";
-    }
-    leaf intrafreqhoslope {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "Intra Frequency Handoff Slope. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOSLOPE";
-    }
-    leaf interfreqhohysincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTERFREQHOHYS field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOHYSINCL";
-    }
-    leaf interfreqhohys {
-      type uint8 {
-        range "0..127";
-      }
-      config false;
-      description
-        "Inter frequency handoff hysteresis. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOHYS";
-    }
-    leaf interfreqhoslopeincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTERFREQHOSLOPE field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOSLOPEINCL";
-    }
-    leaf interfreqhoslope {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "Inter frequency handoff slope. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOSLOPE";
-    }
-    leaf interfreqsrchthincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTERFREQSRCHTH field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQSRCHTHINCL";
-    }
-    leaf interfreqsrchth {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Inter-frequency search threshold. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQSRCHTH";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.";
-  }
-
-  grouping cdma2000-one-x-ran-apidtm-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf apidtextcha-ri-len {
-      type uint16 {
-        range "0..256";
-      }
-      config false;
-      description
-        "Access Point identification Text CHARi field Length ({{param|APIDTEXTCHARi}}). Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTCHARiLEN";
-    }
-    leaf apidtextmsgencoding {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Access Point identification Text message encoding. Refer {{bibref|3GPP2-C.S0005}} and {{bibref|3GPP2-C.R1001}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTMSGENCODING";
-    }
-    leaf apidtextcha-ri {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "Access Point Identification Text. Refer {{bibref|3GPP2-C.S0005}} and {{bibref|3GPP2-C.R1001}} for definitions.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTCHARi";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.";
-  }
-
-  grouping cdma2000-one-x-ran-appim-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf lifetime {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Lifetime of the information in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.LIFETIME";
-    }
-    leaf numappirec {
-      type uint16 {
-        range "0..511";
-      }
-      config false;
-      description
-        "The number of entries for {{object|.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.NUMAPPIREC";
-    }
-    leaf appirec-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIRECNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.";
-  }
-
-  grouping cdma2000-one-x-ran-appim-appirec-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.Alias";
-    }
-    leaf apassntype {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Access point association type the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APASSNTYPE";
-    }
-    leaf apsidsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "SID same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APSIDSAMEASPREVIOUS";
-    }
-    leaf apnidsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "NID same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APNIDSAMEASPREVIOUS";
-    }
-    leaf apbandsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Bandclass same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APBANDSAMEASPREVIOUS";
-    }
-    leaf apfreqsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Frequency same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APFREQSAMEASPREVIOUS";
-    }
-    leaf appnrecsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "PN offset same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECSAMEASPREVIOUS";
-    }
-    leaf apsid {
-      type uint16 {
-        range "0..32767";
-      }
-      description
-        "Access point SID in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APSID";
-    }
-    leaf apnid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Access point NID in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APNID";
-    }
-    leaf apband {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Access point bandclass in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APBAND";
-    }
-    leaf apfreq {
-      type uint16 {
-        range "0..2047";
-      }
-      description
-        "Access point frequency in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APFREQ";
-    }
-    leaf appnrectype {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Access point PN offset in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECTYPE";
-    }
-    leaf appnreclen {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Length in octets of the access point PN record ({{param|APPNREC}}) in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECLEN";
-    }
-    leaf appnrec {
-      type binary {
-        length "0..31";
-      }
-      description
-        "Access point PN Record in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNREC";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.";
-  }
-
-  grouping cdma2000-one-x-pcf-config-g {
-    description
-      "CDMA2000 1x PCF configuration information.";
-    leaf pcfpdsn-health-monitor-interval {
-      type uint8 {
-        range "0..180";
-      }
-      units "seconds";
-      config false;
-      description
-        "PDSN health check monitor interval in {{units}}. Setting the value to 0 disables the PDSN Health Monitoring Feature. Setting any non-zero value enables the PDSN Health Monitoring Feature and sets that non-zero value as the timer interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPDSNHealthMonitorInterval";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.";
-  }
-
-  grouping cdma2000-one-x-pcf-config-pcf-performance-stats-g {
-    description
-      "This object is used in obtaining the PCF stats";
-    leaf a10-setup-failure-no-reason {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with an unspecified reason (A11 error code : 0x80)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureNoReason";
-    }
-    leaf a10-setup-failure-admin-prohibit {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Admin Prohibited\" (A11 error code : 0x81).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureAdminProhibit";
-    }
-    leaf a10-setup-failure-insuff-resources {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Insufficient Resources\" (A11 error code: 0x82).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureInsuffResources";
-    }
-    leaf a10-setup-failure-failed-auth {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureFailedAuth";
-    }
-    leaf a10-setup-failure-id-mismatch {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Id Mismatch\" (A11 error code: 0x85)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureIdMismatch";
-    }
-    leaf a10-setup-failure-malformed-req {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Malformed Request\" (A11 error code: 0x86)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureMalformedReq";
-    }
-    leaf a10-setup-failure-unknown-pdsn {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unknown PDSN\" (A11 error code: 0x88)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureUnknownPDSN";
-    }
-    leaf a10-setup-failure-unsupp-vend-id {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unsupported Vendor Id\" (A11 error code: 0x89)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureUnsuppVendId";
-    }
-    leaf total-a10-closed-by-rnc {
-      type uint64;
-      description
-        "Number of A10 closed by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10ClosedByRnc";
-    }
-    leaf total-a10-closed-by-pdsn {
-      type uint64;
-      description
-        "Number of A10 closed by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10ClosedByPDSN";
-    }
-    leaf total-a10-success-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCFsucceeded.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10SuccessPages";
-    }
-    leaf total-a10-failed-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCF failed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10FailedPages";
-    }
-    leaf total-a10-ingress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} received from the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10IngressBytes";
-    }
-    leaf total-a10-egress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} transmitted to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10EgressBytes";
-    }
-    leaf a10-reg-update-received {
-      type uint64;
-      description
-        "Number of A10 Registration updates received by the FAP PCF";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10RegUpdateReceived";
-    }
-    leaf total-a10-dropped-pages {
-      type uint64;
-      description
-        "Number of A10 Pages initiated by PCF dropped";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10DroppedPages";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.";
-  }
-
-  grouping cdma2000-one-x-batch-pcfpdsn-g {
-    description
-      "The Batch configuration Object used to configure PDSN table using a start and end IP address. The order of the address is used as part of PDSN selection algorithm, e.g., the first element is considered PDSN number 0. (Refer to {{bibref|3GPP2-A.S0013}}). To get individual PDSN entries use the {{object|.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.Alias";
-    }
-    leaf batch-table-number {
-      type int64;
-      description
-        "The BatchTable Number should be given only once during the creation of a Batch Table. This is the Key Attribute that uniquely identifies a BatchTable entry. This number indicates the index of this batch to determine the PDSN number in the PDSN selection algorithm ({{bibref|3GPP2-A.S0013}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableNumber";
-    }
-    leaf batch-table-start-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "Start IP address of the range of PDSNs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableStartIPAddress";
-    }
-    leaf batch-table-end-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "End IP address of the range of PDSNs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableEndIPAddress";
-    }
-    leaf batch-table-security-parameter-index {
-      type uint32 {
-        range "0 | 256..4294967295";
-      }
-      config false;
-      description
-        "Security Parameter Index to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableSecurityParameterIndex";
-    }
-    leaf batch-table-secret-key {
-      type binary {
-        length "0..16";
-      }
-      config false;
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableSecretKey";
-    }
-    leaf batch-table-ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "IOS Version of this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion";
-    }
-    leaf batch-table-pdsn-admin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTablePDSNAdminStatus";
-    }
-    leaf pdsn-type {
-      type enumeration {
-        enum "one-x" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - OneX";
-        }
-        enum "hrpd-rev0" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - HRPDRev0";
-        }
-        enum "hrpd-rev-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - HRPDRevA";
-        }
-      }
-      config false;
-      description
-        "Indicates the PDSN type for this batch.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-one-x-pcfpdsn-g {
-    description
-      "PCFPDSN Object configured for 1x. {{object|.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.}} table should be used to configure PDSN details.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.Alias";
-    }
-    leaf pdsn-number {
-      type int64;
-      description
-        "Index of this PDSN object in the PCFPDSNCollection array. The index is used as PDSN number in PDSN selection algorithm. ({{bibref|3GPP2-A.S0013}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNNumber";
-    }
-    leaf security-parameter-index {
-      type uint32 {
-        range "0 | 256..4294967295";
-      }
-      description
-        "Security Parameter Index used";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.SecurityParameterIndex";
-    }
-    leaf security-key {
-      type binary {
-        length "0..16";
-      }
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.SecurityKey";
-    }
-    leaf ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "HRPD IOS Version of this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion";
-    }
-    leaf pds-nadmin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNadminStatus";
-    }
-    leaf pdsn-health-status {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Reachability status of this PDSN. 0-unreachable, 1-reachable.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNHealthStatus";
-    }
-    leaf pdsnip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "IP address of the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNIPAddress";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-one-x-pcfpdsn-a11-reg-update-stats-g {
-    description
-      "This object is used in obtaining the A11 Registration Update stats for each PDSN";
-    leaf pdsn-number-reg-update-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.PDSNNumberRegUpdatePerf";
-    }
-    leaf pdsnip-address-reg-update-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the A11 Reg Update stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.PDSNIPAddressRegUpdatePerf";
-    }
-    leaf a11-reg-update-received-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-update messages receieved from a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateReceivedPDSN";
-    }
-    leaf a11-reg-update-id-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages receieved from a PDSN that failed ID validation";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateIDCheckFailPDSN";
-    }
-    leaf a11-reg-update-auth-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN that failed Authentication";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAuthCheckFailPDSN";
-    }
-    leaf a11-reg-update-for-unknown-psipdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unknown PSI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateForUnknownPSIPDSN";
-    }
-    leaf a11-reg-update-unspecified-reason-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unspecified reason code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnspecifiedReasonPDSN";
-    }
-    leaf a11-reg-update-ppp-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PPP Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePppTimeoutPDSN";
-    }
-    leaf a11-reg-update-registration-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Registration Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateRegistrationTimeoutPDSN";
-    }
-    leaf a11-reg-update-pdsn-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNErrorPDSN";
-    }
-    leaf a11-reg-update-inter-pcf-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PCF Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPCFHandoffPDSN";
-    }
-    leaf a11-reg-update-inter-pdsn-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PDSN Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPDSNHandoffPDSN";
-    }
-    leaf a11-reg-update-pdsnoamp-intervention-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN OAMP Intervention\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNOAMPInterventionPDSN";
-    }
-    leaf a11-reg-update-accounting-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Accounting Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAccountingErrorPDSN";
-    }
-    leaf a11-reg-update-user-failed-authentication-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"User Failed Authentication\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUserFailedAuthenticationPDSN";
-    }
-    leaf a11-reg-update-unknown-cause-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with Unknown Cause Code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnknownCauseCodePDSN";
-    }
-    leaf a11-reg-update-without-reason-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with PDSN Code Not Included";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateWithoutReasonCodePDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.";
-  }
-
-  grouping cdma2000-one-x-pcfpdsn-pcfpdsn-stats-g {
-    description
-      "This object is used in obtaining the PCF PDSN stats for each PDSN";
-    leaf a10-setup-attempts-pdsn {
-      type uint64;
-      description
-        "Number of attempts the PCF made to establish an A10 connection with PDSN. If PCF fails establishing such a connection on this PDSN and goes on to use another PDSN for that connection, it will be counted as two setup attempts.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupAttemptsPDSN";
-    }
-    leaf a10-setup-successes-pdsn {
-      type uint64;
-      description
-        "Number of times PCF succeeded in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupSuccessesPDSN";
-    }
-    leaf a10-setup-blocks-pdsn {
-      type uint64;
-      description
-        "Number of times PCF was blocked in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupBlocksPDSN";
-    }
-    leaf a11-reg-req-denied-id-mismatch-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Id Mismatch\" (A11 error code: 0x85) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedIdMismatchPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-pdsnpdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Unknown PDSN\" (A11 error code: 0x88)by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownPDSNPDSN";
-    }
-    leaf a11-reg-req-denied-no-reason-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with no reason code by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedNoReasonPDSN";
-    }
-    leaf a11-reg-req-denied-admin-prohibit-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Admin Prohibited\" (A11 error code : 0x81) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedAdminProhibitPDSN";
-    }
-    leaf a11-reg-req-denied-insuff-resources-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Insufficient Resources\" (A11 error code: 0x82) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedInsuffResourcesPDSN";
-    }
-    leaf a11-reg-req-denied-failed-auth-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedFailedAuthPDSN";
-    }
-    leaf a11-reg-req-denied-malformed-req-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Malformed Request\" (A11 error code: 0x86) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedMalformedReqPDSN";
-    }
-    leaf a11-reg-req-denied-unsupp-vend-id-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Unsupported Vendor Id\" (A11 error code: 0x8D)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnsuppVendIdPDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-unavailable-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Unavailable\" (A11 error code: 0x89)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelUnavailablePDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-tbit-not-set-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Tbit Not Set\" (A11 error code: 0x8A)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelTbitNotSetPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-error-code-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with an unspecified reason (A11 error code : 0x80) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownErrorCodePDSN";
-    }
-    leaf a10-reg-req-for-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 setup";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-re-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 reregistration";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-release-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 realease";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReleaseRetransmissionsPDSN";
-    }
-    leaf pdsn-number-pdsn-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.PDSNNumberPDSNPerf";
-    }
-    leaf pds-nip-address-pdsn-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.PDSNipAddressPDSNPerf";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.";
-  }
-
-  grouping cdma2000-one-x-stats-g {
-    description
-      "This object contains 1x FAP statistics aggregated over all connections of all users over all sectors.";
-    leaf registration-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of registration attempts";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationAttempts";
-    }
-    leaf registration-fails {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of registrations failed";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationFails";
-    }
-    leaf registrations-blocked {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Unauthorized registrations blocked by admission control";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationsBlocked";
-    }
-    leaf page-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of attemots to page requests received from the core";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.PageAttempts";
-    }
-    leaf page-fails {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of page requests rejected or not responded";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.PageFails";
-    }
-    leaf voice-call-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of voice call attempts";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallAttempts";
-    }
-    leaf voice-call-failures {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of voice call attempts which failed for various reasons";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallFailures";
-    }
-    leaf voice-calls-blocked {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of voice calls blocked due to lack of authorization";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallsBlocked";
-    }
-    leaf voice-calls-dropped {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of voice calls dropped due to various reasons other than a normal call release";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallsDropped";
-    }
-    leaf data-call-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data call attempts";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallAttempts";
-    }
-    leaf data-call-failures {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data call attemots failed for various reasons";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallFailures";
-    }
-    leaf data-calls-blocked {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data calls failed due to lack of authorization";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallsBlocked";
-    }
-    leaf data-calls-dropped {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data calls dropped due to reasons other than a normal release.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallsDropped";
-    }
-    leaf average-voice-call {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "milliseconds";
-      description
-        "Average voice call duration in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageVoiceCall";
-    }
-    leaf average-data-call {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "milliseconds";
-      description
-        "Average data call duration in {{units}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageDataCall";
-    }
-    leaf average-session-in-sec {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "seconds";
-      description
-        "Average session duration in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageSessionInSec";
-    }
-    leaf total-voice-calls {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "seconds";
-      description
-        "Total number of successful voice calls";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.TotalVoiceCalls";
-    }
-    leaf total-data-calls {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of successful data calls";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.TotalDataCalls";
-    }
-    leaf fwd-voice-packet-drop-percentage {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Percentage of voice packets dropped in MAC due to signaling";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.FwdVoicePacketDropPercentage";
-    }
-    leaf rev-voice-packet-drop-percentage {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Percentage of voice packets received with bad FQI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RevVoicePacketDropPercentage";
-    }
-    leaf fwd-avg-data-rate {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Average data rate of the scheduler on the forward link";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.FwdAvgDataRate";
-    }
-    leaf rev-avg-data-rate {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Average data rate of the scheduler on reverse link";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RevAvgDataRate";
-    }
-    leaf bc-index-zero-to-one-transitions {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Num of times the bcIndex was changed from 0 to 1 in the Extended System Parameters Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.BcIndexZeroToOneTransitions";
-    }
-    leaf bc-index-one-to-zero-transitions {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Num of times the bcIndex was changed from 0 to 1 in the Extended System Parameters Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.BcIndexOneToZeroTransitions";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.";
-  }
-
-  grouping cdma2000-one-x-redirect-g {
-    description
-      "CDMA2000 1x service redirection parameters.";
-    leaf redirect-channel-number {
-      type uint16 {
-        range "0..2047";
-      }
-      config false;
-      description
-        "The channel number set from ACS that the FAP uses to redirect the MS in case of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..2047.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.RedirectChannelNumber";
-    }
-    leaf redirect-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The bandclass set from ACS that the FAP uses to redirect the MS incase of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the MS. The supported range is 0..9.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.RedirectBandClass";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.";
-  }
-
-  grouping cdma2000-hrpd-g {
-    description
-      "The object contains attributes related to HRPD.";
-    leaf pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSNNumberOfEntries";
-    }
-    leaf max-batch-pcfpdsn-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.MaxBatchPCFPDSNEntries";
-    }
-    leaf batch-pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSNNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.";
-  }
-
-  grouping cdma2000-hrpd-ran-g {
-    description
-      "The object contains attributes related to HRPD RAN.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.";
-  }
-
-  grouping cdma2000-hrpd-ran-rf-g {
-    description
-      "Contains the details related to HRPD RF";
-    leaf hrpd-car-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The Band Class this HRPD Carrier object is to operate on. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDCarBandClass";
-    }
-    leaf-list rfcnfl {
-      type string {
-        length "0..64";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a FL Radio Frequency Channel Number (RFCN). Self-configuration for RFCNFL is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for RFCNFL is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|RFCNFLInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. If multiple items are specified, they are done in the order of preference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL";
-    }
-    leaf rfcnfl-in-use {
-      type uint64;
-      description
-        "The FL RFCN being used by the FAP. Self-configuration for RFCNFL is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|RFCNFL}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|RFCNFL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFLInUse";
-    }
-    leaf-list pilot-pn {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "{{list}} (maximum length 32) (minimum 1 items) of strings. Each item is a pilot PN offset in units of 64 PN chips. Self-configuration for pilot PN is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for Pilot PN Offset is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|PilotPNInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PN offsets values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The order of the items has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN";
-    }
-    leaf pilot-pn-in-use {
-      type uint64;
-      config false;
-      description
-        "The Pilot PN Offset being used by the FAP. Self-configuration for Pilot PN Offset is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|PilotPN}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|PilotPN}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPNInUse";
-    }
-    leaf maxfap-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power allowed on the FAP. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<;Pmax_low>..<;Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. <;Pmax_low> and <;Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower";
-    }
-    leaf maxfap-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      config false;
-      description
-        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of {{units}}. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPowerInUse";
-    }
-    leaf control-channel-rate {
-      type int64;
-      config false;
-      description
-        "The data rate of the Control Channel of this HRPD SectorElement object. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-10.4.1.3.2.4";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ControlChannelRate";
-    }
-    leaf sync-capsule-offset {
-      type int64;
-      config false;
-      description
-        "The offset from the control channel cycle boundary at which the synchronous capsules are to be transmitted for this HRPD SectorElement object. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-9.2.6.1.4.1.2";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SyncCapsuleOffset";
-    }
-    leaf rab-length {
-      type int64;
-      config false;
-      description
-        "The Reverse Activity Bit (RAB) length measured in slots for this HRPD SectorElement object. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-7.8.6.2.2, Table 9.7.6.2-2.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RabLength";
-    }
-    leaf rab-offset {
-      type int64;
-      config false;
-      description
-        "The Reverse Activity Bit (RAB) offset for this HRPD SectorElement object. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-7.8.6.2.2.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RabOffset";
-    }
-    leaf sector-id {
-      type binary {
-        length "16";
-      }
-      config false;
-      description
-        "The 128 bit Sector ID for this HRPD SectorElement object. The Sector ID is used in the computation of the long code mask. See {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SectorID";
-    }
-    leaf color-code {
-      type int64;
-      config false;
-      description
-        "The HRPD color code associated with this sector-element. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ColorCode";
-    }
-    leaf subnet-mask-length {
-      type int64;
-      units "bits";
-      config false;
-      description
-        "{{param}} is the length of the HRPD SubnetMask in {{units}}. See {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SubnetMaskLength";
-    }
-    leaf hrpd-sec-el-reverse-link-silence-duration {
-      type int64;
-      units "frames";
-      config false;
-      description
-        "Duration of the Reverse Link Silence Interval in units of {{units}}. The duration of the silence interval to be maintained on the reverse link. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.1.4.1.1.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDSecElReverseLinkSilenceDuration";
-    }
-    leaf hrpd-sec-el-reverse-link-silence-period {
-      type int64;
-      units "frames";
-      config false;
-      description
-        "The Reverse Link Silence Interval is defined as the time interval of duration ReverseLinkSilenceDuration frames that starts at times T where T is the CDMA System Time in units of {{units}} and it satisfies the following equation: T mod (2048 x 2^(ReverseLinkSilencePeriod) - 1) = 0. The period in the access cycle duration for which the silence interval shall be maintained on the reverse link. {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.1.4.1.1.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDSecElReverseLinkSilencePeriod";
-    }
-    leaf open-loop-adjust {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "The open loop adjustment (in {{units}}) for the access parameters of this sector-element. FAP sets this field to the negative of the nominal power to be used by ATs in the open loop power estimate, expressed as an unsigned value in units of 1 dB. The value used by the AT is -1 times the value of this field. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.OpenLoopAdjust";
-    }
-    leaf probe-initial-adjust {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "The probe initial adjustment (in {{units}}) for the access parameters of this sector-element. FAP sets this field to the correction factor to be used by ATs in the open loop power estimate for the initial transmission on the Access Channel, expressed as a two's complement value in units of 1 dB. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbeInitialAdjust";
-    }
-    leaf probe-num-steps {
-      type int64;
-      config false;
-      description
-        "The number of power level steps for access probes for the access parameters of this sector-element. FAP sets this field to the maximum number of access probes ATs are to transmit in a single access probe sequence. The access network shall set this field to a value in the range [1 ... 15]. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbeNumSteps";
-    }
-    leaf probe-power-step {
-      type int64;
-      units "0.5 dB";
-      config false;
-      description
-        "The power step size (in {{units}}) applied to successive probes on the access channel associated with this sector-element. Probe power increase step. FAPsets this field to the increase in power between probes, in resolution of 0.5 dB. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbePowerStep";
-    }
-    leaf a-persistence {
-      type string {
-        length "0..16";
-      }
-      config false;
-      description
-        "The A-Persistence vector, as per HRPD specification, for controlling contention access on the access channel associated with this sector-element. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6. Format is \"0xAABBCCDD\", where AA, BB, CC, DD are in the range \"01\" through \"3F\" hex.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.APersistence";
-    }
-    leaf rssirab-threshold {
-      type int64;
-      units "0.125 dBm";
-      config false;
-      description
-        "RAB threshold for RSSI based RAB algorithm.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RSSIRABThreshold";
-    }
-    leaf load-rab-threshold {
-      type uint16 {
-        range "0..480";
-      }
-      units "0.125 dB";
-      config false;
-      description
-        "RAB threshold for Load based RAB algorithm in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.LoadRABThreshold";
-    }
-    leaf connection-rate-limit {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "4 different configurations.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ConnectionRateLimit";
-    }
-    leaf rfe-rl-balance-ratio {
-      type uint8 {
-        range "1..20";
-      }
-      config false;
-      description
-        "Config Parameter for DRC based rate control";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RfeRLBalanceRatio";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.";
-  }
-
-  grouping cdma2000-hrpd-pcf-config-g {
-    description
-      "CDMA2000 HRPD PCF configuration parameters.";
-    leaf pcfpdsn-health-monitor-interval {
-      type uint8 {
-        range "0..180";
-      }
-      units "seconds";
-      config false;
-      description
-        "PDSN health check monitor interval in {{units}}. Setting the value to 0 disables the PDSN Health Monitoring Feature. Setting any non-zero value enables the PDSN Health Monitoring Feature and sets that non-zero value as the timer interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPDSNHealthMonitorInterval";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.";
-  }
-
-  grouping cdma2000-hrpd-pcf-config-pcf-performance-stats-g {
-    description
-      "This object is used in obtaining the PCF stats";
-    leaf a10-setup-failure-no-reason {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with an unspecified reason (A11 error code : 0x80)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureNoReason";
-    }
-    leaf a10-setup-failure-admin-prohibit {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Admin Prohibited\" (A11 error code : 0x81).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureAdminProhibit";
-    }
-    leaf a10-setup-failure-insuff-resources {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Insufficient Resources\" (A11 error code: 0x82).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureInsuffResources";
-    }
-    leaf a10-setup-failure-failed-auth {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureFailedAuth";
-    }
-    leaf a10-setup-failure-id-mismatch {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Id Mismatch\" (A11 error code: 0x85)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureIdMismatch";
-    }
-    leaf a10-setup-failure-malformed-req {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Malformed Request\" (A11 error code: 0x86)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureMalformedReq";
-    }
-    leaf a10-setup-failure-unknown-pdsn {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unknown PDSN\" (A11 error code: 0x88)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureUnknownPDSN";
-    }
-    leaf a10-setup-failure-unsupp-vend-id {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unsupported Vendor Id\" (A11 error code: 0x89)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureUnsuppVendId";
-    }
-    leaf total-a10-closed-by-rnc {
-      type uint64;
-      description
-        "Number of A10 closed by the FAP RNC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10ClosedByRnc";
-    }
-    leaf total-a10-closed-by-pdsn {
-      type uint64;
-      description
-        "Number of A10 closed by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10ClosedByPDSN";
-    }
-    leaf total-a10-success-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCFsucceeded";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10SuccessPages";
-    }
-    leaf total-a10-failed-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCF failed";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10FailedPages";
-    }
-    leaf total-a10-ingress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} received from the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10IngressBytes";
-    }
-    leaf total-a10-egress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} transmitted to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10EgressBytes";
-    }
-    leaf a10-reg-update-received {
-      type uint64;
-      description
-        "Number of A10 Registration updates received by the FAP PCF";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10RegUpdateReceived";
-    }
-    leaf total-a10-dropped-pages {
-      type uint64;
-      description
-        "Number of A10 Pages initiated by PCF dropped";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10DroppedPages";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.";
-  }
-
-  grouping cdma2000-hrpd-batch-pcfpdsn-g {
-    description
-      "The Batch configuration Object used to configure PDSN table using a start and end IP address. The order of the address is used as part of PDSN selection algorithm, e.g., the first element is considered PDSN number 0 (refer to {{bibref|3GPP2-A.S0008}} and {{bibref|3GPP2-A.S0009}}). To get individual PDSN entries use the {{object|.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.Alias";
-    }
-    leaf batch-table-number {
-      type int64;
-      description
-        "The BatchTable Number should be given only once during the creation of a Batch Table. This is the Key Attribute that uniquely identifies a BatchTable entry";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableNumber";
-    }
-    leaf batch-table-start-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "Start IP address of the range of PDSNs";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableStartIPAddress";
-    }
-    leaf batch-table-end-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "End IP address of the range of PDSNs";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableEndIPAddress";
-    }
-    leaf batch-table-security-parameter-index {
-      type uint32 {
-        range "0 | 256..4294967295";
-      }
-      description
-        "Security Parameter Index to be used";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableSecurityParameterIndex";
-    }
-    leaf batch-table-secret-key {
-      type binary {
-        length "0..16";
-      }
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableSecretKey";
-    }
-    leaf batch-table-ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "HRPD IOS Version of this PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion";
-    }
-    leaf batch-table-pdsn-admin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTablePDSNAdminStatus";
-    }
-    leaf pdsn-type {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Indicates the PDSN type for this batch.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.PDSNType";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-g {
-    description
-      "PCFPDSN Object configured for HRPD. {{object|.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.}} table should be used to configure PDSN details.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.Alias";
-    }
-    leaf pdsn-number {
-      type int64;
-      description
-        "Index of this PDSN object in the PCFPDSNCollection array. The index is used as PDSN number in PDSN selection algorithm (refer to {{bibref|3GPP2-A.S0008}} and {{bibref|3GPP2-A.S0009}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNNumber";
-    }
-    leaf security-parameter-index {
-      type uint32 {
-        range "256..4294967295";
-      }
-      description
-        "Security Parameter Index used";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.SecurityParameterIndex";
-    }
-    leaf security-key {
-      type binary {
-        length "0..16";
-      }
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.SecurityKey";
-    }
-    leaf ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "HRPD IOS Version of this PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion";
-    }
-    leaf pds-nadmin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNadminStatus";
-    }
-    leaf pdsn-health-status {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Reachability status of this PDSN. 0-unreachable, 1-reachable.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNHealthStatus";
-    }
-    leaf pdsnip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "IP address of the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNIPAddress";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-a11-session-update-stats-g {
-    description
-      "This object is used in obtaining the A11 Session Update stats for each PDSN";
-    leaf pdsn-number-session-update-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.PDSNNumberSessionUpdatePerf";
-    }
-    leaf pdsnip-address-session-update-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the A11 Session Update stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.PDSNIPAddressSessionUpdatePerf";
-    }
-    leaf a11-session-update-received-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateReceivedPDSN";
-    }
-    leaf a11-session-update-accepted-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates accepted for a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateAcceptedPDSN";
-    }
-    leaf a11-session-update-extended-apipdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN that contained extended API";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateExtendedAPIPDSN";
-    }
-    leaf a11-session-update-for-unknown-psipdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN that conatained unknown PSI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateForUnknownPSIPDSN";
-    }
-    leaf a11-session-update-denied-id-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"ID Check Failed \"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedIDCheckFailPDSN";
-    }
-    leaf a11-session-update-denied-auth-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code\"Auth Check Failed\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedAuthCheckFailPDSN";
-    }
-    leaf a11-session-update-denied-reason-unspecified-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Unspecified Reason\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedReasonUnspecifiedPDSN";
-    }
-    leaf a11-session-update-denied-poorly-formed-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Poorly Formed\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedPoorlyFormedPDSN";
-    }
-    leaf a11-session-update-denied-session-params-not-updated-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Parameters Not Updated\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedSessionParamsNotUpdatedPDSN";
-    }
-    leaf a11-session-update-denied-qo-s-profile-id-not-supported-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"QoS Profile Id Not Updated\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedQoSProfileIdNotSupportedPDSN";
-    }
-    leaf a11-session-update-denied-insufficient-resources-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Insufficient Resources\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedInsufficientResourcesPDSN";
-    }
-    leaf a11-session-update-denied-handoff-in-progress-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code\"Handoff In Progress\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedHandoffInProgressPDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-a11-reg-update-stats-g {
-    description
-      "This object is used in obtaining the A11 Registration Update stats for each PDSN.";
-    leaf pdsn-number-reg-update-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.PDSNNumberRegUpdatePerf";
-    }
-    leaf pdsnip-address-reg-update-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the A11 Reg Update stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.PDSNIPAddressRegUpdatePerf";
-    }
-    leaf a11-reg-update-received-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-update messages receieved from a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateReceivedPDSN";
-    }
-    leaf a11-reg-update-id-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages receieved from a PDSN that failed ID validation";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateIDCheckFailPDSN";
-    }
-    leaf a11-reg-update-auth-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN that failed Authentication";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAuthCheckFailPDSN";
-    }
-    leaf a11-reg-update-for-unknown-psipdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unknown PSI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateForUnknownPSIPDSN";
-    }
-    leaf a11-reg-update-unspecified-reason-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unspecified reason code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnspecifiedReasonPDSN";
-    }
-    leaf a11-reg-update-ppp-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PPP Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePppTimeoutPDSN";
-    }
-    leaf a11-reg-update-registration-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Registration Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateRegistrationTimeoutPDSN";
-    }
-    leaf a11-reg-update-pdsn-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNErrorPDSN";
-    }
-    leaf a11-reg-update-inter-pcf-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PCF Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPCFHandoffPDSN";
-    }
-    leaf a11-reg-update-inter-pdsn-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PDSN Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPDSNHandoffPDSN";
-    }
-    leaf a11-reg-update-pdsnoamp-intervention-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN OAMP Intervention\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNOAMPInterventionPDSN";
-    }
-    leaf a11-reg-update-accounting-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Accounting Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAccountingErrorPDSN";
-    }
-    leaf a11-reg-update-user-failed-authentication-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"User Failed Authentication\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUserFailedAuthenticationPDSN";
-    }
-    leaf a11-reg-update-unknown-cause-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with Unknown Cause Code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnknownCauseCodePDSN";
-    }
-    leaf a11-reg-update-without-reason-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with PDSN Code Not Included";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateWithoutReasonCodePDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-aux-a10-stats-g {
-    description
-      "This object is used in obtaining the Auxillary A10 Connection stats for each PDSN";
-    leaf pdsn-number-aux-a10-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.PDSNNumberAuxA10Perf";
-    }
-    leaf pdsnip-address-aux-a10-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.PDSNIPAddressAuxA10Perf";
-    }
-    leaf aux-a10-connections-created-in-first-reg-req-pdsn {
-      type uint64;
-      description
-        "Number of Auxillary A10 Connections Created in the First Registration Request Message to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10ConnectionsCreatedInFirstRegReqPDSN";
-    }
-    leaf aux-a10-connections-created-in-subsequent-reg-req-pdsn {
-      type uint64;
-      description
-        "Number of Auxillary A10 Connections Created in Subsequent Registration Request Messages to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10ConnectionsCreatedInSubsequentRegReqPDSN";
-    }
-    leaf aux-a10-fwd-ip-flows-created-pdsn {
-      type uint64;
-      description
-        "Number of Forward IP Flows created with this PDSN for the Auxillary A10s";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10FwdIpFlowsCreatedPDSN";
-    }
-    leaf aux-a10-rev-ip-flows-created-pdsn {
-      type uint64;
-      description
-        "Number of Forward IP Flows created with this PDSN for the Auxillary A10s";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10RevIpFlowsCreatedPDSN";
-    }
-    leaf aux-a10-ip-flow-accounting-reg-requests-pdsn {
-      type uint64;
-      description
-        "Number of IP flow Accounting Reg Requests sent to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10IpFlowAccountingRegRequestsPDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-pcfpdsn-stats-g {
-    description
-      "This object is used in obtaining the PCF PDSN stats for each PDSN";
-    leaf a10-setup-attempts-pdsn {
-      type uint64;
-      description
-        "Number of attempts the PCF made to establish an A10 connection with PDSN. If PCF fails establishing such a connection on this PDSN and goes on to use another PDSN for that connection, it will be counted as two setup attempts.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupAttemptsPDSN";
-    }
-    leaf a10-setup-successes-pdsn {
-      type uint64;
-      description
-        "Number of times PCF succeeded in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupSuccessesPDSN";
-    }
-    leaf a10-setup-blocks-pdsn {
-      type uint64;
-      description
-        "Number of times PCF was blocked in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupBlocksPDSN";
-    }
-    leaf a11-reg-req-denied-id-mismatch-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Id Mismatch\" (A11 error code: 0x85) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedIdMismatchPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-pdsnpdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Unknown PDSN\" (A11 error code: 0x88)by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownPDSNPDSN";
-    }
-    leaf a11-reg-req-denied-no-reason-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with no reason code by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedNoReasonPDSN";
-    }
-    leaf a11-reg-req-denied-admin-prohibit-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Admin Prohibited\" (A11 error code : 0x81) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedAdminProhibitPDSN";
-    }
-    leaf a11-reg-req-denied-insuff-resources-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Insufficient Resources\" (A11 error code: 0x82) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedInsuffResourcesPDSN";
-    }
-    leaf a11-reg-req-denied-failed-auth-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedFailedAuthPDSN";
-    }
-    leaf a11-reg-req-denied-malformed-req-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Malformed Request\" (A11 error code: 0x86) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedMalformedReqPDSN";
-    }
-    leaf a11-reg-req-denied-unsupp-vend-id-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Unsupported Vendor Id\" (A11 error code: 0x8D)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnsuppVendIdPDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-unavailable-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Unavailable\" (A11 error code: 0x89)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelUnavailablePDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-tbit-not-set-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Tbit Not Set\" (A11 error code: 0x8A)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelTbitNotSetPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-error-code-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with an unspecified reason (A11 error code : 0x80) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownErrorCodePDSN";
-    }
-    leaf a10-reg-req-for-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 setup";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-re-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 reregistration";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-release-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 realease";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReleaseRetransmissionsPDSN";
-    }
-    leaf pdsn-number-pdsn-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.PDSNNumberPDSNPerf";
-    }
-    leaf pds-nip-address-pdsn-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.PDSNipAddressPDSNPerf";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.";
-  }
-
-  grouping cdma2000-hrpd-redirect-g {
-    description
-      "CDMA2000 HRPD service redirection parameters.";
-    leaf redirect-channel-number {
-      type uint16 {
-        range "0..2047";
-      }
-      config false;
-      description
-        "The channel number set from ACS that the FAP uses to redirect the AT in case of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..2047.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.RedirectChannelNumber";
-    }
-    leaf redirect-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The bandclass set from ACS that the FAP uses to redirect the AT incase of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..9.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.RedirectBandClass";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.";
-  }
-
-  grouping cdma2000-hrpd-call-control-stats-g {
-    description
-      "Details on call control stats";
-    leaf num-session-setup-attempts {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of session instances that are created on a specific FAP when a regular session setup attempt is initiated with an unknown RATI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupAttempts";
-    }
-    leaf num-session-setup-successful {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of successful regular session setup attempts that are initiated with an unknown RATI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupSuccessful";
-    }
-    leaf num-current-sessions-established {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of successfully established HRPD Sessions that exists on a specific picasso";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumCurrentSessionsEstablished";
-    }
-    leaf num-page-messages-to-at {
-      type uint64;
-      description
-        "The number of times a Page Message was sent to the AT to facilitate the setup of a connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumPageMessagesToAt";
-    }
-    leaf num-pages-succeeded {
-      type uint64;
-      description
-        "The total number of pages succeeded";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumPagesSucceeded";
-    }
-    leaf num-connections-opened {
-      type uint64;
-      description
-        "Total HRPD Connections Opened";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumConnectionsOpened";
-    }
-    leaf num-session-setups-failed-to-term-auth {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of HRPD session setups that are aborted due to various failure reasons";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupsFailedToTermAuth";
-    }
-    leaf num-forward-rlp-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of HRPD packets(bytes) sent from PDSN to AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumForwardRLPBytes";
-    }
-    leaf num-reverse-rlp-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "No. of HRPD packets(bytes) sent from AT to PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumReverseRLPBytes";
-    }
-    leaf average-session-setup-time {
-      type uint64;
-      units "10 ms";
-      description
-        "This parameter maintains a record of the average session setup time for all successfully setup sessions on a specific FAP. The average session setup time is in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.AverageSessionSetupTime";
-    }
-    leaf average-page-setup-time {
-      type uint64;
-      description
-        "The average connection setup time in response to a FAP initiated page. The time is from initiation of Page to the time the connection is declared open";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.AveragePageSetupTime";
-    }
-    leaf num-conn-setups-aborted {
-      type uint64;
-      description
-        "The number of connection setups that were aborted";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumConnSetupsAborted";
-    }
-    leaf num-forward-pre-rlp-dropped-pkts {
-      type uint64;
-      description
-        "Number of packets dropped at Pre-RLP queue due to overflow in forward direction. This counter will also be written to the performance log.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumForwardPreRLPDroppedPkts";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.";
-  }
-
-  grouping cdma2000-hrpd-qo-s-stats-g {
-    description
-      "This object is used in obtaining the QoS Common Performance stats";
-    leaf num-qo-s-subscriber-profile-updates-rcvd {
-      type uint64;
-      description
-        "Number of subscriber QoS profile updates received from the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSubscriberProfileUpdatesRcvd";
-    }
-    leaf num-pdsnip-flow-updates-msg-rcvd {
-      type uint64;
-      description
-        "Number of PDSN IP flow update messages received from PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumPDSNIPFlowUpdatesMsgRcvd";
-    }
-    leaf num-pdsnip-flow-updates-msg-failed {
-      type uint64;
-      description
-        "Number of PDSN IP Flow updates messages that failed per RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumPDSNIPFlowUpdatesMsgFailed";
-    }
-    leaf num-qo-s-setup-requests-received {
-      type uint64;
-      description
-        "Number of QoS setup requests received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsReceived";
-    }
-    leaf num-qo-s-setup-requests-accepted {
-      type uint64;
-      description
-        "Number of QoS setup requests received from the AT that the FAP RNC accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsAccepted";
-    }
-    leaf num-qo-s-setup-requests-rejected {
-      type uint64;
-      description
-        "Number of QoS setup requests from the AT that the FAP RNC rejected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsRejected";
-    }
-    leaf num-reservation-on-requests-received {
-      type uint64;
-      description
-        "Number of ReservationOnRequest messages received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsReceived";
-    }
-    leaf num-reservation-on-requests-accepted {
-      type uint64;
-      description
-        "Number of ReservationOnRequest messages received from the AT that the FAP RNC accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsAccepted";
-    }
-    leaf num-reservation-on-requests-rejected {
-      type uint64;
-      description
-        "Number of ReservationOnRequest message received from the AT that the FAP RNC rejected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsRejected";
-    }
-    leaf num-reservation-on-requests-failed {
-      type uint64;
-      description
-        "Number of ReservationOnRequest message received from the AT that the FAP RNC failed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsFailed";
-    }
-    leaf num-fwd-reservation-on-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a FwdReservationOn message to the AT to activate a forward Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumFwdReservationOnMessagesSent";
-    }
-    leaf num-rev-reservation-on-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a RevReservationOn message to the AT to activate a reverse Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumRevReservationOnMessagesSent";
-    }
-    leaf num-reservation-off-requests-received {
-      type uint64;
-      description
-        "Number of ReservationOffRequest message is received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsReceived";
-    }
-    leaf num-reservation-off-requests-accepted {
-      type uint64;
-      description
-        "Number of ReservationOffRequest messages received from the AT that the FAP RNC accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsAccepted";
-    }
-    leaf num-reservation-off-requests-rejected {
-      type uint64;
-      description
-        "Number of ReservationOffRequest messages received from the AT that the FAP RNC rejected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsRejected";
-    }
-    leaf num-fwd-reservation-off-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a FwdReservationOff message to the AT to deactivate a forward Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumFwdReservationOffMessagesSent";
-    }
-    leaf num-rev-reservation-off-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a RevReservationOff message to the AT to deactivate a reverse Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumRevReservationOffMessagesSent";
-    }
-    leaf num-qo-s-release-requests-received {
-      type uint64;
-      description
-        "Number of QoS release requests received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSReleaseRequestsReceived";
-    }
-    leaf num-connection-close-initiated-no-ran-rsr {
-      type uint64;
-      description
-        "Number of times FAP RNC initiated a connection close in response to the ReservationOnRequest because it did not have the RAN resources to satisfy one or more Reservations included in the request.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumConnectionCloseInitiatedNoRANRsr";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.";
-  }
-
-  grouping cdma2000-hrpd-rnc-sig-apps-stats-g {
-    description
-      "Stats for HRPD RNC signaling procedures.";
-    leaf c-num-page-requests {
-      type uint64;
-      description
-        "Number of HRPD Page requests made after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumPageRequests";
-    }
-    leaf s-num-page-requests {
-      type uint64;
-      description
-        "Number of HRPD Page requests made before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumPageRequests";
-    }
-    leaf s-num-connection-setup-attempts {
-      type uint64;
-      description
-        "Number of HRPD Connection setups attempted before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumConnectionSetupAttempts";
-    }
-    leaf c-num-connection-setup-attempts {
-      type uint64;
-      description
-        "Number of HRPD Connection setups attempted after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumConnectionSetupAttempts";
-    }
-    leaf s-num-connection-setup-success {
-      type uint64;
-      description
-        "Number of HRPD Connection setups succeeded before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumConnectionSetupSuccess";
-    }
-    leaf c-num-connection-setup-success {
-      type uint64;
-      description
-        "Number of HRPD Connection setups succeeded after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumConnectionSetupSuccess";
-    }
-    leaf s-num-normal-connection-closes {
-      type uint64;
-      description
-        "The number of HRPD connections that were closed normally before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNormalConnectionCloses";
-    }
-    leaf c-num-normal-connection-closes {
-      type uint64;
-      description
-        "The number of HRPD connections that were closed normally after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNormalConnectionCloses";
-    }
-    leaf s-num-total-connection-closes {
-      type uint64;
-      description
-        "The total number of HRPD connections closed, normally or abnormally, data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumTotalConnectionCloses";
-    }
-    leaf c-num-total-connection-closes {
-      type uint64;
-      description
-        "The total number of HRPD connections closed, normally or abnormally, after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumTotalConnectionCloses";
-    }
-    leaf s-num-rf-related-drops {
-      type uint64;
-      description
-        "Number of HRPD connection close because of RTC loss or No FTC before data has flowed on the A10 connection";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDrops";
-    }
-    leaf c-num-rf-related-drops {
-      type uint64;
-      description
-        "Number of HRPD connection close because of RTC loss or No FTC after data has flowed on the A10 connection";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDrops";
-    }
-    leaf s-num-page-responses {
-      type uint64;
-      description
-        "Total number of successful responses to HRPD page requests that were received from the AT before the final page timeout and before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumPageResponses";
-    }
-    leaf c-num-page-responses {
-      type uint64;
-      description
-        "Total number of successful responses to HRPD page requests that were received from the AT before the final page timeout and after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumPageResponses";
-    }
-    leaf s-num-rf-related-drops-rtc-lost {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped before data has flowed on the A10 connection because a Reverse Traffic Channel (RTC) lost indication was received, and as a result, no reverse link for the connection were available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDropsRTCLost";
-    }
-    leaf c-num-rf-related-drops-rtc-lost {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped after data has flowed on the A10 connection because a Reverse Traffic Channel (RTC) lost indication was received, and as a result, no reverse link for the connection were available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDropsRTCLost";
-    }
-    leaf s-num-rf-related-drops-no-ftc {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection because of indications that there is no active Forward Traffic Channel (FTC) available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDropsNoFTC";
-    }
-    leaf c-num-rf-related-drops-no-ftc {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection because of indications that there is no active Forward Traffic Channel (FTC) available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDropsNoFTC";
-    }
-    leaf s-num-network-error-drops {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the open A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDrops";
-    }
-    leaf c-num-network-error-drops {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the open A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDrops";
-    }
-    leaf s-num-network-error-drops-rnc-internal {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the A10 connection due to internal failures.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsRNCInternal";
-    }
-    leaf c-num-network-error-drops-rnc-internal {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the A10 connection due to internal failures.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsRNCInternal";
-    }
-    leaf s-num-network-error-drops-rnc-external {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the A10 connection due to the PDSN unreachablity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsRNCExternal";
-    }
-    leaf c-num-network-error-drops-rnc-external {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the A10 connection due to the PDSN unreachablity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsRNCExternal";
-    }
-    leaf s-num-network-error-drops-a10-setup-fail {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because there was failure in the A10 connection set-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsA10SetupFail";
-    }
-    leaf c-num-network-error-drops-a10-setup-fail {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because there was failure in the A10 connection set-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsA10SetupFail";
-    }
-    leaf s-num-misc-drops-sector-down {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection because there is only one pilot available for the connection and a sector down indication has been received for that pilot.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsSectorDown";
-    }
-    leaf c-num-misc-drops-sector-down {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection because there is only one pilot available for the connection and a sector down indication has been received for that pilot.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsSectorDown";
-    }
-    leaf s-num-misc-drops-internal-error {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection due to internal software errors.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsInternalError";
-    }
-    leaf c-num-misc-drops-internal-error {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection due to internal software errors.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsInternalError";
-    }
-    leaf c-num-misc-drops-state-mismatch {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection when the FAP finds a state mismatch between itself andthe AT. Such a mismatch is found when a connection request message is received from the AT, and the connection is already open as perceived by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsStateMismatch";
-    }
-    leaf s-num-misc-drops-state-mismatch {
-      type uint64;
-      description
-        "This statistic counts the number of connections that were dropped before the demarcation point when the FAP finds a state mismatch between itself and the AT. Such a mismatch is found when a connection request message is received from the AT, and the connection is already open as perceived by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsStateMismatch";
-    }
-    leaf s-num-misc-drops-due-to-rlp {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped before data has flowed on the A10 connection at the request of the Radio Link Protocol. This request is generated when the HDR Fast Path component finds that the reset acknowledgment timeout has expired for the connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsDueToRLP";
-    }
-    leaf c-num-misc-drops-due-to-rlp {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped after data has flowed on the A10 connection at the request of the Radio Link Protocol. This request is generated when the HDR Fast Path component finds that the reset acknowledgment timeout has expired for the connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsDueToRLP";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.";
-  }
-
-  grouping cdma2000-hrpd-access-auth-config-g {
-    description
-      "HRPD A12-related service stats.";
-    leaf a12-access-authentication-enable {
-      type int64;
-      config false;
-      description
-        "Flag to enable/Disable HRPD Access Authentication. {{true}} - Enabled, {{false}} - Disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.A12AccessAuthenticationEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.";
-  }
-
-  grouping cdma2000-hrpd-access-auth-stats-g {
-    description
-      "This object is used in obtaining the Access Authentication related stats.";
-    leaf an-ppp-authentication-attempts-by-node {
-      type uint64;
-      description
-        "Number of AnPppAuthentications attempted by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AnPppAuthenticationAttemptsByNode";
-    }
-    leaf a12-requests-sent-from-node {
-      type uint64;
-      description
-        "Number of A12 Access Requests Sent from the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RequestsSentFromNode";
-    }
-    leaf a12-rejects-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Rejects received from the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RejectsReceivedByNode";
-    }
-    leaf a12-accepts-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Accepts received by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12AcceptsReceivedByNode";
-    }
-    leaf a12-access-challenges-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Challenges received by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12AccessChallengesReceivedByNode";
-    }
-    leaf a12-retransmits-sent-from-node {
-      type uint64;
-      description
-        "Number of A12 Access Requests retransmitted from the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RetransmitsSentFromNode";
-    }
-    leaf a12-timeouts-events-for-node {
-      type uint64;
-      description
-        "Number of A12 Timeout events occurred at the FAP due to unreachability of the AAA server/ no response from the AAA server.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TimeoutsEventsForNode";
-    }
-    leaf a12-malformedresponse-received-by-node {
-      type uint64;
-      description
-        "Number of Malformed A12 Access Response received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12MalformedresponseReceivedByNode";
-    }
-    leaf a12-bad-authenticator-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Response with Bad Authenticator received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12BadAuthenticatorReceivedByNode";
-    }
-    leaf a12-unknown-type-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Packet of unknown type received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownTypeReceivedByNode";
-    }
-    leaf a12-unknown-pkt-received-by-node {
-      type uint64;
-      description
-        "Number of unknown A12 packets received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownPktReceivedByNode";
-    }
-    leaf a12-unknown-server-received-by-node {
-      type uint64;
-      description
-        "Number of A12 packets received from unknown AAA server by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownServerReceivedByNode";
-    }
-    leaf a12-other-failure-occurences-in-node {
-      type uint64;
-      description
-        "Number of A12 packets failed due to other failure occurences in the AAA server.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12OtherFailureOccurencesInNode";
-    }
-    leaf a12-by-pass-num-ats-with-unknown-mfr-code-by-node {
-      type uint64;
-      description
-        "Number of ATs with UnknowMfrCode detected in the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12ByPassNumAtsWithUnknownMfrCodeByNode";
-    }
-    leaf a12-tx-path-fail-due-to-an-ppp-error-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"AnPPP Error\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToAnPppErrorByNode";
-    }
-    leaf a12-tx-path-fail-due-to-no-server-available-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"No Server Available\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToNoServerAvailableByNode";
-    }
-    leaf a12-tx-path-fail-due-to-internal-error-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"internal error\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToInternalErrorByNode";
-    }
-    leaf a12-tx-path-fail-due-to-no-packet-id-available-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"No packet id available\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToNoPacketIdAvailableByNode";
-    }
-    leaf a12-tx-path-fail-due-to-transmit-error-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"Transmit Error\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToTransmitErrorByNode";
-    }
-    leaf a12-svr-timeouts-for-node {
-      type uint64;
-      description
-        "Number of A12 server timeouts happened in the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12SvrTimeoutsForNode";
-    }
-    leaf a12-enh-ta-bypass-lcp-timeout-by-node {
-      type uint64;
-      description
-        "Number of LCP timeouts happened in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassLcpTimeoutByNode";
-    }
-    leaf a12-enh-ta-bypass-chap-timeout-by-node {
-      type uint64;
-      description
-        "Number of CHAP timeouts happened in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapTimeoutByNode";
-    }
-    leaf a12-enh-ta-bypass-chap-invalid-by-node {
-      type uint64;
-      description
-        "Number of CHAP Challenge response received from the AT when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapInvalidByNode";
-    }
-    leaf a12-enh-ta-bypass-chap-nai-matches-a12-bypass-list-by-node {
-      type uint64;
-      description
-        "Number of times the CHAP NAI received from the AT matches with A12Bypass List in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapNaiMatchesA12BypassListByNode";
-    }
-    leaf a12-session-ta-timeout-by-node {
-      type uint64;
-      description
-        "Number of times Session timeouts occurred due to TA.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12SessionTaTimeoutByNode";
-    }
-    leaf access-auth-failed-due-to-session-close-total {
-      type uint64;
-      description
-        "Number of times the Access Authenticaiton failed due to Sesion close.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AccessAuthFailedDueToSessionCloseTotal";
-    }
-    leaf access-auth-succeeded {
-      type uint64;
-      description
-        "Number of times the Access Authenticaiton succeeded.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AccessAuthSucceeded";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.";
-  }
-
-  grouping cdma2000-beacon-g {
-    description
-      "This object models the attributes to control the generalized beacon. The beacon is modeled as a beacon frame composed of multiple beacon intervals. The beacon frame start is time-aligned to the instant when 1x 80ms paging frames and HRPD control channel frames align (occurs once every 1.28s).";
-    leaf beacon-admin-status {
-      type enumeration {
-        enum "locked" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus - Locked";
-        }
-        enum "unlocked" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus - Unlocked";
-        }
-      }
-      config false;
-      description
-        "Allows administrative control of beacon.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus";
-    }
-    leaf beacon-oper-status {
-      type enumeration {
-        enum "locked" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Locked";
-        }
-        enum "unlocked" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Unlocked";
-        }
-        enum "fault" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Fault";
-        }
-      }
-      description
-        "Reports operational status of beacon.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus";
-    }
-    leaf hrpd-beacon-enable {
-      type boolean;
-      config false;
-      description
-        "If set to {{true}} the HRPD-specific beacon described by {{object|HRPDBeaconList}} object is enabled. If set to {{false}}, all HRPD beacons (if any) are contained in the BeaconList object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconEnable";
-    }
-    leaf period {
-      type uint16 {
-        range "0..32767";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "Length and periodicity of the beacon frame in {{units}}. Reference - {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.Period";
-    }
-    leaf maxfap-beacon-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Maximum transmission power allowed on the FAP Beacon frequencies. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<;Pmax_low>..<;Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum beacon transmit power. Self-configuration for maximum beacon transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable}} from an enabled perspective. <;Pmax_low> and <;Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower";
-    }
-    leaf maxfap-beacon-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      description
-        "Maximum beacon transmission power measured in {{units}} currently used by the FAP on any beacon frequency. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPowerInUse";
-    }
-    leaf beacon-pch-pwr-percentage {
-      type int64;
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Paging Channel (expressed in {{units}}). For example, 93333 means 93.333% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconPchPwrPercentage";
-    }
-    leaf max-hrpd-beacon-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Maximum transmission power allowed on the dedicated HRPD beacon. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". MaxHRPDBeaconTxPower identifies the limits between which the FAP can self-configure its maximum beacon transmit power. Self-configuration for maximum beacon transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPower";
-    }
-    leaf max-hrpd-beacon-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      description
-        "Maximum beacon transmission power measured in dBm currently used by the FAP on any beacon frequency. Actual values of the maximum transmission power are -40.0 dBm to 20.0 in units of {{units}}. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPowerInUse";
-    }
-    leaf beacon-pilot-pwr-percentage {
-      type int64;
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Pilot Channel (expressed in {{units}}). For example, 19950 means 19.950% of total.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconPilotPwrPercentage";
-    }
-    leaf beacon-sync-pwr-percentage {
-      type int64;
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Sync Channel (expressed in {{units}}). For example, 23458 means 23.458% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconSyncPwrPercentage";
-    }
-    leaf max-beacon-list-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.Beacon.BeaconList.{i}.}} object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxBeaconListEntries";
-    }
-    leaf beacon-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconListNumberOfEntries";
-    }
-    leaf max-hrpd-beacon-list-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.}} object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconListEntries";
-    }
-    leaf hrpd-beacon-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.";
-  }
-
-  grouping cdma2000-beacon-beacon-list-g {
-    description
-      "This object models an individual beacon intervals. It may be used to model both 1x and HRPD beacons with offset from start of beacon frame measured in 80ms slots.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Alias";
-    }
-    leaf beacon-index {
-      type int64;
-      description
-        "Instance identifier for this beacon interval. Allowed range is 0..(BeaconListNumberOfEntries-1).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconIndex";
-    }
-    leaf offset {
-      type uint16 {
-        range "0..32767";
-      }
-      config false;
-      description
-        "Offset from the start of the beacon frame in 80ms slots.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Offset";
-    }
-    leaf duration {
-      type uint16 {
-        range "0..32767";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "Duration of this beacon interval in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Duration";
-    }
-    leaf transmission-format {
-      type enumeration {
-        enum "0" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat - 0";
-        }
-        enum "1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat - 1";
-        }
-      }
-      config false;
-      description
-        "Determines if this beacon interval shall transmit HRPD (HRPD) or CDMA2000 1x.{HRPD=\"0\", 1x=\"1\"}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat";
-    }
-    leaf beacon-band-class {
-      type int64;
-      config false;
-      description
-        "Band class for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconBandClass";
-    }
-    leaf beacon-channel-freq {
-      type uint16 {
-        range "0..2016";
-      }
-      config false;
-      description
-        "Channel number for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconChannelFreq";
-    }
-    leaf-list beacon-pn-offset {
-      type string {
-        length "0..32";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a pilot PN offset of the pilot beacon for this channel in units of 64 PN chips. If this parameter contains more than one item, then the FAP is expected to select one from the list as the PilotPN to be used for this channel. If the self-configuration capability is not to be used, then this parameter SHALL contain only a single item.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconPNOffset";
-    }
-    leaf tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "TX power for the beacon interval (in {{units}}). If self-configuration of the Beacon Tx Power is enabled, then this value is determined by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TxPower";
-    }
-    leaf beacon-sid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "SID for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconSID";
-    }
-    leaf beacon-nid {
-      type uint16 {
-        range "0..32767";
-      }
-      config false;
-      description
-        "NID for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconNID";
-    }
-    leaf beacon-pzid {
-      type uint64;
-      config false;
-      description
-        "PZID for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconPZID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.";
-  }
-
-  grouping cdma2000-beacon-hrpd-beacon-list-g {
-    description
-      "This object models individual HRPD beacon intervals where the beacon start is expressed as a number of HRPD control channel slots from the start of the beacon frame.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Alias";
-    }
-    leaf beacon-index {
-      type int64;
-      description
-        "Instance identifier for this beacon interval. Allowed range is 0..(HRPDBeaconListNumberOfEntries-1).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconIndex";
-    }
-    leaf c-coffset {
-      type uint16 {
-        range "0..2048";
-      }
-      config false;
-      description
-        "Offset of the current beacon interval from the start of the beacon frame, in Control Channel cycles. The HRPDBeaconList interval SHOULD not overlap in time with any beacon interval for the same channel defined in the BeaconList object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.CCoffset";
-    }
-    leaf offset {
-      type int64;
-      config false;
-      description
-        "Start of beacon transmission with respect to the Control Channel boundary.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Offset";
-    }
-    leaf duration {
-      type uint16 {
-        range "0..256";
-      }
-      config false;
-      description
-        "Duration of the beacon transmission within a Control Channel cycle, in slots. Beacon is transmitted starting offset from the CC boundary for duration. Transmission restarts offset from the next CC boundary, given that beacon interval spans more than 1 CC cycles.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Duration";
-    }
-    leaf num-c-ccycles {
-      type uint8 {
-        range "0..48";
-      }
-      config false;
-      description
-        "Number of Control Channel Cycles this beacon interval spans.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.NumCCcycles";
-    }
-    leaf beacon-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Band class for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconBandClass";
-    }
-    leaf beacon-channel-freq {
-      type uint16 {
-        range "0..2016";
-      }
-      config false;
-      description
-        "Channel number for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconChannelFreq";
-    }
-    leaf-list beacon-pn-offset {
-      type string {
-        length "0..256";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a pilot PN offset of the pilot beacon for this channel in units of 64 PN chips. If this parameter contains more than one item, then the FAP is expected to select one from the list as the PilotPN to be used for this channel. If the self-configuration capability is not to be used, then this parameter SHALL contain only a single item.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconPNOffset";
-    }
-    leaf tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "TX power for the beacon interval. If self-configuration of the HRPD Beacon Tx Power is enabled, then this value is determined by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.TxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.";
-  }
-
-  grouping rem-g {
-    description
-      "This object contains parameters relating to REM (Radio Environment Measurement).";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.";
-  }
-
-  grouping rem-umts-g {
-    description
-      "This object contains Radio Environment Measurement parameters for UMTS FAP.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.";
-  }
-
-  grouping rem-umts-wcdma-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the UMTS system.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling - Delayed";
-        }
-      }
-      default "immediate";
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      default "true";
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanOnBoot";
-    }
-    leaf scan-periodically {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enable Periodic Radio Environment Measurement on all enabled RAT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.PeriodicTime";
-    }
-    leaf-list remplmn-list {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each item is a PLMN ID to measure. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. If {{empty}}, then no specific PLMN ID is provided, meaning that the FAP is required to scan all available PLMN IDs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.REMPLMNList";
-    }
-    leaf-list rem-band-list {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "{{list}} Each item is a UMTS Band to measure. Each band is identified in by a roman numeral {{bibref|3GPP-TS.25.104}}. If {{empty}} then no specific UMTS band is provided, meaning that the FAP is required to scan all available bands. The order of the band indicator has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.REMBandList";
-    }
-    leaf-list uarfcndl-list {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each entry is a UARFCN in the DL direction to measure. If {{empty}}, then no specific UARFCN is provided, meaning that the FAP is required to scan all UARFCNs that it is aware of.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.UARFCNDLList";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last UMTS system radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.LastScanTime";
-    }
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.UMTS.WCDMA.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.CellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.";
-  }
-
-  grouping rem-umts-wcdma-cell-g {
-    leaf rem-umts-wcdma-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.";
-  }
-
-  grouping rem-umts-wcdma-cell-rf-g {
-    description
-      "Table indicating the RF aspect of the discovered cells.";
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The UTRA Absolute Radio Frequency Channel Number (UARFCN) in the DL direction of an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.UARFCNDL";
-    }
-    leaf cpichrscp {
-      type int64;
-      units "dBm";
-      description
-        "Received signal level in {{units}} of the CPICH channel. (Ref. 3GPP TS 25.133)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.CPICHRSCP";
-    }
-    leaf cpich-ec-no {
-      type int64;
-      units "dB";
-      description
-        "Measured EcNo. (energy per chip to interference power density) in {{units}} received in the downlink pilot channel. Actual values of the range are -24.0 {{units}} to 0.0 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.133|Section 9.1.2.3}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.CPICHEcNo";
-    }
-    leaf rssi {
-      type int64;
-      units "dBm";
-      description
-        "This measurement is for Inter-frequency handover evaluation, measured in total {{units}} in the band. {{bibref|3GPP-TS.25.133|Section9.1.3}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.RSSI";
-    }
-    leaf primary-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.PrimaryScramblingCode";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.";
-  }
-
-  grouping rem-umts-wcdma-cell-bcch-g {
-    description
-      "Table containing the system information broadcast in the BCCH logical channel.";
-    leaf plmn-type {
-      type enumeration {
-        enum "gsm-map" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType - GSM-MAP";
-        }
-        enum "ansi-41" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType - ANSI-41";
-        }
-      }
-      description
-        "Type of Public Land Mobile Network (PLMN).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC) as defined in SIB 1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the LAI (Location Area ID) {{bibref|3GPP-TS.23.003}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC) as defined in SIB 1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the RAI (Routing Area ID) {{bibref|3GPP-TS.23.003}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.RAC";
-    }
-    leaf cell-id {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Cell Identity as defined in SIB3 {{bibref|3GPP-TS.25.331|Section10.3.2.2}}. {{bibref|3GPP-TS.24.008}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CellID";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      description
-        "Primary Common Pilot Channel (CPICH) power level on SIB 5/6 {{bibref|3GPP-TS.25.331|Section10.3.6.55}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PCPICHTxPower";
-    }
-    leaf csg-indicator {
-      type boolean;
-      description
-        "The CSG-indicator Information Element (IE) in the Master Information Block reflects the access mode of the CSG cell. It is hence dependent on the value of {{param|.AccessMgmt.UMTS.AccessMode}}. If {{true}} the CSG-indicator IE is present, reflecting closed access to the CSG cell. If {{false}} the CSG-indicator IE is absent, reflecting the access mode as \"not a closed-access\". {{bibref|3GPP-TS.25.331|Section 10.2.48.8.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGIndicator";
-    }
-    leaf csgid {
-      type uint32 {
-        range "0..134217727";
-      }
-      description
-        "Defines the Closed Subscriber Group of the Access Control List. FAP broadcasts this CSG ID in SIB3 {{bibref|3GPP-TS.25.331|Section10.3.2.8}} depending on the AccessMode.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGID";
-    }
-    leaf-list uarfcndl-list {
-      type uint16 {
-        range "0..16383";
-      }
-      max-elements "128";
-      description
-        "{{list}} Each item is a UTRA Absolute Radio Frequency Channel Number (UARFCN} in the DL direction dedicated to the CSG cells. {{param}} is broadcast in SIB 11bis {{bibref|3GPP-TS.25.331|Section 10.2.48.8.14a}}. The corresponding UTRA Absolute Radio Frequency Channel Number (UARFCN} in the UL direction is derived based on the fixed offset applicable for the frequency band.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.UARFCNDLList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.";
-  }
-
-  grouping rem-umts-wcdma-cell-bcch-csgpsc-split-info-g {
-    description
-      "This object contains parameters relating to the Primary Scambling Code (PSC) split information for the CSG. Defined in SIB3/11bis {{bibref|3GPP-TS.25.331|Section 10.3.2.8 and 10.3.2.9}}.";
-    leaf start-psc-range1-coefficient {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "The value of this Information Element (IE) multiplied by 8 specifies the start PSC value of the first PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.StartPSCRange1Coefficient";
-    }
-    leaf number-of-ps-cs {
-      type enumeration {
-        enum "5" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 5";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 10";
-        }
-        enum "15" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 15";
-        }
-        enum "20" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 20";
-        }
-        enum "30" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 30";
-        }
-        enum "40" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 40";
-        }
-        enum "50" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 50";
-        }
-        enum "64" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 64";
-        }
-        enum "80" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 80";
-        }
-        enum "120" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 120";
-        }
-        enum "160" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 160";
-        }
-        enum "256" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 256";
-        }
-        enum "alltherest" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - alltherest";
-        }
-        enum "spare3" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare3";
-        }
-        enum "spare2" {
-          value 15;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare2";
-        }
-        enum "spare1" {
-          value 16;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare1";
-        }
-      }
-      description
-        "This Information Element (IE) specifies the number of PSCs reserved for CSG cells in each PSC range.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs";
-    }
-    leaf psc-range2-offset {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "If this Information Element (IE) is included, the UE shall calculate the second PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}. If this Information Element (IE) is not included, the UE shall consider the second PSC range to be not present.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.PSCRange2Offset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.";
-  }
-
-  grouping rem-umts-wcdma-cell-bcch-reference-position-g {
-    description
-      "This object defines parameters related to the surface point of the ellipsoid. {{bibref|3GPP-TS.23.032|Section 5}} It is characterized by the co-ordinates of an ellipsoid point with altitude, distances, and an angle of orientation. This information is used to refer to a point on the Earth's surface, or close to the Earth's surface, with the same longitude and latitude.";
-    leaf latitude {
-      type int64;
-      description
-        "This parameter specifies the latitude of the device's position in degrees, multiplied by 1 million. The positive value signifies the direction, north of the equator. The negative value signifies the direction, south of the equator. Range is from: 90.00.00' South (-90,000,000) to 90.00.00' North (90,000,000). Example: A latitude of 13.19.43' N would be represented as 13,323,833, derived as (13*1,000,000)+((19.43*1,000,000)/60). Latitude of 50.00.00' S would be represented as value -50,000,000. If 0 then SIB15 is not detected in the specific cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Latitude";
-    }
-    leaf longitude {
-      type int64;
-      description
-        "This parameter specifies the longitude of the device's position in degrees, multiplied by 1 million. The positive value signifies the direction, east of the prime meridian. The negative value signifies the direction, west of the prime meridian. Range is from: 180.00.00' West (-180,000,000) to 180.00.00' East (180,000,000). Example: A longitude of 13.19.43' E would be represented as 13,323,833, derived as (13*1,000,000)+((19.43*1,000,000)/60). A longitude of 50.00'0'' W would be represented as value -50,000,000. If 0 then SIB15 is not detected in the specific cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Longitude";
-    }
-    leaf uncertainty-semi-major {
-      type uint8 {
-        range "0..127";
-      }
-      description
-        "The uncertainty r is derived from the \"uncertainty code\" k by r = 10 x ( 1.1 <power> (k-1) ) {{bibref|3GPP-TS.23.032|Section6.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.UncertaintySemiMajor";
-    }
-    leaf uncertainty-semi-minor {
-      type uint8 {
-        range "0..127";
-      }
-      description
-        "The uncertainty r is derived from the \"uncertainty code\" k by r = 10 x ( 1.1 <power> (k-1) ) {{bibref|3GPP-TS.23.032|Section6.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.UncertaintySemiMinor";
-    }
-    leaf orientation-of-major-axis {
-      type uint8 {
-        range "0..89";
-      }
-      description
-        "The Information Element (IE) value 'N' is derived by this formula: 2N <= a < 2(N+1) Where 'a' is the orientation in degrees (0..179).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.OrientationOfMajorAxis";
-    }
-    leaf confidence {
-      type uint8 {
-        range "0..100";
-      }
-      units "percent";
-      description
-        "The degree of confidence in the ellipsoid's points expressed in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Confidence";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.";
-  }
-
-  grouping rem-umts-gsm-g {
-    description
-      "This object contains parameters relating to GSM REM capabilities.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling - Delayed";
-        }
-      }
-      default "immediate";
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      default "true";
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanOnBoot";
-    }
-    leaf scan-periodically {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enable Periodic Radio Environment Measurement on all enabled RAT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.PeriodicTime";
-    }
-    leaf-list remplmn-list {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "{{list}} Each item is a PLMNID. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5. If {{empty}} no specific PLMN ID is provided, meaning that the FAP is required to report all available PLMN IDs. If a list is provided, the FAP is expected to limit the REM measurement to the PLMN(s) specified in this list only and ignore others even if they are detected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMPLMNList";
-    }
-    leaf-list rem-band-list {
-      type enumeration {
-        enum "t-gsm380" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM380";
-        }
-        enum "t-gsm410" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM410";
-        }
-        enum "gsm450" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM450";
-        }
-        enum "gsm480" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM480";
-        }
-        enum "gsm710" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM710";
-        }
-        enum "gsm750" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM750";
-        }
-        enum "t-gsm810" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM810";
-        }
-        enum "gsm850" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM850";
-        }
-        enum "p-gsm900" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - P-GSM900";
-        }
-        enum "e-gsm900" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - E-GSM900";
-        }
-        enum "r-gsm900" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - R-GSM900";
-        }
-        enum "t-gsm900" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM900";
-        }
-        enum "dcs1800" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - DCS1800";
-        }
-        enum "pcs1900" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - PCS1900";
-        }
-      }
-      config false;
-      description
-        "{{list}} Each item is a GSM Band to measure. {{enum}} If {{empty}} then no specific GSM band is provided, meaning that the FAP MUST scan all bands. If a list is provided, the FAP is expected to limit the REM measurement to the band(s) specified in this list only and ignore others even if they are detected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList";
-    }
-    leaf-list arfcn-list {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each item is a GSM ARFCN to measure. If {{empty}} then no specific ARFCN is provided, meaning that the FAP is required to scan all ARFCNs. If a list is provided, the FAP is expected to limit the REM measurement to the ARFCN(s) specified in this list only and ignore others even if they are detected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ARFCNList";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last GSM radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.LastScanTime";
-    }
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries allowed in the {{object|.REM.UMTS.GSM.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.CellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.";
-  }
-
-  grouping rem-umts-gsm-cell-g {
-    description
-      "Table indicating the components of the discovered cells.";
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm 850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - GSM 850";
-        }
-        enum "gsm 900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - GSM 900";
-        }
-        enum "dcs 1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - DCS 1800";
-        }
-        enum "pcs 1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - PCS 1900";
-        }
-      }
-      description
-        "Indicates how to interpret the BCCH ARFCN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator";
-    }
-    leaf arfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "Absolute Radio Frequency Channel Number (ARFCN) {{bibref|3GPP-TS.05.05}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.ARFCN";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "Base Station Identity Code {{bibref|3GPP-TS.03.03}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BSIC";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65535";
-      }
-      description
-        "Location Area Code (LAC) as defined in SIB1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the LAI (Location Area ID) {{bibref|3GPP-TS.23.003}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC) consists of up to 3 numerical characters. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.RAC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..63535";
-      }
-      description
-        "Cell Identity. {{bibref|3GPP-TS.25.331|Section 10.3.2.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.CI";
-    }
-    leaf rssi {
-      type int64;
-      units "dBm";
-      description
-        "Received signal level in {{units}} of the BCCH carrier.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.RSSI";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.";
-  }
-
-  grouping rem-lte-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the LTE system.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling - Delayed";
-        }
-      }
-      default "immediate";
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      default "true";
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanOnBoot";
-    }
-    leaf scan-periodically {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enable Periodic Radio Environment Measurement on LTE EUTRAN bands.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.PeriodicTime";
-    }
-    leaf-list remplmn-list {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each item is a PLMN ID to measure. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. If {{empty}}, then no specific PLMN ID is provided, meaning that the FAP is required to scan all available PLMN IDs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.REMPLMNList";
-    }
-    leaf-list rem-band-list {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "{{list}} Each item is a LTE Band to measure. Corresponds to frequency band indicator defined in {{bibref|3GPP-TS.36.101|Table 5.5-1}}. If {{empty}} then no specific LTE band is provided, meaning that the FAP is required to scan all available bands. The order of the band indicator has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.REMBandList";
-    }
-    leaf-list eutra-carrier-arfcndl-list {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each entry is a EUTRA ARFCN in the DL direction to measure. Corrsponds to the parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If {{empty}}, then no specific EUTRA ARFCN is provided, meaning that the FAP is required to scan all ARFCNs that it is aware of.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.EUTRACarrierARFCNDLList";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last LTE system radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.LastScanTime";
-    }
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.LTE.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CellNumberOfEntries";
-    }
-    leaf max-carrier-meas-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.LTE.CarrierMeas.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.MaxCarrierMeasEntries";
-    }
-    leaf carrier-meas-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeasNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.";
-  }
-
-  grouping rem-lte-cell-g {
-    leaf rem-lte-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.";
-  }
-
-  grouping rem-lte-cell-rf-g {
-    description
-      "Table indicating the RF aspect of the discovered cells.";
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.EUTRACarrierARFCN";
-    }
-    leaf phy-cell-id {
-      type uint16 {
-        range "0..503";
-      }
-      description
-        "Physical cell ID of the detected EUTRAN cell, as specified in {{bibref|3GPP-TS.36.101|Section 5.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.PhyCellID";
-    }
-    leaf rsrp {
-      type int64;
-      units "dBm";
-      description
-        "Received RSRP level of the detected EUTRA cell, specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.1}}. The reporting range is specified in {{bibref|3GPP-TS.36.133|Section 9.1.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSRP";
-    }
-    leaf rsrq {
-      type int64;
-      units "dB";
-      description
-        "Received RSRQ level of the detected EUTRA cell, specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.3}}. Actual measured values range between -24.0 {{units}} and 0.0 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 10 yields the actual measured value. Only values in multiple of 5 are valid.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSRQ";
-    }
-    leaf rssi {
-      type int64;
-      units "dBm";
-      description
-        "E-UTRA Carrier Received Signal Strength Indicator (RSSI), specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.3}}. It comprises the linear average of the total received power (in [W]) observed only in OFDM symbols containing reference symbols for antenna port 0, in the measurement bandwidth, over N number of resource blocks by the UE from all sources, including co-channel serving and non-serving cells, adjacent channel interference, thermal noise etc.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSSI";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.";
-  }
-
-  grouping rem-lte-cell-bcch-g {
-    description
-      "Table containing the system information broadcast in the BCCH logical channel.";
-    leaf dl-bandwidth {
-      type uint8 {
-        range "0 | 5 | 6 | 15 | 25 | 50 | 75 | 100";
-      }
-      units "resource blocks";
-      description
-        "Downlink transmission bandwidth, specified in number of {{units}}. Corresponds to parameter dl_Bandwidth in Master Information Block in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.DLBandwidth";
-    }
-    leaf ul-bandwidth {
-      type uint8 {
-        range "0 | 5 | 6 | 15 | 25 | 50 | 75 | 100";
-      }
-      units "resource blocks";
-      description
-        "Uplink transmission bandwidth, specified in number of {{units}}. Corresponds to parameter ul_Bandwidth in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.ULBandwidth";
-    }
-    leaf rs-tx-power {
-      type int64;
-      units "dBm";
-      description
-        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.RSTxPower";
-    }
-    leaf tac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Tracking Area Code that is common for all the PLMNs listed. Corresponds to trackingAreaCode as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.TAC";
-    }
-    leaf cell-id {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Defines the cell identify, defines as a 28-bit binary number. Corresponds to cellIdentity as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2 and Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CellID";
-    }
-    leaf cell-barred {
-      type boolean;
-      description
-        "Indicates whether the cell is barred or not. If {{true}}, the cell is barred. If {{false}}, the cell is not barred. Corresponds to cellBarred as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and {{bibref|3GPP-TS.36.304}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CellBarred";
-    }
-    leaf csg-indication {
-      type boolean;
-      description
-        "Indicates whether CSG is used in this cell or not. If {{true}}, the UE is only allowed to access the cell if the CSG identity matches an entry in the allowed CSG list that the UE has stored. Corresponds to csg-Indication as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CSGIndication";
-    }
-    leaf csg-identity {
-      type uint32 {
-        range "0..134217727";
-      }
-      description
-        "Defines the CSG ID value if {{param|CSGIndication}} parameter indicates that CSG is used in this cell. Corresponds to csg-Identity as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CSGIdentity";
-    }
-    leaf max-plmn-list-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.MaxPLMNListEntries";
-    }
-    leaf plmn-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.";
-  }
-
-  grouping rem-lte-cell-bcch-plmn-list-g {
-    description
-      "Table containing the PLMN list in the system information broadcast in the BCCH logical channel. Correspnds to plmn-IdentityList as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Each instance in this object is a PLMN-IdentityInfo which consists of plmn-Identity and cellReservedForOperatorUse IEs.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.PLMNID";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      description
-        "Indicates whether the cell is reserved for operator use or not. If {{true}}, it is reserved. If {{false}}, it is not reserved. Corresponds to \"reserved\" \"notReserved\" respectively as defined in PLMN-IdentityInfo in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.CellReservedForOperatorUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.";
-  }
-
-  grouping rem-lte-carrier-meas-g {
-    description
-      "Table indicating the measurement of the discovered carrier. The information stored in this object is strictly in the physical layer level and may not necessarily be associated with any particular E-UTRAN cell (e.g. interference level generated by sources other than E-UTRAN cell).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the CarrierMeas entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.Alias";
-    }
-    leaf carrier-arfcndl {
-      type int64;
-      units "MHz";
-      description
-        "Lower bound of the EUTRA ARFCN as specified in {{bibref|3GPP-TS.36.101|Section 5.7.3}} in the DL direction that is requested to measure. Unit in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierARFCNDL";
-    }
-    leaf carrier-ch-width {
-      type int64;
-      units "ARFCN";
-      description
-        "Number of {{units}} in DL direction, as specified in {{bibref|3GPP-TS.36.101|Section 5.6}}, that is requested to measure. The range bounded by {{param|CarrierARFCNDL}} as the lower bound and the value of ({{param|CarrierARFCNDL}} + {{param}}) as the upper bound expresses the total carrier frequency range to be measured.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierChWidth";
-    }
-    leaf carrier-rssi {
-      type int64;
-      units "ARFCN";
-      description
-        "Received Signal Strength Indicator (RSSI) as specified in {{bibref|3GPP-TS.36.214|Sec 5.1.3}} over the carrier frequency range from {{param|CarrierARFCNDL}} as the lower bound and the value of ({{param|CarrierARFCNDL}} + {{param|CarrierChWidth}}) as the upper bound.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierRSSI";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.";
-  }
-
-  grouping rem-cdma2000-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the CDMA2000 system.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling - Delayed";
-        }
-      }
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanOnBoot";
-    }
-    leaf scan-now {
-      type boolean;
-      config false;
-      description
-        "Directs FAP to perform radio environment measurements immediately (but respecting the setting of {{param|InServiceHandling}}) and report back. After performing the action, the FAP resets the ScanNow value to \"0\" ({{false}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanNow";
-    }
-    leaf return-timer {
-      type uint64 {
-        range "1..max";
-      }
-      units "seconds";
-      config false;
-      description
-        "Time in {{units}} within which the action should be performed by the FAP. Only applies if {{param|InServiceHandling}} is set to Delayed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReturnTimer";
-    }
-    leaf scan-periodically {
-      type boolean;
-      config false;
-      description
-        "Enables periodic reporting of radio environment measurements.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64 {
-        range "1..max";
-      }
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.PeriodicTime";
-    }
-    leaf report-overheads {
-      type enumeration {
-        enum "all" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - All";
-        }
-        enum "one-x" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - OneX";
-        }
-        enum "hrpd" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - HRPD";
-        }
-        enum "none" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - None";
-        }
-      }
-      config false;
-      description
-        "If {{param}} is set to {{enum|All}}, the FAP shall report the overheads from the sectors as well.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either \"Error\" or \"Error_TIMEOUT\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last system radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.LastScanTime";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.";
-  }
-
-  grouping rem-cdma2000-one-x-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the 1x system.";
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.CDMA2000.OneX.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.CellNumberOfEntries";
-    }
-    leaf max-channel-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.CDMA2000.OneX.Channel.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.MaxChannelEntries";
-    }
-    leaf channel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.ChannelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.";
-  }
-
-  grouping rem-cdma2000-one-x-channel-g {
-    description
-      "REM specific configuration and reporting.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.Alias";
-    }
-    leaf sniffing-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Config parameter to set band class. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.SniffingBandClass";
-    }
-    leaf sniffing-channel-number {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the forward direction.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.SniffingChannelNumber";
-    }
-    leaf-list pn-list {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment> If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.PNList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.";
-  }
-
-  grouping rem-cdma2000-one-x-cell-g {
-    leaf rem-cdma2000-one-x-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.";
-  }
-
-  grouping rem-cdma2000-one-x-cell-rf-g {
-    description
-      "RF REM results for each detected cell.";
-    leaf band {
-      type int64;
-      description
-        "CDMA band for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.Band";
-    }
-    leaf rfcnfl {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the FL direction for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.RFCNFL";
-    }
-    leaf io {
-      type int64;
-      units "dBm";
-      description
-        "The total received power spectral density in {{units}}, including signal and interference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.Io";
-    }
-    leaf p-ilot-pn {
-      type uint16 {
-        range "0..511";
-      }
-      units "64 PN chips";
-      description
-        "Pilot PN Offset (in units of {{units}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PIlotPN";
-    }
-    leaf p-ilot-pn-phase {
-      type uint64;
-      units "chips";
-      description
-        "Pilot PN phase in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PIlotPNPhase";
-    }
-    leaf pilot-strength-ecp {
-      type int64;
-      units "dBm";
-      description
-        "The strength estimate of the received pilot energy per chip, Ecp, in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PilotStrengthEcp";
-    }
-    leaf pilot-strength-ecp-io {
-      type int64;
-      units "dB";
-      description
-        "The strength estimate of the received pilot energy per chip, Ecp, to total received spectral density, Io (signal and noise) in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PilotStrengthEcpIo";
-    }
-    leaf overheads-available {
-      type boolean;
-      description
-        "If set to {{true}}, the overhead messages for this particular cell is included in {{object|.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.OverheadsAvailable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.";
-  }
-
-  grouping rem-cdma2000-one-x-cell-control-channel-g {
-    description
-      "Table containing information broadcast on control channel.";
-    leaf sid {
-      type int64;
-      description
-        "System identification. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.SID";
-    }
-    leaf nid {
-      type int64;
-      description
-        "Network identification. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.NID";
-    }
-    leaf regzone {
-      type int64;
-      description
-        "Registration Zone. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.REGZONE";
-    }
-    leaf baselat {
-      type int64;
-      description
-        "Basestation latitude. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASELAT";
-    }
-    leaf baselong {
-      type int64;
-      description
-        "Basestation longtitude. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASELONG";
-    }
-    leaf mcc {
-      type int64;
-      description
-        "Mobile Country Code. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.MCC";
-    }
-    leaf mncimsi1112 {
-      type int64;
-      description
-        "the 11th and 12th digits of IMSI, i.e., Mobile Network Code. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.MNCIMSI1112";
-    }
-    leaf baseid {
-      type int64;
-      description
-        "Basestation identification. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASEID";
-    }
-    leaf apid {
-      type string {
-        length "0..32";
-      }
-      description
-        "Access Point Identification. Set to empty string if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APID";
-    }
-    leaf apidmask {
-      type int64;
-      description
-        "Access Point Identification Mask. Set to zero if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APIDMASK";
-    }
-    leaf apidtext {
-      type string {
-        length "0..256";
-      }
-      description
-        "Access Point Identification Text. Set to empty string if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APIDTEXT";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.";
-  }
-
-  grouping rem-cdma2000-hrpd-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the HRPD system.";
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.CDMA2000.HRPD.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.CellNumberOfEntries";
-    }
-    leaf max-channel-entries {
-      type uint64;
-      description
-        "The maximum number of entries in {{object|.REM.CDMA2000.HRPD.Channel.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.MaxChannelEntries";
-    }
-    leaf channel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.ChannelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.";
-  }
-
-  grouping rem-cdma2000-hrpd-channel-g {
-    description
-      "REM specific configuration and reporting.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.Alias";
-    }
-    leaf sniffing-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Config parameter to set band class. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.SniffingBandClass";
-    }
-    leaf sniffing-channel-number {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the FL direction.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.SniffingChannelNumber";
-    }
-    leaf-list pn-list {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment>. If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.PNList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.";
-  }
-
-  grouping rem-cdma2000-hrpd-cell-g {
-    leaf rem-cdma2000-hrpd-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.";
-  }
-
-  grouping rem-cdma2000-hrpd-cell-rf-g {
-    description
-      "RF REM results for each detected cell.";
-    leaf band {
-      type int64;
-      description
-        "CDMA band for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.Band";
-    }
-    leaf rfcnfl {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the FL direction for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.RFCNFL";
-    }
-    leaf io {
-      type int64;
-      units "dBm";
-      description
-        "The total received power spectral density in {{units}}, including signal and interference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.Io";
-    }
-    leaf p-ilot-pn {
-      type uint16 {
-        range "0..511";
-      }
-      units "64 PN chips";
-      description
-        "Pilot PN Offset (in units of {{units}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PIlotPN";
-    }
-    leaf p-ilot-pn-phase {
-      type uint64;
-      units "chips";
-      description
-        "Pilot PN phase in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PIlotPNPhase";
-    }
-    leaf pilot-strength-ecp {
-      type int64;
-      units "dBm";
-      description
-        "The strength estimate of the received pilot energy per chip in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PilotStrengthEcp";
-    }
-    leaf pilot-strength-ecp-io {
-      type int64;
-      units "dB";
-      description
-        "The strength estimate of the received pilot energy per chip, Ecp, to total received spectral density, Io (signal and noise) in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PilotStrengthEcpIo";
-    }
-    leaf overheads-available {
-      type boolean;
-      description
-        "If set to {{true}}, the overhead messages for this particular cell is included in {{object|.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.OverheadsAvailable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.";
-  }
-
-  grouping rem-cdma2000-hrpd-cell-control-channel-g {
-    description
-      "Table containing information braodcast on control channel.";
-    leaf color-code {
-      type int64;
-      description
-        "The color code of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.ColorCode";
-    }
-    leaf sector-id {
-      type binary {
-        length "16";
-      }
-      description
-        "The sector ID of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.SectorID";
-    }
-    leaf subnet-mask {
-      type int64;
-      units "bits";
-      description
-        "The length of the subnet mask in {{units}} for the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.SubnetMask";
-    }
-    leaf country-code {
-      type int64;
-      description
-        "The country code of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.CountryCode";
-    }
-    leaf latitude {
-      type int64;
-      units "0.25 arc seconds";
-      description
-        "The reported lattitude of the cell in units of {{units}}, expressed as a two's complement signed number with positive numbers signifying North latitudes in the range -1296000 to 1296000 inclusive corresponding to a range of -90 to +90) Refer to {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.Latitude";
-    }
-    leaf longitude {
-      type int64;
-      units "0.25 arc seconds";
-      description
-        "The reported longitude of the cell in units of {{units}}, expressed as a two's complement signed number with positive numbers signifying East longitude in the range -2592000 to 2592000 inclusive (corresponding to a range of -180 to +180). Refer to {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.Longitude";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.";
-  }
-
-  grouping rem-cdma2000-macro-timing-g {
-    description
-      "Parameters for controlling CDMA2000 system timing derived from macro system sniffing.";
-    leaf admin-state {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "This is the Admin State of Macro Timing. Lock means MacroTiming feature is Enabled. Unlock means MacroTiming feature is disabled. 0 - Lock (Enabled), 1 - Unlock (Disabled).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.AdminState";
-    }
-    leaf tracking-channel-number {
-      type uint64;
-      description
-        "Channel number of Macro Base Station currently used for MacroTiming.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingChannelNumber";
-    }
-    leaf tracking-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "BandClass of Macro Base Station currently used for MacroTiming.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingBandClass";
-    }
-    leaf-list tracking-pn-offset {
-      type string {
-        length "0..256";
-      }
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips of a Macro Base Station currently used for MacroTiming.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingPNOffset";
-    }
-    leaf timing-source {
-      type uint8 {
-        range "0..1";
-      }
-      description
-        "This parameter indicates the timing source for the FAP: 0 - GPS 1 - Macro Timing The other read-only parameters in this object only have valid values when timingsource is set to 1.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TimingSource";
-    }
-    leaf channel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.ChannelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.";
-  }
-
-  grouping rem-cdma2000-macro-timing-channel-g {
-    description
-      "Object used to configure list of channels to be used for Macto Timing.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Alias";
-    }
-    leaf air-interface-type {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Air interface type of the configured Band class and Channel. 0 - 1x, 1 - HRPD.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.AirInterfaceType";
-    }
-    leaf band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Bandclass of the Macro timing channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.BandClass";
-    }
-    leaf channel-number {
-      type uint64;
-      description
-        "Macro timing acquisition channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.ChannelNumber";
-    }
-    leaf priority {
-      type uint64;
-      config false;
-      description
-        "Priority of the channle to use for acquisition. FAP should prioritize lower values over higher.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Priority";
-    }
-    leaf-list pn-list {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment> If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.PNList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.";
-  }
-
-  grouping transport-g {
-    description
-      "This object contains parameters relating to the transport.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.";
-  }
-
-  grouping transport-sip-g {
-    description
-      "This object contains parameters relating to SIP as a transport protocol. SIP is defined in {{bibref|RFC3261}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the whole SIP object and allows the setup or release of SIP associations and their related streams.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.Enable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.";
-  }
-
-  grouping transport-sip-fcs-g {
-    description
-      "This object models SIP Femtocell Convergence Server (FCS) parameters.";
-    leaf fcsuri {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The request URI for MESSAGE method sent to Femtocell Convergence Server (FCS). The string MUST contain a URI as defined in {{bibref|RFC3986}}. The device MUST support SIP URI and MAY support other URI schemes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.FCSURI";
-    }
-    leaf out-going-proxy-uri {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The request URI for Outgoing Proxy. The string MUST contain a URI as defined in {{bibref|RFC3986}}. The device MUST support SIP URI and MAY support other URI schemes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.OutGoingProxyURI";
-    }
-    leaf p-access-net-info-header {
-      type string {
-        length "0..256";
-      }
-      description
-        "This string will be populated as the value for P-Access-Network-Info header. This header is generated by the device. See {{bibref|3GPP2-X.S0059}} and {{bibref|RFC3455}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.PAccessNetInfoHeader";
-    }
-    leaf realm {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "The FQDN or IP Address representing the Home Domain of the device. The request URI for REGISTER will be formed by prefixing \"sip:\" to this value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.Realm";
-    }
-    leaf impu {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The \"IP Multimedia Public User\" (IMPU) Identity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.IMPU";
-    }
-    leaf impi {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The \"IP Multimedia Private Identity\" (IMPI). This value is ignored when {{param|SIPAuthMethod}} is set to {{enum|TNA|SIPAuthMethod}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.IMPI";
-    }
-    leaf sip-password {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Password to Authenticate the IMS core. This value is ignored when {{param|SIPAuthMethod}} is set to {{enum|TNA|SIPAuthMethod}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPPassword";
-    }
-    leaf-list sip-auth-capability {
-      type enumeration {
-        enum "tna" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability - TNA";
-        }
-        enum "sip-digest" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability - SIPDigest";
-        }
-      }
-      description
-        "Represents the SIP authentication mechanisms supported by this device.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability";
-    }
-    leaf sip-auth-method {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "Represents the authentication method used by this device for SIP registration. If value is {{enum|SIPDigest}}, the {{param|SIPPassword}} MUST not be {{empty}}. If value is {{enum|TNA}}, {{param|SIPPassword}} and {{param|IMPI}} are ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthMethod";
-    }
-    leaf sip-local-port {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Local port number for initiating SIP traffic.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPLocalPort";
-    }
-    leaf rtp-port-low-limit {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "The low limit of port number for originating and receiving RTP/RTCP traffic.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.RTPPortLowLimit";
-    }
-    leaf rtp-port-high-limit {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "The high limit of port number for originating and receiving RTP/RTCP traffic.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.RTPPortHighLimit";
-    }
-    leaf sip-reg-expiry {
-      type uint64;
-      config false;
-      description
-        "SIP registration expiry value, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPRegExpiry";
-    }
-    leaf sip-session-expiry {
-      type uint64 {
-        range "90..max";
-      }
-      units "seconds";
-      default "1800";
-      config false;
-      description
-        "SIP session timer expiry value, in {{units}}, as defined in {{bibref|RFC4028}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPSessionExpiry";
-    }
-    leaf-list emergency-numbers-list {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Indicates the dialed digit pattern matching strings used to determine if the call is an emergency call that MAY bypass access control and receive priority treatment.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.EmergencyNumbersList";
-    }
-    leaf timer-t1 {
-      type uint64 {
-        range "1..max";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Value of SIP timer T1, in {{units}}, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT1";
-    }
-    leaf timer-t2 {
-      type uint64 {
-        range "1..max";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Value of SIP timer T2, in {{units}}, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT2";
-    }
-    leaf timer-t4 {
-      type uint64 {
-        range "1..max";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Value of SIP timer T4, in {{units}}, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT4";
-    }
-    leaf t3210 {
-      type uint8 {
-        range "1..20";
-      }
-      units "seconds";
-      config false;
-      description
-        "This value specifies how much time to wait, in {{units}}, before time out on location update accept/reject. See {{bibref|3GPP2-A.S0014}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.T3210";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.";
-  }
-
-  grouping transport-sctp-g {
-    description
-      "This object contains parameters relating to SCTP as a transport protocol. SCTP is defined in {{bibref|RFC4960}} and {{bibref|RFC3873}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the whole SCTP object and allows the setup or release of SCTP associations and their related streams.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Enable";
-    }
-    leaf hb-interval {
-      type uint64 {
-        range "1..max";
-      }
-      units "seconds";
-      default "30";
-      config false;
-      description
-        "Heartbeat interval in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.HBInterval";
-    }
-    leaf max-association-retransmits {
-      type uint64;
-      default "10";
-      config false;
-      description
-        "Maximum number of consecutive retransmissions to a peer before an endpoint considers that the peer is unreachable and closes the association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxAssociationRetransmits";
-    }
-    leaf max-init-retransmits {
-      type uint64;
-      default "8";
-      config false;
-      description
-        "Number of retransmission per connection-attempt.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxInitRetransmits";
-    }
-    leaf max-path-retransmits {
-      type uint64;
-      default "5";
-      config false;
-      description
-        "Maximum retransmission per destination address.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxPathRetransmits";
-    }
-    leaf rto-initial {
-      type uint64;
-      units "milliseconds";
-      default "3000";
-      config false;
-      description
-        "Initial value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOInitial";
-    }
-    leaf rto-max {
-      type uint64;
-      units "milliseconds";
-      default "6000";
-      config false;
-      description
-        "Maximum value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOMax";
-    }
-    leaf rto-min {
-      type uint64;
-      units "milliseconds";
-      default "1000";
-      config false;
-      description
-        "Minimum value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission. The value of this parameter MUST be lower than or equal to {{param|RTOMax}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOMin";
-    }
-    leaf val-cookie-life {
-      type uint64;
-      units "milliseconds";
-      default "60000";
-      config false;
-      description
-        "Valid cookie life in the 4-way start-up handshake procedure in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ValCookieLife";
-    }
-    leaf out-of-blues {
-      type uint64;
-      description
-        "The number of correctly formed SCTP packets, including the proper checksum, but for which the receiver was unable to identify an appropriate association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutOfBlues";
-    }
-    leaf checksum-errors {
-      type uint64;
-      description
-        "The number of SCTP packets received with an invalid checksum.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ChecksumErrors";
-    }
-    leaf out-ctrl-chunks {
-      type uint64;
-      description
-        "The number of SCTP control chunks sent (retransmissions are not included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutCtrlChunks";
-    }
-    leaf out-order-chunks {
-      type uint64;
-      description
-        "The number of SCTP ordered data chunks sent (retransmissions are not included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutOrderChunks";
-    }
-    leaf out-unorder-chunks {
-      type uint64;
-      description
-        "The number of SCTP unordered chunks (data chunks in which the U bit is set to 1) sent (retransmissions are not included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutUnorderChunks";
-    }
-    leaf in-ctrl-chunks {
-      type uint64;
-      description
-        "The number of SCTP control chunks received (no duplicate chunks included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InCtrlChunks";
-    }
-    leaf in-order-chunks {
-      type uint64;
-      description
-        "The number of SCTP ordered data chunks received (no duplicate chunks included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InOrderChunks";
-    }
-    leaf in-unorder-chunks {
-      type uint64;
-      description
-        "The number of SCTP unordered chunks (data chunks in which the U bit is set to 1) received (no duplicate chunks included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InUnorderChunks";
-    }
-    leaf frag-usr-msgs {
-      type uint64;
-      description
-        "The number of user messages that have been sent fragmented.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.FragUsrMsgs";
-    }
-    leaf reasm-usr-msgs {
-      type uint64;
-      description
-        "The number of user messages that have been received fragmented and submitted to the reassembly process.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ReasmUsrMsgs";
-    }
-    leaf out-sctp-packs {
-      type uint64;
-      description
-        "The number of SCTP packets sent. Retransmitted DATA chunks are included.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutSCTPPacks";
-    }
-    leaf in-sctp-packs {
-      type uint64;
-      description
-        "The number of SCTP packets received. Duplicates are included.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InSCTPPacks";
-    }
-    leaf discontinuity {
-      type yang:date-and-time;
-      description
-        "The time of the last discontinuity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Discontinuity";
-    }
-    leaf assoc-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.AssocNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.";
-  }
-
-  grouping transport-sctp-assoc-g {
-    description
-      "SCTP Association Table";
-    leaf status {
-      type enumeration {
-        enum "disabled" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Disabled";
-        }
-        enum "active" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Active";
-        }
-        enum "progressing" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Progressing";
-        }
-        enum "shutting-down" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - ShuttingDown";
-        }
-        enum "error" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Error";
-        }
-      }
-      description
-        "The status of this SCTP association entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status";
-    }
-    leaf primary-peer-address {
-      type inet:ip-address;
-      description
-        "The primary IP address of the peer SCTP association entity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.PrimaryPeerAddress";
-    }
-    leaf local-port {
-      type uint16 {
-        range "0..63999";
-      }
-      description
-        "The local SCTP port number used for this SCTP association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.LocalPort";
-    }
-    leaf in-streams {
-      type uint64;
-      description
-        "The number of Inbound Streams according to the negotiation at association start-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.InStreams";
-    }
-    leaf out-streams {
-      type uint64;
-      description
-        "The number of Outbound Streams according to the negotiation at association start-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.OutStreams";
-    }
-    leaf start-time {
-      type yang:date-and-time;
-      description
-        "The start Time for the present SCTP association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.StartTime";
-    }
-    leaf discontinuity {
-      type yang:date-and-time;
-      description
-        "The time of the last discontinuity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Discontinuity";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.";
-  }
-
-  grouping transport-real-time-g {
-    description
-      "This object contains parameters relating to Real Time Transport using RTP.";
-    leaf rtcp-enable {
-      type boolean;
-      config false;
-      description
-        "Enable or disable RTCP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.RTCPEnable";
-    }
-    leaf sent-packets {
-      type uint64;
-      description
-        "The number of sent RTP packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.SentPackets";
-    }
-    leaf rcv-packets {
-      type uint64;
-      description
-        "The number of received RTP packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.RcvPackets";
-    }
-    leaf bytes-sent {
-      type uint64;
-      description
-        "Total number of RTP payload bytes sent.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.BytesSent";
-    }
-    leaf bytes-received {
-      type uint64;
-      description
-        "Total number of RTP payload bytes received.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.BytesReceived";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.";
-  }
-
-  grouping transport-real-time-perf-g {
-    description
-      "This object contains performances relating to Real Time Transport using RTP.";
-    leaf lost-rcv-packets {
-      type uint64;
-      description
-        "The number of Lost RTP packets in reception.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.LostRcvPackets";
-    }
-    leaf lost-far-end-packets {
-      type uint64;
-      description
-        "The number of Far End Lost RTP packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.LostFarEndPackets";
-    }
-    leaf overruns {
-      type uint64;
-      description
-        "Total number of times the receive jitter buffer has overrun.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.Overruns";
-    }
-    leaf underruns {
-      type uint64;
-      description
-        "Total number of times the receive jitter buffer has underrun for a CS-domain RAB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.Underruns";
-    }
-    leaf mean-rtt {
-      type uint64;
-      units "microseconds";
-      description
-        "The mean Round Trip Time in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanRTT";
-    }
-    leaf max-rtt {
-      type uint64;
-      units "microseconds";
-      description
-        "The maximum Round Trip Time in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxRTT";
-    }
-    leaf mean-receive-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The mean receive jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanReceiveJitter";
-    }
-    leaf max-receive-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The maximum receive jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxReceiveJitter";
-    }
-    leaf mean-far-end-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The mean far end jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanFarEndJitter";
-    }
-    leaf max-far-end-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The maximum far end jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxFarEndJitter";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.";
-  }
-
-  grouping transport-packet-g {
-    description
-      "This object contains parameters relating to Packet Transport using GTP-U.";
-    leaf echo-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Echo interval in {{units}}. An Echo interval value of zero means echo is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.EchoInterval";
-    }
-    leaf sent-packets {
-      type uint64;
-      description
-        "The number of sent GTP-U packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.SentPackets";
-    }
-    leaf rcv-packets {
-      type uint64;
-      description
-        "The number of received GTP-U packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.RcvPackets";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.";
-  }
-
-  grouping transport-security-g {
-    description
-      "This object contains parameters relating to Security.";
-    leaf secret-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.SecretNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.";
-  }
-
-  grouping transport-security-secret-g {
-    description
-      "Shared Secret Table. This table gathers information about all types of shared secret-based credentials (UICC).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enable or disable this Shared Secret entry";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Enable";
-    }
-    leaf type {
-      type enumeration {
-        enum "sim" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type - SIM";
-        }
-        enum "usim" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type - USIM";
-        }
-      }
-      description
-        "The type of this Shared Secret entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type";
-    }
-    leaf status {
-      type enumeration {
-        enum "present" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Present";
-        }
-        enum "not-present" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Not_present";
-        }
-        enum "error" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Error";
-        }
-      }
-      description
-        "The status of this Shared Secret entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status";
-    }
-    leaf uicc-card-id {
-      type string {
-        length "0..19";
-      }
-      description
-        "The UICC Card Identifier (UICCID), only numeric values are allowed. {{bibref|ITU-E.118}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.UICCCardID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.";
-  }
-}
diff --git a/sdnr/model/yang/core-model@2017-03-20.yang b/sdnr/model/yang/core-model@2017-03-20.yang
deleted file mode 100644 (file)
index 1340628..0000000
+++ /dev/null
@@ -1,1700 +0,0 @@
-module core-model {
-    namespace "urn:onf:params:xml:ns:yang:core-model";
-    prefix core-model;
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This module contains a collection of YANG definitions for managing wireless networks.";
-    revision 2017-03-20 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package core-network-model
-    **********************/ 
-        /***********************
-        * package type-definitions
-        **********************/ 
-            /***********************
-            * package resilience
-            **********************/ 
-                typedef protection-reason {
-                    type enumeration {
-                        enum wait-to-revert {
-                            description "removed";
-                        }
-                        enum signal-degrade {
-                            description "removed";
-                        }
-                        enum signal-fail {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef route-selection-control {
-                    type enumeration {
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                        enum lock-out {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef route-selection-reason {
-                    type enumeration {
-                        enum wait-to-revert {
-                            description "removed";
-                        }
-                        enum signal-degrade {
-                            description "removed";
-                        }
-                        enum signal-fail {
-                            description "removed";
-                        }
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                        enum lock-out {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef switch-control {
-                    type enumeration {
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                    }
-                    description "none";
-                }
-                typedef switch-state-reason {
-                    type enumeration {
-                        enum wait-to-revert {
-                            description "removed";
-                        }
-                        enum signal-degrade {
-                            description "removed";
-                        }
-                        enum signal-fail {
-                            description "removed";
-                        }
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef reversion-mode {
-                    type enumeration {
-                        enum revertive {
-                            description "removed";
-                        }
-                        enum non-revertive {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                grouping global-pac-g {
-                    uses global-class-g;
-                    description "removed";
-                }
-                grouping local-pac-g {
-                    uses local-class-g;
-                    description "removed";
-                }
-                typedef protection-type {
-                    type string;
-                    description "removed";
-                }
-
-            typedef layer-protocol-name {
-                type string;
-                description "removed";
-            }
-            typedef port-role {
-                type string;
-                description "removed";
-            }
-            typedef port-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum input {
-                        description "removed";
-                    }
-                    enum output {
-                        description "removed";
-                    }
-                    enum unidentified-or-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef forwarding-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum unidirectional {
-                        description "removed";
-                    }
-                    enum undefined-or-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef termination-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum sink {
-                        description "removed";
-                    }
-                    enum source {
-                        description "removed";
-                    }
-                    enum undefined-or-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef extended-termination-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum sink {
-                        description "removed";
-                    }
-                    enum source {
-                        description "removed";
-                    }
-                    enum undefined-or-unknown {
-                        description "removed";
-                    }
-                    enum contra-direction-sink {
-                        description "removed";
-                    }
-                    enum contra-direction-source {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef termination-state {
-                type enumeration {
-                    enum lp-can-never-terminate {
-                        description "removed";
-                    }
-                    enum lt-not-terminated {
-                        description "removed";
-                    }
-                    enum terminated-server-to-client-flow {
-                        description "removed";
-                    }
-                    enum terminated-client-to-server-flow {
-                        description "removed";
-                    }
-                    enum terminated-bidirectional {
-                        description "removed";
-                    }
-                    enum lt-permenantly-terminated {
-                        description "removed";
-                    }
-                    enum termination-state-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-
-        /***********************
-        * package object-classes
-        **********************/ 
-            /***********************
-            * package resilience
-            **********************/ 
-                grouping configuration-and-switch-controller-g {
-                    leaf switch-rule {
-                        type to-be-defined;
-                        description "removed";
-                    }
-                    leaf-list fc-switch {
-                        type leafref {
-                            path '/forwarding-construct/fc-switch/uuid';
-                        }
-                        description "removed";
-                    }
-                    container control-parameters {
-                        uses control-parameters-pac-g;
-                        description "removed";
-                    }
-                    leaf-list profile-proxy {
-                        type string;
-                        description "removed";
-                    }
-                    container local-pac {
-                        uses local-pac-g;
-                        description "none";
-                    }
-                    container global-pac {
-                        uses global-pac-g;
-                        description "none";
-                    }
-                    leaf is-frozen {
-                        type boolean;
-                        description "removed";
-                    }
-                    leaf is-coordinated-switching-both-ends {
-                        type boolean;
-                        description "removed";
-                    }
-                    leaf-list subordinate-controller {
-                        type leafref {
-                            path '/network-element/ltp/lp/config-and-switch-controller/switch-rule';
-                        }
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping control-parameters-pac-g {
-                    leaf reversion-mode {
-                        type reversion-mode;
-                        description "removed";
-                    }
-                    leaf wait-to-revert-time {
-                        type int64;
-                        default 15;
-                        description "removed";
-                    }
-                    leaf prot-type {
-                        type protection-type;
-                        description "removed";
-                    }
-                    leaf hold-off-time {
-                        type int64;
-                        description "removed";
-                    }
-                    leaf network-scheme-specification {
-                        type string;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping fc-switch-g {
-                    leaf hold-off-time {
-                        type int64;
-                        description "removed";
-                    }
-                    leaf prot-type {
-                        type protection-type;
-                        description "removed";
-                    }
-                    leaf reversion-mode {
-                        type reversion-mode;
-                        description "removed";
-                    }
-                    leaf-list selected-fc-port {
-                        type leafref {
-                            path '/forwarding-construct/fc-port/uuid';
-                        }
-                        description "removed";
-                    }
-                    leaf-list profile-proxy {
-                        type string;
-                        description "removed";
-                    }
-                    container internal-configuration-and-switch-control {
-                        uses configuration-and-switch-controller-g;
-                        description "removed";
-                    }
-                    leaf switch-control {
-                        type switch-control;
-                        description "removed";
-                    }
-                    leaf switch-selects-ports {
-                        type port-direction;
-                        description "removed";
-                    }
-                    leaf switch-selection-reason {
-                        type switch-state-reason;
-                        config false;
-                        description "removed";
-                    }
-                    container control-parameters {
-                        uses control-parameters-pac-g;
-                        description "none";
-                    }
-                    leaf wait-to-restore-time {
-                        type int64;
-                        description "removed";
-                    }
-                    uses local-class-g;
-                    description "removed";
-                }
-
-            grouping forwarding-domain-g {
-                leaf-list layer-protocol-name {
-                    type layer-protocol-name;
-                    min-elements 1;
-                    description "removed";
-                }
-                leaf-list lower-level-fd {
-                    type leafref {
-                        path '/network-element/fd/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list fc {
-                    type leafref {
-                        path '/forwarding-construct/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list lower-level-link {
-                    type string;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            grouping forwarding-construct-g {
-                leaf layer-protocol-name {
-                    type layer-protocol-name;
-                    description "removed";
-                }
-                leaf-list lower-level-fc {
-                    type leafref {
-                        path '/forwarding-construct/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list fc-route {
-                    type string;
-                    description "removed";
-                }
-                list fc-port {
-                    key 'uuid';
-                    min-elements 2;
-                    uses fc-port-g;
-                    description "removed";
-                }
-                list fc-switch {
-                    key 'uuid';
-                    uses fc-switch-g;
-                    description "removed";
-                }
-                leaf forwarding-direction {
-                    type forwarding-direction;
-                    description "removed";
-                }
-                leaf is-protection-lock-out {
-                    if-feature protection-exclude-server;
-                    type boolean;
-                    description "removed";
-                }
-                leaf service-priority {
-                    type int64;
-                    description "removed";
-                }
-                leaf-list supported-link {
-                    type string;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            container network-element {
-                presence  "";
-                list fd {
-                    key 'uuid';
-                    uses forwarding-domain-g;
-                    description "removed";
-                }
-                list ltp {
-                    key 'uuid';
-                    uses logical-termination-point-g;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            list forwarding-construct {
-                key 'uuid';
-                uses forwarding-construct-g;
-                description "none";
-            }
-            grouping fc-port-g {
-                leaf-list ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    max-elements 2;
-                    description "removed";
-                }
-                leaf role {
-                    type port-role;
-                    description "removed";
-                }
-                leaf fc-port-direction {
-                    type port-direction;
-                    description "removed";
-                }
-                leaf is-protection-lock-out {
-                    if-feature protection-exclude-fc-port;
-                    type boolean;
-                    description "removed";
-                }
-                leaf selection-priority {
-                    type int64;
-                    description "removed";
-                }
-                leaf is-internal-port {
-                    type boolean;
-                    config false;
-                    description "removed";
-                }
-                leaf-list fc-route-feeds-fc-port-egress {
-                    type string;
-                    description "removed";
-                }
-                uses local-class-g;
-                description "removed";
-            }
-            grouping layer-protocol-g {
-                leaf layer-protocol-name {
-                    type layer-protocol-name;
-                    description "removed";
-                }
-                leaf configured-client-capacity {
-                    type to-be-defined;
-                    description "removed";
-                }
-                leaf lp-direction {
-                    type termination-direction;
-                    description "removed";
-                }
-                leaf termination-state {
-                    type termination-state;
-                    description "removed";
-                }
-                list config-and-switch-controller {
-                    key 'switch-rule';
-                    uses configuration-and-switch-controller-g;
-                    description "removed";
-                }
-                leaf is-protection-lock-out {
-                    if-feature protection-exclude-ltp;
-                    type boolean;
-                    description "removed";
-                }
-                leaf fc-blocks-signal-to-lp {
-                    type string;
-                    description "none";
-                }
-                uses local-class-g;
-                description "removed";
-            }
-            grouping logical-termination-point-g {
-                leaf-list server-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list client-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                list lp {
-                    key 'uuid';
-                    min-elements 1;
-                    uses layer-protocol-g;
-                    description "removed";
-                }
-                leaf connected-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf peer-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list physical-port-reference {
-                    type string;
-                    description "removed";
-                }
-                leaf-list ltp-in-other-view {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf ltp-direction {
-                    type termination-direction;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            feature protection-exclude-server {
-                description "In protection context if server of protection where entire server is to be excluded from use for protection.";
-            }
-            feature protection-exclude-fc-port {
-                description "In protection context where the FcPort is to be excluded from use for protection.";
-            }
-            feature protection-exclude-ltp {
-                description "In protection context if LTP of protection where entire LTP is to be excluded from use for protection.";
-            }
-
-        /***********************
-        * package diagrams
-        **********************/ 
-
-        /***********************
-        * package associations
-        **********************/ 
-
-
-    /***********************
-    * package core-foundation-model
-    **********************/ 
-        /***********************
-        * package type-definitions
-        **********************/ 
-            typedef date-and-time {
-                type string;
-                description "removed";
-            }
-            typedef bit-string {
-                type string;
-                description "removed";
-            }
-            typedef real {
-                type string;
-                description "removed";
-            }
-            typedef printable-string {
-                type string;
-                description "removed";
-            }
-            typedef to-be-defined {
-                type string;
-                description "removed";
-            }
-
-        /***********************
-        * package super-classes-and-common-packages
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping name-g {
-                    list name {
-                        key 'value-name';
-                        min-elements 1;
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping global-class-g {
-                    list local-id {
-                        key 'value-name';
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    uses name-g;
-                    uses label-g;
-                    uses extension-g;
-                    uses state-pac-g;
-                    description "removed";
-                }
-                grouping local-class-g {
-                    list local-id {
-                        key 'value-name';
-                        min-elements 1;
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    leaf uuid {
-                        type universal-id;
-                        description "A global identifier for the LocalClass, which is used as reference.";
-                    }
-                    uses name-g;
-                    uses label-g;
-                    uses extension-g;
-                    uses state-pac-g;
-                    description "removed";
-                }
-                grouping label-g {
-                    list label {
-                        key 'value-name';
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping extension-g {
-                    list extension {
-                        key 'value-name';
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping universal-id-authority-g {
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping name-and-value-authority-g {
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping conditional-package-g {
-                    uses extension-g;
-                    uses label-g;
-                    description "removed";
-                }
-
-            /***********************
-            * package type-definitions
-            **********************/ 
-                grouping name-and-value-g {
-                    leaf value-name {
-                        type string;
-                        description "removed";
-                    }
-                    leaf value {
-                        type string;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                typedef universal-id {
-                    type string;
-                    description "removed";
-                }
-                grouping address-g {
-                    leaf address-name {
-                        type string;
-                        description "removed";
-                    }
-                    list address-element {
-                        key 'uuid';
-                        uses address-element-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping local-id-and-class-g {
-                    leaf class-of-instance {
-                        type string;
-                        description "removed";
-                    }
-                    container local-id {
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping name-and-class-g {
-                    leaf class-of-instance {
-                        type string;
-                        description "removed";
-                    }
-                    container name {
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping address-element-g {
-                    leaf address-element-name {
-                        type string;
-                        description "removed";
-                    }
-                    container local-id {
-                        uses local-id-and-class-g;
-                        description "removed";
-                    }
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    container name {
-                        uses name-and-class-g;
-                        description "removed";
-                    }
-                    leaf arbitrary-element {
-                        type string;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-
-
-        /***********************
-        * package state-model
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping state-pac-g {
-                    leaf operational-state {
-                        type operational-state;
-                        config false;
-                        description "removed";
-                    }
-                    leaf administrative-control {
-                        type administrative-control;
-                        description "removed";
-                    }
-                    leaf administrative-state {
-                        type administrative-state;
-                        config false;
-                        description "removed";
-                    }
-                    leaf lifecycle-state {
-                        type lifecycle-state;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-
-            /***********************
-            * package type-definitions
-            **********************/ 
-                typedef operational-state {
-                    type enumeration {
-                        enum disabled {
-                            description "removed";
-                        }
-                        enum enabled {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef administrative-state {
-                    type enumeration {
-                        enum locked {
-                            description "removed";
-                        }
-                        enum unlocked {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef administrative-control {
-                    type enumeration {
-                        enum unlock {
-                            description "removed";
-                        }
-                        enum lock-passive {
-                            description "removed";
-                        }
-                        enum lock-active {
-                            description "removed";
-                        }
-                        enum lock-immediate {
-                            description "removed";
-                        }
-                    }
-                    description "removed
-                        removed";
-                }
-                typedef extended-admin-state {
-                    type enumeration {
-                        enum locked {
-                            description "removed";
-                        }
-                        enum unlocked {
-                            description "removed";
-                        }
-                        enum shutting-down-active {
-                            description "removed";
-                        }
-                        enum shutting-down-passive {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef lifecycle-state {
-                    type enumeration {
-                        enum planned {
-                            description "removed";
-                        }
-                        enum potential {
-                            description "removed";
-                        }
-                        enum installed {
-                            description "removed";
-                        }
-                        enum pending-removal {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-
-
-
-    /***********************
-    * package core-operations-model
-    **********************/ 
-        /***********************
-        * package pattern
-        **********************/ 
-            /***********************
-            * package data-types
-            **********************/ 
-                typedef action-verbs {
-                    type enumeration {
-                        enum create-post-add {
-                            description "none";
-                        }
-                        enum set-update-put-modify-write-add {
-                            description "none";
-                        }
-                        enum get-read {
-                            description "none";
-                        }
-                        enum delete-remove {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-                typedef test-type {
-                    type string;
-                    description "none";
-                }
-                typedef activity-directive {
-                    type enumeration {
-                        enum structure-is-not {
-                            description "none";
-                        }
-                        enum new-structure-and-values {
-                            description "none";
-                        }
-                        enum incremental-structure-and-values {
-                            description "none";
-                        }
-                        enum only-values-in-existing-structure {
-                            description "none";
-                        }
-                        enum defined-by-verb {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-
-            /***********************
-            * package diagrams
-            **********************/ 
-                typedef action-effort {
-                    type enumeration {
-                        enum best-effort {
-                            description "none";
-                        }
-                        enum exact-match {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-                typedef pause-resume-rule {
-                    type enumeration {
-                        enum no-pause-possible {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping general-directives-g {
-                    description "none";
-                }
-                grouping necessary-initial-condition-constraints-g {
-                    leaf is-not {
-                        type boolean;
-                        description "none";
-                    }
-                    description "none";
-                }
-                grouping operation-details-g {
-                    leaf action-verb {
-                        type action-verbs;
-                        description "none";
-                    }
-                    list necessary-initialcondition-constraints {
-                        key 'is-not';
-                        uses necessary-initial-condition-constraints-g;
-                        description "none";
-                    }
-                    description "none";
-                }
-                container operation-envelope {
-                    presence  "";
-                    list operation-set {
-                        key 'effort-and-action';
-                        min-elements 1;
-                        uses operation-set-g;
-                        description "none";
-                    }
-                    container generaldirectives {
-                        uses general-directives-g;
-                        description "none";
-                    }
-                    container operationidentifiers {
-                        uses operation-identifiers-g;
-                        description "none";
-                    }
-                    description "none";
-                }
-                grouping operation-identifiers-g {
-                    description "none";
-                }
-                grouping operation-set-g {
-                    leaf-list after-operation-set {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf-list before-operation-set {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf effort-and-action {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf pause-resume-rule {
-                        type pause-resume-rule;
-                        description "none";
-                    }
-                    leaf-list operationset {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf is-short-lived {
-                        type boolean;
-                        default true;
-                        description "none";
-                    }
-                    list operation-details {
-                        key 'action-verb';
-                        min-elements 1;
-                        uses operation-details-g;
-                        description "none";
-                    }
-                    description "none";
-                }
-
-
-
-    /***********************
-    * package core-physical-model-initial
-    **********************/ 
-        /***********************
-        * package rule-models
-        **********************/ 
-            /***********************
-            * package connector-rules
-            **********************/ 
-                /***********************
-                * package object-classes
-                **********************/ 
-                    grouping connector-in-holder-g {
-                        leaf connector-on-equipment-for-holder {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-                    grouping connector-cable-end-g {
-                        leaf connector-on-equipment-for-cable {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-                    grouping connector-on-equipment-for-cable-g {
-                        leaf connector-cable-end {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-                    grouping connector-on-equipment-for-holder-g {
-                        leaf connector-in-holder {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-
-
-
-        /***********************
-        * package equipment-detail
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                /***********************
-                * package dynamic-details
-                **********************/ 
-                    grouping function-enablers-g {
-                        leaf power-state {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping mechanical-functions-g {
-                        leaf rotation-speed {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping physical-properties-g {
-                        leaf temperature {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping holder-monitors-g {
-                        leaf is-active {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf is-actual-mismatch-with-expected {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf aggregate-function {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping location-g {
-                        container equipment-location {
-                            uses address-g;
-                            description "none";
-                        }
-                        container geographical-location {
-                            uses address-g;
-                            description "none";
-                        }
-                        description "none";
-                    }
-
-                /***********************
-                * package invariant-details
-                **********************/ 
-                    grouping category-g {
-                        leaf category {
-                            type equipment-category;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping equipment-instance-g {
-                        leaf manufacture-date {
-                            type string;
-                            description "none";
-                        }
-                        leaf serial-number {
-                            type string;
-                            description "none";
-                        }
-                        leaf asset-instance-identifier {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping equipment-type-g {
-                        leaf description {
-                            type string;
-                            description "none";
-                        }
-                        leaf model-identifier {
-                            type string;
-                            description "none";
-                        }
-                        leaf part-type-identifier {
-                            type string;
-                            description "none";
-                        }
-                        leaf type-name {
-                            type string;
-                            description "none";
-                        }
-                        leaf version {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping holder-structure-g {
-                        leaf holder-category {
-                            type holder-category;
-                            description "none";
-                        }
-                        leaf is-captive {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf is-guided {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf is-quantized-space {
-                            type boolean;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping manufactured-thing-g {
-                        container manufacturer-properties {
-                            uses manufacturer-properties-g;
-                            description "none";
-                        }
-                        container equipment-type {
-                            uses equipment-type-g;
-                            description "none";
-                        }
-                        container equipment-instance {
-                            uses equipment-instance-g;
-                            description "none";
-                        }
-                        container operator-augmented-equipment-type {
-                            uses operator-augmented-equipment-type-g;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping manufacturer-properties-g {
-                        leaf manufacturer-identifier {
-                            type string;
-                            description "none";
-                        }
-                        leaf manufacturer-name {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping mechanical-features-g {
-                        description "removed";
-                    }
-                    grouping operator-augmented-equipment-type-g {
-                        leaf asset-type-identifier {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping physical-characteristics-g {
-                        leaf weight-characteristics {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf fire-characteristics {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf materials {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping physical-rating-g {
-                        leaf thermal-rating {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf power-rating {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping position-g {
-                        leaf relative-position {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping spatial-properties-of-type-g {
-                        leaf height {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf width {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf length {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping swapability-g {
-                        leaf is-hot-swappable {
-                            type boolean;
-                            default true;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-
-
-
-        /***********************
-        * package equipment-pattern-structure
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping cable-g {
-                    list connector {
-                        key 'uuid';
-                        min-elements 1;
-                        uses connector-g;
-                        description "none";
-                    }
-                    container manufactured-thing {
-                        uses manufactured-thing-g;
-                        description "none";
-                    }
-                    container physical-characteristics {
-                        uses physical-characteristics-g;
-                        description "none";
-                    }
-                    container mechanical-features {
-                        uses mechanical-features-g;
-                        description "none";
-                    }
-                    container spatial-properties-of-type {
-                        uses spatial-properties-of-type-g;
-                        description "none";
-                    }
-                    uses global-class-g;
-                    description "removed";
-                }
-                grouping connector-g {
-                    leaf connector {
-                        type string;
-                        description "none";
-                    }
-                    list pin {
-                        key 'position';
-                        min-elements 1;
-                        uses pin-g;
-                        description "none";
-                    }
-                    leaf orientation {
-                        type connector-and-pin-orientation;
-                        description "none";
-                    }
-                    container manufactured-thing {
-                        uses manufactured-thing-g;
-                        description "none";
-                    }
-                    container position {
-                        uses position-g;
-                        description "none";
-                    }
-                    container mechanical-features {
-                        uses mechanical-features-g;
-                        description "none";
-                    }
-                    container pin-layout {
-                        uses pin-layout-g;
-                        description "none";
-                    }
-                    leaf connector-type {
-                        type to-be-defined;
-                        description "none";
-                    }
-                    uses local-class-g;
-                    uses group-of-pins-g;
-                    description "removed";
-                }
-                grouping equipment-g {
-                    list connector {
-                        key 'uuid';
-                        uses connector-g;
-                        description "none";
-                    }
-                    list contained-holder {
-                        key 'uuid';
-                        uses holder-g;
-                        description "none";
-                    }
-                    list exposed-cable {
-                        key 'uuid';
-                        uses cable-g;
-                        description "none";
-                    }
-                    container manufactured-thing {
-                        uses manufactured-thing-g;
-                        description "none";
-                    }
-                    container spatial-properties-of-type {
-                        uses spatial-properties-of-type-g;
-                        description "none";
-                    }
-                    container mechanical-features {
-                        uses mechanical-features-g;
-                        description "none";
-                    }
-                    container physical-properties {
-                        uses physical-properties-g;
-                        description "none";
-                    }
-                    container function-enablers {
-                        uses function-enablers-g;
-                        description "none";
-                    }
-                    container mechanical-functions {
-                        uses mechanical-functions-g;
-                        description "none";
-                    }
-                    container physical-characteristics {
-                        uses physical-characteristics-g;
-                        description "none";
-                    }
-                    container swapability {
-                        uses swapability-g;
-                        description "none";
-                    }
-                    container category {
-                        uses category-g;
-                        description "none";
-                    }
-                    container physical-rating {
-                        uses physical-rating-g;
-                        description "none";
-                    }
-                    leaf is-field-replaceable {
-                        type boolean;
-                        default true;
-                        config false;
-                        description "removed";
-                    }
-                    leaf-list function-block {
-                        type string;
-                        description "none";
-                    }
-                    container expected-equipment {
-                        uses expected-equipment-g;
-                        description "none";
-                    }
-                    container actual-equipment {
-                        uses actual-equipment-g;
-                        description "none";
-                    }
-                    container location {
-                        uses location-g;
-                        description "none";
-                    }
-                    uses global-class-g;
-                    description "removed";
-                }
-                list equipment {
-                    key 'uuid';
-                    uses equipment-g;
-                                description "none";
-}
-                grouping holder-g {
-                    leaf-list connector {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/uuid';
-                        }
-                        description "none";
-                    }
-                    leaf occupying-fru {
-                        type leafref {
-                            path '/equipment/uuid';
-                        }
-                        description "removed";
-                    }
-                    container spatial-properties-of-type {
-                        uses spatial-properties-of-type-g;
-                        description "none";
-                    }
-                    container holder-monitors {
-                        uses holder-monitors-g;
-                        description "none";
-                    }
-                    container holder-location {
-                        uses address-g;
-                        description "none";
-                    }
-                    container position {
-                        uses position-g;
-                        description "none";
-                    }
-                    container holder-structure {
-                        uses holder-structure-g;
-                        description "none";
-                    }
-                    container physical-rating {
-                        uses physical-rating-g;
-                        description "none";
-                    }
-                    leaf-list supported-equipment {
-                        type string;
-                        min-elements 1;
-                        description "none";
-                    }
-                    container expected-holder {
-                        uses expected-holder-g;
-                        description "none";
-                    }
-                    container actual-holder {
-                        uses actual-holder-g;
-                        description "none";
-                    }
-                    uses local-class-g;
-                    description "removed";
-                }
-
-            /***********************
-            * package data-types
-            **********************/ 
-                typedef connector-and-pin-orientation {
-                    type enumeration {
-                        enum male {
-                            description "removed";
-                        }
-                        enum female {
-                            description "removed";
-                        }
-                        enum symmetric-neutral {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef equipment-category {
-                    type enumeration {
-                        enum subrack {
-                            description "removed";
-                        }
-                        enum circuit-pack {
-                            description "removed";
-                        }
-                        enum small-formfactor-pluggable {
-                            description "removed";
-                        }
-                        enum stand-alone-unit {
-                            description "removed";
-                        }
-                        enum rack {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef holder-category {
-                    type enumeration {
-                        enum slot {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-
-
-        /***********************
-        * package expected-and-actual
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping actual-holder-g {
-                    description "removed";
-                }
-                grouping expected-holder-g {
-                    description "removed";
-                }
-                grouping actual-equipment-g {
-                    description "removed";
-                }
-                grouping expected-equipment-g {
-                    description "removed";
-                }
-
-
-        /***********************
-        * package connector-and-pin
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping pin-g {
-                    leaf position {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/position/relative-position';
-                        }
-                        description "none";
-                    }
-                    leaf orientation {
-                        type connector-and-pin-orientation;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping pin-group-g {
-                    leaf-list pin {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/pin/position';
-                        }
-                        min-elements 1;
-                        description "none";
-                    }
-                    uses port-g;
-                    uses group-of-pins-g;
-                    description "removed";
-                }
-                grouping pin-layout-g {
-                    list position {
-                        key 'relative-position';
-                        min-elements 1;
-                        uses position-g;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping port-g {
-                    description "removed";
-                }
-                grouping signal-ref-pt-g {
-                    leaf ltp {
-                        type leafref {
-                            path '/network-element/ltp/uuid';
-                        }
-                        description "none";
-                    }
-                    leaf-list elemental-signals {
-                        type universal-id;
-                        min-elements 1;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping signal-ref-pt-group-g {
-                    leaf pin-group {
-                        type universal-id;
-                        description "none";
-                    }
-                    leaf-list signal-ref-pt {
-                        type universal-id;
-                        min-elements 1;
-                        description "none";
-                    }
-                    uses port-g;
-                    description "removed";
-                }
-                grouping elemental-signals-g {
-                    leaf-list pin {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/pin/position';
-                        }
-                        min-elements 1;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping group-of-pins-g {
-                    description "removed";
-                }
-
-
-
-}
diff --git a/sdnr/model/yang/g.874.1-model@2017-03-20.yang b/sdnr/model/yang/g.874.1-model@2017-03-20.yang
deleted file mode 100644 (file)
index 4a14783..0000000
+++ /dev/null
@@ -1,646 +0,0 @@
-module g.874.1-model {
-    namespace "urn:onf:params:xml:ns:yang:g.874.1-model";
-    prefix g.874.1-model;
-
-    import core-model {
-        prefix core-model;
-    }
-    import ietf-yang-types {
-        prefix yang;
-    }
-
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "<p>Version 2.02; outcome of the 10/2013 Nuremberg meeting.<br>Version 2.03; updates for Geneva 03-2014<br>Version 2.04; updates for Shanghai 09-2014<br>Version 2.05; input to Geneva 11-2014<br>Version 2.06; output from Geneva 11-2014<br>Version 2.07; using OpenProfile 3-2015<br>Version 2.08; output from Geneva 06-2015</p>";
-    revision 2017-03-20 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package object-classes
-    **********************/ 
-        grouping otn-current-data-g {
-            leaf timestamp {
-                type date-and-time;
-                description "The timestamp associated with when the current data was collected.";
-            }
-            uses q.822-current-data-g;
-            description "This object class is an abstract class from which the OTN layer-specific CurrentData object classes are inherited. This object class is a subclass of the Q.822 CurrentData object class, which in turn is a subclass of X.739 Scanner object class. It inherits the following attributes: scannerId, operationalState, granularityPeriod, administrativeState, suspectIntervalFlag, elapsedTime, observedObjectClass, and observedObjectInstance.";
-        }
-        grouping otn-history-data-g {
-            leaf suspect-interval-flag {
-                type boolean;
-                default false;
-                description "This attribute indicates that the data collected during the interval is suspect.";
-            }
-            uses q.822-history-data-g;
-            description "This object class is an abstract class from which the OTN layer-specific HistoryData object classes are inherited. ";
-        }
-
-    /***********************
-    * package type-definitions
-    **********************/ 
-        typedef directionality {
-            type enumeration {
-                enum sink {
-                    description "none";
-                }
-                enum source {
-                    description "none";
-                }
-                enum bidirectional {
-                    description "none";
-                }
-            }
-            description "The enumeration with the options for directionality of the termination point.";
-        }
-        typedef gcc-access {
-            type enumeration {
-                enum gcc1 {
-                    description "none";
-                }
-                enum gcc2 {
-                    description "none";
-                }
-                enum gcc1-and-gcc2 {
-                    description "none";
-                }
-            }
-            description "This enumeration indicates the GCC access represented by the entity.";
-        }
-        typedef operational-state {
-            type enumeration {
-                enum enabled {
-                    description "none";
-                }
-                enum disabled {
-                    description "none";
-                }
-            }
-            description "The list of valid operational states for the connection.";
-        }
-        typedef oper-type {
-            type enumeration {
-                enum revertive {
-                    description "none";
-                }
-                enum non-revertive {
-                    description "none";
-                }
-            }
-            description "The operation type associated with the protection mechanism (either non-revertive or revertive).";
-        }
-        typedef ext-cmd-operation {
-            type enumeration {
-                enum exercise {
-                    description "none";
-                }
-                enum manual-switch {
-                    description "none";
-                }
-                enum forced-switch {
-                    description "none";
-                }
-                enum lockout {
-                    description "none";
-                }
-                enum release-of-manual-switch {
-                    description "none";
-                }
-                enum release-of-forced-switch {
-                    description "none";
-                }
-                enum release-of-lockout {
-                    description "none";
-                }
-            }
-            description "This enumeration contains the options for the actions that instruct the protection system for performing specific protection switching operations.";
-        }
-        typedef administrative-state {
-            type enumeration {
-                enum unlocked {
-                    description "none";
-                }
-                enum locked {
-                    description "none";
-                }
-                enum shutting-down {
-                    description "none";
-                }
-            }
-            description "For more information on Administrative State, See ITU-T Recs. X.731 and M.3100.";
-        }
-        typedef oc-tk-nim-k-bit-rate {
-            type enumeration {
-                enum 2.5-g {
-                    description "none";
-                }
-                enum 10-g {
-                    description "none";
-                }
-                enum 40-g {
-                    description "none";
-                }
-                enum 100-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef tim-det-mo {
-            type enumeration {
-                enum dapi {
-                    description "none";
-                }
-                enum sapi {
-                    description "none";
-                }
-                enum both {
-                    description "none";
-                }
-            }
-            description "List of modes for trace identifier mismatch detection.";
-        }
-        typedef oc-tk-nim-problem-list {
-            type enumeration {
-                enum los-p {
-                    description "Loss of Signal -- Payload";
-                }
-                enum oci {
-                    description "Open Connection Indicator";
-                }
-                enum ssf-p {
-                    description "Server Signal Failure -- Payload -- can not co-exist with SSF or SSF-O";
-                }
-                enum ssf-o {
-                    description "Server Signal Failure -- Overhead; can not co-exist with SSF or SSF-P";
-                }
-                enum ssf {
-                    description "Server Signal Failure; can not co-exist with SSF-P or SSF-O";
-                }
-                enum tim {
-                    description "Trail Trace Identifier Mismatch";
-                }
-                enum deg {
-                    description "Signal Degraded";
-                }
-                enum bdi {
-                    description "Backward Defect Indication";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef tcm-monitoring {
-            type enumeration {
-                enum intrusive {
-                    description "none";
-                }
-                enum non-intrusive {
-                    description "none";
-                }
-            }
-            description "Monitoring types for the tandem connection monitoring function.";
-        }
-        typedef tcm-mode {
-            type enumeration {
-                enum operational {
-                    description "none";
-                }
-                enum transparent {
-                    description "none";
-                }
-                enum monitor {
-                    description "none";
-                }
-            }
-            description "List of value modes for the sink side of the tandem connection monitoring function.";
-        }
-        typedef ops-mnk-ttp-k-bit-rate {
-            type enumeration {
-                enum 40-g {
-                    description "none";
-                }
-                enum 100-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef ops-mnk-ttp-problem-list {
-            type enumeration {
-                enum los {
-                    description "Loss of Signal";
-                }
-                enum lol {
-                    description "Loss of Lane Alignment";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef op-sn-ttp-problem-list {
-            type enumeration {
-                enum los {
-                    description "Loss of Signal";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef otm-n-k-bit-rates {
-            type enumeration {
-                enum 2.5-g {
-                    description "none";
-                }
-                enum 10-g {
-                    description "none";
-                }
-                enum 40-g {
-                    description "none";
-                }
-                enum 2.5-10-g {
-                    description "none";
-                }
-                enum 10-40-g {
-                    description "none";
-                }
-                enum 2.5-10-40-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef domain-interface {
-            type enumeration {
-                enum intra-domain {
-                    description "none";
-                }
-                enum inter-domain {
-                    description "none";
-                }
-            }
-            description "This enumeration provides the options for the interface associated with OTMn.";
-        }
-        typedef otm-n-optical-reach {
-            type enumeration {
-                enum intra-office {
-                    description "none";
-                }
-                enum shorthaul {
-                    description "none";
-                }
-                enum longhaul {
-                    description "none";
-                }
-            }
-            description "The valid options for reach of the optical cable.";
-        }
-        typedef apr-status {
-            type enumeration {
-                enum on {
-                    description "none";
-                }
-                enum off {
-                    description "none";
-                }
-            }
-            description "The enumeration of the options for the Automatic Power Reduction Status.";
-        }
-        typedef ot-sn-ttp-problem-list {
-            type enumeration {
-                enum bdi-p {
-                    description "BDI-P (Backward Defect Indication - Payload); not co-exist with BDI-O or BDI";
-                }
-                enum bdi-o {
-                    description "BDI-O (Backward Defect Indication - Overhead); not co-exist with BDI-P or BDI";
-                }
-                enum bdi {
-                    description "BDI (Backward Defect Indication); not co-exist with BDI-P or BDI-O";
-                }
-                enum tim {
-                    description "TIM (Trail Trace Identifier Mismatch);";
-                }
-                enum los-p {
-                    description "-P (Loss of Signal - Payload); not co-exist with LOS-O or LOS";
-                }
-                enum los-o {
-                    description "LOS-O (Loss of Signal - Overhead); not co-exist with LOS-P or LOS";
-                }
-                enum los {
-                    description "LOS (Loss of Signal); not co-exist with LOS-P or LOS-O. ";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef ot-uk-ctp-adaptation {
-            type enumeration {
-                enum regular {
-                    description "i.e. OPSM/OTUk-a, OCh[r]/OTUk-a";
-                }
-                enum none {
-                    description "i.e. OPSM/OTUk-b, OCh[r]/OTUk-b";
-                }
-                enum vendor-specific {
-                    description "i.e. OCh[r]/OTUk-v";
-                }
-                enum functionally-standardized {
-                    description "i.e. OCh[r]/OTUkV";
-                }
-            }
-            description "The adaptation options for OTUk_ConnectionTermationPoints.";
-        }
-        typedef ot-uk-ctp-k-bit-rate {
-            type enumeration {
-                enum 2.5-g {
-                    description "none";
-                }
-                enum 10-g {
-                    description "none";
-                }
-                enum 40-g {
-                    description "none";
-                }
-                enum 100-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef ot-uk-ctp-problem-list {
-            type enumeration {
-                enum lof {
-                    description "Loss of Frame";
-                }
-                enum ais {
-                    description "Alarm Indication Signal";
-                }
-                enum lom {
-                    description "Loss of MultiFrame";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef ot-uk-ttp-problem-list {
-            type enumeration {
-                enum tim {
-                    description "Trail Trace Identifier Mismatch";
-                }
-                enum deg {
-                    description "Signal Degraded";
-                }
-                enum bdi {
-                    description "Backward Defect Indication";
-                }
-                enum ssf {
-                    description "Server Signal Failure";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef monitored-direction {
-            type enumeration {
-                enum sink {
-                    description "none";
-                }
-                enum source {
-                    description "none";
-                }
-            }
-            description "The enumeration with the options for directionality for nonintrusive monitoring.";
-        }
-        typedef deg-thr-type {
-            type enumeration {
-                enum percentage {
-                    description "<p>Choice of % or Number of errored blocks</p>";
-                }
-                enum number-errored-blocks {
-                    description "<p>Number of % or blocks</p>";
-                }
-            }
-            description "<p>The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.</p>";
-        }
-        typedef link-type {
-            type enumeration {
-                enum dwdm {
-                    description "none";
-                }
-                enum cwdm {
-                    description "none";
-                }
-                enum no-wdm {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef application-identifier-type {
-            type enumeration {
-                enum standard {
-                    description "none";
-                }
-                enum proprietary {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef printable-string {
-            type string;
-            description "none";
-        }
-        typedef date-and-time {
-            type string;
-            description "This primitive type defines the date and time according to the following structure:
-                'yyyyMMddhhmmss.s[Z|{+|-}HHMm]' where:
-                yyyy    '0000'..'9999'    year
-                MM        '01'..'12'            month
-                dd        '01'..'31'            day
-                hh        '00'..'23'            hour
-                mm        '00'..'59'            minute
-                ss        '00'..'59'            second
-                s        '.0'..'.9'            tenth of second (set to '.0' if EMS or NE cannot support this granularity)
-                Z        'Z'                    indicates UTC (rather than local time)
-                {+|-}    '+' or '-'            delta from UTC
-                HH        '00'..'23'            time zone difference in hours
-                Mm        '00'..'59'            time zone difference in minutes.";
-        }
-        typedef aps-channel {
-            type enumeration {
-                enum path {
-                    description "none";
-                }
-                enum tcm1 {
-                    description "none";
-                }
-                enum tcm2 {
-                    description "none";
-                }
-                enum tcm3 {
-                    description "none";
-                }
-                enum tcm4 {
-                    description "none";
-                }
-                enum tcm5 {
-                    description "none";
-                }
-                enum tcm6 {
-                    description "none";
-                }
-                enum section {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef bit-string {
-            type string;
-            description "This primitive type defines a bit oriented string.
-                The size of the BitString will be defined in the valueRange property of the attribute; according to ASN.1 (X.680).
-                The semantic of each bit position will be defined in the Documentation field of the attribute.";
-        }
-        typedef delay-measurement-role {
-            type enumeration {
-                enum controller {
-                    description "none";
-                }
-                enum responder {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef resize-operation-type {
-            type enumeration {
-                enum increase-bw {
-                    description "Increase Bandwidth";
-                }
-                enum decrease-bw {
-                    description "Decrease Bandwidth";
-                }
-            }
-            description "none";
-        }
-        typedef granularity-period-type {
-            type enumeration {
-                enum unknown {
-                    description "none";
-                }
-                enum period-15-min {
-                    description "none";
-                }
-                enum period-24-hours {
-                    description "none";
-                }
-            }
-            description "The enumeration with the options for granularity period of the performance data.";
-        }
-
-    /***********************
-    * package illustrative-object-diagrams
-    **********************/ 
-
-    /***********************
-    * package imported-information-object-classes
-    **********************/ 
-        /***********************
-        * package q.822
-        **********************/ 
-            grouping q.822-current-data-g {
-                leaf suspect-interval-flag {
-                    type boolean;
-                    description "This attribute is used to indicate that the performance data for the current period may not be reliable. Some reasons for this to occur are:- Suspect data were detected by the actual resource doing data collection.- Transition of the administrativeState attribute to/from the 'lock' state.- Transition of the operationalState to/from the 'disabled' state.- Scheduler setting that inhibits the collection function.- The performance counters were reset during the interval.- The currentData (or subclass) object instance was created during the monitoring period.";
-                }
-                leaf elapsed-time {
-                    type int64;
-                    description "none";
-                }
-                uses x.739-scanner-g;
-                description "none";
-            }
-            grouping q.822-history-data-g {
-                leaf history-data-id {
-                    type string;
-                    description "none";
-                }
-                leaf period-end-time {
-                    type yang:date-and-time;
-                    description "none";
-                }
-                leaf granularity-period {
-                    type granularity-period-type;
-                    description "none";
-                }
-                uses x.721-top-g;
-                description "none";
-            }
-
-        /***********************
-        * package x.739
-        **********************/ 
-            grouping x.739-scanner-g {
-                leaf scanner-id {
-                    type string;
-                    description "none";
-                }
-                leaf granularity-period {
-                    type granularity-period-type;
-                    description "none";
-                }
-                leaf administrative-state {
-                    type core-model:administrative-state;
-                    description "none";
-                }
-                uses x.721-top-g;
-                description "none";
-            }
-
-        /***********************
-        * package x.721
-        **********************/ 
-            grouping x.721-top-g {
-                leaf object-class {
-                    type object-identifier;
-                    description "ObjectClass ::= CHOICE{    globalForm    [0] OBJECT IDENTIFIER,
-                        localForm    [1] INTEGER}";
-                }
-                leaf name-binding {
-                    type object-identifier;
-                    description "none";
-                }
-                description "This is the top level of managed object class hierarchy and every other managed object class is a specialization of either this generic class (top) or a specialization of subclass of top. The parameter miscellaneousError is to be used when a processing failure has occurred and the error condition encountered does not match any of object's defined specific error types.";
-            }
-
-
-    /***********************
-    * package imported-data-types
-    **********************/ 
-        typedef object-instance {
-            type string;
-            description "none";
-        }
-        typedef name {
-            type string;
-            description "none";
-        }
-        typedef object-identifier {
-            type string;
-            description "none";
-        }
-        typedef generalized-time {
-            type string;
-            description "none";
-        }
-        typedef time-period {
-            type string;
-            description "This primitive Type is imported from X.739.";
-        }
-
-}
diff --git a/sdnr/model/yang/ietf-inet-types@2010-09-24.yang b/sdnr/model/yang/ietf-inet-types@2010-09-24.yang
deleted file mode 100644 (file)
index a9fc2c8..0000000
+++ /dev/null
@@ -1,418 +0,0 @@
-module ietf-inet-types {
-
-   namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
-   prefix "inet";
-
-   organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-   contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: David Partain
-               <mailto:david.partain@ericsson.com>
-
-     WG Chair: David Kessens
-               <mailto:david.kessens@nsn.com>
-
-     Editor:   Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>";
-
-   description
-    "This module contains a collection of generally useful derived
-     YANG data types for Internet addresses and related things.
-
-     Copyright (c) 2010 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or without
-     modification, is permitted pursuant to, and subject to the license
-     terms contained in, the Simplified BSD License set forth in Section
-     4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6021; see
-     the RFC itself for full legal notices.";
-
-   revision 2010-09-24 {
-     description
-      "Initial revision.";
-     reference
-      "RFC 6021: Common YANG Data Types";
-   }
-
-   /*** collection of protocol field related types ***/
-
-   typedef ip-version {
-     type enumeration {
-       enum unknown {
-         value "0";
-         description
-          "An unknown or unspecified version of the Internet protocol.";
-       }
-       enum ipv4 {
-         value "1";
-         description
-          "The IPv4 protocol as defined in RFC 791.";
-       }
-       enum ipv6 {
-         value "2";
-         description
-          "The IPv6 protocol as defined in RFC 2460.";
-       }
-     }
-     description
-      "This value represents the version of the IP protocol.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetVersion textual convention of the SMIv2.";
-     reference
-      "RFC  791: Internet Protocol
-       RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   typedef dscp {
-     type uint8 {
-       range "0..63";
-     }
-     description
-      "The dscp type represents a Differentiated Services Code-Point
-       that may be used for marking packets in a traffic stream.
-
-       In the value set and its semantics, this type is equivalent
-       to the Dscp textual convention of the SMIv2.";
-     reference
-      "RFC 3289: Management Information Base for the Differentiated
-                 Services Architecture
-       RFC 2474: Definition of the Differentiated Services Field
-                 (DS Field) in the IPv4 and IPv6 Headers
-       RFC 2780: IANA Allocation Guidelines For Values In
-                 the Internet Protocol and Related Headers";
-   }
-
-   typedef ipv6-flow-label {
-     type uint32 {
-       range "0..1048575";
-     }
-     description
-      "The flow-label type represents flow identifier or Flow Label
-       in an IPv6 packet header that may be used to discriminate
-       traffic flows.
-
-       In the value set and its semantics, this type is equivalent
-       to the IPv6FlowLabel textual convention of the SMIv2.";
-     reference
-      "RFC 3595: Textual Conventions for IPv6 Flow Label
-       RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
-   }
-
-   typedef port-number {
-     type uint16 {
-       range "0..65535";
-     }
-     description
-      "The port-number type represents a 16-bit port number of an
-       Internet transport layer protocol such as UDP, TCP, DCCP, or
-       SCTP.  Port numbers are assigned by IANA.  A current list of
-       all assignments is available from <http://www.iana.org/>.
-
-       Note that the port number value zero is reserved by IANA.  In
-       situations where the value zero does not make sense, it can
-       be excluded by subtyping the port-number type.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetPortNumber textual convention of the SMIv2.";
-     reference
-      "RFC  768: User Datagram Protocol
-       RFC  793: Transmission Control Protocol
-       RFC 4960: Stream Control Transmission Protocol
-       RFC 4340: Datagram Congestion Control Protocol (DCCP)
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   /*** collection of autonomous system related types ***/
-
-   typedef as-number {
-     type uint32;
-     description
-      "The as-number type represents autonomous system numbers
-       which identify an Autonomous System (AS).  An AS is a set
-       of routers under a single technical administration, using
-       an interior gateway protocol and common metrics to route
-       packets within the AS, and using an exterior gateway
-       protocol to route packets to other ASs'.  IANA maintains
-       the AS number space and has delegated large parts to the
-       regional registries.
-
-       Autonomous system numbers were originally limited to 16
-       bits.  BGP extensions have enlarged the autonomous system
-       number space to 32 bits.  This type therefore uses an uint32
-       base type without a range restriction in order to support
-       a larger autonomous system number space.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetAutonomousSystemNumber textual convention of
-       the SMIv2.";
-     reference
-      "RFC 1930: Guidelines for creation, selection, and registration
-                 of an Autonomous System (AS)
-       RFC 4271: A Border Gateway Protocol 4 (BGP-4)
-       RFC 4893: BGP Support for Four-octet AS Number Space
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   /*** collection of IP address and hostname related types ***/
-
-   typedef ip-address {
-     type union {
-       type inet:ipv4-address;
-       type inet:ipv6-address;
-     }
-     description
-      "The ip-address type represents an IP address and is IP
-       version neutral.  The format of the textual representations
-       implies the IP version.";
-   }
-
-   typedef ipv4-address {
-     type string {
-       pattern
-         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-       + '(%[\p{N}\p{L}]+)?';
-     }
-     description
-       "The ipv4-address type represents an IPv4 address in
-        dotted-quad notation.  The IPv4 address may include a zone
-        index, separated by a % sign.
-
-        The zone index is used to disambiguate identical address
-        values.  For link-local addresses, the zone index will
-        typically be the interface index number or the name of an
-        interface.  If the zone index is not present, the default
-        zone of the device will be used.
-
-        The canonical format for the zone index is the numerical
-        format";
-   }
-
-   typedef ipv6-address {
-     type string {
-       pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-             + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-             + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-             + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-             + '(%[\p{N}\p{L}]+)?';
-       pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-             + '(%.+)?';
-     }
-     description
-      "The ipv6-address type represents an IPv6 address in full,
-       mixed, shortened, and shortened-mixed notation.  The IPv6
-       address may include a zone index, separated by a % sign.
-
-       The zone index is used to disambiguate identical address
-       values.  For link-local addresses, the zone index will
-       typically be the interface index number or the name of an
-       interface.  If the zone index is not present, the default
-       zone of the device will be used.
-
-       The canonical format of IPv6 addresses uses the compressed
-       format described in RFC 4291, Section 2.2, item 2 with the
-       following additional rules: the :: substitution must be
-       applied to the longest sequence of all-zero 16-bit chunks
-       in an IPv6 address.  If there is a tie, the first sequence
-       of all-zero 16-bit chunks is replaced by ::.  Single
-       all-zero 16-bit chunks are not compressed.  The canonical
-       format uses lowercase characters and leading zeros are
-       not allowed.  The canonical format for the zone index is
-       the numerical format as described in RFC 4007, Section
-       11.2.";
-     reference
-      "RFC 4291: IP Version 6 Addressing Architecture
-       RFC 4007: IPv6 Scoped Address Architecture
-       RFC 5952: A Recommendation for IPv6 Address Text Representation";
-   }
-
-   typedef ip-prefix {
-     type union {
-       type inet:ipv4-prefix;
-       type inet:ipv6-prefix;
-     }
-     description
-      "The ip-prefix type represents an IP prefix and is IP
-       version neutral.  The format of the textual representations
-       implies the IP version.";
-   }
-
-   typedef ipv4-prefix {
-     type string {
-       pattern
-          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-        +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-        + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
-     }
-     description
-      "The ipv4-prefix type represents an IPv4 address prefix.
-       The prefix length is given by the number following the
-       slash character and must be less than or equal to 32.
-
-       A prefix length value of n corresponds to an IP address
-       mask that has n contiguous 1-bits from the most
-       significant bit (MSB) and all other bits set to 0.
-
-       The canonical format of an IPv4 prefix has all bits of
-       the IPv4 address set to zero that are not part of the
-       IPv4 prefix.";
-   }
-
-   typedef ipv6-prefix {
-     type string {
-       pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-             + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-             + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-             + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-             + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
-       pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-             + '(/.+)';
-     }
-     description
-      "The ipv6-prefix type represents an IPv6 address prefix.
-       The prefix length is given by the number following the
-       slash character and must be less than or equal 128.
-
-       A prefix length value of n corresponds to an IP address
-       mask that has n contiguous 1-bits from the most
-       significant bit (MSB) and all other bits set to 0.
-
-       The IPv6 address should have all bits that do not belong
-       to the prefix set to zero.
-
-       The canonical format of an IPv6 prefix has all bits of
-       the IPv6 address set to zero that are not part of the
-       IPv6 prefix.  Furthermore, IPv6 address is represented
-       in the compressed format described in RFC 4291, Section
-       2.2, item 2 with the following additional rules: the ::
-       substitution must be applied to the longest sequence of
-       all-zero 16-bit chunks in an IPv6 address.  If there is
-       a tie, the first sequence of all-zero 16-bit chunks is
-       replaced by ::.  Single all-zero 16-bit chunks are not
-       compressed.  The canonical format uses lowercase
-       characters and leading zeros are not allowed.";
-     reference
-      "RFC 4291: IP Version 6 Addressing Architecture";
-   }
-
-   /*** collection of domain name and URI types ***/
-
-   typedef domain-name {
-     type string {
-       pattern '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
-            +  '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
-            +  '|\.';
-       length "1..253";
-     }
-     description
-      "The domain-name type represents a DNS domain name.  The
-       name SHOULD be fully qualified whenever possible.
-
-       Internet domain names are only loosely specified.  Section
-       3.5 of RFC 1034 recommends a syntax (modified in Section
-       2.1 of RFC 1123).  The pattern above is intended to allow
-       for current practice in domain name use, and some possible
-       future expansion.  It is designed to hold various types of
-       domain names, including names used for A or AAAA records
-       (host names) and other records, such as SRV records.  Note
-       that Internet host names have a stricter syntax (described
-       in RFC 952) than the DNS recommendations in RFCs 1034 and
-       1123, and that systems that want to store host names in
-       schema nodes using the domain-name type are recommended to
-       adhere to this stricter standard to ensure interoperability.
-
-       The encoding of DNS names in the DNS protocol is limited
-       to 255 characters.  Since the encoding consists of labels
-       prefixed by a length bytes and there is a trailing NULL
-       byte, only 253 characters can appear in the textual dotted
-       notation.
-
-       The description clause of schema nodes using the domain-name
-       type MUST describe when and how these names are resolved to
-       IP addresses.  Note that the resolution of a domain-name value
-       may require to query multiple DNS records (e.g., A for IPv4
-       and AAAA for IPv6).  The order of the resolution process and
-       which DNS record takes precedence can either be defined
-       explicitely or it may depend on the configuration of the
-       resolver.
-
-       Domain-name values use the US-ASCII encoding.  Their canonical
-       format uses lowercase US-ASCII characters.  Internationalized
-       domain names MUST be encoded in punycode as described in RFC
-       3492";
-     reference
-      "RFC  952: DoD Internet Host Table Specification
-       RFC 1034: Domain Names - Concepts and Facilities
-       RFC 1123: Requirements for Internet Hosts -- Application
-                 and Support
-       RFC 2782: A DNS RR for specifying the location of services
-                 (DNS SRV)
-       RFC 3492: Punycode: A Bootstring encoding of Unicode for
-                 Internationalized Domain Names in Applications
-                 (IDNA)
-       RFC 5891: Internationalizing Domain Names in Applications
-                 (IDNA): Protocol";
-   }
-
-   typedef host {
-     type union {
-       type inet:ip-address;
-       type inet:domain-name;
-     }
-     description
-      "The host type represents either an IP address or a DNS
-       domain name.";
-   }
-
-   typedef uri {
-     type string;
-     description
-      "The uri type represents a Uniform Resource Identifier
-       (URI) as defined by STD 66.
-
-       Objects using the uri type MUST be in US-ASCII encoding,
-       and MUST be normalized as described by RFC 3986 Sections
-       6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
-       percent-encoding is removed, and all case-insensitive
-       characters are set to lowercase except for hexadecimal
-       digits, which are normalized to uppercase as described in
-       Section 6.2.2.1.
-
-       The purpose of this normalization is to help provide
-       unique URIs.  Note that this normalization is not
-       sufficient to provide uniqueness.  Two URIs that are
-       textually distinct after this normalization may still be
-       equivalent.
-
-       Objects using the uri type may restrict the schemes that
-       they permit.  For example, 'data:' and 'urn:' schemes
-       might not be appropriate.
-
-       A zero-length URI is not a valid URI.  This can be used to
-       express 'URI absent' where required.
-
-       In the value set and its semantics, this type is equivalent
-       to the Uri SMIv2 textual convention defined in RFC 5017.";
-     reference
-      "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
-       RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
-                 Group: Uniform Resource Identifiers (URIs), URLs,
-                 and Uniform Resource Names (URNs): Clarifications
-                 and Recommendations
-       RFC 5017: MIB Textual Conventions for Uniform Resource
-                 Identifiers (URIs)";
-   }
-
- }
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-inet-types@2013-07-15.yang b/sdnr/model/yang/ietf-inet-types@2013-07-15.yang
deleted file mode 100644 (file)
index 0ca5628..0000000
+++ /dev/null
@@ -1,457 +0,0 @@
-module ietf-inet-types {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
-  prefix "inet";
-
-  organization
-   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-  contact
-   "WG Web:   <http://tools.ietf.org/wg/netmod/>
-    WG List:  <mailto:netmod@ietf.org>
-
-    WG Chair: David Kessens
-              <mailto:david.kessens@nsn.com>
-
-    WG Chair: Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>
-
-    Editor:   Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>";
-
-  description
-   "This module contains a collection of generally useful derived
-    YANG data types for Internet addresses and related things.
-
-    Copyright (c) 2013 IETF Trust and the persons identified as
-    authors of the code.  All rights reserved.
-
-    Redistribution and use in source and binary forms, with or
-    without modification, is permitted pursuant to, and subject
-    to the license terms contained in, the Simplified BSD License
-    set forth in Section 4.c of the IETF Trust's Legal Provisions
-    Relating to IETF Documents
-    (http://trustee.ietf.org/license-info).
-
-    This version of this YANG module is part of RFC 6991; see
-    the RFC itself for full legal notices.";
-
-  revision 2013-07-15 {
-    description
-     "This revision adds the following new data types:
-      - ip-address-no-zone
-      - ipv4-address-no-zone
-      - ipv6-address-no-zone";
-    reference
-     "RFC 6991: Common YANG Data Types";
-  }
-
-  revision 2010-09-24 {
-    description
-     "Initial revision.";
-    reference
-     "RFC 6021: Common YANG Data Types";
-  }
-
-  /*** collection of types related to protocol fields ***/
-
-  typedef ip-version {
-    type enumeration {
-      enum unknown {
-        value "0";
-        description
-         "An unknown or unspecified version of the Internet
-          protocol.";
-      }
-      enum ipv4 {
-        value "1";
-        description
-         "The IPv4 protocol as defined in RFC 791.";
-      }
-      enum ipv6 {
-        value "2";
-        description
-         "The IPv6 protocol as defined in RFC 2460.";
-      }
-    }
-    description
-     "This value represents the version of the IP protocol.
-
-      In the value set and its semantics, this type is equivalent
-      to the InetVersion textual convention of the SMIv2.";
-    reference
-     "RFC  791: Internet Protocol
-      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
-      RFC 4001: Textual Conventions for Internet Network Addresses";
-  }
-
-  typedef dscp {
-    type uint8 {
-      range "0..63";
-    }
-    description
-     "The dscp type represents a Differentiated Services Code Point
-      that may be used for marking packets in a traffic stream.
-      In the value set and its semantics, this type is equivalent
-      to the Dscp textual convention of the SMIv2.";
-    reference
-     "RFC 3289: Management Information Base for the Differentiated
-                Services Architecture
-      RFC 2474: Definition of the Differentiated Services Field
-                (DS Field) in the IPv4 and IPv6 Headers
-      RFC 2780: IANA Allocation Guidelines For Values In
-                the Internet Protocol and Related Headers";
-  }
-
-  typedef ipv6-flow-label {
-    type uint32 {
-      range "0..1048575";
-    }
-    description
-     "The ipv6-flow-label type represents the flow identifier or Flow
-      Label in an IPv6 packet header that may be used to
-      discriminate traffic flows.
-
-      In the value set and its semantics, this type is equivalent
-      to the IPv6FlowLabel textual convention of the SMIv2.";
-    reference
-     "RFC 3595: Textual Conventions for IPv6 Flow Label
-      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
-  }
-
-  typedef port-number {
-    type uint16 {
-      range "0..65535";
-    }
-    description
-     "The port-number type represents a 16-bit port number of an
-      Internet transport-layer protocol such as UDP, TCP, DCCP, or
-      SCTP.  Port numbers are assigned by IANA.  A current list of
-      all assignments is available from <http://www.iana.org/>.
-
-      Note that the port number value zero is reserved by IANA.  In
-      situations where the value zero does not make sense, it can
-      be excluded by subtyping the port-number type.
-      In the value set and its semantics, this type is equivalent
-      to the InetPortNumber textual convention of the SMIv2.";
-    reference
-     "RFC  768: User Datagram Protocol
-      RFC  793: Transmission Control Protocol
-      RFC 4960: Stream Control Transmission Protocol
-      RFC 4340: Datagram Congestion Control Protocol (DCCP)
-      RFC 4001: Textual Conventions for Internet Network Addresses";
-  }
-
-  /*** collection of types related to autonomous systems ***/
-
-  typedef as-number {
-    type uint32;
-    description
-     "The as-number type represents autonomous system numbers
-      which identify an Autonomous System (AS).  An AS is a set
-      of routers under a single technical administration, using
-      an interior gateway protocol and common metrics to route
-      packets within the AS, and using an exterior gateway
-      protocol to route packets to other ASes.  IANA maintains
-      the AS number space and has delegated large parts to the
-      regional registries.
-
-      Autonomous system numbers were originally limited to 16
-      bits.  BGP extensions have enlarged the autonomous system
-      number space to 32 bits.  This type therefore uses an uint32
-      base type without a range restriction in order to support
-      a larger autonomous system number space.
-
-      In the value set and its semantics, this type is equivalent
-      to the InetAutonomousSystemNumber textual convention of
-      the SMIv2.";
-    reference
-     "RFC 1930: Guidelines for creation, selection, and registration
-                of an Autonomous System (AS)
-      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
-      RFC 4001: Textual Conventions for Internet Network Addresses
-      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
-                Number Space";
-  }
-
-  /*** collection of types related to IP addresses and hostnames ***/
-
-  typedef ip-address {
-    type union {
-      type inet:ipv4-address;
-      type inet:ipv6-address;
-    }
-    description
-     "The ip-address type represents an IP address and is IP
-      version neutral.  The format of the textual representation
-      implies the IP version.  This type supports scoped addresses
-      by allowing zone identifiers in the address format.";
-    reference
-     "RFC 4007: IPv6 Scoped Address Architecture";
-  }
-
-  typedef ipv4-address {
-    type string {
-      pattern
-        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-      + '(%[\p{N}\p{L}]+)?';
-    }
-    description
-      "The ipv4-address type represents an IPv4 address in
-       dotted-quad notation.  The IPv4 address may include a zone
-       index, separated by a % sign.
-
-       The zone index is used to disambiguate identical address
-       values.  For link-local addresses, the zone index will
-       typically be the interface index number or the name of an
-       interface.  If the zone index is not present, the default
-       zone of the device will be used.
-
-       The canonical format for the zone index is the numerical
-       format";
-  }
-
-  typedef ipv6-address {
-    type string {
-      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-            + '(%[\p{N}\p{L}]+)?';
-      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-            + '(%.+)?';
-    }
-    description
-     "The ipv6-address type represents an IPv6 address in full,
-      mixed, shortened, and shortened-mixed notation.  The IPv6
-      address may include a zone index, separated by a % sign.
-
-      The zone index is used to disambiguate identical address
-      values.  For link-local addresses, the zone index will
-      typically be the interface index number or the name of an
-      interface.  If the zone index is not present, the default
-      zone of the device will be used.
-
-      The canonical format of IPv6 addresses uses the textual
-      representation defined in Section 4 of RFC 5952.  The
-      canonical format for the zone index is the numerical
-      format as described in Section 11.2 of RFC 4007.";
-    reference
-     "RFC 4291: IP Version 6 Addressing Architecture
-      RFC 4007: IPv6 Scoped Address Architecture
-      RFC 5952: A Recommendation for IPv6 Address Text
-                Representation";
-  }
-
-  typedef ip-address-no-zone {
-    type union {
-      type inet:ipv4-address-no-zone;
-      type inet:ipv6-address-no-zone;
-    }
-    description
-     "The ip-address-no-zone type represents an IP address and is
-      IP version neutral.  The format of the textual representation
-      implies the IP version.  This type does not support scoped
-      addresses since it does not allow zone identifiers in the
-      address format.";
-    reference
-     "RFC 4007: IPv6 Scoped Address Architecture";
-  }
-
-  typedef ipv4-address-no-zone {
-    type inet:ipv4-address {
-      pattern '[0-9\.]*';
-    }
-    description
-      "An IPv4 address without a zone index.  This type, derived from
-       ipv4-address, may be used in situations where the zone is
-       known from the context and hence no zone index is needed.";
-  }
-
-  typedef ipv6-address-no-zone {
-    type inet:ipv6-address {
-      pattern '[0-9a-fA-F:\.]*';
-    }
-    description
-      "An IPv6 address without a zone index.  This type, derived from
-       ipv6-address, may be used in situations where the zone is
-       known from the context and hence no zone index is needed.";
-    reference
-     "RFC 4291: IP Version 6 Addressing Architecture
-      RFC 4007: IPv6 Scoped Address Architecture
-      RFC 5952: A Recommendation for IPv6 Address Text
-                Representation";
-  }
-
-  typedef ip-prefix {
-    type union {
-      type inet:ipv4-prefix;
-      type inet:ipv6-prefix;
-    }
-    description
-     "The ip-prefix type represents an IP prefix and is IP
-      version neutral.  The format of the textual representations
-      implies the IP version.";
-  }
-
-  typedef ipv4-prefix {
-    type string {
-      pattern
-         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
-    }
-    description
-     "The ipv4-prefix type represents an IPv4 address prefix.
-      The prefix length is given by the number following the
-      slash character and must be less than or equal to 32.
-
-      A prefix length value of n corresponds to an IP address
-      mask that has n contiguous 1-bits from the most
-      significant bit (MSB) and all other bits set to 0.
-
-      The canonical format of an IPv4 prefix has all bits of
-      the IPv4 address set to zero that are not part of the
-      IPv4 prefix.";
-  }
-
-  typedef ipv6-prefix {
-    type string {
-      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
-      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-            + '(/.+)';
-    }
-    description
-     "The ipv6-prefix type represents an IPv6 address prefix.
-      The prefix length is given by the number following the
-      slash character and must be less than or equal to 128.
-
-      A prefix length value of n corresponds to an IP address
-      mask that has n contiguous 1-bits from the most
-      significant bit (MSB) and all other bits set to 0.
-
-      The IPv6 address should have all bits that do not belong
-      to the prefix set to zero.
-
-      The canonical format of an IPv6 prefix has all bits of
-      the IPv6 address set to zero that are not part of the
-      IPv6 prefix.  Furthermore, the IPv6 address is represented
-      as defined in Section 4 of RFC 5952.";
-    reference
-     "RFC 5952: A Recommendation for IPv6 Address Text
-                Representation";
-  }
-
-  /*** collection of domain name and URI types ***/
-
-  typedef domain-name {
-    type string {
-      pattern
-        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
-      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
-      + '|\.';
-      length "1..253";
-    }
-    description
-     "The domain-name type represents a DNS domain name.  The
-      name SHOULD be fully qualified whenever possible.
-
-      Internet domain names are only loosely specified.  Section
-      3.5 of RFC 1034 recommends a syntax (modified in Section
-      2.1 of RFC 1123).  The pattern above is intended to allow
-      for current practice in domain name use, and some possible
-      future expansion.  It is designed to hold various types of
-      domain names, including names used for A or AAAA records
-      (host names) and other records, such as SRV records.  Note
-      that Internet host names have a stricter syntax (described
-      in RFC 952) than the DNS recommendations in RFCs 1034 and
-      1123, and that systems that want to store host names in
-      schema nodes using the domain-name type are recommended to
-      adhere to this stricter standard to ensure interoperability.
-
-      The encoding of DNS names in the DNS protocol is limited
-      to 255 characters.  Since the encoding consists of labels
-      prefixed by a length bytes and there is a trailing NULL
-      byte, only 253 characters can appear in the textual dotted
-      notation.
-
-      The description clause of schema nodes using the domain-name
-      type MUST describe when and how these names are resolved to
-      IP addresses.  Note that the resolution of a domain-name value
-      may require to query multiple DNS records (e.g., A for IPv4
-      and AAAA for IPv6).  The order of the resolution process and
-      which DNS record takes precedence can either be defined
-      explicitly or may depend on the configuration of the
-      resolver.
-
-      Domain-name values use the US-ASCII encoding.  Their canonical
-      format uses lowercase US-ASCII characters.  Internationalized
-      domain names MUST be A-labels as per RFC 5890.";
-    reference
-     "RFC  952: DoD Internet Host Table Specification
-      RFC 1034: Domain Names - Concepts and Facilities
-      RFC 1123: Requirements for Internet Hosts -- Application
-                and Support
-      RFC 2782: A DNS RR for specifying the location of services
-                (DNS SRV)
-      RFC 5890: Internationalized Domain Names in Applications
-                (IDNA): Definitions and Document Framework";
-  }
-
-  typedef host {
-    type union {
-      type inet:ip-address;
-      type inet:domain-name;
-    }
-    description
-     "The host type represents either an IP address or a DNS
-      domain name.";
-  }
-
-  typedef uri {
-    type string;
-    description
-     "The uri type represents a Uniform Resource Identifier
-      (URI) as defined by STD 66.
-
-      Objects using the uri type MUST be in US-ASCII encoding,
-      and MUST be normalized as described by RFC 3986 Sections
-      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
-      percent-encoding is removed, and all case-insensitive
-      characters are set to lowercase except for hexadecimal
-      digits, which are normalized to uppercase as described in
-      Section 6.2.2.1.
-
-      The purpose of this normalization is to help provide
-      unique URIs.  Note that this normalization is not
-      sufficient to provide uniqueness.  Two URIs that are
-      textually distinct after this normalization may still be
-      equivalent.
-
-      Objects using the uri type may restrict the schemes that
-      they permit.  For example, 'data:' and 'urn:' schemes
-      might not be appropriate.
-
-      A zero-length URI is not a valid URI.  This can be used to
-      express 'URI absent' where required.
-
-      In the value set and its semantics, this type is equivalent
-      to the Uri SMIv2 textual convention defined in RFC 5017.";
-    reference
-     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
-      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
-                Group: Uniform Resource Identifiers (URIs), URLs,
-                and Uniform Resource Names (URNs): Clarifications
-                and Recommendations
-      RFC 5017: MIB Textual Conventions for Uniform Resource
-                Identifiers (URIs)";
-  }
-
-}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-netconf-acm@2012-02-22.yang b/sdnr/model/yang/ietf-netconf-acm@2012-02-22.yang
deleted file mode 100644 (file)
index 05be765..0000000
+++ /dev/null
@@ -1,449 +0,0 @@
-module ietf-netconf-acm {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-acm";
-
-  prefix "nacm";
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netconf/>
-     WG List:  <mailto:netconf@ietf.org>
-
-     WG Chair: Mehmet Ersue
-               <mailto:mehmet.ersue@nsn.com>
-
-     WG Chair: Bert Wijnen
-               <mailto:bertietf@bwijnen.net>
-
-     Editor:   Andy Bierman
-               <mailto:andy@yumaworks.com>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>";
-
-  description
-    "NETCONF Access Control Model.
-
-     Copyright (c) 2012 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD
-     License set forth in Section 4.c of the IETF Trust's
-     Legal Provisions Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6536; see
-     the RFC itself for full legal notices.";
-
-  revision "2012-02-22" {
-    description
-      "Initial version";
-    reference
-      "RFC 6536: Network Configuration Protocol (NETCONF)
-                 Access Control Model";
-  }
-
-  /*
-   * Extension statements
-   */
-
-  extension default-deny-write {
-    description
-      "Used to indicate that the data model node
-       represents a sensitive security system parameter.
-
-       If present, and the NACM module is enabled (i.e.,
-       /nacm/enable-nacm object equals 'true'), the NETCONF server
-       will only allow the designated 'recovery session' to have
-       write access to the node.  An explicit access control rule is
-       required for all other users.
-
-       The 'default-deny-write' extension MAY appear within a data
-       definition statement.  It is ignored otherwise.";
-  }
-
-  extension default-deny-all {
-    description
-      "Used to indicate that the data model node
-       controls a very sensitive security system parameter.
-
-       If present, and the NACM module is enabled (i.e.,
-       /nacm/enable-nacm object equals 'true'), the NETCONF server
-       will only allow the designated 'recovery session' to have
-       read, write, or execute access to the node.  An explicit
-       access control rule is required for all other users.
-
-       The 'default-deny-all' extension MAY appear within a data
-       definition statement, 'rpc' statement, or 'notification'
-       statement.  It is ignored otherwise.";
-  }
-
-  /*
-   * Derived types
-   */
-
-  typedef user-name-type {
-    type string {
-      length "1..max";
-    }
-    description
-      "General Purpose Username string.";
-  }
-
-  typedef matchall-string-type {
-    type string {
-      pattern "\*";
-    }
-    description
-      "The string containing a single asterisk '*' is used
-       to conceptually represent all possible values
-       for the particular leaf using this data type.";
-  }
-
-  typedef access-operations-type {
-    type bits {
-      bit create {
-        description
-          "Any protocol operation that creates a
-           new data node.";
-      }
-      bit read {
-        description
-          "Any protocol operation or notification that
-           returns the value of a data node.";
-      }
-      bit update {
-        description
-          "Any protocol operation that alters an existing
-           data node.";
-      }
-      bit delete {
-        description
-          "Any protocol operation that removes a data node.";
-      }
-      bit exec {
-        description
-          "Execution access to the specified protocol operation.";
-      }
-    }
-    description
-      "NETCONF Access Operation.";
-  }
-
-  typedef group-name-type {
-    type string {
-      length "1..max";
-      pattern "[^\*].*";
-    }
-    description
-      "Name of administrative group to which
-       users can be assigned.";
-  }
-
-  typedef action-type {
-    type enumeration {
-      enum permit {
-        description
-          "Requested action is permitted.";
-      }
-      enum deny {
-        description
-          "Requested action is denied.";
-      }
-    }
-    description
-      "Action taken by the server when a particular
-       rule matches.";
-  }
-
-  typedef node-instance-identifier {
-    type yang:xpath1.0;
-    description
-      "Path expression used to represent a special
-       data node instance identifier string.
-
-       A node-instance-identifier value is an
-       unrestricted YANG instance-identifier expression.
-       All the same rules as an instance-identifier apply
-       except predicates for keys are optional.  If a key
-       predicate is missing, then the node-instance-identifier
-       represents all possible server instances for that key.
-
-       This XPath expression is evaluated in the following context:
-
-        o  The set of namespace declarations are those in scope on
-           the leaf element where this type is used.
-
-        o  The set of variable bindings contains one variable,
-           'USER', which contains the name of the user of the current
-            session.
-
-        o  The function library is the core function library, but
-           note that due to the syntax restrictions of an
-           instance-identifier, no functions are allowed.
-
-        o  The context node is the root node in the data tree.";
-  }
-
-  /*
-   * Data definition statements
-   */
-
-  container nacm {
-    nacm:default-deny-all;
-
-    description
-      "Parameters for NETCONF Access Control Model.";
-
-    leaf enable-nacm {
-      type boolean;
-      default true;
-      description
-        "Enables or disables all NETCONF access control
-         enforcement.  If 'true', then enforcement
-         is enabled.  If 'false', then enforcement
-         is disabled.";
-    }
-
-    leaf read-default {
-      type action-type;
-      default "permit";
-      description
-        "Controls whether read access is granted if
-         no appropriate rule is found for a
-         particular read request.";
-    }
-
-    leaf write-default {
-      type action-type;
-      default "deny";
-      description
-        "Controls whether create, update, or delete access
-         is granted if no appropriate rule is found for a
-         particular write request.";
-    }
-
-    leaf exec-default {
-      type action-type;
-      default "permit";
-      description
-        "Controls whether exec access is granted if no appropriate
-         rule is found for a particular protocol operation request.";
-    }
-
-    leaf enable-external-groups {
-      type boolean;
-      default true;
-      description
-        "Controls whether the server uses the groups reported by the
-         NETCONF transport layer when it assigns the user to a set of
-         NACM groups.  If this leaf has the value 'false', any group
-         names reported by the transport layer are ignored by the
-         server.";
-    }
-
-    leaf denied-operations {
-      type yang:zero-based-counter32;
-      config false;
-      mandatory true;
-      description
-        "Number of times since the server last restarted that a
-         protocol operation request was denied.";
-    }
-
-    leaf denied-data-writes {
-      type yang:zero-based-counter32;
-      config false;
-      mandatory true;
-      description
-        "Number of times since the server last restarted that a
-         protocol operation request to alter
-         a configuration datastore was denied.";
-    }
-
-    leaf denied-notifications {
-      type yang:zero-based-counter32;
-      config false;
-      mandatory true;
-      description
-        "Number of times since the server last restarted that
-         a notification was dropped for a subscription because
-         access to the event type was denied.";
-    }
-
-    container groups {
-      description
-        "NETCONF Access Control Groups.";
-
-      list group {
-        key name;
-
-        description
-          "One NACM Group Entry.  This list will only contain
-           configured entries, not any entries learned from
-           any transport protocols.";
-
-        leaf name {
-          type group-name-type;
-          description
-            "Group name associated with this entry.";
-        }
-
-        leaf-list user-name {
-          type user-name-type;
-          description
-            "Each entry identifies the username of
-             a member of the group associated with
-             this entry.";
-        }
-      }
-    }
-
-    list rule-list {
-      key "name";
-      ordered-by user;
-      description
-        "An ordered collection of access control rules.";
-
-      leaf name {
-        type string {
-          length "1..max";
-        }
-        description
-          "Arbitrary name assigned to the rule-list.";
-      }
-      leaf-list group {
-        type union {
-          type matchall-string-type;
-          type group-name-type;
-        }
-        description
-          "List of administrative groups that will be
-           assigned the associated access rights
-           defined by the 'rule' list.
-
-           The string '*' indicates that all groups apply to the
-           entry.";
-      }
-
-      list rule {
-        key "name";
-        ordered-by user;
-        description
-          "One access control rule.
-
-           Rules are processed in user-defined order until a match is
-           found.  A rule matches if 'module-name', 'rule-type', and
-           'access-operations' match the request.  If a rule
-           matches, the 'action' leaf determines if access is granted
-           or not.";
-
-        leaf name {
-          type string {
-            length "1..max";
-          }
-          description
-            "Arbitrary name assigned to the rule.";
-        }
-
-        leaf module-name {
-          type union {
-            type matchall-string-type;
-            type string;
-          }
-          default "*";
-          description
-            "Name of the module associated with this rule.
-
-             This leaf matches if it has the value '*' or if the
-             object being accessed is defined in the module with the
-             specified module name.";
-        }
-        choice rule-type {
-          description
-            "This choice matches if all leafs present in the rule
-             match the request.  If no leafs are present, the
-             choice matches all requests.";
-          case protocol-operation {
-            leaf rpc-name {
-              type union {
-                type matchall-string-type;
-                type string;
-              }
-              description
-                "This leaf matches if it has the value '*' or if
-                 its value equals the requested protocol operation
-                 name.";
-            }
-          }
-          case notification {
-            leaf notification-name {
-              type union {
-                type matchall-string-type;
-                type string;
-              }
-              description
-                "This leaf matches if it has the value '*' or if its
-                 value equals the requested notification name.";
-            }
-          }
-          case data-node {
-            leaf path {
-              type node-instance-identifier;
-              mandatory true;
-              description
-                "Data Node Instance Identifier associated with the
-                 data node controlled by this rule.
-
-                 Configuration data or state data instance
-                 identifiers start with a top-level data node.  A
-                 complete instance identifier is required for this
-                 type of path value.
-
-                 The special value '/' refers to all possible
-                 datastore contents.";
-            }
-          }
-        }
-
-        leaf access-operations {
-          type union {
-            type matchall-string-type;
-            type access-operations-type;
-          }
-          default "*";
-          description
-            "Access operations associated with this rule.
-
-             This leaf matches if it has the value '*' or if the
-             bit corresponding to the requested operation is set.";
-        }
-
-        leaf action {
-          type action-type;
-          mandatory true;
-          description
-            "The access control action associated with the
-             rule.  If a rule is determined to match a
-             particular request, then this object is used
-             to determine whether to permit or deny the
-             request.";
-        }
-
-        leaf comment {
-          type string;
-          description
-            "A textual description of the access rule.";
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-netconf-monitoring@2010-10-04.yang b/sdnr/model/yang/ietf-netconf-monitoring@2010-10-04.yang
deleted file mode 100644 (file)
index 48a0e56..0000000
+++ /dev/null
@@ -1,558 +0,0 @@
-module ietf-netconf-monitoring {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring";
-  prefix "ncm";
-
-  import ietf-yang-types { prefix yang; }
-  import ietf-inet-types { prefix inet; }
-
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netconf/>
-     WG List:  <mailto:netconf@ietf.org>
-
-     WG Chair: Mehmet Ersue
-               <mailto:mehmet.ersue@nsn.com>
-
-     WG Chair: Bert Wijnen
-               <mailto:bertietf@bwijnen.net>
-
-     Editor:   Mark Scott
-               <mailto:mark.scott@ericsson.com>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>";
-
-  description
-    "NETCONF Monitoring Module.
-     All elements in this module are read-only.
-
-     Copyright (c) 2010 IETF Trust and the persons identified as
-     authors of the code. All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD
-     License set forth in Section 4.c of the IETF Trust's
-     Legal Provisions Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6022; see
-     the RFC itself for full legal notices.";
-
-  revision 2010-10-04 {
-    description
-      "Initial revision.";
-    reference
-      "RFC 6022: YANG Module for NETCONF Monitoring";
-  }
-
-  typedef netconf-datastore-type {
-    type enumeration {
-      enum running;
-      enum candidate;
-      enum startup;
-    }
-    description
-      "Enumeration of possible NETCONF datastore types.";
-    reference
-      "RFC 4741: NETCONF Configuration Protocol";
-  }
-
-  identity transport {
-    description
-      "Base identity for NETCONF transport types.";
-  }
-
-  identity netconf-ssh {
-    base transport;
-    description
-      "NETCONF over Secure Shell (SSH).";
-    reference
-      "RFC 4742: Using the NETCONF Configuration Protocol
-                 over Secure SHell (SSH)";
-  }
-
-  identity netconf-soap-over-beep {
-    base transport;
-    description
-      "NETCONF over Simple Object Access Protocol (SOAP) over
-       Blocks Extensible Exchange Protocol (BEEP).";
-    reference
-      "RFC 4743: Using NETCONF over the Simple Object
-                 Access Protocol (SOAP)";
-  }
-
-  identity netconf-soap-over-https {
-    base transport;
-    description
-      "NETCONF over Simple Object Access Protocol (SOAP)
-      over Hypertext Transfer Protocol Secure (HTTPS).";
-    reference
-      "RFC 4743: Using NETCONF over the Simple Object
-                 Access Protocol (SOAP)";
-  }
-
-  identity netconf-beep {
-    base transport;
-    description
-      "NETCONF over Blocks Extensible Exchange Protocol (BEEP).";
-    reference
-      "RFC 4744: Using the NETCONF Protocol over the
-                 Blocks Extensible Exchange Protocol (BEEP)";
-  }
-
-  identity netconf-tls {
-    base transport;
-    description
-      "NETCONF over Transport Layer Security (TLS).";
-    reference
-      "RFC 5539: NETCONF over Transport Layer Security (TLS)";
-  }
-
-  identity schema-format {
-    description
-      "Base identity for data model schema languages.";
-  }
-
-  identity xsd {
-    base schema-format;
-    description
-      "W3C XML Schema Definition.";
-    reference
-      "W3C REC REC-xmlschema-1-20041028:
-         XML Schema Part 1: Structures";
-  }
-
-  identity yang {
-    base schema-format;
-    description
-      "The YANG data modeling language for NETCONF.";
-    reference
-      "RFC 6020:  YANG - A Data Modeling Language for the
-                  Network Configuration Protocol (NETCONF)";
-  }
-
-  identity yin {
-    base schema-format;
-    description
-      "The YIN syntax for YANG.";
-    reference
-      "RFC 6020:  YANG - A Data Modeling Language for the
-                  Network Configuration Protocol (NETCONF)";
-  }
-
-  identity rng {
-    base schema-format;
-    description
-      "Regular Language for XML Next Generation (RELAX NG).";
-    reference
-      "ISO/IEC 19757-2:2008: RELAX NG";
-  }
-
-  identity rnc {
-    base schema-format;
-    description
-      "Relax NG Compact Syntax";
-    reference
-      "ISO/IEC 19757-2:2008: RELAX NG";
-  }
-
-  grouping common-counters {
-    description
-      "Counters that exist both per session, and also globally,
-       accumulated from all sessions.";
-
-    leaf in-rpcs {
-      type yang:zero-based-counter32;
-      description
-        "Number of correct <rpc> messages received.";
-    }
-    leaf in-bad-rpcs {
-      type yang:zero-based-counter32;
-      description
-        "Number of messages received when an <rpc> message was expected,
-         that were not correct <rpc> messages.  This includes XML parse
-         errors and errors on the rpc layer.";
-    }
-    leaf out-rpc-errors {
-      type yang:zero-based-counter32;
-      description
-        "Number of <rpc-reply> messages sent that contained an
-         <rpc-error> element.";
-    }
-    leaf out-notifications {
-      type yang:zero-based-counter32;
-      description
-        "Number of <notification> messages sent.";
-    }
-  }
-
-  container netconf-state {
-    config false;
-    description
-      "The netconf-state container is the root of the monitoring
-       data model.";
-
-    container capabilities {
-      description
-        "Contains the list of NETCONF capabilities supported by the
-         server.";
-
-      leaf-list capability {
-        type inet:uri;
-        description
-          "List of NETCONF capabilities supported by the server.";
-      }
-    }
-
-    container datastores {
-      description
-        "Contains the list of NETCONF configuration datastores.";
-
-      list datastore {
-        key name;
-        description
-          "List of NETCONF configuration datastores supported by
-           the NETCONF server and related information.";
-
-        leaf name {
-          type netconf-datastore-type;
-          description
-            "Name of the datastore associated with this list entry.";
-        }
-        container locks {
-          presence
-            "This container is present only if the datastore
-             is locked.";
-          description
-            "The NETCONF <lock> and <partial-lock> operations allow
-             a client to lock specific resources in a datastore.  The
-             NETCONF server will prevent changes to the locked
-             resources by all sessions except the one that acquired
-             the lock(s).
-
-             Monitoring information is provided for each datastore
-             entry including details such as the session that acquired
-             the lock, the type of lock (global or partial) and the
-             list of locked resources.  Multiple locks per datastore
-             are supported.";
-
-          grouping lock-info {
-            description
-              "Lock related parameters, common to both global and
-               partial locks.";
-
-            leaf locked-by-session {
-              type uint32;
-              mandatory true;
-              description
-                "The session ID of the session that has locked
-                 this resource.  Both a global lock and a partial
-                 lock MUST contain the NETCONF session-id.
-
-                 If the lock is held by a session that is not managed
-                 by the NETCONF server (e.g., a CLI session), a session
-                 id of 0 (zero) is reported.";
-              reference
-                "RFC 4741: NETCONF Configuration Protocol";
-            }
-            leaf locked-time {
-              type yang:date-and-time;
-              mandatory true;
-              description
-                "The date and time of when the resource was
-                 locked.";
-            }
-          }
-
-          choice lock-type {
-            description
-              "Indicates if a global lock or a set of partial locks
-               are set.";
-
-            container global-lock {
-              description
-                "Present if the global lock is set.";
-              uses lock-info;
-            }
-
-            list partial-lock {
-              key lock-id;
-              description
-                "List of partial locks.";
-              reference
-                "RFC 5717: Partial Lock Remote Procedure Call (RPC) for
-                           NETCONF";
-
-              leaf lock-id {
-                type uint32;
-                description
-                  "This is the lock id returned in the <partial-lock>
-                   response.";
-              }
-              uses lock-info;
-              leaf-list select {
-                type yang:xpath1.0;
-                min-elements 1;
-                description
-                  "The xpath expression that was used to request
-                   the lock.  The select expression indicates the
-                   original intended scope of the lock.";
-              }
-              leaf-list locked-node {
-                type instance-identifier;
-                description
-                  "The list of instance-identifiers (i.e., the
-                   locked nodes).
-
-                   The scope of the partial lock is defined by the list
-                   of locked nodes.";
-              }
-            }
-          }
-        }
-      }
-    }
-
-    container schemas {
-      description
-        "Contains the list of data model schemas supported by the
-         server.";
-
-      list schema {
-        key "identifier version format";
-
-        description
-          "List of data model schemas supported by the server.";
-
-        leaf identifier {
-          type string;
-          description
-            "Identifier to uniquely reference the schema.  The
-             identifier is used in the <get-schema> operation and may
-             be used for other purposes such as file retrieval.
-
-             For modeling languages that support or require a data
-             model name (e.g., YANG module name) the identifier MUST
-             match that name.  For YANG data models, the identifier is
-             the name of the module or submodule.  In other cases, an
-             identifier such as a filename MAY be used instead.";
-        }
-        leaf version {
-          type string;
-          description
-            "Version of the schema supported.  Multiple versions MAY be
-             supported simultaneously by a NETCONF server.  Each
-             version MUST be reported individually in the schema list,
-             i.e., with same identifier, possibly different location,
-             but different version.
-
-             For YANG data models, version is the value of the most
-             recent YANG 'revision' statement in the module or
-             submodule, or the empty string if no 'revision' statement
-             is present.";
-        }
-        leaf format {
-          type identityref {
-            base schema-format;
-          }
-          description
-            "The data modeling language the schema is written
-             in (currently xsd, yang, yin, rng, or rnc).
-             For YANG data models, 'yang' format MUST be supported and
-             'yin' format MAY also be provided.";
-        }
-        leaf namespace {
-          type inet:uri;
-          mandatory true;
-          description
-            "The XML namespace defined by the data model.
-
-             For YANG data models, this is the module's namespace.
-             If the list entry describes a submodule, this field
-             contains the namespace of the module to which the
-             submodule belongs.";
-        }
-        leaf-list location {
-          type union {
-            type enumeration {
-              enum "NETCONF";
-            }
-            type inet:uri;
-          }
-          description
-            "One or more locations from which the schema can be
-             retrieved.  This list SHOULD contain at least one
-             entry per schema.
-
-             A schema entry may be located on a remote file system
-             (e.g., reference to file system for ftp retrieval) or
-             retrieved directly from a server supporting the
-             <get-schema> operation (denoted by the value 'NETCONF').";
-        }
-      }
-    }
-
-    container sessions {
-      description
-        "The sessions container includes session-specific data for
-         NETCONF management sessions.  The session list MUST include
-         all currently active NETCONF sessions.";
-
-      list session {
-        key session-id;
-        description
-          "All NETCONF sessions managed by the NETCONF server
-           MUST be reported in this list.";
-
-        leaf session-id {
-          type uint32 {
-            range "1..max";
-          }
-          description
-            "Unique identifier for the session.  This value is the
-             NETCONF session identifier, as defined in RFC 4741.";
-          reference
-            "RFC 4741: NETCONF Configuration Protocol";
-        }
-        leaf transport {
-          type identityref {
-            base transport;
-          }
-          mandatory true;
-          description
-            "Identifies the transport for each session, e.g.,
-            'netconf-ssh', 'netconf-soap', etc.";
-        }
-        leaf username  {
-          type string;
-          mandatory true;
-          description
-            "The username is the client identity that was authenticated
-            by the NETCONF transport protocol.  The algorithm used to
-            derive the username is NETCONF transport protocol specific
-            and in addition specific to the authentication mechanism
-            used by the NETCONF transport protocol.";
-        }
-        leaf source-host {
-          type inet:host;
-          description
-            "Host identifier of the NETCONF client.  The value
-             returned is implementation specific (e.g., hostname,
-             IPv4 address, IPv6 address)";
-        }
-        leaf login-time {
-          type yang:date-and-time;
-          mandatory true;
-          description
-            "Time at the server at which the session was established.";
-        }
-        uses common-counters {
-          description
-            "Per-session counters.  Zero based with following reset
-             behaviour:
-               - at start of a session
-               - when max value is reached";
-        }
-      }
-    }
-
-    container statistics {
-      description
-        "Statistical data pertaining to the NETCONF server.";
-
-      leaf netconf-start-time {
-        type yang:date-and-time;
-        description
-          "Date and time at which the management subsystem was
-           started.";
-      }
-      leaf in-bad-hellos {
-        type yang:zero-based-counter32;
-        description
-          "Number of sessions silently dropped because an
-          invalid <hello> message was received.  This includes <hello>
-          messages with a 'session-id' attribute, bad namespace, and
-          bad capability declarations.";
-      }
-      leaf in-sessions {
-        type yang:zero-based-counter32;
-        description
-          "Number of sessions started.  This counter is incremented
-           when a <hello> message with a <session-id> is sent.
-
-          'in-sessions' - 'in-bad-hellos' =
-              'number of correctly started netconf sessions'";
-      }
-      leaf dropped-sessions {
-        type yang:zero-based-counter32;
-        description
-          "Number of sessions that were abnormally terminated, e.g.,
-           due to idle timeout or transport close.  This counter is not
-           incremented when a session is properly closed by a
-           <close-session> operation, or killed by a <kill-session>
-           operation.";
-      }
-      uses common-counters {
-        description
-          "Global counters, accumulated from all sessions.
-           Zero based with following reset behaviour:
-             - re-initialization of NETCONF server
-             - when max value is reached";
-      }
-    }
-  }
-
-  rpc get-schema {
-    description
-      "This operation is used to retrieve a schema from the
-       NETCONF server.
-
-       Positive Response:
-         The NETCONF server returns the requested schema.
-
-       Negative Response:
-         If requested schema does not exist, the <error-tag> is
-         'invalid-value'.
-
-         If more than one schema matches the requested parameters, the
-         <error-tag> is 'operation-failed', and <error-app-tag> is
-         'data-not-unique'.";
-
-    input {
-      leaf identifier {
-        type string;
-        mandatory true;
-        description
-          "Identifier for the schema list entry.";
-      }
-      leaf version {
-        type string;
-        description
-          "Version of the schema requested.  If this parameter is not
-           present, and more than one version of the schema exists on
-           the server, a 'data-not-unique' error is returned, as
-           described above.";
-      }
-      leaf format {
-        type identityref {
-          base schema-format;
-        }
-        description
-           "The data modeling language of the schema.  If this
-            parameter is not present, and more than one formats of
-            the schema exists on the server, a 'data-not-unique' error
-            is returned, as described above.";
-      }
-    }
-    output {
-        anyxml data {
-          description
-            "Contains the schema content.";
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-netconf-partial-lock@2009-10-19.yang b/sdnr/model/yang/ietf-netconf-partial-lock@2009-10-19.yang
deleted file mode 100644 (file)
index 13658ac..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-module ietf-netconf-partial-lock {
-
-  namespace urn:ietf:params:xml:ns:netconf:partial-lock:1.0;
-  prefix pl;
-
-  // needed to force data type of select string to be corect
-  import ietf-yang-types { prefix yang; }
-
-  organization "IETF Network Configuration (netconf) Working Group";
-
-  contact
-   "Netconf Working Group
-    Mailing list: netconf@ietf.org
-    Web: http://www.ietf.org/html.charters/netconf-charter.html
-
-    Balazs Lengyel
-    Ericsson
-    balazs.lengyel@ericsson.com";
-
-  description
-   "This YANG module defines the <partial-lock> and
-    <partial-unlock> operations.";
-
-  revision 2009-10-19 {
-    description
-     "Initial version, published as RFC 5717.";
-  }
-
-  typedef lock-id-type {
-    type uint32;
-    description
-     "A number identifying a specific partial-lock granted to a session.
-      It is allocated by the system, and SHOULD be used in the
-      partial-unlock operation.";
-  }
-
-  rpc partial-lock {
-    description
-     "A NETCONF operation that locks parts of the running datastore.";
-    input {
-      leaf-list select {
-        //type string;
-        type yang:xpath1.0;
-        min-elements 1;
-        description
-         "XPath expression that specifies the scope of the lock.
-          An Instance Identifier expression MUST be used unless the
-          :xpath capability is supported, in which case any XPath 1.0
-          expression is allowed.";
-      }
-    }
-    output {
-      leaf lock-id {
-        type lock-id-type;
-        mandatory true;
-        description
-         "Identifies the lock, if granted.  The lock-id SHOULD be
-          used in the partial-unlock rpc.";
-      }
-      leaf-list locked-node {
-        type instance-identifier;
-        min-elements 1;
-        description
-         "List of locked nodes in the running datastore";
-      }
-    }
-  }
-
-  rpc partial-unlock {
-    description
-     "A NETCONF operation that releases a previously acquired
-      partial-lock.";
-    input {
-      leaf lock-id {
-        type lock-id-type;
-        mandatory true;
-        description
-         "Identifies the lock to be released.  MUST be the value
-          received in the response to a partial-lock operation.";
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-netconf-with-defaults@2011-06-01.yang b/sdnr/model/yang/ietf-netconf-with-defaults@2011-06-01.yang
deleted file mode 100644 (file)
index 81d7f0b..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-module ietf-netconf-with-defaults {
-
-   namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults";
-
-   prefix ncwd;
-
-   import ietf-netconf { prefix nc; }
-
-   organization
-    "IETF NETCONF (Network Configuration Protocol) Working Group";
-
-   contact
-    "WG Web:   <http://tools.ietf.org/wg/netconf/>
-
-     WG List:  <netconf@ietf.org>
-
-     WG Chair: Bert Wijnen
-               <bertietf@bwijnen.net>
-
-     WG Chair: Mehmet Ersue
-               <mehmet.ersue@nsn.com>
-
-     Editor: Andy Bierman
-             <andy.bierman@brocade.com>
-
-     Editor: Balazs Lengyel
-             <balazs.lengyel@ericsson.com>";
-
-   description
-    "This module defines an extension to the NETCONF protocol
-     that allows the NETCONF client to control how default
-     values are handled by the server in particular NETCONF
-     operations.
-
-     Copyright (c) 2011 IETF Trust and the persons identified as
-     the document authors.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6243; see
-     the RFC itself for full legal notices.";
-
-   revision 2011-06-01 {
-     description
-       "Initial version.";
-     reference
-      "RFC 6243: With-defaults Capability for NETCONF";
-   }
-
-   typedef with-defaults-mode {
-      description
-        "Possible modes to report default data.";
-      reference
-         "RFC 6243; Section 3.";
-      type enumeration {
-         enum report-all {
-             description
-               "All default data is reported.";
-             reference
-               "RFC 6243; Section 3.1";
-         }
-         enum report-all-tagged {
-             description
-               "All default data is reported.
-                Any nodes considered to be default data
-                will contain a 'default' XML attribute,
-                set to 'true' or '1'.";
-             reference
-               "RFC 6243; Section 3.4";
-         }
-         enum trim {
-             description
-               "Values are not reported if they contain the default.";
-             reference
-               "RFC 6243; Section 3.2";
-         }
-         enum explicit {
-             description
-               "Report values that contain the definition of
-                explicitly set data.";
-             reference
-               "RFC 6243; Section 3.3";
-         }
-     }
-   }
-
-   grouping with-defaults-parameters {
-     description
-       "Contains the <with-defaults> parameter for control
-        of defaults in NETCONF retrieval operations.";
-
-     leaf with-defaults {
-       description
-         "The explicit defaults processing mode requested.";
-       reference
-         "RFC 6243; Section 4.5.1";
-
-       type with-defaults-mode;
-     }
-   }
-
-   // extending the get-config operation
-   augment /nc:get-config/nc:input {
-       description
-         "Adds the <with-defaults> parameter to the
-          input of the NETCONF <get-config> operation.";
-       reference
-         "RFC 6243; Section 4.5.1";
-
-       uses with-defaults-parameters;
-   }
-
-   // extending the get operation
-   augment /nc:get/nc:input {
-       description
-         "Adds the <with-defaults> parameter to
-          the input of the NETCONF <get> operation.";
-       reference
-         "RFC 6243; Section 4.5.1";
-
-       uses with-defaults-parameters;
-   }
-
-   // extending the copy-config operation
-   augment /nc:copy-config/nc:input {
-       description
-         "Adds the <with-defaults> parameter to
-          the input of the NETCONF <copy-config> operation.";
-       reference
-         "RFC 6243; Section 4.5.1";
-
-       uses with-defaults-parameters;
-   }
-
-}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-netconf@2011-06-01.yang b/sdnr/model/yang/ietf-netconf@2011-06-01.yang
deleted file mode 100644 (file)
index 6449421..0000000
+++ /dev/null
@@ -1,934 +0,0 @@
-module ietf-netconf {
-
-  // the namespace for NETCONF XML definitions is unchanged
-  // from RFC 4741, which this document replaces
-  namespace "urn:ietf:params:xml:ns:netconf:base:1.0";
-
-  prefix nc;
-
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  import ietf-netconf-acm { prefix nacm; }
-
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netconf/>
-     WG List:  <netconf@ietf.org>
-
-     WG Chair: Bert Wijnen
-               <bertietf@bwijnen.net>
-
-     WG Chair: Mehmet Ersue
-               <mehmet.ersue@nsn.com>
-
-     Editor:   Martin Bjorklund
-               <mbj@tail-f.com>
-
-     Editor:   Juergen Schoenwaelder
-               <j.schoenwaelder@jacobs-university.de>
-
-     Editor:   Andy Bierman
-               <andy.bierman@brocade.com>";
-  description
-    "NETCONF Protocol Data Types and Protocol Operations.
-
-     Copyright (c) 2011 IETF Trust and the persons identified as
-     the document authors.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6241; see
-     the RFC itself for full legal notices.";
-
-  revision 2011-06-01 {
-    description
-      "Initial revision;
-       2013-09-29: Updated to include NACM attributes, 
-       as specified in RFC 6536: sec 3.2.5 and 3.2.8";
-    reference
-      "RFC 6241: Network Configuration Protocol";
-  }
-
-  extension get-filter-element-attributes {
-    description
-      "If this extension is present within an 'anyxml'
-       statement named 'filter', which must be conceptually
-       defined within the RPC input section for the <get>
-       and <get-config> protocol operations, then the
-       following unqualified XML attribute is supported
-       within the <filter> element, within a <get> or
-       <get-config> protocol operation:
-
-         type : optional attribute with allowed
-                value strings 'subtree' and 'xpath'.
-                If missing, the default value is 'subtree'.
-
-       If the 'xpath' feature is supported, then the
-       following unqualified XML attribute is
-       also supported:
-
-         select: optional attribute containing a
-                 string representing an XPath expression.
-                 The 'type' attribute must be equal to 'xpath'
-                 if this attribute is present.";
-  }
-
-  // NETCONF capabilities defined as features
-  feature writable-running {
-    description
-      "NETCONF :writable-running capability;
-       If the server advertises the :writable-running
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.2";
-  }
-
-  feature candidate {
-    description
-      "NETCONF :candidate capability;
-       If the server advertises the :candidate
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.3";
-  }
-
-  feature confirmed-commit {
-    if-feature candidate;
-    description
-      "NETCONF :confirmed-commit:1.1 capability;
-       If the server advertises the :confirmed-commit:1.1
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-
-    reference "RFC 6241, Section 8.4";
-  }
-
-  feature rollback-on-error {
-    description
-      "NETCONF :rollback-on-error capability;
-       If the server advertises the :rollback-on-error
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.5";
-  }
-
-  feature validate {
-    description
-      "NETCONF :validate:1.1 capability;
-       If the server advertises the :validate:1.1
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.6";
-  }
-
-  feature startup {
-    description
-      "NETCONF :startup capability;
-       If the server advertises the :startup
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.7";
-  }
-
-  feature url {
-    description
-      "NETCONF :url capability;
-       If the server advertises the :url
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.8";
-  }
-
-  feature xpath {
-    description
-      "NETCONF :xpath capability;
-       If the server advertises the :xpath
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.9";
-  }
-
-  // NETCONF Simple Types
-
-  typedef session-id-type {
-    type uint32 {
-      range "1..max";
-    }
-    description
-      "NETCONF Session Id";
-  }
-
-  typedef session-id-or-zero-type {
-    type uint32;
-    description
-      "NETCONF Session Id or Zero to indicate none";
-  }
-  typedef error-tag-type {
-    type enumeration {
-       enum in-use {
-         description
-           "The request requires a resource that
-            already is in use.";
-       }
-       enum invalid-value {
-         description
-           "The request specifies an unacceptable value for one
-            or more parameters.";
-       }
-       enum too-big {
-         description
-           "The request or response (that would be generated) is
-            too large for the implementation to handle.";
-       }
-       enum missing-attribute {
-         description
-           "An expected attribute is missing.";
-       }
-       enum bad-attribute {
-         description
-           "An attribute value is not correct; e.g., wrong type,
-            out of range, pattern mismatch.";
-       }
-       enum unknown-attribute {
-         description
-           "An unexpected attribute is present.";
-       }
-       enum missing-element {
-         description
-           "An expected element is missing.";
-       }
-       enum bad-element {
-         description
-           "An element value is not correct; e.g., wrong type,
-            out of range, pattern mismatch.";
-       }
-       enum unknown-element {
-         description
-           "An unexpected element is present.";
-       }
-       enum unknown-namespace {
-         description
-           "An unexpected namespace is present.";
-       }
-       enum access-denied {
-         description
-           "Access to the requested protocol operation or
-            data model is denied because authorization failed.";
-       }
-       enum lock-denied {
-         description
-           "Access to the requested lock is denied because the
-            lock is currently held by another entity.";
-       }
-       enum resource-denied {
-         description
-           "Request could not be completed because of
-            insufficient resources.";
-       }
-       enum rollback-failed {
-         description
-           "Request to roll back some configuration change (via
-            rollback-on-error or <discard-changes> operations)
-            was not completed for some reason.";
-
-       }
-       enum data-exists {
-         description
-           "Request could not be completed because the relevant
-            data model content already exists.  For example,
-            a 'create' operation was attempted on data that
-            already exists.";
-       }
-       enum data-missing {
-         description
-           "Request could not be completed because the relevant
-            data model content does not exist.  For example,
-            a 'delete' operation was attempted on
-            data that does not exist.";
-       }
-       enum operation-not-supported {
-         description
-           "Request could not be completed because the requested
-            operation is not supported by this implementation.";
-       }
-       enum operation-failed {
-         description
-           "Request could not be completed because the requested
-            operation failed for some reason not covered by
-            any other error condition.";
-       }
-       enum partial-operation {
-         description
-           "This error-tag is obsolete, and SHOULD NOT be sent
-            by servers conforming to this document.";
-       }
-       enum malformed-message {
-         description
-           "A message could not be handled because it failed to
-            be parsed correctly.  For example, the message is not
-            well-formed XML or it uses an invalid character set.";
-       }
-     }
-     description "NETCONF Error Tag";
-     reference "RFC 6241, Appendix A";
-  }
-
-  typedef error-severity-type {
-    type enumeration {
-      enum error {
-        description "Error severity";
-      }
-      enum warning {
-        description "Warning severity";
-      }
-    }
-    description "NETCONF Error Severity";
-    reference "RFC 6241, Section 4.3";
-  }
-
-  typedef edit-operation-type {
-    type enumeration {
-      enum merge {
-        description
-          "The configuration data identified by the
-           element containing this attribute is merged
-           with the configuration at the corresponding
-           level in the configuration datastore identified
-           by the target parameter.";
-      }
-      enum replace {
-        description
-          "The configuration data identified by the element
-           containing this attribute replaces any related
-           configuration in the configuration datastore
-           identified by the target parameter.  If no such
-           configuration data exists in the configuration
-           datastore, it is created.  Unlike a
-           <copy-config> operation, which replaces the
-           entire target configuration, only the configuration
-           actually present in the config parameter is affected.";
-      }
-      enum create {
-        description
-          "The configuration data identified by the element
-           containing this attribute is added to the
-           configuration if and only if the configuration
-           data does not already exist in the configuration
-           datastore.  If the configuration data exists, an
-           <rpc-error> element is returned with an
-           <error-tag> value of 'data-exists'.";
-      }
-      enum delete {
-        description
-          "The configuration data identified by the element
-           containing this attribute is deleted from the
-           configuration if and only if the configuration
-           data currently exists in the configuration
-           datastore.  If the configuration data does not
-           exist, an <rpc-error> element is returned with
-           an <error-tag> value of 'data-missing'.";
-      }
-      enum remove {
-        description
-          "The configuration data identified by the element
-           containing this attribute is deleted from the
-           configuration if the configuration
-           data currently exists in the configuration
-           datastore.  If the configuration data does not
-           exist, the 'remove' operation is silently ignored
-           by the server.";
-      }
-    }
-    default "merge";
-    description "NETCONF 'operation' attribute values";
-    reference "RFC 6241, Section 7.2";
-  }
-
-  // NETCONF Standard Protocol Operations
-
-  rpc get-config {
-    description
-      "Retrieve all or part of a specified configuration.";
-
-    reference "RFC 6241, Section 7.1";
-
-    input {
-      container source {
-        description
-          "Particular configuration to retrieve.";
-
-        choice config-source {
-          mandatory true;
-          description
-            "The configuration to retrieve.";
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config source.";
-          }
-          leaf running {
-            type empty;
-            description
-              "The running configuration is the config source.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config source.
-               This is optional-to-implement on the server because
-               not all servers will support filtering for this
-               datastore.";
-          }
-        }
-      }
-
-      anyxml filter {
-        description
-          "Subtree or XPath filter to use.";
-        nc:get-filter-element-attributes;
-      }
-    }
-
-    output {
-      anyxml data {
-        description
-          "Copy of the source datastore subset that matched
-           the filter criteria (if any).  An empty data container
-           indicates that the request did not produce any results.";
-      }
-    }
-  }
-
-  rpc edit-config {
-    description
-      "The <edit-config> operation loads all or part of a specified
-       configuration to the specified target configuration.";
-
-    reference "RFC 6241, Section 7.2";
-
-    input {
-      container target {
-        description
-          "Particular configuration to edit.";
-
-        choice config-target {
-          mandatory true;
-          description
-            "The configuration target.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config target.";
-          }
-          leaf running {
-            if-feature writable-running;
-            type empty;
-            description
-              "The running configuration is the config source.";
-          }
-        }
-      }
-
-      leaf default-operation {
-        type enumeration {
-          enum merge {
-            description
-              "The default operation is merge.";
-          }
-          enum replace {
-            description
-              "The default operation is replace.";
-          }
-          enum none {
-            description
-              "There is no default operation.";
-          }
-        }
-        default "merge";
-        description
-          "The default operation to use.";
-      }
-
-      leaf test-option {
-        if-feature validate;
-        type enumeration {
-          enum test-then-set {
-            description
-              "The server will test and then set if no errors.";
-          }
-          enum set {
-            description
-              "The server will set without a test first.";
-          }
-
-          enum test-only {
-            description
-              "The server will only test and not set, even
-               if there are no errors.";
-          }
-        }
-        default "test-then-set";
-        description
-          "The test option to use.";
-      }
-
-      leaf error-option {
-        type enumeration {
-          enum stop-on-error {
-            description
-              "The server will stop on errors.";
-          }
-          enum continue-on-error {
-            description
-              "The server may continue on errors.";
-          }
-          enum rollback-on-error {
-            description
-              "The server will roll back on errors.
-               This value can only be used if the 'rollback-on-error'
-               feature is supported.";
-          }
-        }
-        default "stop-on-error";
-        description
-          "The error option to use.";
-      }
-
-      choice edit-content {
-        mandatory true;
-        description
-          "The content for the edit operation.";
-
-        anyxml config {
-          description
-            "Inline Config content.";
-        }
-        leaf url {
-          if-feature url;
-          type inet:uri;
-          description
-            "URL-based config content.";
-        }
-      }
-    }
-  }
-
-  rpc copy-config {
-    description
-      "Create or replace an entire configuration datastore with the
-       contents of another complete configuration datastore.";
-
-    reference "RFC 6241, Section 7.3";
-
-    input {
-      container target {
-        description
-          "Particular configuration to copy to.";
-
-        choice config-target {
-          mandatory true;
-          description
-            "The configuration target of the copy operation.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config target.";
-          }
-          leaf running {
-            if-feature writable-running;
-            type empty;
-            description
-              "The running configuration is the config target.
-               This is optional-to-implement on the server.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config target.";
-          }
-          leaf url {
-            if-feature url;
-            type inet:uri;
-            description
-              "The URL-based configuration is the config target.";
-          }
-        }
-      }
-
-      container source {
-        description
-          "Particular configuration to copy from.";
-
-        choice config-source {
-          mandatory true;
-          description
-            "The configuration source for the copy operation.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config source.";
-          }
-          leaf running {
-            type empty;
-            description
-              "The running configuration is the config source.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config source.";
-          }
-          leaf url {
-            if-feature url;
-            type inet:uri;
-            description
-              "The URL-based configuration is the config source.";
-          }
-          anyxml config {
-            description
-              "Inline Config content: <config> element.  Represents
-               an entire configuration datastore, not
-               a subset of the running datastore.";
-          }
-        }
-      }
-    }
-  }
-
-  rpc delete-config {
-    nacm:default-deny-all;
-    description
-      "Delete a configuration datastore.";
-
-    reference "RFC 6241, Section 7.4";
-
-    input {
-      container target {
-        description
-          "Particular configuration to delete.";
-
-        choice config-target {
-          mandatory true;
-          description
-            "The configuration target to delete.";
-
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config target.";
-          }
-          leaf url {
-            if-feature url;
-            type inet:uri;
-            description
-              "The URL-based configuration is the config target.";
-          }
-        }
-      }
-    }
-  }
-
-  rpc lock {
-    description
-      "The lock operation allows the client to lock the configuration
-       system of a device.";
-
-    reference "RFC 6241, Section 7.5";
-
-    input {
-      container target {
-        description
-          "Particular configuration to lock.";
-
-        choice config-target {
-          mandatory true;
-          description
-            "The configuration target to lock.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config target.";
-          }
-          leaf running {
-            type empty;
-            description
-              "The running configuration is the config target.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config target.";
-          }
-        }
-      }
-    }
-  }
-
-  rpc unlock {
-    description
-      "The unlock operation is used to release a configuration lock,
-       previously obtained with the 'lock' operation.";
-
-    reference "RFC 6241, Section 7.6";
-
-    input {
-      container target {
-        description
-          "Particular configuration to unlock.";
-
-        choice config-target {
-          mandatory true;
-          description
-            "The configuration target to unlock.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config target.";
-          }
-          leaf running {
-            type empty;
-            description
-              "The running configuration is the config target.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config target.";
-          }
-        }
-      }
-    }
-  }
-
-  rpc get {
-    description
-      "Retrieve running configuration and device state information.";
-
-    reference "RFC 6241, Section 7.7";
-
-    input {
-      anyxml filter {
-        description
-          "This parameter specifies the portion of the system
-           configuration and state data to retrieve.";
-        nc:get-filter-element-attributes;
-      }
-    }
-
-    output {
-      anyxml data {
-        description
-          "Copy of the running datastore subset and/or state
-           data that matched the filter criteria (if any).
-           An empty data container indicates that the request did not
-           produce any results.";
-      }
-    }
-  }
-
-  rpc close-session {
-    description
-      "Request graceful termination of a NETCONF session.";
-
-    reference "RFC 6241, Section 7.8";
-  }
-
-  rpc kill-session {
-    nacm:default-deny-all;
-    description
-      "Force the termination of a NETCONF session.";
-
-    reference "RFC 6241, Section 7.9";
-
-    input {
-      leaf session-id {
-        type session-id-type;
-        mandatory true;
-        description
-          "Particular session to kill.";
-      }
-    }
-  }
-
-  rpc commit {
-    if-feature candidate;
-
-    description
-      "Commit the candidate configuration as the device's new
-       current configuration.";
-
-    reference "RFC 6241, Section 8.3.4.1";
-
-    input {
-      leaf confirmed {
-        if-feature confirmed-commit;
-        type empty;
-        description
-          "Requests a confirmed commit.";
-        reference "RFC 6241, Section 8.3.4.1";
-      }
-
-      leaf confirm-timeout {
-        if-feature confirmed-commit;
-        type uint32 {
-          range "1..max";
-        }
-        units "seconds";
-        default "600";   // 10 minutes
-        description
-          "The timeout interval for a confirmed commit.";
-        reference "RFC 6241, Section 8.3.4.1";
-      }
-
-      leaf persist {
-        if-feature confirmed-commit;
-        type string;
-        description
-          "This parameter is used to make a confirmed commit
-           persistent.  A persistent confirmed commit is not aborted
-           if the NETCONF session terminates.  The only way to abort
-           a persistent confirmed commit is to let the timer expire,
-           or to use the <cancel-commit> operation.
-
-           The value of this parameter is a token that must be given
-           in the 'persist-id' parameter of <commit> or
-           <cancel-commit> operations in order to confirm or cancel
-           the persistent confirmed commit.
-
-           The token should be a random string.";
-        reference "RFC 6241, Section 8.3.4.1";
-      }
-
-      leaf persist-id {
-        if-feature confirmed-commit;
-        type string;
-        description
-          "This parameter is given in order to commit a persistent
-           confirmed commit.  The value must be equal to the value
-           given in the 'persist' parameter to the <commit> operation.
-           If it does not match, the operation fails with an
-          'invalid-value' error.";
-        reference "RFC 6241, Section 8.3.4.1";
-      }
-
-    }
-  }
-
-  rpc discard-changes {
-    if-feature candidate;
-
-    description
-      "Revert the candidate configuration to the current
-       running configuration.";
-    reference "RFC 6241, Section 8.3.4.2";
-  }
-
-  rpc cancel-commit {
-    if-feature confirmed-commit;
-    description
-      "This operation is used to cancel an ongoing confirmed commit.
-       If the confirmed commit is persistent, the parameter
-       'persist-id' must be given, and it must match the value of the
-       'persist' parameter.";
-    reference "RFC 6241, Section 8.4.4.1";
-
-    input {
-      leaf persist-id {
-        type string;
-        description
-          "This parameter is given in order to cancel a persistent
-           confirmed commit.  The value must be equal to the value
-           given in the 'persist' parameter to the <commit> operation.
-           If it does not match, the operation fails with an
-          'invalid-value' error.";
-      }
-    }
-  }
-
-  rpc validate {
-    if-feature validate;
-
-    description
-      "Validates the contents of the specified configuration.";
-
-    reference "RFC 6241, Section 8.6.4.1";
-
-    input {
-      container source {
-        description
-          "Particular configuration to validate.";
-
-        choice config-source {
-          mandatory true;
-          description
-            "The configuration source to validate.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config source.";
-          }
-          leaf running {
-            type empty;
-            description
-              "The running configuration is the config source.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config source.";
-          }
-          leaf url {
-            if-feature url;
-            type inet:uri;
-            description
-              "The URL-based configuration is the config source.";
-          }
-          anyxml config {
-            description
-              "Inline Config content: <config> element.  Represents
-               an entire configuration datastore, not
-               a subset of the running datastore.";
-          }
-        }
-      }
-    }
-  }
-
-}
diff --git a/sdnr/model/yang/ietf-ptp-dataset@2017-02-08.yang b/sdnr/model/yang/ietf-ptp-dataset@2017-02-08.yang
deleted file mode 100644 (file)
index d899e56..0000000
+++ /dev/null
@@ -1,605 +0,0 @@
-   module ietf-ptp-dataset{
-     namespace "urn:ietf:params:xml:ns:yang:ietf-ptp-dataset";
-     prefix "ptp-dataset";
-     organization "IETF TICTOC Working Group";
-     contact
-         "WG Web:   http://tools.ietf.org/wg/tictoc/
-          WG List:  <mailto:tictoc@ietf.org>
-          WG Chair: Karen O'Donoghue
-                    <mailto:odonoghue@isoc.org>
-          WG Chair: Yaakov Stein
-                    <mailto: Yaakov_s@rad.com>
-          Editor:   Yuanlong Jiang
-                    <mailto:jiangyuanlong@huawei.com>
-          Editor:   Rodney Cummings
-                    <mailto:rodney.cummings@ni.com>";
-     description
-       "This YANG module defines a data model for the configuration
-       of IEEE 1588-2008 clocks, and also for retrieval of the state
-       data of IEEE 1588-2008 clocks.";
-
-     revision "2017-02-08" {
-       description "Version 4.0";
-       reference "draft-ietf-tictoc-1588v2-yang";
-      }
-
-     typedef delay-mechanism-enumeration {
-       type enumeration {
-         enum E2E {
-           value 1;
-           description
-             "The port uses the delay request-response
-              mechanism.";
-         }
-         enum P2P {
-           value 2;
-           description
-             "The port uses the peer delay mechanism.";
-         }
-         enum DISABLED {
-           value 254;
-           description
-             "The port does not implement any delay
-              mechanism.";
-         }
-       }
-       description
-         "The propagation delay measuring option used by the
-         port. Values for this enumeration are specified
-         by the IEEE 1588 standard exclusively.";
-       reference
-         "IEEE Std 1588-2008: 8.2.5.4.4";
-     }
-
-     typedef port-state-enumeration {
-       type enumeration {
-         enum INITIALIZING {
-           value 1;
-           description
-             "The port is initializing its data sets, hardware, and
-             communication facilities.";
-         }
-         enum FAULTY {
-           value 2;
-           description
-             "The port is in the fault state.";
-         }
-         enum DISABLED {
-           value 3;
-           description
-             "The port is disabled, and is not communicating PTP
-             messages (other than possibly PTP management
-             messages).";
-         }
-         enum LISTENING {
-           value 4;
-           description
-             "The port is listening for an Announce message.";
-         }
-         enum PRE_MASTER {
-           value 5;
-           description
-             "The port is in the pre-master state.";
-         }
-         enum MASTER {
-           value 6;
-           description
-             "The port is behaving as a master port.";
-         }
-         enum PASSIVE {
-           value 7;
-           description
-             "The port is in the passive state.";
-         }
-         enum UNCALIBRATED {
-           value 8;
-           description
-             "A master port has been selected, but the port is still
-             in the uncalibrated state.";
-         }
-         enum SLAVE {
-           value 9;
-           description
-             "The port is synchronizing to the selected
-             master port.";
-         }
-       }
-       description
-         "The current state of the protocol engine associated
-         with the port.  Values for this enumeration are specified
-         by the IEEE 1588 standard exclusively.";
-       reference
-         "IEEE Std 1588-2008: 8.2.5.3.1, 9.2.5";
-     }
-
-     typedef time-interval-type {
-       type int64;
-       description
-         "Derived data type for time interval,
-         represented in units of nanoseconds and
-         multipled by 2^16";
-       reference
-         "IEEE Std 1588-2008: 5.3.2";
-     }
-
-     typedef clock-identity-type {
-       type binary {
-         length "8";
-       }
-       description
-         "Derived data type to identify a clock";
-       reference
-         "IEEE Std 1588-2008: 5.3.4";
-     }
-
-     grouping port-identity-grouping {
-       description
-         "Derived data type to identify a port, which contains
-         two members: clockIdentity and portNumber.";
-       reference
-         "IEEE Std 1588-2008: 5.3.5";
-
-       leaf clock-identity {
-         type clock-identity-type;
-         description
-           "Identity of the clock";
-       }
-
-       leaf port-number {
-         type uint16;
-         description
-           "Port number";
-       }
-     }
-
-     grouping clock-quality-grouping {
-       description
-         "Derived data type for quality of a clock, which contains
-         clockClass, clockAccuracy and offsetScaledLogVariance.";
-       reference
-         "IEEE Std 1588-2008: 5.3.7";
-
-       leaf clock-class {
-         type uint8;
-         default 248;
-         description
-           "The clockClass denotes the traceability of the time
-           or frequency distributed by the clock.";
-       }
-
-       leaf clock-accuracy {
-         type uint8;
-         description
-           "The clockAccuracy indicates the expected accuracy
-            of the clock.";
-       }
-
-       leaf offset-scaled-log-variance {
-         type uint16;
-         description
-           "The offsetScaledLogVariance provides an
-           estimate of the variations of the clock
-           from a linear timescale when it is not synchronized
-           to another clock using the protocol.";
-       }
-     }
-
-     grouping default-ds-entry {
-       description
-         "Collection of members of the default data set.";
-
-       leaf two-step-flag {
-         type boolean;
-         description
-               "When set, the clock is a two-step clock; otherwise,
-               the clock is a one-step clock.";
-       }
-
-       leaf clock-identity {
-         type clock-identity-type;
-         description
-           "The clockIdentity of the local clock";
-       }
-
-       leaf number-ports {
-         type uint16;
-         description
-           "The number of PTP ports on the device.";
-       }
-
-       container clock-quality {
-         description
-           "The clockQuality of the local clock.";
-
-         uses clock-quality-grouping;
-       }
-
-       leaf priority1 {
-         type uint8;
-         description
-           "The priority1 attribute of the local clock.";
-       }
-
-       leaf priority2{
-         type uint8;
-         description
-           "The priority2 attribute of the local clock. ";
-       }
-
-       leaf domain-number {
-         type uint8;
-         description
-                "The domain number of the current syntonization
-               domain.";
-       }
-
-       leaf slave-only {
-         type boolean;
-         description
-           "When set, the clock is a slave-only clock.";
-       }
-     }
-
-     grouping current-ds-entry {
-       description
-         "Collection of members of current data set.";
-
-       leaf steps-removed {
-         type uint16;
-         default 0;
-         description
-           "The number of communication paths traversed
-           between the local clock and the grandmaster clock.";
-       }
-       leaf offset-from-master {
-         type time-interval-type;
-         description
-           "The current value of the time difference between
-           a master and a slave clock as computed by the slave.";
-       }
-
-       leaf mean-path-delay {
-         type time-interval-type;
-         description
-           "The current value of the mean propagation time between
-           a master and a slave clock as computed by the slave.";
-
-       }
-     }
-
-     grouping parent-ds-entry {
-       description
-         "Collection of members of the parent data set.";
-
-       container parent-port-identity {
-         description
-           "The portIdentity of the port on the master";
-         uses port-identity-grouping;
-       }
-       leaf parent-stats {
-         type boolean;
-         default false;
-         description
-           "When set, the values of
-            observedParentOffsetScaledLogVariance and
-            observedParentClockPhaseChangeRate of parentDS
-            have been measured and are valid.";
-       }
-       leaf observed-parent-offset-scaled-log-variance {
-         type uint16;
-         default 0xFFFF;
-         description
-           "An estimate of the parent clock's PTP variance
-            as observed by the slave clock.";
-       }
-       leaf observed-parent-clock-phase-change-rate {
-         type int32;
-         description
-           "An estimate of the parent clock's phase change rate
-            as observed by the slave clock.";
-       }
-       leaf grandmaster-identity {
-         type binary{
-           length "8";
-         }
-
-         description
-          "The clockIdentity attribute of the grandmaster clock.";
-
-       }
-       container grandmaster-clock-quality {
-         description
-           "The clockQuality of the grandmaster clock.";
-         uses clock-quality-grouping;
-       }
-       leaf grandmaster-priority1 {
-         type uint8;
-         description
-           "The priority1 attribute of the grandmaster clock.";
-       }
-       leaf grandmaster-priority2 {
-         type uint8;
-         description
-           "The priority2 attribute of the grandmaster clock.";
-       }
-     }
-
-     grouping time-properties-ds-entry {
-       description
-         "Collection of members of the timeProperties data set.";
-       leaf current-utc-offset-valid {
-         type boolean;
-         description
-           "When set, the current UTC offset is valid.";
-       }
-       leaf current-utc-offset {
-         type int16;
-         description
-           "The offset between TAI and UTC when the epoch of the
-            PTP system is the PTP epoch, i.e., when ptp-timescale
-            is TRUE; otherwise, the value has no meaning.";
-       }
-       leaf leap59 {
-         type boolean;
-         description
-               "When set, the last minute of the current UTC day
-               contains 59 seconds.";
-       }
-       leaf leap61 {
-         type boolean;
-         description
-               "When set, the last minute of the current UTC day
-               contains 61 seconds.";
-       }
-       leaf time-traceable {
-         type boolean;
-         description
-           "When set, the timescale and the currentUtcOffset are
-               traceable to a primary reference.";
-       }
-       leaf frequency-traceable {
-         type boolean;
-         description
-           "When set, the frequency determining the timescale
-            is traceable to a primary reference.";
-       }
-       leaf ptp-timescale {
-         type boolean;
-         description
-           "When set, the clock timescale of the grandmaster
-                clock is PTP; otherwise, the timescale is ARB
-               (arbitrary).";
-       }
-       leaf time-source {
-         type uint8;
-         description
-           "The source of time used by the grandmaster clock.";
-
-       }
-     }
-
-     grouping port-ds-entry {
-       description
-         "Collection of members of the port data set.";
-
-       container port-identity {
-         description
-           "The portIdentity attribute of the local port.";
-         uses port-identity-grouping;
-       }
-
-       leaf port-state {
-         type port-state-enumeration;
-         default "INITIALIZING";
-         description
-           "Current state associated with the port.";
-       }
-
-       leaf log-min-delay-req-interval {
-         type int8;
-         description
-           "The base-two logarithm of the minDelayReqInterval
-            (the minimum permitted mean time interval between
-            successive Delay_Req messages).";
-       }
-
-       leaf peer-mean-path-delay {
-         type time-interval-type;
-         default 0;
-         description
-           "An estimate of the current one-way propagation delay
-            on the link when the delayMechanism is P2P; otherwise,
-            it is zero.";
-       }
-
-       leaf log-announce-interval {
-         type int8;
-         description
-           "The base-two logarithm of the mean
-            announceInterval (mean time interval between
-            successive Announce messages).";
-       }
-
-       leaf announce-receipt-timeout {
-         type uint8;
-         description
-           "The number of announceInterval that have to pass
-            without receipt of an Announce message before the
-            occurrence of the event ANNOUNCE_RECEIPT_TIMEOUT_
-            EXPIRES.";
-       }
-
-       leaf log-sync-interval {
-         type int8;
-         description
-           "The base-two logarithm of the mean SyncInterval
-            for multicast messages.  The rates for unicast
-            transmissions are negotiated separately on a per port
-            basis and are not constrained by this attribute.";
-       }
-
-       leaf delay-mechanism {
-         type delay-mechanism-enumeration;
-         description
-           "The propagation delay measuring option used by the
-            port in computing meanPathDelay.";
-       }
-
-       leaf log-min-pdelay-req-interval {
-         type int8;
-         description
-           "The base-two logarithm of the
-            minPdelayReqInterval (minimum permitted mean time
-            interval between successive Pdelay_Req messages).";
-
-       }
-
-       leaf version-number {
-         type uint8;
-         description
-           "The PTP version in use on the port.";
-       }
-     }
-
-     grouping transparent-clock-default-ds-entry {
-       description
-         "Collection of members of the transparentClockDefault data
-           set (default data set for a transparent clock).";
-
-       leaf clock-identity {
-         type clock-identity-type;
-         description
-           "The clockIdentity of the transparent clock.";
-       }
-       leaf number-ports {
-         type uint16;
-         description
-           "The number of PTP ports on the device.";
-       }
-       leaf delay-mechanism {
-         type delay-mechanism-enumeration;
-         description
-           "The propagation delay measuring option
-            used by the transparent clock.";
-       }
-       leaf primary-domain {
-         type uint8;
-         default 0;
-         description
-          "The domainNumber of the primary syntonization domain.";
-
-       }
-     }
-
-     grouping transparent-clock-port-ds-entry {
-       description
-         "Collection of members of the transparentClockPort data
-          set (port data set for a transparent clock).";
-
-       container port-identity {
-         description
-           "The portIdentity of the local port.";
-
-         uses port-identity-grouping;
-       }
-       leaf log-min-pdelay-req-interval {
-         type int8;
-         description
-           "The logarithm to the base 2 of the
-            minPdelayReqInterval (minimum permitted mean time
-            interval between successive Pdelay_Req messages).";
-       }
-       leaf faulty-flag {
-         type boolean;
-         default false;
-         description
-           "When set, the port is faulty.";
-       }
-       leaf peer-mean-path-delay {
-         type time-interval-type;
-         default 0;
-         description
-           "An estimate of the current one-way propagation delay
-            on the link when the delayMechanism is P2P; otherwise,
-            it is zero.";
-       }
-     }
-
-     list instance-list {
-
-       key "instance-number";
-
-       description
-         "List of one or more PTP datasets in the device, one for
-         each domain (see IEEE 1588-2008 subclause 6.3).
-         Each PTP dataset represents a distinct instance of
-         PTP implementation in the device (i.e. distinct
-         Ordinary Clock or Boundary Clock).";
-
-       leaf instance-number {
-         type uint16;
-         description
-           "The instance number of the current PTP instance";
-       }
-        container default-ds {
-          description
-            "The default data set of the clock.";
-          uses default-ds-entry;
-        }
-
-        container current-ds {
-          description
-            "The current data set of the clock.";
-          uses current-ds-entry;
-        }
-
-        container parent-ds {
-          description
-            "The parent data set of the clock.";
-          uses parent-ds-entry;
-        }
-
-        container time-properties-ds {
-          description
-            "The timeProperties data set of the clock.";
-          uses time-properties-ds-entry;
-        }
-
-        list port-ds-list {
-          key "port-number";
-          description
-            "List of port data sets of the clock.";
-          leaf port-number{
-            type leafref{
-              path "../port-identity/port-number";
-            }
-            description
-              "Refers to the portNumber memer of
-              portDS.portIdentity.";
-          }
-          uses port-ds-entry;
-        }
-     }
-
-     container transparent-clock-default-ds {
-       description
-         "The members of the transparentClockDefault Data Set";
-       uses transparent-clock-default-ds-entry;
-     }
-
-     list transparent-clock-port-ds-list {
-       key "port-number";
-       description
-         "List of transparentClockPort data sets
-          of the transparent clock.";
-       leaf port-number {
-         type leafref {
-           path "../port-identity/port-number";
-         }
-          description
-            "Refers to the portNumber memer
-             of transparentClockPortDS.portIdentity.";
-        }
-        uses transparent-clock-port-ds-entry;
-      }
-   }
diff --git a/sdnr/model/yang/ietf-restconf@2013-10-19.yang b/sdnr/model/yang/ietf-restconf@2013-10-19.yang
deleted file mode 100644 (file)
index 83bb378..0000000
+++ /dev/null
@@ -1,689 +0,0 @@
-module ietf-restconf {
-  namespace "urn:ietf:params:xml:ns:yang:ietf-restconf";
-  prefix "restconf";
-
-  import ietf-yang-types { prefix yang; revision-date 2013-07-15; }
-  import ietf-inet-types { prefix inet; }
-
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
-
-  contact
-    "Editor:   Andy Bierman
-               <mailto:andy@yumaworks.com>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>
-
-     Editor:   Kent Watsen
-               <mailto:kwatsen@juniper.net>
-
-     Editor:   Rex Fernando
-               <mailto:rex@cisco.com>";
-
-  description
-    "This module contains conceptual YANG specifications
-     for the YANG Patch and error content that is used in
-     RESTCONF protocol messages. A conceptual container
-     representing the RESTCONF API nodes (media type 
-     application/yang.api).
-
-     Note that the YANG definitions within this module do not
-     represent configuration data of any kind.
-     The YANG grouping statements provide a normative syntax
-     for XML and JSON message encoding purposes.
-
-     Copyright (c) 2013 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC XXXX; see
-     the RFC itself for full legal notices.";
-
-  // RFC Ed.: replace XXXX with actual RFC number and remove this
-  // note.
-
-  // RFC Ed.: remove this note
-  // Note: extracted from draft-bierman-netconf-restconf-02.txt
-
-  // RFC Ed.: update the date below with the date of RFC publication
-  // and remove this note.
-  revision 2013-10-19 {
-    description
-      "Initial revision.";
-    reference
-      "RFC XXXX: RESTCONF Protocol.";
-  }
-
-  typedef data-resource-identifier {
-    type string {
-      length "1 .. max";
-    }
-    description
-      "Contains a Data Resource Identifier formatted string
-       to identify a specific data node. The data node that
-       uses this data type SHOULD define the document root
-       for data resource identifiers.  The default document
-       root is the target datastore conceptual root node.
-       Data resource identifiers are defined relative to
-       this document root.";
-    reference
-      "RFC XXXX: [sec. 5.3.1.1 ABNF For Data Resource Identifiers]";
-  }
-
-  // this typedef is TBD; not currently used
-  typedef datastore-identifier {
-    type union {
-      type enumeration {
-        enum candidate {
-          description
-            "Identifies the NETCONF shared candidate datastore.";
-          reference
-            "RFC 6241, section 8.3";
-        }
-        enum running {
-          description
-            "Identifies the NETCONF running datastore.";
-          reference
-            "RFC 6241, section 5.1";
-        }
-        enum startup {
-          description
-            "Identifies the NETCONF startup datastore.";
-          reference
-            "RFC 6241, section 8.7";
-        }
-      }
-      type string;
-    }
-    description
-      "Contains a string to identify a specific datastore.
-       The enumerated datastore identifier values are
-       reserved for standard datastore names.";
-  }
-
-  typedef revision-identifier {
-    type string {
-      pattern '\d{4}-\d{2}-\d{2}';
-    }
-    description
-      "Represents a specific date in YYYY-MM-DD format.
-       TBD: make pattern more precise to exclude leading zeros.";
-  }
-
-  grouping yang-patch {
-
-    description
-      "A grouping that contains a YANG container
-       representing the syntax and semantics of a
-       YANG Patch edit request message.";
-
-    container yang-patch {
-      description
-        "Represents a conceptual sequence of datastore edits,
-         called a patch. Each patch is given a client-assigned
-         patch identifier. Each edit MUST be applied
-         in ascending order, and all edits MUST be applied.
-         If any errors occur, then the target datastore MUST NOT
-         be changed by the patch operation.
-  
-         A patch MUST be validated by the server to be a 
-         well-formed message before any of the patch edits
-         are validated or attempted.
-  
-         YANG datastore validation (defined in RFC 6020, section
-         8.3.3) is performed after all edits have been
-         individually validated.
-  
-         It is possible for a datastore constraint violation to occur
-         due to any node in the datastore, including nodes not
-         included in the edit list. Any validation errors MUST
-         be reported in the reply message.";
-  
-      reference
-        "RFC 6020, section 8.3.";
-  
-      leaf patch-id {
-        type string;
-        description
-          "An arbitrary string provided by the client to identify
-           the entire patch.  This value SHOULD be present in any
-           audit logging records generated by the server for the
-           patch. Error messages returned by the server pertaining
-           to this patch will be identified by this patch-id value.";
-      }
-
-      leaf comment {
-        type string {
-          length "0 .. 1024";
-        }
-        description
-          "An arbitrary string provided by the client to describe
-           the entire patch.  This value SHOULD be present in any
-           audit logging records generated by the server for the
-           patch.";
-      }
-  
-      list edit {
-        key edit-id;
-        ordered-by user;
-
-        description
-          "Represents one edit within the YANG Patch
-           request message.";
-
-        leaf edit-id {
-          type string;
-          description
-            "Arbitrary string index for the edit.
-             Error messages returned by the server pertaining
-             to a specific edit will be identified by this
-             value.";
-        }
-  
-        leaf operation {
-          type enumeration {
-            enum create {
-              description
-                "The target data node is created using the
-                 supplied value, only if it does not already
-                 exist.";
-            }
-            enum delete {
-              description
-                "Delete the target node, only if the data resource
-                 currently exists, otherwise return an error.";
-            }
-            enum insert {
-              description
-                "Insert the supplied value into a user-ordered
-                 list or leaf-list entry. The target node must
-                 represent a new data resource.";
-            }
-            enum merge {
-              description
-                "The supplied value is merged with the target data
-                 node.";
-            }
-            enum move {
-              description
-                "Move the target node. Reorder a user-ordered
-                 list or leaf-list. The target node must represent
-                 an existing data resource.";
-            }
-            enum replace {
-              description
-                "The supplied value is used to replace the target
-                 data node.";
-            }
-            enum remove {
-              description
-                "Delete the target node if it currently exists.";
-            }
-          }
-          mandatory true;
-          description
-            "The datastore operation requested for the associated
-             edit entry";
-        }
-  
-        leaf target {
-          type data-resource-identifier;
-          mandatory true;
-          description
-            "Identifies the target data resource for the edit
-             operation.";
-        }
-  
-        leaf point {
-          when "(../operation = 'insert' or " +
-            "../operation = 'move') and " +
-            "(../where = 'before' or ../where = 'after')" {
-            description
-              "Point leaf only applies for insert or move
-               operations, before or after an existing entry.";
-          }
-          type data-resource-identifier;
-          description
-            "The absolute URL path for the data node that is being
-             used as the insertion point or move point for the
-             target of this edit entry.";
-        }
-  
-        leaf where {
-          when "../operation = 'insert' or ../operation = 'move'" {
-            description
-              "Where leaf only applies for insert or move
-               operations.";
-          }
-          type enumeration {
-            enum before {
-              description
-                "Insert or move a data node before the data resource
-                 identified by the 'point' parameter.";
-            }
-            enum after {
-              description
-                "Insert or move a data node after the data resource
-                 identified by the 'point' parameter.";
-            }
-            enum first {
-              description
-                "Insert or move a data node so it becomes ordered
-                 as the first entry.";
-            }
-            enum last {
-              description
-                "Insert or move a data node so it becomes ordered
-                 as the last entry.";
-            }
-  
-          }
-          default last;
-          description
-            "Identifies where a data resource will be inserted or
-             moved. YANG only allows these operations for
-             list and leaf-list data nodes that are ordered-by
-             user.";
-        }
-  
-        anyxml value {
-          when "(../operation = 'create' or " +
-            "../operation = 'merge' " +
-            "or ../operation = 'replace' or " +
-            "../operation = 'insert')" {
-            description
-              "Value node only used for create, merge,
-               replace, and insert operations";
-          }
-          description
-            "Value used for this edit operation.";
-        }
-      }
-    }
-
-  } // grouping yang-patch
-
-
-  grouping yang-patch-status {
-
-    description
-      "A grouping that contains a YANG container
-       representing the syntax and semantics of
-       YANG Patch status response message.";
-    
-    container yang-patch-status {
-      description
-        "A container representing the response message
-         sent by the server after a YANG Patch edit
-         request message has been processed.";
-
-      leaf patch-id {
-        type string;
-        description
-          "The patch-id value used in the request";
-      }
-
-      choice global-status {
-        description
-          "Report global errors or complete success.
-           If there is no case selected then errors
-           are reported in the edit-status container.";
-
-        case global-errors {
-          uses errors;
-          description
-            "This container will be present if global
-             errors unrelated to a specific edit occurred.";
-        }
-        leaf ok {
-          type empty;
-          description
-            "This leaf will be present if the request succeeded
-             and there are no errors reported in the edit-status
-             container.";
-        }
-      }
-
-      container edit-status {
-        description
-          "This container will be present if there are
-           edit-specific status responses to report.";
-      
-        list edit {
-          key edit-id;
-
-          description
-            "Represents a list of status responses,
-             corresponding to edits in the YANG Patch
-             request message.  If an edit entry was
-             skipped or not reached by the server,
-             then this list will not contain a corresponding
-             entry for that edit.";
-
-          leaf edit-id {
-            type string;
-             description
-               "Response status is for the edit list entry
-                with this edit-id value.";
-          }
-          choice edit-status-choice {
-            description
-              "A choice between different types of status
-               responses for each edit entry.";
-            leaf ok {
-              type empty;
-              description
-                "This edit entry was invoked without any
-                 errors detected by the server associated
-                 with this edit.";
-            }
-            leaf location {
-              type inet:uri;
-              description
-                "Contains the Location header value that would be
-                 returned if this edit causes a new resource to be
-                 created. If the edit identified by the same edit-id
-                 value was successfully invoked and a new resource
-                 was created, then this field will be returned
-                 instead of 'ok'.";
-            }
-            case errors {
-              uses errors;
-              description
-                "The server detected errors associated with the
-                  edit identified by the same edit-id value.";
-            }
-          }
-        }
-      }
-    }
-  }  // grouping yang-patch-status
-
-
-  grouping errors {
-
-    description
-      "A grouping that contains a YANG container
-       representing the syntax and semantics of a
-       YANG Patch errors report within a response message.";
-
-    container errors {
-      config false;  // needed so list error does not need a key
-      description
-        "Represents an error report returned by the server if
-         a request results in an error.";
-  
-      list error {
-        description
-          "An entry containing information about one
-           specific error that occurred while processing
-           a RESTCONF request.";
-        reference "RFC 6241, Section 4.3";
-  
-        leaf error-type { 
-          type enumeration {
-            enum transport {
-              description "The transport layer";
-            }
-            enum rpc {
-              description "The rpc or notification layer";
-            }
-            enum protocol {
-              description "The protocol operation layer";
-            }
-            enum application {
-              description "The server application layer";
-            }
-          }
-          mandatory true;
-          description
-            "The protocol layer where the error occurred.";
-        }
-  
-        leaf error-tag {
-          type string;
-          mandatory true;
-          description
-            "The enumerated error tag.";
-        }
-  
-        leaf error-app-tag { 
-          type string;
-          description
-            "The application-specific error tag.";
-        }
-  
-        leaf error-path { 
-          type data-resource-identifier;
-          description
-            "The target data resource identifier associated
-             with the error, if any.";
-        }
-  
-        leaf error-message { 
-          type string;
-          description
-            "A message describing the error.";
-        }
-  
-        container error-info { 
-           description
-             "A container allowing additional information
-              to be included in the error report.";
-           // arbitrary anyxml content here
-        }
-      }
-    }
-  } // grouping errors
-
-
-  grouping restconf {
-
-    description
-      "A grouping that contains a YANG container
-       representing the syntax and semantics of
-       the RESTCONF API resource.";
-
-    container restconf {
-      description
-        "Conceptual container representing the
-         application/yang.api resource type.";
-  
-      container config {
-        description
-          "Container representing the application/yang.datastore
-           resource type. Represents the conceptual root of the
-           unified configuration datastore containing YANG data
-           nodes. The child nodes of this container are
-           configuration data resources (application/yang.data)
-           defined as top-level YANG data nodes from the modules
-           advertised by the server in /restconf/modules.";
-      }
-
-      container operational {
-        description
-          "Container representing the application/yang.datastore
-           resource type. Represents the conceptual root of the
-           operational data supported by the server.  The child
-           nodes of this container are operational data resources 
-           (application/yang.data) defined as top-level
-           YANG data nodes from the modules advertised by
-           the server in /restconf/modules.";
-      }
-
-      container modules {
-        description
-          "Contains a list of module description entries.
-           These modules are currently loaded into the server.";
-  
-        list module {
-          key "name revision";
-          description
-            "Each entry represents one module currently
-             supported by the server.";
-
-          leaf name {
-            type yang:yang-identifier;
-            description "The YANG module name.";
-          }
-          leaf revision {
-            type union {
-              type revision-identifier;
-              type string { length 0; }
-            }
-            description
-              "The YANG module revision date. An empty string is
-               used if no revision statement is present in the
-               YANG module.";
-          }
-          leaf namespace {
-            type inet:uri;
-            mandatory true;
-            description
-              "The XML namespace identifier for this module.";
-          }
-          leaf-list feature {
-            type yang:yang-identifier;
-            description
-              "List of YANG feature names from this module that are
-               supported by the server.";
-          }
-          leaf-list deviation {
-            type yang:yang-identifier;
-            description
-              "List of YANG deviation module names used by this
-               server to modify the conformance of the module
-               associated with this entry.";
-          }
-        }
-      }
-
-      container operations {
-        description
-          "Container for all operation resources
-           (application/yang.operation),
-
-           Each resource is represented as an empty leaf with the
-           name of the RPC operation from the YANG rpc statement.
-  
-           E.g.;
-  
-              POST /restconf/operations/show-log-errors
-  
-              leaf show-log-errors {
-                type empty;
-              }
-          ";
-      }
-
-      container streams {
-        description
-          "Container representing the notification event streams
-           supported by the server.";
-         reference
-           "RFC 5277, Section 3.4, <streams> element.";
-
-        list stream {
-          key name;
-          description
-            "Each entry describes an event stream supported by
-             the server.";
-
-          leaf name {
-            type string;
-            description "The stream name";
-            reference "RFC 5277, Section 3.4, <name> element.";
-          }
-
-          leaf description {
-            type string;
-            description "Description of stream content";
-            reference
-              "RFC 5277, Section 3.4, <description> element.";
-          }
-
-          leaf replay-support {
-            type boolean;
-            description
-              "Indicates if replay buffer supported for this stream";
-            reference
-              "RFC 5277, Section 3.4, <replaySupport> element.";
-          }
-
-          leaf replay-log-creation-time {
-            type yang:date-and-time;
-            description
-              "Indicates the time the replay log for this stream
-               was created.";
-            reference
-              "RFC 5277, Section 3.4, <replayLogCreationTime>
-               element.";
-          }
-
-          leaf events {
-            type empty;
-            description
-              "Represents the entry point for establishing
-               notification delivery via server sent events.";
-          }
-        }
-      }
-
-      leaf version {
-        type enumeration {
-          enum "1.0" {
-            description 
-              "Version 1.0 of the RESTCONF protocol.";
-          }
-        }
-        config false;
-        description
-          "Contains the RESTCONF protocol version.";
-      }
-    }
-  }  // grouping restconf
-
-
-  grouping notification {
-    description
-      "Contains the notification message wrapper definition.";
-
-    container notification {
-      description
-        "RESTCONF notification message wrapper.";
-
-      leaf event-time {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "The time the event was generated by the
-           event source.";
-        reference
-          "RFC 5277, section 4, <eventTime> element.";
-      }
-
-      /* The YANG-specific notification container is encoded
-       * after the 'event-time' element.  The format
-       * corresponds to the notificationContent element
-       * in RFC 5277, section 4. For example:
-       *
-       *  module example-one {
-       *     ...
-       *     notification event1 { ... }
-       *
-       *  }
-       *
-       *  Encoded as element 'event1' in the namespace
-       *  for module 'example-one'.
-       */
-    }
-  }  // grouping notification
-
-}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-system@2014-08-06.yang b/sdnr/model/yang/ietf-system@2014-08-06.yang
deleted file mode 100644 (file)
index de3096c..0000000
+++ /dev/null
@@ -1,842 +0,0 @@
-module ietf-system {
-  namespace "urn:ietf:params:xml:ns:yang:ietf-system";
-  prefix "sys";
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  import ietf-netconf-acm {
-    prefix nacm;
-  }
-
-  import iana-crypt-hash {
-    prefix ianach;
-  }
-
-  organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-
-
-
-
-
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: Thomas Nadeau
-               <mailto:tnadeau@lucidvision.com>
-
-     WG Chair: Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>
-
-     Editor:   Andy Bierman
-               <mailto:andy@yumaworks.com>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>";
-
-  description
-    "This module contains a collection of YANG definitions for the
-     configuration and identification of some common system
-     properties within a device containing a NETCONF server.  This
-     includes data node definitions for system identification,
-     time-of-day management, user management, DNS resolver
-     configuration, and some protocol operations for system
-     management.
-
-     Copyright (c) 2014 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 7317; see
-     the RFC itself for full legal notices.";
-
-  revision 2014-08-06 {
-    description
-      "Initial revision.";
-    reference
-      "RFC 7317: A YANG Data Model for System Management";
-  }
-
-
-
-
- /*
-  * Typedefs
-  */
-
-  typedef timezone-name {
-    type string;
-    description
-      "A time zone name as used by the Time Zone Database,
-       sometimes referred to as the 'Olson Database'.
-
-       The exact set of valid values is an implementation-specific
-       matter.  Client discovery of the exact set of time zone names
-       for a particular server is out of scope.";
-    reference
-      "RFC 6557: Procedures for Maintaining the Time Zone Database";
-   }
-
-  /*
-   * Features
-   */
-
-  feature radius {
-    description
-      "Indicates that the device can be configured as a RADIUS
-       client.";
-    reference
-      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
-  }
-
-  feature authentication {
-    description
-      "Indicates that the device supports configuration of
-       user authentication.";
-  }
-
-  feature local-users {
-    if-feature authentication;
-    description
-      "Indicates that the device supports configuration of
-       local user authentication.";
-  }
-
-
-
-
-
-
-
-  feature radius-authentication {
-    if-feature radius;
-    if-feature authentication;
-    description
-      "Indicates that the device supports configuration of user
-       authentication over RADIUS.";
-    reference
-      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)
-       RFC 5607: Remote Authentication Dial-In User Service (RADIUS)
-                 Authorization for Network Access Server (NAS)
-                 Management";
-  }
-
-  feature ntp {
-    description
-      "Indicates that the device can be configured to use one or
-       more NTP servers to set the system date and time.";
-  }
-
-  feature ntp-udp-port {
-    if-feature ntp;
-    description
-      "Indicates that the device supports the configuration of
-       the UDP port for NTP servers.
-
-       This is a 'feature', since many implementations do not support
-       any port other than the default port.";
-  }
-
-  feature timezone-name {
-    description
-      "Indicates that the local time zone on the device
-       can be configured to use the TZ database
-       to set the time zone and manage daylight saving time.";
-    reference
-      "RFC 6557: Procedures for Maintaining the Time Zone Database";
-  }
-
-  feature dns-udp-tcp-port {
-    description
-      "Indicates that the device supports the configuration of
-       the UDP and TCP port for DNS servers.
-
-       This is a 'feature', since many implementations do not support
-       any port other than the default port.";
-  }
-
-
-  /*
-   * Identities
-   */
-
-  identity authentication-method {
-    description
-      "Base identity for user authentication methods.";
-  }
-
-  identity radius {
-    base authentication-method;
-    description
-      "Indicates user authentication using RADIUS.";
-    reference
-      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)
-       RFC 5607: Remote Authentication Dial-In User Service (RADIUS)
-                 Authorization for Network Access Server (NAS)
-                 Management";
-  }
-
-  identity local-users {
-    base authentication-method;
-    description
-      "Indicates password-based authentication of locally
-       configured users.";
-  }
-
-  identity radius-authentication-type {
-    description
-      "Base identity for RADIUS authentication types.";
-  }
-
-  identity radius-pap {
-    base radius-authentication-type;
-    description
-      "The device requests Password Authentication Protocol (PAP)
-       authentication from the RADIUS server.";
-    reference
-      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
-  }
-
-
-
-
-
-
-
-
-  identity radius-chap {
-    base radius-authentication-type;
-    description
-      "The device requests Challenge Handshake Authentication
-       Protocol (CHAP) authentication from the RADIUS server.";
-    reference
-      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
-  }
-
-  /*
-   * Configuration data nodes
-   */
-
-  container system {
-    description
-      "System group configuration.";
-
-    leaf contact {
-      type string;
-      description
-        "The administrator contact information for the system.
-
-         A server implementation MAY map this leaf to the sysContact
-         MIB object.  Such an implementation needs to use some
-         mechanism to handle the differences in size and characters
-         allowed between this leaf and sysContact.  The definition of
-         such a mechanism is outside the scope of this document.";
-      reference
-        "RFC 3418: Management Information Base (MIB) for the
-                   Simple Network Management Protocol (SNMP)
-                   SNMPv2-MIB.sysContact";
-    }
-    leaf hostname {
-      type inet:domain-name;
-     description
-       "The name of the host.  This name can be a single domain
-        label or the fully qualified domain name of the host.";
-    }
-    leaf location {
-      type string;
-      description
-        "The system location.
-
-         A server implementation MAY map this leaf to the sysLocation
-         MIB object.  Such an implementation needs to use some
-         mechanism to handle the differences in size and characters
-         allowed between this leaf and sysLocation.  The definition
-         of such a mechanism is outside the scope of this document.";
-      reference
-        "RFC 3418: Management Information Base (MIB) for the
-                   Simple Network Management Protocol (SNMP)
-                   SNMPv2-MIB.sysLocation";
-    }
-
-    container clock {
-      description
-        "Configuration of the system date and time properties.";
-
-      choice timezone {
-        description
-          "The system time zone information.";
-
-        case timezone-name {
-          if-feature timezone-name;
-          leaf timezone-name {
-            type timezone-name;
-            description
-              "The TZ database name to use for the system, such
-               as 'Europe/Stockholm'.";
-          }
-        }
-        case timezone-utc-offset {
-          leaf timezone-utc-offset {
-            type int16 {
-              range "-1500 .. 1500";
-            }
-            units "minutes";
-            description
-              "The number of minutes to add to UTC time to
-               identify the time zone for this system.  For example,
-               'UTC - 8:00 hours' would be represented as '-480'.
-               Note that automatic daylight saving time adjustment
-               is not provided if this object is used.";
-          }
-        }
-      }
-    }
-
-    container ntp {
-      if-feature ntp;
-      presence
-        "Enables the NTP client unless the 'enabled' leaf
-         (which defaults to 'true') is set to 'false'";
-      description
-        "Configuration of the NTP client.";
-
-      leaf enabled {
-        type boolean;
-        default true;
-        description
-          "Indicates that the system should attempt to
-           synchronize the system clock with an NTP server
-           from the 'ntp/server' list.";
-      }
-      list server {
-        key name;
-        description
-          "List of NTP servers to use for system clock
-           synchronization.  If '/system/ntp/enabled'
-           is 'true', then the system will attempt to
-           contact and utilize the specified NTP servers.";
-
-        leaf name {
-          type string;
-          description
-            "An arbitrary name for the NTP server.";
-        }
-        choice transport {
-          mandatory true;
-          description
-            "The transport-protocol-specific parameters for this
-             server.";
-
-          case udp {
-            container udp {
-              description
-                "Contains UDP-specific configuration parameters
-                 for NTP.";
-              leaf address {
-                type inet:host;
-                mandatory true;
-                description
-                  "The address of the NTP server.";
-              }
-              leaf port {
-                if-feature ntp-udp-port;
-                type inet:port-number;
-                default 123;
-                description
-                  "The port number of the NTP server.";
-              }
-            }
-          }
-        }
-        leaf association-type {
-          type enumeration {
-            enum server {
-              description
-                "Use client association mode.  This device
-                 will not provide synchronization to the
-                 configured NTP server.";
-            }
-            enum peer {
-              description
-                "Use symmetric active association mode.
-                 This device may provide synchronization
-                 to the configured NTP server.";
-            }
-            enum pool {
-              description
-                "Use client association mode with one or
-                 more of the NTP servers found by DNS
-                 resolution of the domain name given by
-                 the 'address' leaf.  This device will not
-                 provide synchronization to the servers.";
-            }
-          }
-          default server;
-          description
-            "The desired association type for this NTP server.";
-        }
-        leaf iburst {
-          type boolean;
-          default false;
-          description
-            "Indicates whether this server should enable burst
-             synchronization or not.";
-        }
-        leaf prefer {
-          type boolean;
-          default false;
-          description
-            "Indicates whether this server should be preferred
-             or not.";
-        }
-      }
-    }
-
-    container dns-resolver {
-      description
-        "Configuration of the DNS resolver.";
-
-      leaf-list search {
-        type inet:domain-name;
-        ordered-by user;
-        description
-          "An ordered list of domains to search when resolving
-           a host name.";
-      }
-      list server {
-        key name;
-        ordered-by user;
-        description
-          "List of the DNS servers that the resolver should query.
-
-           When the resolver is invoked by a calling application, it
-           sends the query to the first name server in this list.  If
-           no response has been received within 'timeout' seconds,
-           the resolver continues with the next server in the list.
-           If no response is received from any server, the resolver
-           continues with the first server again.  When the resolver
-           has traversed the list 'attempts' times without receiving
-           any response, it gives up and returns an error to the
-           calling application.
-
-           Implementations MAY limit the number of entries in this
-           list.";
-
-        leaf name {
-          type string;
-          description
-            "An arbitrary name for the DNS server.";
-        }
-        choice transport {
-          mandatory true;
-          description
-            "The transport-protocol-specific parameters for this
-             server.";
-
-          case udp-and-tcp {
-            container udp-and-tcp {
-              description
-                "Contains UDP- and TCP-specific configuration
-                 parameters for DNS.";
-              reference
-                "RFC 1035: Domain Names - Implementation and
-                           Specification
-                 RFC 5966: DNS Transport over TCP - Implementation
-                           Requirements";
-
-              leaf address {
-                type inet:ip-address;
-                mandatory true;
-                description
-                  "The address of the DNS server.";
-              }
-              leaf port {
-                if-feature dns-udp-tcp-port;
-                type inet:port-number;
-                default 53;
-                description
-                  "The UDP and TCP port number of the DNS server.";
-              }
-            }
-          }
-        }
-      }
-      container options {
-        description
-          "Resolver options.  The set of available options has been
-           limited to those that are generally available across
-           different resolver implementations and generally useful.";
-        leaf timeout {
-          type uint8 {
-            range "1..max";
-          }
-          units "seconds";
-          default "5";
-          description
-            "The amount of time the resolver will wait for a
-             response from each remote name server before
-             retrying the query via a different name server.";
-        }
-        leaf attempts {
-          type uint8 {
-            range "1..max";
-          }
-          default "2";
-          description
-            "The number of times the resolver will send a query to
-             all of its name servers before giving up and returning
-             an error to the calling application.";
-        }
-      }
-    }
-
-
-
-    container radius {
-      if-feature radius;
-
-      description
-        "Configuration of the RADIUS client.";
-
-      list server {
-        key name;
-        ordered-by user;
-        description
-          "List of RADIUS servers used by the device.
-
-           When the RADIUS client is invoked by a calling
-           application, it sends the query to the first server in
-           this list.  If no response has been received within
-           'timeout' seconds, the client continues with the next
-           server in the list.  If no response is received from any
-           server, the client continues with the first server again.
-           When the client has traversed the list 'attempts' times
-           without receiving any response, it gives up and returns an
-           error to the calling application.";
-
-        leaf name {
-          type string;
-          description
-            "An arbitrary name for the RADIUS server.";
-        }
-        choice transport {
-          mandatory true;
-          description
-            "The transport-protocol-specific parameters for this
-             server.";
-
-          case udp {
-            container udp {
-              description
-                "Contains UDP-specific configuration parameters
-                 for RADIUS.";
-              leaf address {
-                type inet:host;
-                mandatory true;
-                description
-                  "The address of the RADIUS server.";
-              }
-
-
-
-
-              leaf authentication-port {
-                type inet:port-number;
-                default "1812";
-                description
-                  "The port number of the RADIUS server.";
-              }
-              leaf shared-secret {
-                type string;
-                mandatory true;
-                nacm:default-deny-all;
-                description
-                  "The shared secret, which is known to both the
-                   RADIUS client and server.";
-                reference
-                  "RFC 2865: Remote Authentication Dial In User
-                             Service (RADIUS)";
-              }
-            }
-          }
-        }
-        leaf authentication-type {
-          type identityref {
-            base radius-authentication-type;
-          }
-          default radius-pap;
-          description
-            "The authentication type requested from the RADIUS
-             server.";
-        }
-      }
-      container options {
-        description
-          "RADIUS client options.";
-
-        leaf timeout {
-          type uint8 {
-            range "1..max";
-          }
-          units "seconds";
-          default "5";
-          description
-            "The number of seconds the device will wait for a
-             response from each RADIUS server before trying with a
-             different server.";
-        }
-
-
-
-        leaf attempts {
-          type uint8 {
-            range "1..max";
-          }
-          default "2";
-          description
-            "The number of times the device will send a query to
-             all of its RADIUS servers before giving up.";
-        }
-      }
-    }
-
-    container authentication {
-      nacm:default-deny-write;
-      if-feature authentication;
-
-       description
-         "The authentication configuration subtree.";
-
-       leaf-list user-authentication-order {
-         type identityref {
-           base authentication-method;
-         }
-         must '(. != "sys:radius" or ../../radius/server)' {
-           error-message
-             "When 'radius' is used, a RADIUS server"
-           + " must be configured.";
-           description
-             "When 'radius' is used as an authentication method,
-              a RADIUS server must be configured.";
-         }
-         ordered-by user;
-
-         description
-           "When the device authenticates a user with a password,
-            it tries the authentication methods in this leaf-list in
-            order.  If authentication with one method fails, the next
-            method is used.  If no method succeeds, the user is
-            denied access.
-
-            An empty user-authentication-order leaf-list still allows
-            authentication of users using mechanisms that do not
-            involve a password.
-
-            If the 'radius-authentication' feature is advertised by
-            the NETCONF server, the 'radius' identity can be added to
-            this list.
-
-            If the 'local-users' feature is advertised by the
-            NETCONF server, the 'local-users' identity can be
-            added to this list.";
-       }
-
-       list user {
-         if-feature local-users;
-         key name;
-         description
-           "The list of local users configured on this device.";
-
-         leaf name {
-           type string;
-           description
-            "The user name string identifying this entry.";
-         }
-         leaf password {
-           type ianach:crypt-hash;
-           description
-             "The password for this entry.";
-         }
-         list authorized-key {
-           key name;
-           description
-             "A list of public SSH keys for this user.  These keys
-              are allowed for SSH authentication, as described in
-              RFC 4253.";
-           reference
-             "RFC 4253: The Secure Shell (SSH) Transport Layer
-                        Protocol";
-
-           leaf name {
-             type string;
-             description
-               "An arbitrary name for the SSH key.";
-           }
-
-
-
-
-
-
-
-
-
-
-
-
-           leaf algorithm {
-             type string;
-             mandatory true;
-             description
-               "The public key algorithm name for this SSH key.
-
-                Valid values are the values in the IANA 'Secure Shell
-                (SSH) Protocol Parameters' registry, Public Key
-                Algorithm Names.";
-             reference
-               "IANA 'Secure Shell (SSH) Protocol Parameters'
-                registry, Public Key Algorithm Names";
-           }
-           leaf key-data {
-             type binary;
-             mandatory true;
-             description
-               "The binary public key data for this SSH key, as
-                specified by RFC 4253, Section 6.6, i.e.:
-
-                  string    certificate or public key format
-                            identifier
-                  byte[n]   key/certificate data.";
-             reference
-               "RFC 4253: The Secure Shell (SSH) Transport Layer
-                          Protocol";
-           }
-         }
-       }
-     }
-  }
-
-  /*
-   * Operational state data nodes
-   */
-
-  container system-state {
-    config false;
-    description
-      "System group operational state.";
-
-    container platform {
-      description
-        "Contains vendor-specific information for
-         identifying the system platform and operating system.";
-      reference
-        "IEEE Std 1003.1-2008 - sys/utsname.h";
-
-      leaf os-name {
-        type string;
-        description
-          "The name of the operating system in use -
-           for example, 'Linux'.";
-        reference
-          "IEEE Std 1003.1-2008 - utsname.sysname";
-      }
-      leaf os-release {
-        type string;
-        description
-          "The current release level of the operating
-           system in use.  This string MAY indicate
-           the OS source code revision.";
-        reference
-          "IEEE Std 1003.1-2008 - utsname.release";
-      }
-      leaf os-version {
-        type string;
-        description
-          "The current version level of the operating
-           system in use.  This string MAY indicate
-           the specific OS build date and target variant
-           information.";
-        reference
-          "IEEE Std 1003.1-2008 - utsname.version";
-      }
-      leaf machine {
-        type string;
-        description
-          "A vendor-specific identifier string representing
-           the hardware in use.";
-        reference
-          "IEEE Std 1003.1-2008 - utsname.machine";
-      }
-    }
-
-    container clock {
-      description
-        "Monitoring of the system date and time properties.";
-
-      leaf current-datetime {
-        type yang:date-and-time;
-        description
-          "The current system date and time.";
-      }
-
-
-      leaf boot-datetime {
-        type yang:date-and-time;
-        description
-          "The system date and time when the system last restarted.";
-      }
-    }
-  }
-
-  rpc set-current-datetime {
-    nacm:default-deny-all;
-    description
-      "Set the /system-state/clock/current-datetime leaf
-       to the specified value.
-
-       If the system is using NTP (i.e., /system/ntp/enabled
-       is set to 'true'), then this operation will fail with
-       error-tag 'operation-failed' and error-app-tag value of
-       'ntp-active'.";
-    input {
-      leaf current-datetime {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "The current system date and time.";
-      }
-    }
-  }
-
-  rpc system-restart {
-    nacm:default-deny-all;
-    description
-      "Request that the entire system be restarted immediately.
-       A server SHOULD send an rpc reply to the client before
-       restarting the system.";
-  }
-
-  rpc system-shutdown {
-    nacm:default-deny-all;
-    description
-      "Request that the entire system be shut down immediately.
-       A server SHOULD send an rpc reply to the client before
-       shutting down the system.";
-  }
-
-}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-yang-library@2016-04-09.yang b/sdnr/model/yang/ietf-yang-library@2016-04-09.yang
deleted file mode 100644 (file)
index 31fc9ee..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-module ietf-yang-library {
-    namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
-    prefix "yanglib";
-
-    import ietf-yang-types {
-      prefix yang;
-    }
-    import ietf-inet-types {
-      prefix inet;
-    }
-
-    organization
-      "IETF NETCONF (Network Configuration) Working Group";
-
-    contact
-      "WG Web:   <http://tools.ietf.org/wg/netconf/>
-       WG List:  <mailto:netconf@ietf.org>
-
-       WG Chair: Mehmet Ersue
-                 <mailto:mehmet.ersue@nsn.com>
-
-       WG Chair: Mahesh Jethanandani
-                 <mailto:mjethanandani@gmail.com>
-
-       Editor:   Andy Bierman
-                 <mailto:andy@yumaworks.com>
-
-       Editor:   Martin Bjorklund
-                 <mailto:mbj@tail-f.com>
-
-       Editor:   Kent Watsen
-                 <mailto:kwatsen@juniper.net>";
-
-    description
-      "This module contains monitoring information about the YANG
-       modules and submodules that are used within a YANG-based
-       server.
-
-       Copyright (c) 2016 IETF Trust and the persons identified as
-       authors of the code.  All rights reserved.
-
-       Redistribution and use in source and binary forms, with or
-       without modification, is permitted pursuant to, and subject
-       to the license terms contained in, the Simplified BSD License
-       set forth in Section 4.c of the IETF Trust's Legal Provisions
-       Relating to IETF Documents
-       (http://trustee.ietf.org/license-info).
-
-       This version of this YANG module is part of RFC XXXX; see
-       the RFC itself for full legal notices.";
-
-    // RFC Ed.: replace XXXX with actual RFC number and remove this
-    // note.
-
-    // RFC Ed.: remove this note
-    // Note: extracted from draft-ietf-netconf-yang-library-06.txt
-
-    // RFC Ed.: update the date below with the date of RFC publication
-    // and remove this note.
-    revision 2016-04-09 {
-      description
-        "Initial revision.";
-      reference
-        "RFC XXXX: YANG Module Library.";
-    }
-
-    /*
-     * Typedefs
-     */
-
-    // FIXME inline this union after https://bugs.opendaylight.org/show_bug.cgi?id=5826 is fixed
-    typedef optional-revision {
-      type union {
-        type revision-identifier;
-        type string { length 0; }
-      }
-      description
-        "The YANG module or submodule revision date.
-         A zero-length string is used if no revision statement
-         is present in the YANG module or submodule.";
-    }
-
-    typedef revision-identifier {
-      type string {
-        pattern '\d{4}-\d{2}-\d{2}';
-      }
-      description
-        "Represents a specific date in YYYY-MM-DD format.";
-    }
-
-    /*
-     * Groupings
-     */
-
-    grouping module-list {
-      description
-        "The module data structure is represented as a grouping
-         so it can be reused in configuration or another monitoring
-         data structure.";
-
-      grouping common-leafs {
-        description
-          "Common parameters for YANG modules and submodules.";
-
-        leaf name {
-          type yang:yang-identifier;
-          description
-            "The YANG module or submodule name.";
-        }
-        leaf revision {
-          type optional-revision;
-        }
-      }
-
-      grouping schema-leaf {
-        description
-          "Common schema leaf parameter for modules and submodules.";
-
-        leaf schema {
-          type inet:uri;
-          description
-            "Contains a URL that represents the YANG schema
-             resource for this module or submodule.
-
-             This leaf will only be present if there is a URL
-             available for retrieval of the schema for this entry.";
-        }
-      }
-
-      list module {
-        key "name revision";
-        description
-          "Each entry represents one revision of one module
-           currently supported by the server.";
-
-        uses common-leafs;
-        uses schema-leaf;
-
-        leaf namespace {
-          type inet:uri;
-          mandatory true;
-          description
-            "The XML namespace identifier for this module.";
-        }
-        leaf-list feature {
-          type yang:yang-identifier;
-          description
-            "List of YANG feature names from this module that are
-             supported by the server, regardless whether they are
-             defined in the module or any included submodule.";
-        }
-        list deviation {
-          key "name revision";
-          description
-            "List of YANG deviation module names and revisions
-             used by this server to modify the conformance of
-             the module associated with this entry.  Note that
-             the same module can be used for deviations for
-             multiple modules, so the same entry MAY appear
-             within multiple 'module' entries.
-
-             The deviation module MUST be present in the 'module'
-             list, with the same name and revision values.
-             The 'conformance-type' value will be 'implement' for
-             the deviation module.";
-          uses common-leafs;
-        }
-        leaf conformance-type {
-          type enumeration {
-            enum implement {
-              description
-                "Indicates that the server implements one or more
-                 protocol-accessible objects defined in the YANG module
-                 identified in this entry.  This includes deviation
-                 statements defined in the module.
-
-                 For YANG version 1.1 modules, there is at most one
-                 module entry with conformance type 'implement' for a
-                 particular module name, since YANG 1.1 requires that
-                 at most one revision of a module is implemented.
-
-                 For YANG version 1 modules, there SHOULD NOT be more
-                 than one module entry for a particular module name.";
-            }
-            enum import {
-              description
-                "Indicates that the server imports reusable definitions
-                 from the specified revision of the module, but does
-                 not implement any protocol accessible objects from
-                 this revision.
-
-                 Multiple module entries for the same module name MAY
-                 exist. This can occur if multiple modules import the
-                 same module, but specify different revision-dates in
-                 the import statements.";
-            }
-          }
-          mandatory true;
-          description
-            "Indicates the type of conformance the server is claiming
-             for the YANG module identified by this entry.";
-        }
-        container submodules {
-          description
-            "Contains information about all the submodules used
-             by the parent module entry";
-
-          list submodule {
-            key "name revision";
-            description
-              "Each entry represents one submodule within the
-               parent module.";
-            uses common-leafs;
-            uses schema-leaf;
-          }
-        }
-      }
-    }
-
-    /*
-     * Operational state data nodes
-     */
-
-    container modules-state {
-      config false;
-      description
-        "Contains YANG module monitoring information.";
-
-      leaf module-set-id {
-        type string;
-        mandatory true;
-        description
-          "Contains a server-specific identifier representing
-           the current set of modules and submodules.  The
-           server MUST change the value of this leaf if the
-           information represented by the 'module' list instances
-           has changed.";
-      }
-
-      uses module-list;
-    }
-
-    /*
-     * Notifications
-     */
-
-    notification yang-library-change {
-      description
-       "Generated when the set of modules and submodules supported
-        by the server has changed.";
-      leaf module-set-id {
-        type leafref {
-          path "/yanglib:modules-state/yanglib:module-set-id";
-        }
-        mandatory true;
-        description
-          "Contains the module-set-id value representing the
-           set of modules and submodules supported at the server at
-           the time the notification is generated.";
-      }
-    }
-
-}
\ No newline at end of file
diff --git a/sdnr/model/yang/ietf-yang-types@2013-07-15.yang b/sdnr/model/yang/ietf-yang-types@2013-07-15.yang
deleted file mode 100644 (file)
index bdff18c..0000000
+++ /dev/null
@@ -1,467 +0,0 @@
-module ietf-yang-types {
-
-     namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
-     prefix "yang";
-
-     organization
-      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-     contact
-      "WG Web:   <http://tools.ietf.org/wg/netmod/>
-       WG List:  <mailto:netmod@ietf.org>
-       WG Chair: David Kessens
-                 <mailto:david.kessens@nsn.com>
-
-       WG Chair: Juergen Schoenwaelder
-                 <mailto:j.schoenwaelder@jacobs-university.de>
-
-       Editor:   Juergen Schoenwaelder
-                 <mailto:j.schoenwaelder@jacobs-university.de>";
-
-     description
-      "This module contains a collection of generally useful derived
-       YANG data types.
-
-       Copyright (c) 2013 IETF Trust and the persons identified as
-       authors of the code.  All rights reserved.
-
-       Redistribution and use in source and binary forms, with or
-       without modification, is permitted pursuant to, and subject
-       to the license terms contained in, the Simplified BSD License
-       set forth in Section 4.c of the IETF Trust's Legal Provisions
-       Relating to IETF Documents
-       (http://trustee.ietf.org/license-info).
-
-       This version of this YANG module is part of RFC 6991; see
-       the RFC itself for full legal notices.";
-
-     revision 2013-07-15 {
-       description
-        "This revision adds the following new data types:
-         - yang-identifier
-         - hex-string
-         - uuid
-         - dotted-quad";
-       reference
-        "RFC 6991: Common YANG Data Types";
-     }
-
-     revision 2010-09-24 {
-       description
-        "Initial revision.";
-       reference
-        "RFC 6021: Common YANG Data Types";
-     }
-
-     /*** collection of counter and gauge types ***/
-
-     typedef counter32 {
-       type uint32;
-       description
-        "The counter32 type represents a non-negative integer
-         that monotonically increases until it reaches a
-         maximum value of 2^32-1 (4294967295 decimal), when it
-         wraps around and starts increasing again from zero.
-
-         Counters have no defined 'initial' value, and thus, a
-         single value of a counter has (in general) no information
-         content.  Discontinuities in the monotonically increasing
-         value normally occur at re-initialization of the
-         management system, and at other times as specified in the
-         description of a schema node using this type.  If such
-         other times can occur, for example, the creation of
-         a schema node of type counter32 at times other than
-         re-initialization, then a corresponding schema node
-         should be defined, with an appropriate type, to indicate
-         the last discontinuity.
-
-         The counter32 type should not be used for configuration
-         schema nodes.  A default statement SHOULD NOT be used in
-         combination with the type counter32.
-
-         In the value set and its semantics, this type is equivalent
-         to the Counter32 type of the SMIv2.";
-       reference
-        "RFC 2578: Structure of Management Information Version 2
-                   (SMIv2)";
-     }
-
-     typedef zero-based-counter32 {
-       type yang:counter32;
-       default "0";
-       description
-        "The zero-based-counter32 type represents a counter32
-         that has the defined 'initial' value zero.
-
-         A schema node of this type will be set to zero (0) on creation
-         and will thereafter increase monotonically until it reaches
-         a maximum value of 2^32-1 (4294967295 decimal), when it
-         wraps around and starts increasing again from zero.
-
-         Provided that an application discovers a new schema node
-         of this type within the minimum time to wrap, it can use the
-         'initial' value as a delta.  It is important for a management
-         station to be aware of this minimum time and the actual time
-         between polls, and to discard data if the actual time is too
-         long or there is no defined minimum time.
-        In the value set and its semantics, this type is equivalent
-         to the ZeroBasedCounter32 textual convention of the SMIv2.";
-       reference
-         "RFC 4502: Remote Network Monitoring Management Information
-                    Base Version 2";
-     }
-
-     typedef counter64 {
-       type uint64;
-       description
-        "The counter64 type represents a non-negative integer
-         that monotonically increases until it reaches a
-         maximum value of 2^64-1 (18446744073709551615 decimal),
-         when it wraps around and starts increasing again from zero.
-
-         Counters have no defined 'initial' value, and thus, a
-         single value of a counter has (in general) no information
-         content.  Discontinuities in the monotonically increasing
-         value normally occur at re-initialization of the
-         management system, and at other times as specified in the
-         description of a schema node using this type.  If such
-         other times can occur, for example, the creation of
-         a schema node of type counter64 at times other than
-         re-initialization, then a corresponding schema node
-         should be defined, with an appropriate type, to indicate
-         the last discontinuity.
-
-         The counter64 type should not be used for configuration
-         schema nodes.  A default statement SHOULD NOT be used in
-         combination with the type counter64.
-
-         In the value set and its semantics, this type is equivalent
-         to the Counter64 type of the SMIv2.";
-       reference
-        "RFC 2578: Structure of Management Information Version 2
-                   (SMIv2)";
-     }
-
-     typedef zero-based-counter64 {
-       type yang:counter64;
-       default "0";
-       description
-        "The zero-based-counter64 type represents a counter64 that
-         has the defined 'initial' value zero.
-         A schema node of this type will be set to zero (0) on creation
-         and will thereafter increase monotonically until it reaches
-         a maximum value of 2^64-1 (18446744073709551615 decimal),
-         when it wraps around and starts increasing again from zero.
-
-         Provided that an application discovers a new schema node
-         of this type within the minimum time to wrap, it can use the
-         'initial' value as a delta.  It is important for a management
-         station to be aware of this minimum time and the actual time
-         between polls, and to discard data if the actual time is too
-         long or there is no defined minimum time.
-
-         In the value set and its semantics, this type is equivalent
-         to the ZeroBasedCounter64 textual convention of the SMIv2.";
-       reference
-        "RFC 2856: Textual Conventions for Additional High Capacity
-                   Data Types";
-     }
-
-     typedef gauge32 {
-       type uint32;
-       description
-        "The gauge32 type represents a non-negative integer, which
-         may increase or decrease, but shall never exceed a maximum
-         value, nor fall below a minimum value.  The maximum value
-         cannot be greater than 2^32-1 (4294967295 decimal), and
-         the minimum value cannot be smaller than 0.  The value of
-         a gauge32 has its maximum value whenever the information
-         being modeled is greater than or equal to its maximum
-         value, and has its minimum value whenever the information
-         being modeled is smaller than or equal to its minimum value.
-         If the information being modeled subsequently decreases
-         below (increases above) the maximum (minimum) value, the
-         gauge32 also decreases (increases).
-
-         In the value set and its semantics, this type is equivalent
-         to the Gauge32 type of the SMIv2.";
-       reference
-        "RFC 2578: Structure of Management Information Version 2
-                   (SMIv2)";
-     }
-
-     typedef gauge64 {
-       type uint64;
-       description
-        "The gauge64 type represents a non-negative integer, which
-         may increase or decrease, but shall never exceed a maximum
-         value, nor fall below a minimum value.  The maximum value
-         cannot be greater than 2^64-1 (18446744073709551615), and
-         the minimum value cannot be smaller than 0.  The value of
-         a gauge64 has its maximum value whenever the information
-         being modeled is greater than or equal to its maximum
-         value, and has its minimum value whenever the information
-         being modeled is smaller than or equal to its minimum value.
-         If the information being modeled subsequently decreases
-         below (increases above) the maximum (minimum) value, the
-         gauge64 also decreases (increases).
-
-         In the value set and its semantics, this type is equivalent
-         to the CounterBasedGauge64 SMIv2 textual convention defined
-         in RFC 2856";
-       reference
-        "RFC 2856: Textual Conventions for Additional High Capacity
-                   Data Types";
-     }
-
-     /*** collection of identifier-related types ***/
-
-     typedef object-identifier {
-       type string {
-         pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
-               + '(\.(0|([1-9]\d*)))*';
-       }
-       description
-        "The object-identifier type represents administratively
-         assigned names in a registration-hierarchical-name tree.
-
-         Values of this type are denoted as a sequence of numerical
-         non-negative sub-identifier values.  Each sub-identifier
-         value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
-         are separated by single dots and without any intermediate
-         whitespace.
-
-         The ASN.1 standard restricts the value space of the first
-         sub-identifier to 0, 1, or 2.  Furthermore, the value space
-         of the second sub-identifier is restricted to the range
-         0 to 39 if the first sub-identifier is 0 or 1.  Finally,
-         the ASN.1 standard requires that an object identifier
-         has always at least two sub-identifiers.  The pattern
-         captures these restrictions.
-
-         Although the number of sub-identifiers is not limited,
-         module designers should realize that there may be
-         implementations that stick with the SMIv2 limit of 128
-         sub-identifiers.
-         This type is a superset of the SMIv2 OBJECT IDENTIFIER type
-         since it is not restricted to 128 sub-identifiers.  Hence,
-         this type SHOULD NOT be used to represent the SMIv2 OBJECT
-         IDENTIFIER type; the object-identifier-128 type SHOULD be
-         used instead.";
-       reference
-        "ISO9834-1: Information technology -- Open Systems
-         Interconnection -- Procedures for the operation of OSI
-         Registration Authorities: General procedures and top
-         arcs of the ASN.1 Object Identifier tree";
-     }
-
-     typedef object-identifier-128 {
-       type object-identifier {
-         pattern '\d*(\.\d*){1,127}';
-       }
-       description
-        "This type represents object-identifiers restricted to 128
-         sub-identifiers.
-
-         In the value set and its semantics, this type is equivalent
-         to the OBJECT IDENTIFIER type of the SMIv2.";
-       reference
-        "RFC 2578: Structure of Management Information Version 2
-                   (SMIv2)";
-     }
-
-     typedef yang-identifier {
-       type string {
-         length "1..max";
-         pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
-         pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
-       }
-       description
-         "A YANG identifier string as defined by the 'identifier'
-          rule in Section 12 of RFC 6020.  An identifier must
-          start with an alphabetic character or an underscore
-          followed by an arbitrary sequence of alphabetic or
-          numeric characters, underscores, hyphens, or dots.
-
-          A YANG identifier MUST NOT start with any possible
-          combination of the lowercase or uppercase character
-          sequence 'xml'.";
-       reference
-         "RFC 6020: YANG - A Data Modeling Language for the Network
-                    Configuration Protocol (NETCONF)";
-     }
-     /*** collection of types related to date and time***/
-
-     typedef date-and-time {
-       type string {
-         pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
-               + '(Z|[\+\-]\d{2}:\d{2})';
-       }
-       description
-        "The date-and-time type is a profile of the ISO 8601
-         standard for representation of dates and times using the
-         Gregorian calendar.  The profile is defined by the
-         date-time production in Section 5.6 of RFC 3339.
-
-         The date-and-time type is compatible with the dateTime XML
-         schema type with the following notable exceptions:
-
-         (a) The date-and-time type does not allow negative years.
-
-         (b) The date-and-time time-offset -00:00 indicates an unknown
-             time zone (see RFC 3339) while -00:00 and +00:00 and Z
-             all represent the same time zone in dateTime.
-
-         (c) The canonical format (see below) of data-and-time values
-             differs from the canonical format used by the dateTime XML
-             schema type, which requires all times to be in UTC using
-             the time-offset 'Z'.
-
-         This type is not equivalent to the DateAndTime textual
-         convention of the SMIv2 since RFC 3339 uses a different
-         separator between full-date and full-time and provides
-         higher resolution of time-secfrac.
-
-         The canonical format for date-and-time values with a known time
-         zone uses a numeric time zone offset that is calculated using
-         the device's configured known offset to UTC time.  A change of
-         the device's offset to UTC time will cause date-and-time values
-         to change accordingly.  Such changes might happen periodically
-         in case a server follows automatically daylight saving time
-         (DST) time zone offset changes.  The canonical format for
-         date-and-time values with an unknown time zone (usually
-         referring to the notion of local time) uses the time-offset
-         -00:00.";
-       reference
-        "RFC 3339: Date and Time on the Internet: Timestamps
-         RFC 2579: Textual Conventions for SMIv2
-         XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
-     }
-     typedef timeticks {
-       type uint32;
-       description
-        "The timeticks type represents a non-negative integer that
-         represents the time, modulo 2^32 (4294967296 decimal), in
-         hundredths of a second between two epochs.  When a schema
-         node is defined that uses this type, the description of
-         the schema node identifies both of the reference epochs.
-
-         In the value set and its semantics, this type is equivalent
-         to the TimeTicks type of the SMIv2.";
-       reference
-        "RFC 2578: Structure of Management Information Version 2
-                   (SMIv2)";
-     }
-
-     typedef timestamp {
-       type yang:timeticks;
-       description
-        "The timestamp type represents the value of an associated
-         timeticks schema node at which a specific occurrence
-         happened.  The specific occurrence must be defined in the
-         description of any schema node defined using this type.  When
-         the specific occurrence occurred prior to the last time the
-         associated timeticks attribute was zero, then the timestamp
-         value is zero.  Note that this requires all timestamp values
-         to be reset to zero when the value of the associated timeticks
-         attribute reaches 497+ days and wraps around to zero.
-
-         The associated timeticks schema node must be specified
-         in the description of any schema node using this type.
-
-         In the value set and its semantics, this type is equivalent
-         to the TimeStamp textual convention of the SMIv2.";
-       reference
-        "RFC 2579: Textual Conventions for SMIv2";
-     }
-
-     /*** collection of generic address types ***/
-
-     typedef phys-address {
-       type string {
-         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-       }
-       description
-        "Represents media- or physical-level addresses represented
-         as a sequence octets, each octet represented by two hexadecimal
-         numbers.  Octets are separated by colons.  The canonical
-         representation uses lowercase characters.
-
-         In the value set and its semantics, this type is equivalent
-         to the PhysAddress textual convention of the SMIv2.";
-       reference
-        "RFC 2579: Textual Conventions for SMIv2";
-     }
-
-     typedef mac-address {
-       type string {
-         pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
-       }
-       description
-        "The mac-address type represents an IEEE 802 MAC address.
-         The canonical representation uses lowercase characters.
-
-         In the value set and its semantics, this type is equivalent
-         to the MacAddress textual convention of the SMIv2.";
-       reference
-        "IEEE 802: IEEE Standard for Local and Metropolitan Area
-                   Networks: Overview and Architecture
-         RFC 2579: Textual Conventions for SMIv2";
-     }
-
-     /*** collection of XML-specific types ***/
-
-     typedef xpath1.0 {
-       type string;
-       description
-        "This type represents an XPATH 1.0 expression.
-
-         When a schema node is defined that uses this type, the
-         description of the schema node MUST specify the XPath
-         context in which the XPath expression is evaluated.";
-       reference
-        "XPATH: XML Path Language (XPath) Version 1.0";
-     }
-
-     /*** collection of string types ***/
-
-     typedef hex-string {
-       type string {
-         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-       }
-       description
-        "A hexadecimal string with octets represented as hex digits
-         separated by colons.  The canonical representation uses
-         lowercase characters.";
-     }
-
-     typedef uuid {
-       type string {
-         pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
-               + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
-       }
-       description
-        "A Universally Unique IDentifier in the string representation
-         defined in RFC 4122.  The canonical representation uses
-         lowercase characters.
-
-         The following is an example of a UUID in string representation:
-         f81d4fae-7dec-11d0-a765-00a0c91e6bf6
-         ";
-       reference
-        "RFC 4122: A Universally Unique IDentifier (UUID) URN
-                   Namespace";
-     }
-
-     typedef dotted-quad {
-       type string {
-         pattern
-           '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-         + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
-       }
-       description
-         "An unsigned 32-bit number expressed in the dotted-quad
-          notation, i.e., four octets written as decimal numbers
-          and separated with the '.' (full stop) character.";
-     }
-   }
\ No newline at end of file
diff --git a/sdnr/model/yang/ltp-path@2017-05-26.yang b/sdnr/model/yang/ltp-path@2017-05-26.yang
deleted file mode 100644 (file)
index e9404d8..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-module ltp-path {
-  namespace "urn:onf:params:xml:ns:yang:ltp-path";
-  prefix ltp-path;
-
-  import core-model {
-    prefix core-model;
-  }
-
-  organization
-   "ONF (Open Networking Foundation) Open Transport Working Group -
-    Wireless Transport Project";
-  contact 
-    "WG Web: <https://www.opennetworking.org/technical-communities/areas/
-              specification/1931-optical-transport>
-     WG List:  <mailto:wireless-transport@login.opennetworking.org>
-     WG Chair: Lyndon Ong
-               <mailto:lyong@ciena.com>
-     WG Chair: Giorgio Cazzaniga
-               <mailto:giorgio.cazzaniga@sm-optics.com>
-     Editor:   Martin Skorupski
-               <mailto:martin.skorupski@highstreet-technologies.com>";
-  description 
-    "This module contains a collection of YANG definitions describing a 
-     telecommunication network path.";
-  revision 2017-05-26 {
-    description "Initial version";
-    reference "ltp-path, ONF core-model 1.2";
-  }
-
-  typedef layer-protocol-name-enumeration {
-    type enumeration {
-      enum ETH {
-        value 1;
-        description
-          "Identifying the layer of Ethernet.";
-      }
-      enum PTP {
-        value 2;
-        description
-          "Identifying the layer or the Precision Time Protocol.";
-       }
-    }
-
-    description
-      "The propagation of the layer protocol name.";
-  }
-
-  container ltp-path {
-    description
-      "Listing all the path-identifiers, used by RESTCONF interfaces to
-       address an entry in the ltp-path-list.";
-
-    leaf-list path-identifier {
-      type leafref {
-        path '/ltp-path/ltp-path-list/path-id';
-      }
-      description 
-        "List of reference values for existing path entries.";
-    }
-
-    list ltp-path-list {
-
-      key "path-id";
-
-      description
-        "A list of path found in the network.";
-
-      leaf path-id {
-        type string;
-        description
-          "A unique identifier of a path. It migth be beneficial to use the 
-           format as defined in RFC 4122 
-           (https://www.ietf.org/rfc/rfc4122.txt).";
-      }
-
-      leaf path-name {
-        type string;
-        description
-          "The human readable name of a path. It should include start 
-           and end point.";
-      }
-
-      leaf forwarding-direction {
-        type core-model:forwarding-direction;
-        description
-          "Defines the directionality of the path.";
-      }
-
-      leaf layer-protocol-name {
-        type layer-protocol-name-enumeration;
-        description
-          "Defines the layer of the path. Please see ONF CoreModel for 
-           further details.";
-      }
-
-      list logical-termination-point-list {
-
-        key "ltp-index";
-        min-elements 2;
-
-        description
-          "An ordered list of logical-termination points, defining the path.";
-
-        leaf ltp-index {
-          type string;
-          description
-            "The index of the LTP with in the list. The LTP with the highest
-             index is the end-point of the path. The LTP with the lowest
-             index is the start-point of the path.";
-        }
-
-        leaf ltp-reference {
-          type leafref {
-            path '/core-model:network-element/core-model:ltp/core-model:uuid';
-          }
-          description
-            "The reference value of a network-elements LTP.";
-        }
-
-        leaf physical-port-reference {
-          type string;
-          description
-            "A text label for the unmodelled physical port associated with 
-             the LTP. In many cases there is no associated physical port.";
-        }
-    
-        leaf node-reference {
-          type leafref {
-            path '/core-model:network-element/core-model:uuid';
-          }
-          description
-            "A reference value identifying a network-element.";
-        }
-      }
-   }
-  }
-}
diff --git a/sdnr/model/yang/microwave-model@2017-03-24.yang b/sdnr/model/yang/microwave-model@2017-03-24.yang
deleted file mode 100644 (file)
index e6b6bb3..0000000
+++ /dev/null
@@ -1,2262 +0,0 @@
-module microwave-model {
-    namespace "urn:onf:params:xml:ns:yang:microwave-model";
-    prefix microwave-model;
-
-    import core-model {
-        prefix core-model;
-    }
-    import g.874.1-model {
-        prefix g;
-    }
-    import ietf-yang-types {
-        prefix yang;
-    }
-
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This module contains a collection of YANG definitions for managing wireless networks.";
-    revision 2017-03-24 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package type-definitions
-    **********************/ 
-        typedef loop-back-type {
-            type enumeration {
-                enum none {
-                    description "none";
-                }
-                enum if {
-                    description "Intermediate Frequency on the interface between indoor and outdoor unit.";
-                }
-                enum rf {
-                    description "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site.";
-                }
-            }
-            description "none";
-        }
-        typedef severity-type {
-            type enumeration {
-                enum non-alarmed {
-                    description "none";
-                }
-                enum warning {
-                    description "none";
-                }
-                enum minor {
-                    description "none";
-                }
-                enum major {
-                    description "none";
-                }
-                enum critical {
-                    description "none";
-                }
-            }
-            description "According to ITU-T M.3160";
-        }
-        grouping channel-plan-type-g {
-            leaf supported-channel-plan {
-                type string;
-                default "Channel plan name not defined.";
-                config false;
-                description "Unique name (e.g. ECC/REC/(01)04_Annex 5) of a document, which describes a frequency grid that can be adjusted at the air interface. Corresponding channel plans to be delivered by the hardware vendor and to be stored by the operator in an controller/application attached database.";
-            }
-            leaf duplex-distance-is-variable {
-                type boolean;
-                default false;
-                config false;
-                description "To be set on  'true', if the distance between transmitted and received frequency is variable.";
-            }
-            leaf duplex-distance {
-                type int32;
-                units "kHz";
-                default -1;
-                config false;
-                description "Distance between transmitted and received frequency.";
-            }
-            leaf auto-freq-select-is-avail {
-                type boolean;
-                default false;
-                config false;
-                description "In case the microwave radio is capable of automatically selecting the transmit frequency in unlicensed bands, this field shall contain a 'true'.";
-            }
-            list transmission-mode-list {
-                key 'transmission-mode-id';
-                config false;
-                min-elements 1;
-                uses transmission-mode-type-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping transmission-mode-type-g {
-            leaf transmission-mode-id {
-                type core-model:universal-id;
-                config false;
-                description "Indentifies the transmissionMode for internal reference.";
-            }
-            leaf channel-bandwidth {
-                type int32;
-                units "kHz";
-                default -1;
-                config false;
-                description "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-            }
-            leaf modulation-scheme {
-                type int16;
-                units "symbols";
-                default -1;
-                config false;
-                description "Modulation scheme, which is base to the other characteristics described in the same transmissionModeType data type. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256').";
-            }
-            leaf code-rate {
-                type int8;
-                units "%";
-                default -1;
-                config false;
-                description "Code rate of the coding scheme in % (Net bit rate ? Gross bit rate ? code rate).";
-            }
-            leaf tx-power-min {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the minimum transmit power the modem can operate in dBm.";
-            }
-            leaf tx-power-max {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the maximum transmit power the modem can operate in dBm.";
-            }
-            leaf rx-threshold {
-                type int16;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the receive level required to decode the received signal with a Bit Error Rate of 1e-6 or less.";
-            }
-            leaf am-upshift-level {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the receive level that has to be exceeded to shift into a higher modulation scheme.";
-            }
-            leaf am-downshift-level {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the receive level that has to be exceeded for not shifting into a lower modulation scheme.";
-            }
-            leaf xpic-is-avail {
-                type boolean;
-                default false;
-                config false;
-                description "In case this air interface type is capable of XPIC, this field shall contain a 'true'. This information shall purely relate to capabilities of the equipment type, but not to the operational capability of a specific hardware composition on site. Means for example that this attribute might contain a 'true' statement, even if an additional cable would have been required to actually operate XPIC in a specific case.";
-            }
-            description "none";
-        }
-        typedef polarization-type {
-            type enumeration {
-                enum not-specified {
-                    description "none";
-                }
-                enum horizontal {
-                    description "none";
-                }
-                enum vertical {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping air-interface-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping air-interface-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        grouping air-interface-performance-type-g {
-            leaf es {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Number of errored seconds.";
-            }
-            leaf ses {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Number of severely errored seconds.";
-            }
-            leaf cses {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Number of consecutive severely errored seconds.";
-            }
-            leaf unavailability {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Total time of unavailability in seconds.";
-            }
-            leaf tx-level-min {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Minimum transmit power. Signed integers are required.";
-            }
-            leaf tx-level-max {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Maximum transmit power. Signed integers are required.";
-            }
-            leaf tx-level-avg {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Averaged transmit power. Signed integers are required.";
-            }
-            leaf rx-level-min {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Minimum receive level. Signed integers are required.";
-            }
-            leaf rx-level-max {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Maximum receive level. Signed integers are required.";
-            }
-            leaf rx-level-avg {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Averaged receive level. Signed integers are required.";
-            }
-            leaf time2-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Sum of all seconds the transmitter operated in e.g. BPSK.";
-            }
-            leaf time4-states-s {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time4-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time8-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time16-states-s {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time16-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time32-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time64-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time128-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time256-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time512-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time512-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time1024-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time1024-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time2048-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time2048-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time4096-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time4096-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time8192-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time8192-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf snir-min {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Minimum signal to (noise+interference) ratio.";
-            }
-            leaf snir-max {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Maximum signal to (noise+interference) ratio.";
-            }
-            leaf snir-avg {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Averaged signal to (noise+interference) ratio.";
-            }
-            leaf xpd-min {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Minimum cross polarization discrimination.";
-            }
-            leaf xpd-max {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Maximum cross polarization discrimination.";
-            }
-            leaf xpd-avg {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Averaged cross polarization discrimination.";
-            }
-            leaf rf-temp-min {
-                type int8;
-                units "C";
-                default -99;
-                config false;
-                description "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            }
-            leaf rf-temp-max {
-                type int8;
-                units "C";
-                default -99;
-                config false;
-                description "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            }
-            leaf rf-temp-avg {
-                type int8;
-                units "C";
-                default -99;
-                config false;
-                description "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            }
-            leaf defect-blocks-sum {
-                type int16;
-                units "blocks";
-                default -1;
-                config false;
-                description "Total number of blocks that were defect after receiving and could not be corrected by the FEC.";
-            }
-            leaf time-period {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Total length of the measurement period.";
-            }
-            description "Consolidated performance information of the air interface.";
-        }
-        grouping air-interface-current-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-performance-type-g;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping air-interface-historical-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-performance-type-g;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-        typedef protection-type {
-            type enumeration {
-                enum hsb {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef role-type {
-            type enumeration {
-                enum working {
-                    description "none";
-                }
-                enum protection {
-                    description "none";
-                }
-                enum protected {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping diversity-type-g {
-            leaf diversity-name {
-                type string;
-                default "Diversity name not defined.";
-                config false;
-                description "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'";
-            }
-            leaf number-of-air-interfaces-max {
-                type int8;
-                units "air interfaces";
-                default 1;
-                config false;
-                description "Maximum number of air interfaces that could be part of this kind of diversity.";
-            }
-            description "none";
-        }
-        typedef air-interface-diversity-status-type {
-            type enumeration {
-                enum group-down {
-                    description "All air interfaces that are members of the diversity configuration are down.";
-                }
-                enum not-all-ai-active {
-                    description "At least one, but not all of the air interfaces that are part of the diversity configuration is not working.";
-                }
-                enum all-ai-active {
-                    description "All air interfaces that are part of the diversity configuration are working.";
-                }
-            }
-            description "none";
-        }
-        grouping air-interface-diversity-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping air-interface-diversity-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        grouping air-interface-diversity-performance-type-g {
-            leaf snir-min {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Minimum signal to (noise+interference) ratio of the combined signals.";
-            }
-            leaf snir-max {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Maximum signal to (noise+interference) ratio of the combined signals.";
-            }
-            leaf snir-avg {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Average signal to (noise+interference) ratio of the combined signals.";
-            }
-            description "Consolidated performance information of the air interface diversity group.";
-        }
-        grouping air-interface-diversity-current-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-diversity-performance-type-g;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping air-interface-diversity-historical-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-diversity-performance-type-g;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-        grouping tdm-structure-type-g {
-            leaf tdm-structure-name {
-                type string;
-                default "TDM structure name not defined.";
-                config false;
-                description "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-            }
-            leaf tdm-segment-size {
-                type int32;
-                units "kbit/s";
-                default -1;
-                config false;
-                description "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;";
-            }
-            leaf max-number-of-segments-reservable {
-                type int8;
-                units "segments";
-                default -1;
-                config false;
-                description "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface.";
-            }
-            description "none";
-        }
-        grouping structure-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to Structure::StructureCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping structure-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to Structure::StructureCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        typedef structure-performance-type {
-            type int32;
-            description "Consolidated performance information of the Structure.";
-        }
-        grouping structure-current-performance-type-g {
-            leaf performance-data {
-                type structure-performance-type;
-                config false;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping structure-historical-performance-type-g {
-            leaf performance-data {
-                type structure-performance-type;
-                config false;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-        grouping container-type-g {
-            leaf container-name {
-                type string;
-                default "Container name not yet defined.";
-                config false;
-                description "Names to be chosen from the following list: 'ethernet','e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-            }
-            leaf number-of-time-slots-required {
-                type int16;
-                units "timeslots";
-                default -1;
-                config false;
-                description "Number of time slots required for transporting this type of container. Value must be calculated by the vendor after defining the timeSlotCapacity. For containers of fixed size: numberOfTimeSlotsRequired = required bandwidth of the container divided by timeSlotCapacity. For containers of variable size the minimum (most probably 1) is to be stated.";
-            }
-            leaf tdm-time-slots-is-required {
-                type boolean;
-                default false;
-                config false;
-                description "Shall be set to '1', if this container type requires bandwidth (times slots) reserved for TDM transport.";
-            }
-            leaf bundling-is-avail {
-                type boolean;
-                default false;
-                config false;
-                description "If it is possible to combine transport resources of several radio links to transport this container type, this attribute shall be set to '1'.";
-            }
-            description "none";
-        }
-        grouping tdm-container-type-g {
-            leaf tdm-container-name {
-                type string;
-                default "TDM container name not defined.";
-                config false;
-                description "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-            }
-            leaf tdm-container-size {
-                type int32;
-                units "kbit/s";
-                default -1;
-                config false;
-                description "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;";
-            }
-            description "none";
-        }
-        grouping segment-id-type-g {
-            leaf structure-id-ref {
-                type core-model:universal-id;
-                description "none";
-            }
-            leaf segment-id-ref {
-                type int16;
-                description "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once.";
-            }
-            description "Identifies the segments, which are used to transport the container.";
-        }
-        grouping segment-status-type-g {
-            leaf segment-status-type-id {
-                type int16;
-                config false;
-                description "none";
-            }
-            leaf segment-is-reserved-for-tdm {
-                type boolean;
-                default false;
-                config false;
-                description "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm.
-                    ";
-            }
-            leaf operational-status {
-                type core-model:operational-state;
-                default disabled;
-                config false;
-                description "Current operational status of each segment.";
-            }
-            leaf obsolete-priority-class {
-                type int8;
-                default -1;
-                config false;
-                description "PriorityClass as inherited from the associated Container::ContainerConfiguration::priorityClass. In case the device is capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, priorityClass shall be considered, while calculating the dropOrderRank.";
-            }
-            leaf obsolete-drop-order-rank {
-                type int16;
-                default -1;
-                config false;
-                description "In case the device is NOT capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, dropOrderRank is number of segments minus sequence number of the segment. In case the device is capable of adapting the sequence, dropOrderRank has to be calculated by the device in dependency to the assigned priorityClass. 
-                    _unique: within Structure::StructureStatus::segmentStatusList";
-            }
-            description "none";
-        }
-        grouping container-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to Container::ContainerCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping container-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to Container::ContainerCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        grouping container-performance-type-g {
-            leaf tx-ethernet-bytes-max-s {
-                type int32;
-                units "Bytes/s";
-                default -1;
-                config false;
-                description "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers.";
-            }
-            leaf tx-ethernet-bytes-max-m {
-                type int64;
-                units "Bytes/min";
-                default -1;
-                config false;
-                description "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers.";
-            }
-            leaf tx-ethernet-bytes-sum {
-                type int64;
-                units "Bytes";
-                default -1;
-                config false;
-                description "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers.";
-            }
-            leaf time-period {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Total length of the measurement period in seconds.";
-            }
-            description "Consolidated performance information of the Container.";
-        }
-        grouping container-current-performance-type-g {
-            container performance-data {
-                config false;
-                uses container-performance-type-g;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping container-historical-performance-type-g {
-            container performance-data {
-                config false;
-                uses container-performance-type-g;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-
-    /***********************
-    * package object-classes
-    **********************/ 
-        /***********************
-        * package air-interface
-        **********************/ 
-            list mw-air-interface-pac {
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container air-interface-capability {
-                    config false;
-                    uses air-interface-capability-g;
-                    description "none";
-                }
-                container air-interface-configuration {
-                    uses air-interface-configuration-g;
-                    description "none";
-                }
-                container air-interface-status {
-                    config false;
-                    uses air-interface-status-g;
-                    description "none";
-                }
-                container air-interface-current-problems {
-                    config false;
-                    uses air-interface-current-problems-g;
-                    description "none";
-                }
-                container air-interface-current-performance {
-                    config false;
-                    uses air-interface-current-performance-g;
-                    description "none";
-                }
-                container air-interface-historical-performances {
-                    config false;
-                    uses air-interface-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-capability-g {
-                leaf type-of-equipment {
-                    type string;
-                    default "Type of equipment not yet defined.";
-                    config false;
-                    description "This parameter indicates the equipment type. Instead of uploading the complete set of capabilities, capabilities of the same equipment type could be reused. Should be unique for a combination of modem, radio and their respective firmware.";
-                }
-                leaf tx-frequency-min {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the minimum transmit frequency tunable at the air interface.";
-                }
-                leaf tx-frequency-max {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the maximum transmit frequency tunable at the air interface.";
-                }
-                leaf rx-frequency-min {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the minimum receive frequency tunable at the air interface.";
-                }
-                leaf rx-frequency-max {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the maximum receive frequency tunable at the air interface.";
-                }
-                leaf adaptive-modulation-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the device is capable of adaptive modulation, this field shall contain a 'true'.";
-                }
-                leaf mimo-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the device is capable of MIMO, this field shall contain a 'true'.";
-                }
-                leaf mimo-channels {
-                    type int8;
-                    units "channels";
-                    default 1;
-                    config false;
-                    description "Maximum number (n) of spatial multiplexing streams that can be conveyed by an n x n MIMO configuration.";
-                }
-                leaf alic-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the microwave radio is capable of Adjacent Link Interference Cancelation (canceling of interference cause by transmitters located at the same site), this field shall contain a 'true'.";
-                }
-                leaf atpc-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the microwave radio is capable of ATPC, this field shall contain a 'true'.";
-                }
-                leaf atpc-range {
-                    type int8;
-                    units "dB";
-                    default 0;
-                    config false;
-                    description "Extent of the ATPC range.";
-                }
-                leaf encryption-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Shall be marked 'true', if payload encryption is available.";
-                }
-                leaf-list supported-loop-back-kind-list {
-                    type loop-back-type;
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    description "List of supported kinds of looping back of header information to the remote site.";
-                }
-                leaf maintenance-timer-range {
-                    type string;
-                    units "s";
-                    default "Range of the maintenance timer not yet defined.";
-                    config false;
-                    description "Available time periods for maintenance configurations (e.g. the loop back of microwave header information) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360').";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'signalIsLost','rslIsExceeded','temperatureIsExceeded','modemIsFaulty','radioIsFaulty' and 'modulationIsDownShifted'. Further alarms might be added by the device. Names are to be separated by commas.";
-                }
-                list supported-channel-plan-list {
-                    key 'supported-channel-plan';
-                    config false;
-                    min-elements 1;
-                    uses channel-plan-type-g;
-                    description "List of channel spacing that are supported by the device.";
-                }
-                description "Describes the 'analog' capabilities of modem and transmitter of the microwave device. Value ranges of attributes are not independently (e.g. min. and max. transmit power depends on modulation). Legal combinations of values are expressed in transmissionModeTypes.";
-            }
-            grouping air-interface-configuration-g {
-                leaf air-interface-name {
-                    type string;
-                    default "Air interface ID not yet defined.";
-                    description "Operator specific microwave link ID (often used for coding area, type of element and sequential number).";
-                }
-                leaf radio-signal-id {
-                    type string;
-                    default "Radio signal ID not yet defined.";
-                    description "The radioSignalId is transmitted on the air interface so the remote site of the link synchronizes on the correct transmitter. The local radio MUST NOT synchronize on a radio signal with a different radioSignalId. The link ID is neither an ID necessary to span the model nor an ID referencing external data. It is just some sort of name of the link transmitted so the correct remote site can be identified in an interference situation. The value zero might be used to make the microwave to disable the link ID check.";
-                }
-                leaf tx-frequency {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Center frequency of the transmit channel. The values to be configured have to exactly match the values listed in the international agreement referenced in channelPlanID. In case of automated selection of the transmit frequency this field shall describe the lowest center frequency selectable.";
-                }
-                leaf rx-frequency {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Center frequency of the receive channel.";
-                }
-                leaf tx-channel-bandwidth {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-                }
-                leaf rx-channel-bandwidth {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Bandwidth of the receive channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-                }
-                leaf polarization {
-                    type polarization-type;
-                    default not-specified;
-                    description "Allows documenting the polarization of the air interface.";
-                }
-                leaf power-is-on {
-                    type boolean;
-                    default true;
-                    description "Power ON. Activation of the entire radio in a split mount configuration shall be expressed as a 'true'.";
-                }
-                leaf transmitter-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of the transmitter inside the radio shall be expressed as a 'true'.";
-                }
-                leaf receiver-is-on {
-                    type boolean;
-                    default true;
-                    description "Maintenance Feature. Activation of the receiver inside the radio shall be expressed as a 'true'. Attribute shall also be used for RX main and RX diversity squelches in case of diversity configurations.
-                        ";
-                }
-                leaf tx-power {
-                    type int8;
-                    units "dBm";
-                    default 99;
-                    description "Transmit power to be configured on the microwave link. Signed Byte is required. The actually operated transmit power might be lower depending on adaptive modulation and ATPC.";
-                }
-                leaf adaptive-modulation-is-on {
-                    type boolean;
-                    default false;
-                    description "Adaptive Modulation. Activation of adaptive modulation shall be expressed as a 'true'.";
-                }
-                leaf modulation-min {
-                    type int16;
-                    units "symbols";
-                    default -1;
-                    description "Minimum modulation to be configured (in case adaptive modulation is not used, this value represents also the fixed modulation). The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-                }
-                leaf modulation-max {
-                    type int16;
-                    units "symbols";
-                    default -1;
-                    description "Maximum modulation to be configured. The value of this field is only relevant, if Adaptive Modulation has been activated. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-                }
-                leaf xpic-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of Cross Polarization Interference Cancelation shall be expressed as a 'true'. In case XPIC is not available for the current combination of channel bandwidth and modulation or the hardware in general, this parameter shall always be set to 'false'.";
-                }
-                leaf mimo-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of Multiple Input Multiple Output (MIMO) shall be expressed as a 'true'.";
-                }
-                leaf alic-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of Adjacent Link Interference Cancelation (ALIC) shall be expressed as a 'true'.";
-                }
-                leaf atpc-is-on {
-                    type boolean;
-                    default false;
-                    description "ATPC. Activation of Automated Transmit Power Control shall be expressed as a 'true'.";
-                }
-                leaf atpc-thresh-upper {
-                    type int16;
-                    units "dBm";
-                    default 99;
-                    description "If the receive level is higher than the upper threshold value, the transmitter is notified to decrease transmit power.";
-                }
-                leaf atpc-thresh-lower {
-                    type int16;
-                    units "dBm";
-                    default 99;
-                    description "If the receive level is lower than the lower threshold value, the transmitter is notified to increase transmit power.";
-                }
-                leaf auto-freq-select-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of automatically selecting the transmit frequency in unlicensed bands shall be expressed as a 'true'.";
-                }
-                leaf auto-freq-select-range {
-                    type int8;
-                    units "channels";
-                    default -1;
-                    description "Number of transmit channels (starting at the center frequency defined in txFrequency and with channel bandwidth according to txChannelBandwidth) that define the range within the transmit frequency can automatically been chosen. ";
-                }
-                leaf modulation-is-on {
-                    type boolean;
-                    default true;
-                    description "Maintenance Feature. De-activation of the modulation of the carrier signal for fault management shall be expressed as a 'false'.";
-                }
-                leaf encryption-is-on {
-                    type boolean;
-                    default false;
-                    description "Activates encryption of the payload.";
-                }
-                leaf cryptographic-key {
-                    type string;
-                    default "Cryptographic key not yet defined.";
-                    description "Key for transforming plaintext into ciphertext data.";
-                }
-                leaf loop-back-kind-on {
-                    type loop-back-type;
-                    default none;
-                    description "Maintenance Feature. The currently configured type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site.";
-                }
-                leaf maintenance-timer {
-                    type int32;
-                    units "s";
-                    default -1;
-                    description "Time of existence of any maintenance configuration (e.g. the loop back of microwave header information). Valid values are defined in AirInterface::AirInterfaceCapability::maintenanceTimerRange.";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 6;
-                    uses air-interface-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "Configuration of the radio link.";
-            }
-            grouping air-interface-status-g {
-                leaf tx-frequency-cur {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Center frequency of the currently operated transmit channel.";
-                }
-                leaf rx-frequency-cur {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Center frequency of the currently operated receive channel.";
-                }
-                leaf tx-level-cur {
-                    type int8;
-                    units "dBm";
-                    default 99;
-                    config false;
-                    description "Current transmit level.";
-                }
-                leaf rx-level-cur {
-                    type int8;
-                    units "dBm";
-                    default 99;
-                    config false;
-                    description "Current receive level.";
-                }
-                leaf modulation-cur {
-                    type int16;
-                    units "symbols";
-                    default -1;
-                    config false;
-                    description "Currently operated modulation on transmit path. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-                }
-                leaf code-rate-cur {
-                    type int8;
-                    units "%";
-                    default -1;
-                    config false;
-                    description "Code rate of the currently operated coding scheme (Net bit rate ? Gross bit rate ? code rate).";
-                }
-                leaf snir-cur {
-                    type int8;
-                    units "dB";
-                    default -99;
-                    config false;
-                    description "Currently measured signal to (noise+interference) ratio.";
-                }
-                leaf xpd-cur {
-                    type int8;
-                    units "dB";
-                    default -99;
-                    config false;
-                    description "Currently measured cross polarization discrimination.";
-                }
-                leaf rf-temp-cur {
-                    type int8;
-                    units "Celsius";
-                    default -99;
-                    config false;
-                    description "Current temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Air Interface entered its current operational status.  ";
-                }
-                leaf radio-power-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If the radio unit has power and is switched on, this shall be expressed as a 'true'.";
-                }
-                leaf link-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If connection is established to the remote site with the same linkID, this shall be expressed as a 'true'.";
-                }
-                leaf xpic-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If XPIC is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf mimo-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If MIMO is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf alic-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If Adjacent Link Interference Cancelation (ALIC) is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf atpc-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If ATPC is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf auto-freq-select-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If automated frequency selection is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf loop-back-kind-up {
-                    type loop-back-type;
-                    default none;
-                    config false;
-                    description "The currently active (not just configured) type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site.";
-                }
-                leaf local-end-point-id {
-                    type string;
-                    default "not-supported";
-                    config false;
-                    description "The value of the localEndPointId is a vendor specific identifier of the air interface, used by the node to discover a microwave radio link.";
-                }
-                leaf remote-end-point-id {
-                    type string;
-                    default "not-supported";
-                    config false;
-                    description "The value of the remoteEndPointId is a vendor specific identifier or the airinterface at the remote side, used to by the node to discover a microwave radio link.";
-                }
-                description "Measurements of current values on the air interface and operational status of the device.";
-            }
-            grouping air-interface-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses air-interface-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses air-interface-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the air interface at a particular moment.";
-            }
-            grouping air-interface-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses air-interface-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the air interface for a pre-defined measurement interval.";
-            }
-            list co-channel-group {
-                key 'co-channel-group-id';
-                uses co-channel-group-g;
-                description "none";
-            }
-            grouping co-channel-group-g {
-                leaf co-channel-group-id {
-                    type core-model:universal-id;
-                    description "none";
-                }
-                leaf-list air-interface-list {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
-                    }
-                    description "List of air interfaces, which are part of the co-channel (XPIC, MIMO, ALIC) group.";
-                }
-                leaf sort-of-co-channel-group {
-                    type string;
-                    default "Kind of co-channel group not specified.";
-                    description "Type of group of air interfaces with the same transmit and receive frequency. The values shall be chosen from the following _list:'XPIC', 'MIMO', 'ALIC';";
-                }
-                leaf-list logical-termination-point {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
-                    }
-                    description "none";
-                }
-                description "Required for configuring XPIC, MIMO and ALIC.";
-            }
-
-        /***********************
-        * package air-interface-hsb
-        **********************/ 
-            list mw-air-interface-hsb-end-point-pac {
-                key 'endpoint';
-                leaf role {
-                    type role-type;
-                    default working;
-                    description "none";
-                }
-                leaf endpoint {
-                    type leafref {
-                        path '/core-model:forwarding-construct/core-model:fc-port/core-model:uuid';
-                    }
-                    description "none";
-                }
-                description "The EndPoint (EP) object class models the access to the FC function. Each EndPoint instance has a role (e.g., working, protection, protected, hub, spoke, leaf, root, etc.) with respect to the FC function. The association of the FC to LTPs is made via EndPoints (essentially the ports of the FC) where each EndPoint (EP) of the FC has a role in the context of the FC. The traffic forwarding between the associated End PointsEPs of the FC depends upon the type of FC and may be associated with FCSwitch object instances. In cases where there is protection conveys the protecting role of the access to the FC.  The EP replaces the Protection Unit of a traditional protection model. It represents a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.";
-            }
-            list mw-air-interface-hsb-fc-switch-pac {
-                key 'fcswitch';
-                leaf prot-type {
-                    type protection-type;
-                    default hsb;
-                    description "Indicates the protection scheme that is used for the ProtectionGroup.";
-                }
-                leaf air-interface-hsb-configuration-is-faulty-severity {
-                    type severity-type;
-                    default warning;
-                    description "The level of severity of an airInterfaceHsbConfigurationIsFaulty alarm shall be chosen from an enumeration.";
-                }
-                leaf air-interface-hsb-is-partly-down-severity {
-                    type severity-type;
-                    default warning;
-                    description "The level of severity for one link out of the HSB configuration being down shall be chosen from an enumeration.";
-                }
-                leaf air-interface-hsb-is-down-severity {
-                    type severity-type;
-                    default warning;
-                    description "The level of severity of the total HSB configuration being down shall be chosen from an enumeration.";
-                }
-                leaf fcswitch {
-                    type leafref {
-                        path '/core-model:forwarding-construct/core-model:fc-switch/core-model:uuid';
-                    }
-                    description "none";
-                }
-                description "Represents and defines a protection switch structure encapsulated in the forwarding construct. Essentially performs the function of Protection Group. Associates to 2 or more Endpoints each playing the role of a Protection Unit. One or more protection EndPoints (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) Endpoints where either protection or working can feed one or more protected Endpoint. May be used in revertive or non-revertive (symmetric) mode. When in revertive mode may define waitToRestore time. May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as  1+1 ane 1:1).  May be lockout (prevented from switching), force switched or manual switched. Will indicate switch state and change of state.";
-            }
-
-        /***********************
-        * package air-interface-diversity
-        **********************/ 
-            list mw-air-interface-diversity-pac {
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container air-interface-diversity-capability {
-                    config false;
-                    uses air-interface-diversity-capability-g;
-                    description "none";
-                }
-                container air-interface-diversity-configuration {
-                    uses air-interface-diversity-configuration-g;
-                    description "none";
-                }
-                container air-interface-diversity-status {
-                    config false;
-                    uses air-interface-diversity-status-g;
-                    description "none";
-                }
-                container air-interface-diversity-current-problems {
-                    config false;
-                    uses air-interface-diversity-current-problems-g;
-                    description "none";
-                }
-                container air-interface-diversity-current-performance {
-                    config false;
-                    uses air-interface-diversity-current-performance-g;
-                    description "none";
-                }
-                container air-interface-diversity-historical-performances {
-                    config false;
-                    uses air-interface-diversity-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-capability-g {
-                list available-kinds-of-diversity {
-                    key 'diversity-name';
-                    config false;
-                    uses diversity-type-g;
-                    description "Available types of diversity to be listed.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'airInterfaceDiversityConfigurationIsPartlyDown' (at least one air interface is down, but not all of them) and 'airInterfaceDiversityConfigurationIsDown' (all air interfaces are down). Further alarms might be added by the device. Names are to be separated by commas.";
-                }
-                description "Describes the capabilities in implementing different types of air interface diversity.";
-            }
-            grouping air-interface-diversity-configuration-g {
-                container air-interface-diversity {
-                    uses diversity-type-g;
-                    description "Type of air interface diversity configured at the link.";
-                }
-                leaf-list air-interface-ltp-list {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
-                    }
-                    min-elements 2;
-                    description "_multiplicity:2-ThisAirInterfaceDiversity::AirInterfaceDiversityConfiguration::airInterfaceDiversity::diversityType::numberOfAirInterfacesMax";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 3;
-                    uses air-interface-diversity-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-status-g {
-                leaf snir-cur {
-                    type int8;
-                    units "dB";
-                    default -99;
-                    config false;
-                    description "Currently measured signal to (noise+interference) ratio of the combined signals.";
-                }
-                leaf air-interface-diversity-status {
-                    type air-interface-diversity-status-type;
-                    default group-down;
-                    config false;
-                    description "Status of the air interface bundle. ";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Diversity Group entered its current operational status.  ";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses air-interface-diversity-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses air-interface-diversity-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the air interface diversity configuration at a particular moment.";
-            }
-            grouping air-interface-diversity-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses air-interface-diversity-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the air interface diversity configuration for a pre-defined measurement interval.";
-            }
-
-        /***********************
-        * package pure-ethernet-structure
-        **********************/ 
-            list mw-pure-ethernet-structure-pac {
-                if-feature pure-ethernet;
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container pure-ethernet-structure-capability {
-                    config false;
-                    uses pure-ethernet-structure-capability-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-configuration {
-                    uses pure-ethernet-structure-configuration-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-status {
-                    config false;
-                    uses pure-ethernet-structure-status-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-current-problems {
-                    config false;
-                    uses pure-ethernet-structure-current-problems-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-current-performance {
-                    config false;
-                    uses pure-ethernet-structure-current-performance-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-historical-performances {
-                    config false;
-                    uses pure-ethernet-structure-historical-performances-g;
-                    description "none";
-                }
-                description "The pureEthernetStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting Ethernet traffic only.";
-            }
-            grouping pure-ethernet-structure-capability-g {
-                leaf structure-id {
-                    type core-model:universal-id;
-                    config false;
-                    description "Identifies the Structure for bundling and container.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device.";
-                }
-                description "Describes the logical structuring of the physical capacity provided by a pure Ethernet microwave device. Segmentation is not available. No fixed segment size. No TDM transport.";
-            }
-            grouping pure-ethernet-structure-configuration-g {
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    uses structure-problem-severity-type-g;
-                    description "Severity of the type of problem to be configured.";
-                }
-                description "none";
-            }
-            grouping pure-ethernet-structure-status-g {
-                container segment-status-list {
-                    config false;
-                    uses segment-status-type-g;
-                    description "Status of the Ethernet transport segment. Always just one segment.";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time and date of the last update of the status information.  ";
-                }
-                description "none";
-            }
-            grouping pure-ethernet-structure-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses structure-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping pure-ethernet-structure-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses structure-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the structure of an pure Ethernet microwave at a particular moment.";
-            }
-            grouping pure-ethernet-structure-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses structure-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the structure of an pure Ethernet microwave for a pre-defined measurement interval.";
-            }
-            feature pure-ethernet {
-                description "Feature 'pure-ethernet' is mandatory for device types transporting pure Ethernet.";
-            }
-
-        /***********************
-        * package hybrid-mw-structure
-        **********************/ 
-            list mw-hybrid-mw-structure-pac {
-                if-feature hybrid-microwave;
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container hybrid-mw-structure-capability {
-                    config false;
-                    uses hybrid-mw-structure-capability-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-configuration {
-                    uses hybrid-mw-structure-configuration-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-status {
-                    config false;
-                    uses hybrid-mw-structure-status-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-current-problems {
-                    config false;
-                    uses hybrid-mw-structure-current-problems-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-current-performance {
-                    config false;
-                    uses hybrid-mw-structure-current-performance-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-historical-performances {
-                    config false;
-                    uses hybrid-mw-structure-historical-performances-g;
-                    description "none";
-                }
-                description "The HybridMwStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM and Ethernet traffic.";
-            }
-            grouping hybrid-mw-structure-capability-g {
-                leaf structure-id {
-                    type core-model:universal-id;
-                    config false;
-                    description "Identifies the Structure for bundling and container.";
-                }
-                list supported-tdm-structure-types-list {
-                    key 'tdm-structure-name';
-                    config false;
-                    min-elements 1;
-                    uses tdm-structure-type-g;
-                    description "Lists the TDM frame types that are supported.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device.";
-                }
-                description "Describes the logical structuring of the physical capacity provided by a hybrid microwave device (TDM + Ethernet). Segmentation is available. TDM transport is available.";
-            }
-            grouping hybrid-mw-structure-configuration-g {
-                container structure-type {
-                    uses tdm-structure-type-g;
-                    description "TDM frame to be applied.";
-                }
-                leaf number-of-tdm-segments-to-be-reserved {
-                    type int16;
-                    default -1;
-                    description "Allows to configure the number of segments reserved for TDM frames of the type specified in HybridMwStructure::HybridMwStructureConfiguration::structureType";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    uses structure-problem-severity-type-g;
-                    description "Severity of the type of problem to be configured.";
-                }
-                description "none";
-            }
-            grouping hybrid-mw-structure-status-g {
-                list segment-status-list {
-                    key 'segment-status-type-id';
-                    config false;
-                    uses segment-status-type-g;
-                    description "Status of each segment (all TDM and one Ethernet). Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time and date of the last update of the status information.  ";
-                }
-                description "none";
-            }
-            grouping hybrid-mw-structure-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses structure-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping hybrid-mw-structure-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses structure-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the structure of a hybrid microwave at a particular moment.";
-            }
-            grouping hybrid-mw-structure-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses structure-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the structure of a hybrid microwave for a pre-defined measurement interval.";
-            }
-            feature hybrid-microwave {
-                description "Feature 'hybrid-microwave' is mandatory for device types transporting Ethernet + TDM.";
-            }
-
-        /***********************
-        * package ethernet-container
-        **********************/ 
-            list mw-ethernet-container-pac {
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container ethernet-container-capability {
-                    config false;
-                    uses ethernet-container-capability-g;
-                    description "none";
-                }
-                container ethernet-container-configuration {
-                    uses ethernet-container-configuration-g;
-                    description "none";
-                }
-                container ethernet-container-status {
-                    config false;
-                    uses ethernet-container-status-g;
-                    description "none";
-                }
-                container ethernet-container-current-problems {
-                    config false;
-                    uses ethernet-container-current-problems-g;
-                    description "none";
-                }
-                container ethernet-container-current-performance {
-                    config false;
-                    uses ethernet-container-current-performance-g;
-                    description "none";
-                }
-                container ethernet-container-historical-performances {
-                    config false;
-                    uses ethernet-container-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping ethernet-container-capability-g {
-                leaf bundling-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "This attribute has to be set on 'true', if the device allows combining resources from several air interfaces for transporting this Ethernet container.";
-                }
-                leaf packet-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case packet compression can be activated, but not configured to a certain type, packetCompressionAvail shall be set on 'true', but none of the compression level specific booleans.";
-                }
-                leaf layer2-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 2 available at the device.";
-                }
-                leaf vlan-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on VLAN layer available at the device.";
-                }
-                leaf q-in-q-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer of a second VLAN available at the device.";
-                }
-                leaf mpls-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on mpls layer available at the device.";
-                }
-                leaf ipv4-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 3 for IPv4 available at the device.";
-                }
-                leaf ipv6-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 3 for IPv6 available at the device.";
-                }
-                leaf layer4-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 4 (TCP and UDP header) available at the device.";
-                }
-                leaf encryption-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Shall be marked 'true', if Ethernet payload encryption is available.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device.";
-                }
-                description "none";
-            }
-            grouping ethernet-container-configuration-g {
-                leaf container-id {
-                    type string;
-                    default "No Ethernet Flow associated yet.";
-                    description "ContainterID in Netconf must be the same as EthernetPortID in OpenFlow so a connection can be made between the two items, which separately exist in the controller.";
-                }
-                list segments-id-list {
-                    key 'structure-id-ref segment-id-ref';
-                    min-elements 1;
-                    uses segment-id-type-g;
-                    description "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list.";
-                }
-                leaf packet-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "In case packet compression is activated, but no type is activated, it is assumed that the device chooses the optimum.";
-                }
-                leaf layer2-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 2 configured at the device.";
-                }
-                leaf vlan-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on VLAN layer configured at the device.";
-                }
-                leaf q-in-q-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer of a second VLAN configured at the device.";
-                }
-                leaf mpls-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on MPLS layer configured at the device.";
-                }
-                leaf ipv4-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 3 for IPv4 configured at the device.";
-                }
-                leaf ipv6-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 3 for IPv6 configured at the device.";
-                }
-                leaf layer4-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 4 (TCP and UDP header) configured at the device.";
-                }
-                leaf encryption-is-on {
-                    type boolean;
-                    default false;
-                    description "Activates encryption of the Ethernet payload.";
-                }
-                leaf cryptographic-key {
-                    type string;
-                    default "Cryptographic key not yet defined.";
-                    description "Key for transforming plaintext into cipher text data.";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 2;
-                    uses container-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping ethernet-container-status-g {
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Container entered its current operational status.  ";
-                }
-                description "none";
-            }
-            grouping ethernet-container-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses container-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping ethernet-container-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses container-current-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the Ethernet container at a particular moment.";
-            }
-            grouping ethernet-container-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses container-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the Ethernet container for a pre-defined measurement interval.";
-            }
-
-        /***********************
-        * package tdm-container
-        **********************/ 
-            list mw-tdm-container-pac {
-                if-feature hybrid-microwave;
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container tdm-container-capability {
-                    config false;
-                    uses tdm-container-capability-g;
-                    description "none";
-                }
-                container tdm-container-configuration {
-                    uses tdm-container-configuration-g;
-                    description "none";
-                }
-                container tdm-container-status {
-                    config false;
-                    uses tdm-container-status-g;
-                    description "none";
-                }
-                container tdm-container-current-problems {
-                    config false;
-                    uses tdm-container-current-problems-g;
-                    description "none";
-                }
-                container tdm-container-current-performance {
-                    config false;
-                    uses tdm-container-current-performance-g;
-                    description "none";
-                }
-                container tdm-container-historical-performances {
-                    config false;
-                    uses tdm-container-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping tdm-container-capability-g {
-                list supported-tdm-container-types-list {
-                    key 'tdm-container-name';
-                    config false;
-                    min-elements 1;
-                    uses tdm-container-type-g;
-                    description "Lists the TDM containers that are supported.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device.";
-                }
-                description "Bundling is not available.";
-            }
-            grouping tdm-container-configuration-g {
-                leaf container-id {
-                    type string;
-                    default "No TDM Flow associated yet.";
-                    description "ContainterID in Netconf must be the same as TDM Flow ID so a connection can be made between the two items, which separately exist in the controller.";
-                }
-                container container-type {
-                    uses tdm-container-type-g;
-                    description "Type of TDM container.";
-                }
-                container segment-id {
-                    uses segment-id-type-g;
-                    description "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 2;
-                    uses container-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping tdm-container-status-g {
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Container entered its current operational status.  ";
-                }
-                description "none";
-            }
-            grouping tdm-container-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses container-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping tdm-container-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses container-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the TDM container at a particular moment.";
-            }
-            grouping tdm-container-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses container-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the TDM container for a pre-defined measurement interval.";
-            }
-
-        /***********************
-        * package super-classes
-        **********************/ 
-            grouping mw-current-problem-g {
-                leaf sequence-number {
-                    type int32;
-                    config false;
-                    description "Unique sequence number of the current problem object.";
-                }
-                leaf time-stamp {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time and date of the problem.  ";
-                }
-                leaf problem-severity {
-                    type severity-type;
-                    default warning;
-                    config false;
-                    description "Severity of the alarm.";
-                }
-                description "none";
-            }
-
-
-    /***********************
-    * package notifications
-    **********************/ 
-        notification object-creation-notification {
-            uses object-creation-notification-g;
-            description "none";
-        }
-        grouping object-creation-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts object creation notifications.";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            leaf object-type {
-                type string;
-                default "Type of created object not specified.";
-                description "Type of Object to be chosen from the following list of values: 'MW_AirInterface_Pac', 'MW_AirInterfaceDiversity_Pac', 'MW_Structure_Pac', 'MW_PureEthernetStructure_Pac', 'MW_HybridMwStructure_Pac', 'MW_Container_Pac', 'MW_EthernetContainer_Pac' or 'MW_TdmContainer_Pac'.";
-            }
-            description "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac has to be instancieted in the controller.";
-        }
-        notification object-deletion-notification {
-            uses object-deletion-notification-g;
-            description "none";
-        }
-        grouping object-deletion-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts object deletion notifications.";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            description "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac instance has to be deleted in the controller.";
-        }
-        notification attribute-value-changed-notification {
-            uses attribute-value-changed-notification-g;
-            description "none";
-        }
-        grouping attribute-value-changed-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts attribute value changed notifications.";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            leaf attribute-name {
-                type string;
-                default "Attribute name not specified.";
-                description "Name of the attribute that has been changed.";
-            }
-            leaf new-value {
-                type string;
-                default "New value not specified.";
-                description "Attribute value converted to a string (xml, json, ...)";
-            }
-            description "To be sent when an attribute has changed and one or more controllers have to update their data.";
-        }
-        notification problem-notification {
-            uses problem-notification-g;
-            description "none";
-        }
-        grouping problem-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts problem notifications";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            leaf problem {
-                type string;
-                default "Problem name not specified.";
-                description "Name of the problem according to AirInterface::AirInterfaceCapability::supportedAlarms or AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms or Structure::StructureCapability::supportedAlarms or PureEthernetStructure::PureEthernetStructureCapability::supportedAlarms or HybridMwStructure::HybridMwStructureCapability::supportedAlarms or Container::ContainerCapability::supportedAlarms or EthernetContainer::EthernetContainerCapability::supportedAlarms or TdmContainer::TdmContainerCapability::supportedAlarms.";
-            }
-            leaf severity {
-                type severity-type;
-                default warning;
-                description "Severity of the problem according to AirInterface::AirInterfaceConfiguration::problemSeverityList, AirInterfaceDiversity::AirInterfaceDiversityConfiguration::problemSeverityList, Structure::StructureConfiguration::problemSeverityList, PureEthernetStructure::PureEthernetStructureConfiguration::problemSeverityList, HybridMwStructure::HybridMwStructureConfiguration::problemSeverityList, Container::ContainerConfiguration::problemSeverityList, EthernetContainer::EthernetContainerConfiguration::problemSeverityList or TdmContainer::TdmContainerConfiguration::problemSeverityList";
-            }
-            description "To be sent when a problem occurs at a MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-        }
-
-}
diff --git a/sdnr/model/yang/nc-notifications@2008-07-14.yang b/sdnr/model/yang/nc-notifications@2008-07-14.yang
deleted file mode 100644 (file)
index 9ef5ed0..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-module nc-notifications {
-
-    namespace "urn:ietf:params:xml:ns:netmod:notification";
-    prefix "manageEvent";
-
-    import ietf-yang-types{ prefix yang; }
-    import notifications { prefix ncEvent; }
-
-    organization
-      "IETF NETCONF WG";
-
-    contact
-      "netconf@ietf.org";
-
-    description
-      "Conversion of the 'manageEvent' XSD in the NETCONF
-       Notifications RFC.";
-
-    reference
-      "RFC 5277";
-
-    revision 2008-07-14 {
-      description "RFC 5277 version.";
-    }
-
-    container netconf {
-      description "Top-level element in the notification namespace";
-
-      config false;
-
-      container streams {
-        description 
-          "The list of event streams supported by the system. When
-           a query is issued, the returned set of streams is 
-           determined based on user privileges.";
-
-        list stream {
-          description 
-            "Stream name, description and other information.";
-          key name;
-          min-elements 1;
-
-          leaf name {
-            description
-              "The name of the event stream. If this is the default
-               NETCONF stream, this must have the value 'NETCONF'.";
-            type ncEvent:streamNameType;
-          }
-
-          leaf description {
-            description
-              "A description of the event stream, including such
-               information as the type of events that are sent over
-               this stream.";
-            type string;
-            mandatory true;
-          }
-
-          leaf replaySupport {
-            description
-              "A description of the event stream, including such
-               information as the type of events that are sent over
-               this stream.";
-            type boolean;
-            mandatory true;
-          }
-
-          leaf replayLogCreationTime {
-            description
-              "The timestamp of the creation of the log used to support
-               the replay function on this stream. Note that this might
-               be earlier then the earliest available notification in
-               the log. This object is updated if the log resets for 
-               some reason.  This object MUST be present if replay is
-               supported.";
-            type yang:date-and-time;   // xsd:dateTime is wrong!
-          }
-        }
-      }
-    }
-
-    notification replayComplete {
-      description
-        "This notification is sent to signal the end of a replay
-         portion of a subscription.";
-    }
-
-    notification notificationComplete {
-      description
-        "This notification is sent to signal the end of a notification
-         subscription. It is sent in the case that stopTime was
-         specified during the creation of the subscription..";
-    }
-
-}
\ No newline at end of file
diff --git a/sdnr/model/yang/notifications@2008-07-14.yang b/sdnr/model/yang/notifications@2008-07-14.yang
deleted file mode 100644 (file)
index 1d06711..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-module notifications {
-
-    namespace "urn:ietf:params:xml:ns:netconf:notification:1.0";
-    prefix "ncEvent";
-
-    import ietf-yang-types { prefix yang; revision-date "2013-07-15";}
-
-    organization
-      "IETF NETCONF WG";
-
-    contact
-      "netconf@ops.ietf.org";
-
-    description
-      "Conversion of the 'ncEvent' XSD in the
-       NETCONF Notifications RFC.";
-
-    reference
-      "RFC 5277.";
-
-    revision 2008-07-14 {
-      description "RFC 5277 version.";
-    }
-
-    typedef streamNameType {
-      description
-        "The name of an event stream.";
-      type string;
-    }
-
-    rpc create-subscription {
-      description
-        "The command to create a notification subscription. It
-         takes as argument the name of the notification stream
-         and filter. Both of those options limit the content of
-         the subscription. In addition, there are two time-related
-         parameters, startTime and stopTime, which can be used to
-         select the time interval of interest to the notification
-         replay feature.";
-
-      input {
-        leaf stream {
-          description
-            "An optional parameter that indicates which stream of events
-             is of interest. If not present, then events in the default
-             NETCONF stream will be sent.";
-          type streamNameType;
-          default "NETCONF";
-        }
-
-        anyxml filter {
-          description
-            "An optional parameter that indicates which subset of all
-             possible events is of interest. The format of this
-             parameter is the same as that of the filter parameter
-             in the NETCONF protocol operations. If not present,
-             all events not precluded by other parameters will
-             be sent.";
-        }
-
-        leaf startTime {
-          description
-            "A parameter used to trigger the replay feature and
-             indicates that the replay should start at the time
-             specified. If start time is not present, this is not a
-             replay subscription.";
-          type yang:date-and-time;
-        }
-
-        leaf stopTime {
-          // must ". >= ../startTime";
-          description
-            "An optional parameter used with the optional replay
-             feature to indicate the newest notifications of
-             interest. If stop time is not present, the notifications
-             will continue until the subscription is terminated.
-             Must be used with startTime.";
-          type yang:date-and-time;
-        }
-      }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/model/yang/notifications@2018-05-30.yang b/sdnr/model/yang/notifications@2018-05-30.yang
deleted file mode 100644 (file)
index 296577d..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-module notifications {
-  yang-version 1;
-  namespace "urn:ietf:params:xml:ns:netconf:notification:1.0";
-  prefix ncEvent;
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-
-  organization
-    "IETF NETCONF WG";
-  contact
-    "netconf@ops.ietf.org";
-  description
-    "Conversion of the 'ncEvent' XSD in the
-     NETCONF Notifications RFC.";
-  reference "RFC 5277.";
-
-  revision 2018-05-30 {
-    description
-      "First step to a common notification yang.";
-    reference
-      "RFC 5277: NETCONF Event Notifications";
-  }
-  revision 2008-07-14 {
-    description
-      "Initial version";
-    reference
-      "RFC 5277: NETCONF Event Notifications";
-  }
-
-  typedef streamNameType {
-    type string;
-    description
-      "The name of an event stream.";
-  }
-
-  rpc create-subscription {
-    description
-      "The command to create a notification subscription. It
-       takes as argument the name of the notification stream
-       and filter. Both of those options limit the content of
-       the subscription. In addition, there are two time-related
-       parameters, startTime and stopTime, which can be used to
-       select the time interval of interest to the notification
-       replay feature.";
-    input {
-      leaf stream {
-        type streamNameType;
-        default "NETCONF";
-        description
-          "An optional parameter that indicates which stream of events
-           is of interest. If not present, then events in the default
-           NETCONF stream will be sent.";
-      }
-      anyxml filter {
-        description
-          "An optional parameter that indicates which subset of all
-           possible events is of interest. The format of this
-           parameter is the same as that of the filter parameter
-           in the NETCONF protocol operations. If not present,
-           all events not precluded by other parameters will
-           be sent.";
-      }
-      leaf startTime {
-        type yang:date-and-time;
-        description
-          "A parameter used to trigger the replay feature and
-           indicates that the replay should start at the time
-           specified. If start time is not present, this is not a
-           replay subscription.";
-      }
-      leaf stopTime {
-        type yang:date-and-time;
-        description
-          "An optional parameter used with the optional replay
-           feature to indicate the newest notifications of
-           interest. If stop time is not present, the notifications
-           will continue until the subscription is terminated.
-           Must be used with startTime.";
-      }
-    }
-  }
-  container notification {
-    config false;
-    description
-      "internal struct to start a notification";
-    leaf eventTime {
-      type yang:date-and-time;
-      mandatory true;
-        description
-          "The time the event was generated by the event source. This
-           parameter is of type dateTime and compliant to [RFC3339].
-           Implementations must support time zones.";
-    }
-  }
-}
diff --git a/sdnr/model/yang/onf-core-model-conditional-packages@2017-04-02.yang b/sdnr/model/yang/onf-core-model-conditional-packages@2017-04-02.yang
deleted file mode 100644 (file)
index 44c99b1..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-module onf-core-model-conditional-packages {
-    namespace "urn:onf:params:xml:ns:yang:onf-core-model-conditional-packages";
-    prefix onf-core-model-conditional-packages;
-    import core-model {
-        prefix core-model;
-    }
-    import microwave-model {
-        prefix microwave-model;
-    }
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This model adds conditional packages to the ONF CoreModel in order to support fault management for object classes NetworkElement, Equipment and Holder.";
-    revision 2017-04-02 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package type-definitions
-    **********************/ 
-        grouping current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "not-specified";
-                config false;
-                description "Name of the alarm according capability::supportedAlarms.";
-            }
-            uses microwave-model:mw-current-problem-g;
-            description "none";
-        }
-        grouping network-element-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "not-specified";
-                config false;
-                description "Name of the alarm according capability::supportedAlarms.";
-            }
-            leaf object-reference {
-                type string;
-                config false;
-                description "An explaining string of the related object class. This is necesseary, because the current problem list of the NetworkElement object class acts as a container for all alarms, where its object classes are not modeled.";
-            }
-            uses microwave-model:mw-current-problem-g;
-            description "none";
-        }
-        grouping problem-severity-type-g {
-            leaf problem-type-name {
-                type string;
-                description "Name of the alarm according to Capability::supportedAlarms";
-            }
-            leaf problem-type-severity {
-                type microwave-model:severity-type;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        typedef processing-type {
-            type enumeration {
-                enum done {
-                    description "none";
-                }
-                enum processing {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-
-    /***********************
-    * package object-classes
-    **********************/ 
-        /***********************
-        * package network-element
-        **********************/ 
-            container network-element-pac {
-                leaf network-element {
-                    type leafref {
-                        path '/core-model:network-element/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container network-element-capability {
-                    config false;
-                    uses network-element-capability-g;
-                    description "none";
-                }
-                container network-element-configuration {
-                    uses network-element-configuration-g;
-                    description "none";
-                }
-                container network-element-status {
-                    config false;
-                    uses network-element-status-g;
-                    description "none";
-                }
-                container network-element-current-problems {
-                    config false;
-                    uses network-element-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping network-element-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping network-element-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                leaf trigger-refresh {
-                    type boolean;
-                    description "A trigger to instruct the netconf server to refresh its internal database/cache. 
-                                 It is primary used for alarms status, but could be used for anything else too. 
-                                 It is assumed that the refresh mechanism takes some time. 
-                                 In order to indicate the process to the controller a refreshStatus attribute is used.";
-                }
-                description "none";
-            }
-            grouping network-element-status-g {
-                leaf refresh-status {
-                    type processing-type;
-                    config false;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping network-element-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses network-element-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-        /***********************
-        * package equipment
-        **********************/ 
-            list equipment-pac {
-                key 'equipment';
-                leaf equipment {
-                    type leafref {
-                        path '/core-model:equipment/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container equipment-capability {
-                    config false;
-                    uses equipment-capability-g;
-                    description "none";
-                }
-                container equipment-configuration {
-                    uses equipment-configuration-g;
-                    description "none";
-                }
-                container equipment-status {
-                    config false;
-                    uses equipment-status-g;
-                    description "none";
-                }
-                container equipment-current-problems {
-                    config false;
-                    uses equipment-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping equipment-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "Available alarms to be listed. Names are to be separated by commas.";
-                }
-                description "none";
-            }
-            grouping equipment-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping equipment-status-g {
-                description "none";
-            }
-            grouping equipment-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-        /***********************
-        * package holder
-        **********************/ 
-            list holder-pac {
-                key 'holder';
-                leaf holder {
-                    type leafref {
-                        path '/core-model:equipment/core-model:contained-holder/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container holder-capability {
-                    config false;
-                    uses holder-capability-g;
-                    description "none";
-                }
-                container holder-configuration {
-                    uses holder-configuration-g;
-                    description "none";
-                }
-                container holder-status {
-                    config false;
-                    uses holder-status-g;
-                    description "none";
-                }
-                container holder-current-problems {
-                    config false;
-                    uses holder-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping holder-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "Available alarms to be listed. Names are to be separated by commas.";
-                }
-                description "none";
-            }
-            grouping holder-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping holder-status-g {
-                description "none";
-            }
-            grouping holder-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-        /***********************
-        * package connector
-        **********************/ 
-            list connector-pac {
-                key 'connector';
-                leaf connector {
-                    type leafref {
-                        path '/core-model:equipment/core-model:exposed-cable/core-model:connector/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container connector-capability {
-                    config false;
-                    uses connector-capability-g;
-                    description "none";
-                }
-                container connector-configuration {
-                    uses connector-configuration-g;
-                    description "none";
-                }
-                container connector-status {
-                    config false;
-                    uses connector-status-g;
-                    description "none";
-                }
-                container connector-current-problems {
-                    config false;
-                    uses connector-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping connector-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "Available alarms to be listed. Names are to be separated by commas.";
-                }
-                description "none";
-            }
-            grouping connector-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                leaf remote-end-point {
-                    type string;
-                    description "A network wide identifier of the remote connector. The value is used for topology discovery. 
-Please see also ConnectorStatus::localEndPoint.";
-                }
-                description "none";
-            }
-            grouping connector-status-g {
-                leaf local-end-point {
-                    type string;
-                    description "A network wide global identifier of the this connector, which can be used to discover the physical connectivitiy.
-The value should contain the network element name, because the network element software can assume that the network element name is unique in the network. 
-The value should be formated:
-<connector:uuid>@<network-element-name>
-
-Please see also ConnectorConfiguration::remoteEndPoint";
-                }
-                description "none";
-            }
-            grouping connector-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-
-}
diff --git a/sdnr/model/yang/onf-core-model-conditional-packages@2018-04-08.yang b/sdnr/model/yang/onf-core-model-conditional-packages@2018-04-08.yang
deleted file mode 100644 (file)
index 538ec27..0000000
+++ /dev/null
@@ -1,472 +0,0 @@
-module onf-core-model-conditional-packages {
-  namespace "urn:onf:params:xml:ns:yang:onf-core-model-conditional-packages";
-  prefix onf-core-model-conditional-packages;
-
-  import core-model {
-    prefix core-model;
-  }
-  import microwave-model {
-    prefix microwave-model;
-  }
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  organization
-    "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-  contact
-    "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-     WG List:  <mailto:wireless-transport@login.opennetworking.org>
-     WG Chair: Lyndon Ong
-               <mailto:lyong@ciena.com>
-     WG Chair: Giorgio Cazzaniga
-               <mailto:giorgio.cazzaniga@sm-optics.com>
-     Editors:  Thorsten Heinze
-               <mailto:thorsten.heinze@telefonica.com>
-               Martin Skorupski
-               <mailto:martin.skorupski@highstreet-technologies.com>";
-  description
-    "This model adds conditional packages to the ONF CoreModel in order to support fault management for object classes NetworkElement, Equipment and Holder.";
-
-  revision 2018-04-08 {
-    description
-      "Initial version, used only ONAP PoC 2018-06-25";
-    reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-  }
-
-  grouping current-problem-type-g {
-    leaf problem-name {
-      type string;
-      default "not-specified";
-      config false;
-      description
-        "Name of the alarm according capability::supportedAlarms.";
-    }
-    uses microwave-model:mw-current-problem-g;
-    description
-      "none";
-  }
-
-  grouping network-element-current-problem-type-g {
-    leaf problem-name {
-      type string;
-      default "not-specified";
-      config false;
-      description
-        "Name of the alarm according capability::supportedAlarms.";
-    }
-    leaf object-reference {
-      type string;
-      config false;
-      description
-        "An explaining string of the related object class. This is necesseary, because the current problem list of the NetworkElement object class acts as a container for all alarms, where its object classes are not modeled.";
-    }
-    uses microwave-model:mw-current-problem-g;
-    description
-      "none";
-  }
-
-  grouping problem-severity-type-g {
-    leaf problem-type-name {
-      type string;
-      description
-        "Name of the alarm according to Capability::supportedAlarms";
-    }
-    leaf problem-type-severity {
-      type microwave-model:severity-type;
-      description
-        "Severity of this type of alarm.";
-    }
-    description
-      "none";
-  }
-
-  typedef processing-type {
-    type enumeration {
-      enum "done" {
-        description
-          "none";
-      }
-      enum "processing" {
-        description
-          "none";
-      }
-    }
-    description
-      "none";
-  }
-
-  container network-element-pac {
-    leaf network-element {
-      type leafref {
-        path "/core-model:network-element/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container network-element-capability {
-      config false;
-      uses network-element-capability-g;
-      description
-        "none";
-    }
-    container network-element-configuration {
-      uses network-element-configuration-g;
-      description
-        "none";
-    }
-    container network-element-status {
-      config false;
-      uses network-element-status-g;
-      description
-        "none";
-    }
-    container network-element-current-problems {
-      config false;
-      uses network-element-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    leaf trigger-refresh {
-      type boolean;
-      description
-        "A trigger to instruct the netconf server to refresh its internal database/cache. 
-         It is primary used for alarms status, but could be used for anything else too. 
-         It is assumed that the refresh mechanism takes some time. 
-         In order to indicate the process to the controller a refreshStatus attribute is used.";
-    }
-    leaf connection-request-username {
-      type string {
-        length "1..256";
-      }
-      description
-        "none";
-    }
-    leaf connection-request-password {
-      type string {
-        length "8..256";
-      }
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-status-g {
-    leaf refresh-status {
-      type processing-type;
-      config false;
-      description
-        "none";
-    }
-    leaf connection-request-url {
-      type inet:domain-name;
-      config false;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses network-element-current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  list equipment-pac {
-    key "equipment";
-    leaf equipment {
-      type leafref {
-        path "/core-model:equipment/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container equipment-capability {
-      config false;
-      uses equipment-capability-g;
-      description
-        "none";
-    }
-    container equipment-configuration {
-      uses equipment-configuration-g;
-      description
-        "none";
-    }
-    container equipment-status {
-      config false;
-      uses equipment-status-g;
-      description
-        "none";
-    }
-    container equipment-current-problems {
-      config false;
-      uses equipment-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "Available alarms to be listed. Names are to be separated by commas.";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-status-g {
-    leaf software-version {
-        type string;
-        config false;
-        description
-            "Indicates the current running software version of the equipment.";
-    }
-    leaf additional-software-version {
-        type string;
-        config false;
-        description
-            "Indicates the current running software version of the equipment.";
-    }
-    leaf up-time {
-        type uint64;
-        config false;
-        units "s";
-        description
-            "Seconds since the last reboot.";
-    }
-    leaf local-time-zone {
-        type string;
-        config false;
-        description
-            "??? Which format ??? - +00:00 proposed";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  list holder-pac {
-    key "holder";
-    leaf holder {
-      type leafref {
-        path "/core-model:equipment/core-model:contained-holder/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container holder-capability {
-      config false;
-      uses holder-capability-g;
-      description
-        "none";
-    }
-    container holder-configuration {
-      uses holder-configuration-g;
-      description
-        "none";
-    }
-    container holder-status {
-      config false;
-      uses holder-status-g;
-      description
-        "none";
-    }
-    container holder-current-problems {
-      config false;
-      uses holder-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping holder-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "Available alarms to be listed. Names are to be separated by commas.";
-    }
-    description
-      "none";
-  }
-
-  grouping holder-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    description
-      "none";
-  }
-
-  grouping holder-status-g {
-    description
-      "none";
-  }
-
-  grouping holder-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  list connector-pac {
-    key "connector";
-    leaf connector {
-      type leafref {
-        path "/core-model:equipment/core-model:exposed-cable/core-model:connector/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container connector-capability {
-      config false;
-      uses connector-capability-g;
-      description
-        "none";
-    }
-    container connector-configuration {
-      uses connector-configuration-g;
-      description
-        "none";
-    }
-    container connector-status {
-      config false;
-      uses connector-status-g;
-      description
-        "none";
-    }
-    container connector-current-problems {
-      config false;
-      uses connector-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "Available alarms to be listed. Names are to be separated by commas.";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    leaf remote-end-point {
-      type string;
-      description
-        "A network wide identifier of the remote connector. The value is used for topology discovery. 
-         Please see also ConnectorStatus::localEndPoint.";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-status-g {
-    leaf local-end-point {
-      type string;
-      description
-        "A network wide global identifier of the this connector, which can be used to discover the physical connectivitiy.
-         The value should contain the network element name, because the network element software can assume that the network element name is unique in the network. 
-         The value should be formated:
-         <connector:uuid>@<network-element-name>
-
-         Please see also ConnectorConfiguration::remoteEndPoint";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-}
diff --git a/sdnr/model/yang/onf-ethernet-conditional-packages@2017-04-02.yang b/sdnr/model/yang/onf-ethernet-conditional-packages@2017-04-02.yang
deleted file mode 100644 (file)
index 4d6fb7c..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-module onf-ethernet-conditional-packages {
-    namespace "urn:onf:params:xml:ns:yang:onf-ethernet-conditional-packages";
-    prefix onf-ethernet-conditional-packages;
-    import core-model {
-        prefix core-model;
-    }
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This model adds conditional packages to the ONF CoreModel in order address Ethernet use cases.";
-    revision 2017-04-02 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package object-classes
-    **********************/ 
-        list ethernet-pac {
-            key 'layer-protocol';
-            leaf layer-protocol {
-                type leafref {
-                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                }
-                description "none";
-            }
-            container ethernet-capability {
-                config false;
-                uses ethernet-capability-g;
-                description "none";
-            }
-            container ethernet-configuration {
-                uses ethernet-configuration-g;
-                description "none";
-            }
-            container ethernet-status {
-                config false;
-                uses ethernet-status-g;
-                description "none";
-            }
-            container ethernet-current-problems {
-                config false;
-                uses ethernet-current-problems-g;
-                description "none";
-            }
-            container ethernet-current-performance {
-                config false;
-                uses ethernet-current-performance-g;
-                description "none";
-            }
-            container ethernet-historical-performances {
-                config false;
-                uses ethernet-historical-performances-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping ethernet-capability-g {
-            description "none";
-        }
-        grouping ethernet-configuration-g {
-            leaf vlan-id {
-                type int16;
-                description "value = 0: frames on ingress must be untagged, frames on egress get untagged; value = any other positive integer < 4096: frames on ingress must be tagged with this VLAN ID, frames on egress either already have or get this VLAN ID attached;";
-            }
-            description "none";
-        }
-        grouping ethernet-status-g {
-            description "none";
-        }
-        grouping ethernet-current-problems-g {
-            description "none";
-        }
-        grouping ethernet-current-performance-g {
-            description "none";
-        }
-        grouping ethernet-historical-performances-g {
-            description "none";
-        }
-
-}
diff --git a/sdnr/model/yang/onf-otn-odu-conditional-packages@2017-10-20.yang b/sdnr/model/yang/onf-otn-odu-conditional-packages@2017-10-20.yang
deleted file mode 100644 (file)
index 89d6cbf..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-module onf-otn-odu-conditional-packages {
-    namespace "urn:onf:params:xml:ns:yang:onf-otn-odu-conditional-packages";
-    prefix onf-otn-odu-conditional-packages;
-    import core-model {
-        prefix core-model;
-    }
-    organization "ONF (Open Networking Foundation) Open Transport Working Group";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             Editors:  Mohit Chamania 
-                       <MChamania@advaoptical.com>
-                       Dzmitry Khomchanka
-                       <dzmitry.khomchanka@vpi-minsk.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This model adds conditional packages to the ONF CoreModel 1.2 
-                 in order address OTN ODU use cases. It is a temorary model for 
-                 demontration purposes and bases on the ideas an concepts of
-                 TAPI. However, modifications for a pure southbound were
-                 nessesary.";
-    revision 2017-10-20 {
-        description "Initial version";
-        reference "ONF TR 512: Core Model.";
-    }
-    /***********************
-    * package type-definitions (copied from TAPI; revision: 2017-05-31)
-    **********************/ 
-        typedef mapping-type {
-            type enumeration {
-                enum amp {
-                    description "none";
-                }
-                enum bmp {
-                    description "none";
-                }
-                enum gfp-f {
-                    description "none";
-                }
-                enum gmp {
-                    description "none";
-                }
-                enum ttp-gfp-bmp {
-                    description "none";
-                }
-                enum null {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef odu-named-payload-type {
-            type enumeration {
-                enum unknown {
-                    description "none";
-                }
-                enum uninterpretable {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef odu-slot-size {
-            type enumeration {
-                enum 1-g-25 {
-                    description "none";
-                }
-                enum 2-g-5 {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef odu-type {
-            type enumeration {
-                enum odu-0 {
-                    description "none";
-                }
-                enum odu-1 {
-                    description "none";
-                }
-                enum odu-2 {
-                    description "none";
-                }
-                enum odu-2-e {
-                    description "none";
-                }
-                enum odu-3 {
-                    description "none";
-                }
-                enum odu-4 {
-                    description "none";
-                }
-                enum odu-flex {
-                    description "none";
-                }
-                enum odu-cn {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping odu-payload-type-g {
-            leaf named-payload-type {
-                type odu-named-payload-type;
-                description "none";
-            }
-            leaf hex-payload-type {
-                type uint64;
-                description "none";
-            }
-            description "none";
-        }
-    /***********************
-    * package object-classes
-    **********************/ 
-
-        /***********************
-         * OTN ODU Connection (ODU-CTP)
-         **********************/ 
-        list otn-odu-connection-pac {
-            key 'layer-protocol';
-            leaf layer-protocol {
-                type leafref {
-                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                }
-                description "none";
-            }
-            container otn-odu-connection-capability {
-                config false;
-                uses otn-odu-connection-capability-g;
-                description "none";
-            }
-            container otn-odu-connection-configuration {
-                uses otn-odu-connection-configuration-g;
-                description "none";
-            }
-            container otn-odu-connection-status {
-                config false;
-                uses otn-odu-connection-status-g;
-                description "none";
-            }
-            container otn-odu-connection-current-problems {
-                config false;
-                uses otn-odu-connection-current-problems-g;
-                description "none";
-            }
-            container otn-odu-connection-current-performance {
-                config false;
-                uses otn-odu-connection-current-performance-g;
-                description "none";
-            }
-            container otn-odu-connection-historical-performances {
-                config false;
-                uses otn-odu-connection-historical-performances-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping otn-odu-connection-capability-g {
-            container accepted-payload-type {
-                uses odu-payload-type-g;
-                description 
-                    "This attribute is applicable when the ODU CTP object 
-                     instance represents a lower order ODU CTP Sink at the 
-                     client layer of the ODUP/ODU[i]j or ODUP/ODUj-21 adaptation
-                     function. 
-                     This attribute is a 2-digit Hex code that indicates the new
-                     accepted payload type.
-                     Valid values are defined in Table 15-8 of ITU-T 
-                     Recommendation G.709 with one additional value 
-                     UN_INTERPRETABLE.";
-            }
-            description "none";
-        }
-        grouping otn-odu-connection-configuration-g {
-            leaf-list tributary-slot-list {
-                type uint64;
-                description 
-                    "This attribute contains a set of distinct (i.e. unique) 
-                     integers (e.g. 2, 3, 5, 9, 15 representing the tributary 
-                     slots TS2, TS3, TS5, TS9 and TS15) which represents the 
-                     resources occupied by the Low Order ODU Link Connection 
-                     (e.g. carrying an ODUflex with a bit rate of 6.25G). 
-                     This attribute applies when the LO ODU_ConnectionTerminationPoint 
-                     connects with an HO ODU_TrailTerminationPoint object. 
-                     It will not apply if this ODU_ConnectionTerminationPoint 
-                     object directly connects to an OTU_TrailTerminationPoint 
-                     object (i.e. OTU has no trib slots). 
-                     The upper bound of the integer allowed in this set is a 
-                     function of the HO-ODU server layer to which the ODU 
-                     connection has been mapped (adapted). 
-                     Thus, for example, M=8/32/80 for ODU2/ODU3/ODU4 server 
-                     layers (respectively). Note that the value of this 
-                     attribute can be changed only in the case of ODUflex and 
-                     has to be through specific operations (i.e. not be changing
-                     the attribute tributarySlotList directly).";
-            }
-            leaf tributary-port-number {
-                type uint64;
-                description 
-                    "This attribute identifies the tributary port number that is
-                     associated with the ODU CTP. 
-                     range of type : The value range depends on the size of the 
-                     Tributary Port Number (TPN) field used which depends on th 
-                     server-layer ODU or OTU.
-                     In case of ODUk mapping into OTUk, there is no TPN field, 
-                     so the tributaryPortNumber shall be zero.
-                     In case of LO ODUj mapping over ODU1, ODU2 or ODU3, the TPN
-                     is encoded in a 6-bit field so the value range is 0-63. 
-                     See clause 14.4.1/G.709-2016.
-                     In case of LO ODUj mapping over ODU4, the TPN is encoded in 
-                     a 7-bit field so the value range is 0-127. 
-                     See clause 14.4.1.4/G.709-2016.
-                     In case of ODUk mapping over ODUCn, the TPN is encoded in a
-                     14-bit field so the value range is 0-16383. See clause 
-                     20.4.1.1/G.709-2016.
-                    ";
-            }
-            leaf accepted-m-si {
-                type string;
-                description 
-                    "This attribute is applicable when the ODU CTP object 
-                     instance represents a lower order ODU1 or ODU2 CTP Sink at 
-                     the client layer of the ODU3P/ODU12 adaptation function or 
-                     represents a lower order ODUj CTP Sink at the client layer 
-                     of the ODUP/ODUj-21 adaptation function. This attribute is 
-                     a 1-byte field that represents the accepted multiplex 
-                     structure of the adaptation function. ";
-            }
-            leaf opu-tributary-slot-size {
-                type odu-slot-size;
-                description 
-                    "This attribute is applicable for ODU2 and ODU3 CTP only.
-                     [sko] Why that? 
-                     It indicates the slot size of the ODU CTP.";
-            }
-            leaf auto-payload-type {
-                type boolean;
-                description 
-                    "This attribute is applicable when the ODU CTP object 
-                     instance represents a lower order ODU CTP Source at the 
-                     client layer of the ODUP/ODUj-21 adaptation function. The 
-                     value of true of this attribute configures that the 
-                     adaptation source function shall fall back to the payload 
-                     type PT=20 if the conditions specified in 14.3.10.1/G.798 
-                     are satisfied. ";
-            }
-            leaf configured-mapping-type {
-                type mapping-type;
-                description 
-                    "This attributes indicates the configured mapping type.";
-            }
-            leaf configured-client-type {
-                type string;
-                description 
-                    "This attribute configures the type of the client CTP of the
-                     server ODU TTP.";
-            }
-            description 
-               "This Pac contains the attributes associated with the ODU-CTP.";
-        }
-        grouping otn-odu-connection-status-g {
-            description "none";
-        }
-        grouping otn-odu-connection-current-problems-g {
-            description "none";
-        }
-        grouping otn-odu-connection-current-performance-g {
-            description "none";
-        }
-        grouping otn-odu-connection-historical-performances-g {
-            description "none";
-        }
-
-
-        /***********************
-         * OTN ODU Termination (ODU-TTP)
-         **********************/ 
-        list otn-odu-termination-pac {
-            key 'layer-protocol';
-            leaf layer-protocol {
-                type leafref {
-                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                }
-                description "none";
-            }
-            container otn-odu-termination-capability {
-                config false;
-                uses otn-odu-termination-capability-g;
-                description "none";
-            }
-            container otn-odu-termination-configuration {
-                uses otn-odu-termination-configuration-g;
-                description "none";
-            }
-            container otn-odu-termination-status {
-                config false;
-                uses otn-odu-termination-status-g;
-                description "none";
-            }
-            container otn-odu-termination-current-problems {
-                config false;
-                uses otn-odu-termination-current-problems-g;
-                description "none";
-            }
-            container otn-odu-termination-current-performance {
-                config false;
-                uses otn-odu-termination-current-performance-g;
-                description "none";
-            }
-            container otn-odu-termination-historical-performances {
-                config false;
-                uses otn-odu-termination-historical-performances-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping otn-odu-termination-capability-g {
-            description "none";
-        }
-        grouping otn-odu-termination-configuration-g {
-            leaf odu-type {
-                type odu-type;
-                description "This attribute specifies the type of the ODU 
-                             termination point.";
-            }
-            leaf odu-rate {
-                type uint64;
-                description "This attribute indicates the rate of the ODU 
-                             terminatinon point. 
-                             This attribute is Set at create; i.e., once created
-                             it cannot be changed directly. 
-                             In case of resizable ODU flex, its value can be 
-                             changed via HAO (not directly on the attribute).";
-            }
-            leaf odu-rate-tolerance {
-                type uint64;
-                units "ppm";
-                description "This attribute indicates the rate tolerance of the 
-                             ODU termination point. 
-                             Valid values are real value in the unit of ppm. 
-                             Standardized values are defined in Table 7-2/G.709.
-                             ";
-            }
-            description "none";
-        }
-        grouping otn-odu-termination-status-g {
-            description "none";
-        }
-        grouping otn-odu-termination-current-problems-g {
-            description "none";
-        }
-        grouping otn-odu-termination-current-performance-g {
-            description "none";
-        }
-        grouping otn-odu-termination-historical-performances-g {
-            description "none";
-        }
-
-}
diff --git a/sdnr/model/yang/onf-ptp-dataset@2017-05-08.yang b/sdnr/model/yang/onf-ptp-dataset@2017-05-08.yang
deleted file mode 100644 (file)
index 41a1c39..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-module onf-ptp-dataset {
-    namespace "urn:onf:params:xml:ns:yang:onf-ptp-dataset";
-    prefix ptp-ex;
-
-    import ietf-yang-types {
-        prefix yang;
-    }
-    import core-model {
-        prefix core-model;
-    }
-    import ietf-ptp-dataset {
-        prefix ptp;
-    }
-
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             Editors:  Alfons Mittermaier
-                       <mailto:alfons.mittermaier@@highstreet-technologies.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This module contains a collection of YANG definitions to extent ptp-dataset.";
-    revision 2017-05-08 {
-        description "Initial version";
-        reference "A YANG Data Model extending ptp-dataset.";
-    }
-
-    augment "/ptp:instance-list/ptp:default-ds" {
-        description
-            "Addition of data nodes for the default data set of the clock.";
-
-        leaf local-priority {
-            type uint8;
-            default 128;
-            description
-                "none";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 6.3.2";
-        }
-
-        leaf max-steps-removed {
-            type uint8;
-            default 128;
-            description
-                "none";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 6.3";
-        }
-
-        leaf multicast-mac-address {
-            type yang:mac-address;
-            description
-                "none";
-        }
-        
-        leaf designated-enabled {
-            type boolean;
-            default true;
-            description
-                "A PTP Clock needs to be enabled by management.";
-        }
-    }
-
-    augment "/ptp:instance-list/ptp:port-ds-list" {
-        description
-            "Addition of data nodes for the default data set of the clock.";
-
-        leaf master-only {
-            type boolean;
-            default true;
-            description
-                "Indicates that port can only be a master.";
-        }
-
-        leaf local-priority {
-            type uint8;
-            default 128;
-            description
-                "Local priority as used for alternate BMCA";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 6.3.2";
-        }
-
-        leaf designated-enabled {
-            type boolean;
-            default true;
-            description
-                "A PTP Port needs to be enabled by management.";
-            reference 
-                "IEEE 1588-2008 IEEE Standard for a Precision Clock Synchronization Protocol 
-                 for Networked Measurement and Control Systems
-                 Chapter 9.2";
-        }
-
-        leaf delay-asymmetry {
-            type int64;
-            default 0;
-            description
-                "As per PTP    Known path asymmetry in ns.";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 7.4.2";
-        }
-        
-        leaf logical-termination-point {
-            type leafref {
-                path '/core-model:network-element/core-model:ltp/core-model:uuid';
-            }
-            description
-                "A reference to a LTP of layer-protocol-name 'ETY' or 'MWPS', which is used 
-                 to discover the PTP topology.";
-        }
-
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/README.md b/sdnr/wireless-transport/code-Carbon-SR1/README.md
deleted file mode 100644 (file)
index 31fd499..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-#Setting up Carbon SR1 development environment
-
-HINT1: Not all applications, available under code/apps are integrated into code-Carbon-SR1/apps.
-HINT2: Modify the code under the *code* subdirectory. Modify in a way that it can be used in Boron and Carbon.
-
-This *code-Carbon-SR1* folder does compile the sources from *code* in a Opendayligh Cabron SR1 context.
-Mainly the pom.xml files are adapted. Sources are used from *code* referenced by a symbolic link.
-
-##Recommended structure
-
-   - $HOME/Downloads
-   - $HOME/odl
-      - WirelessTransportEmulator [from here: git MELACON](https://github.com/Melacon/WirelessTransportEmulator.git)
-      - CENTENNIAL [from here: git](https://github.com/OpenNetworkingFoundation/CENTENNIAL.git)
-
-
-Working location for compiling Carbon code and managing the Carbon karaf container is here: **$HOME/odl/CENTENNIAL/code-Carbon-SR1**
-Working directory for source code editing for Boron base is here: **$HOME/odl/CENTENNIAL/code**
-
-## Steps
-
-### 0. Do the installation of Java, maven, git npm and so on form the Boron/code description
-
-Versions of tools that we use today (April 2018):
-  - Apache Maven 3.3.9
-  - Maven home: /usr/share/maven
-  - Java version: 1.8.0_162, vendor: Oracle Corporation
-  - Java home: /usr/lib/jvm/java-8-openjdk-amd64/jre
-  - Default locale: en_US, platform encoding: UTF-8
-  - OS name: "linux", version: "4.13.0-37-generic", arch: "amd64", family: "unix"
-  - git version 2.7.4
-  - node: v4.2.6
-  - npm: 3.5.2
-  - jq: jq-1.5-1-a5b5cbe
-  - bower 1.8.0
-
-
-### 1. Download Carbon SR1 container
-
-    cd $HOME/Downloads
-    wget Carbon tar https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/0.6.1-Carbon/distribution-karaf-0.6.1-Carbon.tar.gz
-
-### 2. Creating dist.conf file
-
-    cd $HOME/odl/CENTENNIAL/code-Carbon-SR1
-
-Create the file "dist.conf" with VI or any editor. Adapt template:
-
-    #Own configuration
-    #Mandatory
-    ODL_KARAF_DIST="distribution-karaf-0.6.1-Carbon"
-    ODL_KARAF_HOME=$HOME/odl/$ODL_KARAF_DIST
-    ODL_KARAF_DISTGZ="$HOME/Downloads/"$ODL_KARAF_DIST".tar.gz"
-    export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
-    #Optional for TAR build file creation
-    #If system is to slow it may be appropriate to specify a delay
-    #ODL_KARAF_AFTERCMD_DELAY_SECONDS="20"
-    ODL_BUILD_HOME="$HOME/build/att"
-    ODL_KARAF_STARTUP_SCRIPT="karaf_startup_all"
-
-
-### 3. Compile everything to m2
-
-    cd $HOME/odl/CENTENNIAL/code-Carbon-SR1
-    mvn clean install -DskipTests
-
-Should end without error indication
-
-### 4. Prepare container
-
-The *odl* script is replacing the older "install.sh" script collection. It will use the local settings, specified in dist.conf and can manage the karaf container specified by the configuration file. .
-
-The prepare command will create
-   - The preconfigured karaf container
-   - Will create the link "dist" that points to the karaf container root, like $ODL_KARAF_HOME in the Boron environment.
-     E.g. cd to log directory works via cd dist/data/log
-
-Execute prepare:
-
-     cd $HOME/odl/CENTENNIAL/code-Carbon-SR1
-     ./odl prepare
-
-### 5. Install the apps and Start the container
-
-Install from $HOME/.m2/repository into dist/system and install features.
-
-    ./odl im
-
-
-### Further commands of odl script
-
-List of all ./odl commands:
-```
- a           for build all and install from M2
- build       build subsystem
- bower       for install bower
- cli         start karaf command line
- env         List environment variables
- d           for devicemanager and install from M2
- dbclean     clean db and load with initial data
- debug       activate debug for netconf and mwtn
- distremove  remove existing karaf distribution
- dlux        install DLUX patch
- help        List this help
- ib          for install from Build-directory
- im          for install from M2-directory
- imd         for install from M2-directory. Delete logs before start command
- it fn       install tar file to container
- karafclean  start clean and install apps on karaf
- migrate     migrate Param1 Param2 Migrate on localhost
- prepare     to install and prepare a karaf. Packed Version expected in Downloads
- test        do some testing
- start       start karaf
- status      display karaf status
- stop        stop and wait karaf
- restart     stop and start karaf
- repoclean   clean the repositories
- v           get Versions
-```
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/features/.gitignore b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/features/.gitignore
deleted file mode 100644 (file)
index eacf31a..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/target-ide/
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/features/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/features/pom.xml
deleted file mode 100644 (file)
index 716089a..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>com.highstreet.technologies.apigateway</groupId>
-  <artifactId>apigateway-features</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-  <name>${project.artifactId}</name>
-
-  <parent>
-     <groupId>org.opendaylight.odlparent</groupId>
-     <artifactId>features-parent</artifactId>
-     <version>1.8.1-Carbon</version>
-     <relativePath/>
-  </parent>
-
- <dependencies>
-  <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>apigateway-impl</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/features/src/main/features/features.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/features/src/main/features/features.xml
deleted file mode 100644 (file)
index 0c3d93b..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<features name="apigateway-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-
-  <feature name="odl-ht-apigateway" version="${project.version}" description="OpenDaylight :: API Gateway :: Core">
-    <feature>http</feature>
-    <bundle>mvn:com.highstreet.technologies.apigateway/apigateway-impl/${project.version}</bundle>
-</feature>
-
-</features>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/pom.xml
deleted file mode 100644 (file)
index 9913598..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-    <modelVersion>4.0.0</modelVersion>
-       <groupId>com.highstreet.technologies.apigateway</groupId>
-        <artifactId>apigateway-impl</artifactId>
-    <packaging>bundle</packaging>
-
-    <parent>
-        <groupId>com.highstreet.technologies.apigateway</groupId>
-        <artifactId>apigateway-parent</artifactId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-
-    <dependencies>
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.5</version>
-        </dependency>
-       <dependency>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-log4j12</artifactId>
-          <version>1.6.6</version>
-        </dependency>
-        <dependency>
-          <groupId>org.json</groupId>
-          <artifactId>json</artifactId>
-          <version>20131018</version>
-      </dependency>
-    </dependencies>
-
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/AaiServlet.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/AaiServlet.java
deleted file mode 100644 (file)
index bf54ae1..0000000
+++ /dev/null
@@ -1,264 +0,0 @@
-package com.highstreet.technologies.apigateway;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.nio.charset.StandardCharsets;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class AaiServlet extends HttpServlet {
-
-       /**
-        *
-        */
-       private static final long serialVersionUID = 5946205120796162644L;
-       private static Logger LOG = LoggerFactory.getLogger(AaiServlet.class);
-       private static final byte[] OFFLINE_RESPONSE_BYTES = "AAI interface is offline".getBytes(StandardCharsets.UTF_8);
-       private static final int BUFSIZE = 1024;
-       private static SSLContext sc;
-       private static boolean TRUSTALL = false;
-
-       /**
-        *
-        * @throws NoSuchAlgorithmException
-        * @throws KeyManagementException
-        */
-       private static void setupSslTrustAll() throws NoSuchAlgorithmException, KeyManagementException {
-
-               sc = SSLContext.getInstance("TLSv1.2");
-               TrustManager[] trustCerts = null;
-               if (TRUSTALL) {
-                       trustCerts = new TrustManager[] { new javax.net.ssl.X509TrustManager() {
-                               public java.security.cert.X509Certificate[] getAcceptedIssuers() {
-                                       return null;
-                               }
-
-                               public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-                               }
-
-                               public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-                               }
-                       } };
-
-               }
-               // Init the SSLContext with a TrustManager[] and SecureRandom()
-               sc.init(null, trustCerts, new java.security.SecureRandom());
-
-       }
-
-       public AaiServlet() {
-
-               try {
-                       MyProperties.Instantiate(MyProperties.PROPFILE);
-               } catch (Exception e) {
-                       LOG.error(e.getMessage());
-               }
-
-               TRUSTALL = MyProperties.getInstance().trustInsecure();
-               try {
-                       setupSslTrustAll();
-               } catch (Exception e) {
-                       LOG.error("error setting up SSL: " + e.getMessage());
-               }
-       }
-
-       @Override
-       protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               if (MyProperties.getInstance().isAAIOff()) {
-                       this.sendOffResponse(resp);
-               } else {
-                       HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "PUT");
-                       this.handleRequest(http, req, resp, "PUT");
-                       http.disconnect();
-               }
-       }
-
-       @Override
-       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               if (MyProperties.getInstance().isAAIOff()) {
-                       this.sendOffResponse(resp);
-               } else {
-                       HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "GET");
-                       this.handleRequest(http, req, resp, "GET");
-                       http.disconnect();
-               }
-       }
-
-       @Override
-       protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               if (MyProperties.getInstance().isAAIOff()) {
-                       this.sendOffResponse(resp);
-               } else {
-                       HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "POST");
-                       this.handleRequest(http, req, resp, "POST");
-                       http.disconnect();
-               }
-       }
-
-       @Override
-       protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               if (MyProperties.getInstance().isAAIOff()) {
-                       this.sendOffResponse(resp);
-               } else {
-                       HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "DELETE");
-                       this.handleRequest(http, req, resp, "DELETE");
-                       http.disconnect();
-               }
-
-       }
-
-       @Override
-       protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               // if(MyProperties.getInstance().corsEnabled())
-               // resp.addHeader("Access-Control-Allow-Origin","*");
-               super.doOptions(req, resp);
-       }
-
-       private void sendOffResponse(HttpServletResponse response) {
-               response.setStatus(200);// HTML/OK
-               response.setHeader("Content-Type", "text/html; charset=utf-8");
-               try {
-                       response.getOutputStream().write(OFFLINE_RESPONSE_BYTES);
-               } catch (IOException e) {
-                       LOG.debug("problem writing offline response");
-               }
-
-       }
-
-       private URLConnection getConnection(HttpServletRequest req, final String method) throws IOException {
-
-               LOG.debug(method + " Request");
-               // String query = req.getQueryString();
-               String uri=req.getRequestURI();
-               if(uri.startsWith("/"))
-                       uri=uri.substring(1);
-               if(uri.startsWith("aai"))
-                       uri=uri.substring("aai".length());
-               if(uri.startsWith("/"))
-                       uri=uri.substring(1);
-               String base=MyProperties.getInstance().getAAIBaseUrl() ;
-               if(!base.endsWith("/"))
-                       base+="/";
-
-               String surl =base+uri;
-               // if (query != null && query.length() > 0)
-               // surl += "?" + query;
-               LOG.debug("RemoteURL: " + surl);
-               URL url = new URL(surl);
-               URLConnection http = url.openConnection();
-               ((HttpURLConnection) http).setRequestMethod(method);
-               if (url.toString().startsWith("https")) {
-                       ((HttpsURLConnection) http).setSSLSocketFactory(sc.getSocketFactory());
-                       if (TRUSTALL) {
-                               HostnameVerifier allHostsValid = new HostnameVerifier() {
-                                       public boolean verify(String hostname, SSLSession session) {
-                                               return true;
-                                       }
-                               };
-                               ((HttpsURLConnection) http).setHostnameVerifier(allHostsValid);
-                       }
-               }
-               http.setDoOutput(true);
-               // copy request headers
-               String s = "";
-               Enumeration<String> headers = req.getHeaderNames();
-               while (headers.hasMoreElements()) {
-                       String h = headers.nextElement();
-                       String v = req.getHeader(h);
-                       if (h != null && h.equals("Host"))
-                               v = url.getAuthority();
-                       s += String.format("%s:%s;", h, v);
-                       http.setRequestProperty(h, v);
-               }
-               Map<String,String> addHeaders=MyProperties.getInstance().getAAIHeaders();
-               if(addHeaders!=null)
-               {
-                       for(Entry<String,String> entry:addHeaders.entrySet())
-                       {
-                               http.setRequestProperty(entry.getKey(), entry.getValue());
-                       }
-               }
-               LOG.debug("Request Headers: " + s);
-               return http;
-       }
-
-       private void handleRequest(HttpURLConnection http, HttpServletRequest req, HttpServletResponse resp, String method)
-                       throws IOException {
-               byte[] buffer = new byte[BUFSIZE];
-               int len = 0, lensum = 0;
-               // send request
-               // Send the message to destination
-               if (!method.equals("GET")) {
-                       try (OutputStream output = http.getOutputStream()) {
-                               while (true) {
-                                       len = req.getInputStream().read(buffer, 0, BUFSIZE);
-                                       if (len <= 0)
-                                               break;
-                                       lensum += len;
-                                       output.write(buffer, 0, len);
-                               }
-                       }
-               }
-               LOG.debug("written " + lensum + " data out");
-               int responseCode = ((HttpURLConnection) http).getResponseCode();
-               // Receive answer
-               InputStream response;
-               if (responseCode >= 200 && responseCode < 300)
-                       response = http.getInputStream();
-               else {
-                       response = http.getErrorStream();
-                       if (response == null)
-                               http.getInputStream();
-               }
-
-               LOG.debug("ResponseCode: " + responseCode);
-               resp.setStatus(responseCode);
-               Map<String, List<String>> set = http.getHeaderFields();
-               String s = "";
-               if (set != null) {
-                       for (Map.Entry<String, List<String>> entry : set.entrySet()) {
-                               if (entry.getKey() == null)
-                                       continue;
-                               for (String v : entry.getValue()) {
-                                       resp.setHeader(entry.getKey(), v);
-                                       s += String.format("%s:%s;", entry.getKey(), v);
-                               }
-
-                       }
-               }
-               LOG.debug("Received Headers: " + s);
-               lensum = 0;
-               if (response != null) {
-                       while (true) {
-                               len = response.read(buffer, 0, BUFSIZE);
-                               if (len <= 0)
-                                       break;
-                               lensum += len;
-                               resp.getOutputStream().write(buffer, 0, len);
-                       }
-               } else
-                       LOG.debug("response is null");
-               LOG.debug("Received " + lensum + " bytes");
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/EsServlet.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/EsServlet.java
deleted file mode 100644 (file)
index a1e8727..0000000
+++ /dev/null
@@ -1,257 +0,0 @@
-package com.highstreet.technologies.apigateway;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class EsServlet extends HttpServlet {
-
-       /**
-        *
-        */
-       private static final long serialVersionUID = -3996363343749995011L;
-       private static Logger LOG = LoggerFactory.getLogger(EsServlet.class);
-       private static final int BUFSIZE = 1024;
-       private static final byte[] OFFLINE_RESPONSE_BYTES = "Database interface is offline"
-                       .getBytes(StandardCharsets.UTF_8);
-       private static SSLContext sc;
-       private static boolean TRUSTALL = false;
-
-       /**
-        *
-        * @throws NoSuchAlgorithmException
-        * @throws KeyManagementException
-        */
-       private static void setupSslTrustAll() throws NoSuchAlgorithmException, KeyManagementException {
-
-               sc = SSLContext.getInstance("TLSv1.2");
-               TrustManager[] trustCerts = null;
-               if (TRUSTALL) {
-                       trustCerts = new TrustManager[] { new javax.net.ssl.X509TrustManager() {
-                               public java.security.cert.X509Certificate[] getAcceptedIssuers() {
-                                       return null;
-                               }
-
-                               public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-                               }
-
-                               public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-                               }
-                       } };
-
-               }
-               // Init the SSLContext with a TrustManager[] and SecureRandom()
-               sc.init(null, trustCerts, new java.security.SecureRandom());
-
-       }
-
-       public EsServlet() {
-
-               try {
-                       MyProperties.Instantiate(MyProperties.PROPFILE);
-               } catch (Exception e) {
-                       LOG.error(e.getMessage());
-               }
-
-               TRUSTALL = MyProperties.getInstance().trustInsecure();
-               try {
-                       setupSslTrustAll();
-               } catch (Exception e) {
-                       LOG.error("error setting up SSL: " + e.getMessage());
-               }
-       }
-
-       @Override
-       protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               if (MyProperties.getInstance().isEsOff()) {
-                       this.sendOffResponse(resp);
-               } else {
-                       HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "PUT");
-                       this.handleRequest(http, req, resp, "PUT");
-                       http.disconnect();
-               }
-       }
-
-       @Override
-       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               if (MyProperties.getInstance().isEsOff()) {
-                       this.sendOffResponse(resp);
-               } else {
-                       HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "GET");
-                       this.handleRequest(http, req, resp, "GET");
-                       http.disconnect();
-               }
-       }
-
-       @Override
-       protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               if (MyProperties.getInstance().isEsOff()) {
-                       this.sendOffResponse(resp);
-               } else {
-                       HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "POST");
-                       this.handleRequest(http, req, resp, "POST");
-                       http.disconnect();
-               }
-       }
-
-       @Override
-       protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               if (MyProperties.getInstance().isEsOff()) {
-                       this.sendOffResponse(resp);
-               } else {
-                       HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "DELETE");
-                       this.handleRequest(http, req, resp, "DELETE");
-                       http.disconnect();
-               }
-
-       }
-
-       @Override
-       protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               if (MyProperties.getInstance().corsEnabled()) {
-                       resp.addHeader("Access-Control-Allow-Origin", "*");
-                       resp.addHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
-                       resp.addHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
-               }
-               super.doOptions(req, resp);
-       }
-
-       private void sendOffResponse(HttpServletResponse response) {
-               response.setStatus(200);// HTML/OK
-               response.setHeader("Content-Type", "text/html; charset=utf-8");
-               try {
-                       response.getOutputStream().write(OFFLINE_RESPONSE_BYTES);
-               } catch (IOException e) {
-                       LOG.debug("problem writing offline response");
-               }
-
-       }
-
-       private URLConnection getConnection(HttpServletRequest req, final String method) throws IOException {
-
-               LOG.debug(method + " Request");
-               // String query = req.getQueryString();
-               String uri = req.getRequestURI();
-               if (uri != null && uri.length() > 0)
-                       uri = uri.substring("/database".length());
-               String surl = MyProperties.getInstance().getEsBaseUrl() + uri;
-               // if (query != null && query.length() > 0)
-               // surl += "?" + query;
-               LOG.debug("RemoteURL: " + surl);
-               URL url = new URL(surl);
-               URLConnection http = url.openConnection();
-               ((HttpURLConnection) http).setRequestMethod(method);
-               if (url.toString().startsWith("https")) {
-                       ((HttpsURLConnection) http).setSSLSocketFactory(sc.getSocketFactory());
-                       if (TRUSTALL) {
-                               HostnameVerifier allHostsValid = new HostnameVerifier() {
-                                       public boolean verify(String hostname, SSLSession session) {
-                                               return true;
-                                       }
-                               };
-                               ((HttpsURLConnection) http).setHostnameVerifier(allHostsValid);
-                       }
-               }
-               http.setDoOutput(true);
-               // copy request headers
-               String s = "";
-               Enumeration<String> headers = req.getHeaderNames();
-               while (headers.hasMoreElements()) {
-                       String h = headers.nextElement();
-                       String v = req.getHeader(h);
-                       if (h != null && h.equals("Host"))
-                               v = url.getAuthority();
-                       s += String.format("%s:%s;", h, v);
-                       http.setRequestProperty(h, v);
-               }
-               LOG.debug("Request Headers: " + s);
-               return http;
-       }
-
-       private void handleRequest(HttpURLConnection http, HttpServletRequest req, HttpServletResponse resp, String method)
-                       throws IOException {
-               byte[] buffer = new byte[BUFSIZE];
-               int len = 0, lensum = 0;
-               // send request
-               // Send the message to destination
-               if (!method.equals("GET")) {
-                       try (OutputStream output = http.getOutputStream()) {
-                               while (true) {
-                                       len = req.getInputStream().read(buffer, 0, BUFSIZE);
-                                       if (len <= 0)
-                                               break;
-                                       lensum += len;
-                                       output.write(buffer, 0, len);
-                               }
-                       }
-               }
-               LOG.debug("written " + lensum + " data out");
-               int responseCode = ((HttpURLConnection) http).getResponseCode();
-               // Receive answer
-               InputStream response;
-               if (responseCode >= 200 && responseCode < 300)
-                       response = http.getInputStream();
-               else {
-                       response = http.getErrorStream();
-                       if (response == null)
-                               http.getInputStream();
-               }
-
-               LOG.debug("ResponseCode: " + responseCode);
-               resp.setStatus(responseCode);
-               Map<String, List<String>> set = http.getHeaderFields();
-               String s = "";
-               if (set != null) {
-                       for (Map.Entry<String, List<String>> entry : set.entrySet()) {
-                               if (entry.getKey() == null)
-                                       continue;
-                               for (String v : entry.getValue()) {
-                                       resp.setHeader(entry.getKey(), v);
-                                       s += String.format("%s:%s;", entry.getKey(), v);
-                               }
-                               if (MyProperties.getInstance().corsEnabled()) {
-                                       resp.setHeader("Access-Control-Allow-Origin", "*");
-                                       //resp.setHeader("Access-Control-Allow-Methods", "GET,PUT,POST,DELETE");
-                                       resp.setHeader("Access-Control-Allow-Headers", "Content-Type, Authorization");
-                               }
-
-                       }
-               }
-               LOG.debug("Received Headers: " + s);
-               lensum = 0;
-               if (response != null) {
-                       while (true) {
-                               len = response.read(buffer, 0, BUFSIZE);
-                               if (len <= 0)
-                                       break;
-                               lensum += len;
-                               resp.getOutputStream().write(buffer, 0, len);
-                       }
-               } else
-                       LOG.debug("response is null");
-               LOG.debug("Received " + lensum + " bytes");
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/MSServlet.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/MSServlet.java
deleted file mode 100644 (file)
index 7f087a5..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-package com.highstreet.technologies.apigateway;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.nio.charset.StandardCharsets;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class MSServlet extends HttpServlet {
-
-       /**
-        *
-        */
-       private static final long serialVersionUID = -5361461082028405171L;
-       private static Logger LOG = LoggerFactory.getLogger(MSServlet.class);
-       private static final byte[] OFFLINE_RESPONSE_BYTES = "MediatorServer interface is offline"
-                       .getBytes(StandardCharsets.UTF_8);
-       private static final int BUFSIZE = 1024;
-       private static SSLContext sc;
-       private static boolean TRUSTALL = false;
-
-       /**
-        *
-        * @throws NoSuchAlgorithmException
-        * @throws KeyManagementException
-        */
-       private static void setupSslTrustAll() throws NoSuchAlgorithmException, KeyManagementException {
-
-               sc = SSLContext.getInstance("TLSv1.2");
-               TrustManager[] trustCerts = null;
-               if (TRUSTALL) {
-                       trustCerts = new TrustManager[] { new javax.net.ssl.X509TrustManager() {
-                               public java.security.cert.X509Certificate[] getAcceptedIssuers() {
-                                       return null;
-                               }
-
-                               public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-                               }
-
-                               public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-                               }
-                       } };
-
-               }
-               // Init the SSLContext with a TrustManager[] and SecureRandom()
-               sc.init(null, trustCerts, new java.security.SecureRandom());
-
-       }
-
-       public MSServlet() {
-
-               try {
-                       MyProperties.Instantiate(MyProperties.PROPFILE);
-               } catch (Exception e) {
-                       LOG.error(e.getMessage());
-               }
-
-               TRUSTALL = MyProperties.getInstance().trustInsecure();
-               try {
-                       setupSslTrustAll();
-               } catch (Exception e) {
-                       LOG.error("error setting up SSL: " + e.getMessage());
-               }
-       }
-
-       @Override
-       protected void doPut(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "PUT");
-               this.handleRequest(http, req, resp, "PUT");
-               if (http != null)
-                       http.disconnect();
-       }
-
-       @Override
-       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "GET");
-               this.handleRequest(http, req, resp, "GET");
-               if (http != null)
-                       http.disconnect();
-       }
-
-       @Override
-       protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "POST");
-               this.handleRequest(http, req, resp, "POST");
-               if (http != null)
-                       http.disconnect();
-       }
-
-       @Override
-       protected void doDelete(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               HttpURLConnection http = (HttpURLConnection) this.getConnection(req, "DELETE");
-               this.handleRequest(http, req, resp, "DELETE");
-               if (http != null)
-                       http.disconnect();
-
-       }
-
-       @Override
-       protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               // if(MyProperties.getInstance().corsEnabled())
-               // resp.addHeader("Access-Control-Allow-Origin","*");
-               super.doOptions(req, resp);
-       }
-
-       private void sendOffResponse(HttpServletResponse response) {
-               response.setStatus(200);// HTML/OK
-               response.setHeader("Content-Type", "text/html; charset=utf-8");
-               try {
-                       response.getOutputStream().write(OFFLINE_RESPONSE_BYTES);
-               } catch (IOException e) {
-                       LOG.debug("problem writing offline response");
-               }
-
-       }
-
-       public String getBaseUrl(long id) {
-               return "http://mediatorsnmp.fritz.box:7070";
-       }
-
-       private URLConnection getConnection(HttpServletRequest req, final String method) throws IOException {
-
-               LOG.debug(method + " Request");
-               String query = req.getQueryString();
-               String uri = req.getRequestURI();
-               // uri=/ms/1/api/; query=task=getconfig
-               LOG.debug("uri=" + uri + "; query=" + query);
-               uri = uri.substring("/ms/".length());
-               long id = 0;
-               try {
-                       id = Long.parseLong(uri.substring(0, uri.indexOf("/")));
-                       uri = uri.substring(uri.indexOf("/"));
-               } catch (Exception err) {
-                       LOG.debug(err.getMessage());
-               }
-               if (id > 0) {
-                       String surl = this.getBaseUrl(id) + uri;
-                       if (query != null && query.length() > 0)
-                               surl += "?" + query;
-                       LOG.debug("RemoteURL: " + surl);
-                       URL url = new URL(surl);
-                       URLConnection http = url.openConnection();
-                       ((HttpURLConnection) http).setRequestMethod(method);
-                       if (url.toString().startsWith("https")) {
-                               ((HttpsURLConnection) http).setSSLSocketFactory(sc.getSocketFactory());
-                               if (TRUSTALL) {
-                                       HostnameVerifier allHostsValid = new HostnameVerifier() {
-                                               public boolean verify(String hostname, SSLSession session) {
-                                                       return true;
-                                               }
-                                       };
-                                       ((HttpsURLConnection) http).setHostnameVerifier(allHostsValid);
-                               }
-                       }
-                       http.setDoOutput(true);
-                       // copy request headers
-                       String s = "";
-                       Enumeration<String> headers = req.getHeaderNames();
-                       while (headers.hasMoreElements()) {
-                               String h = headers.nextElement();
-                               String v = req.getHeader(h);
-                               if (h != null && h.equals("Host"))
-                                       v = url.getAuthority();
-                               s += String.format("%s:%s;", h, v);
-                               http.setRequestProperty(h, v);
-                       }
-                       LOG.debug("Request Headers: " + s);
-                       return http;
-               } else {
-                       LOG.debug("no ms id found");
-                       return null;
-               }
-
-       }
-
-       private void handleRequest(HttpURLConnection http, HttpServletRequest req, HttpServletResponse resp, String method)
-                       throws IOException {
-               if (http == null) {
-                       LOG.debug("nothing to answer");
-                       resp.setStatus(404);
-               } else {
-                       byte[] buffer = new byte[BUFSIZE];
-                       int len = 0, lensum = 0;
-                       // send request
-                       // Send the message to destination
-                       if (!method.equals("GET")) {
-                               try (OutputStream output = http.getOutputStream()) {
-                                       while (true) {
-                                               len = req.getInputStream().read(buffer, 0, BUFSIZE);
-                                               if (len <= 0)
-                                                       break;
-                                               lensum += len;
-                                               output.write(buffer, 0, len);
-                                       }
-                               }
-                       }
-                       LOG.debug("written " + lensum + " data out");
-                       int responseCode = ((HttpURLConnection) http).getResponseCode();
-                       // Receive answer
-                       InputStream response;
-                       if (responseCode >= 200 && responseCode < 300)
-                               response = http.getInputStream();
-                       else {
-                               response = http.getErrorStream();
-                               if (response == null)
-                                       http.getInputStream();
-                       }
-
-                       LOG.debug("ResponseCode: " + responseCode);
-                       resp.setStatus(responseCode);
-                       Map<String, List<String>> set = http.getHeaderFields();
-                       String s = "";
-                       if (set != null) {
-                               for (Map.Entry<String, List<String>> entry : set.entrySet()) {
-                                       if (entry.getKey() == null)
-                                               continue;
-                                       for (String v : entry.getValue()) {
-                                               resp.setHeader(entry.getKey(), v);
-                                               s += String.format("%s:%s;", entry.getKey(), v);
-                                       }
-
-                               }
-                       }
-                       LOG.debug("Received Headers: " + s);
-                       lensum = 0;
-                       if (response != null) {
-                               while (true) {
-                                       len = response.read(buffer, 0, BUFSIZE);
-                                       if (len <= 0)
-                                               break;
-                                       lensum += len;
-                                       resp.getOutputStream().write(buffer, 0, len);
-                               }
-                       } else
-                               LOG.debug("response is null");
-                       LOG.debug("Received " + lensum + " bytes");
-               }
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/MyProperties.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/java/com/highstreet/technologies/apigateway/MyProperties.java
deleted file mode 100644 (file)
index 81ada7c..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-package com.highstreet.technologies.apigateway;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Properties;
-
-import org.json.JSONArray;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class MyProperties {
-
-       private static Logger LOG = LoggerFactory.getLogger(MyProperties.class);
-       public static final String PROPFILE = "etc/apigateway.properties";
-       private static final String DEFAULT_AAI_HEADERS = "[\"X-FromAppId:SDNR\",\"Authorization: Basic QUFJOkFBSQ==\"]";
-
-       @Override
-       public String toString() {
-               return "MyProperties [aaiBase=" + aaiBase + ", aaiHeaders=" + aaiHeaders + ", esBase=" + esBase
-                               + ", trustInsecure=" + trustInsecure + ", corsEnabled=" + corsEnabled + "]";
-       }
-
-       private static MyProperties mObj;
-
-       private String aaiBase;
-       private Map<String, String> aaiHeaders;
-       private String esBase;
-
-       private boolean trustInsecure;
-
-       private boolean corsEnabled;
-
-       public boolean isAAIOff() {
-               return this.aaiBase == null ? true : this.aaiBase.equals("off");
-       }
-
-       public boolean isEsOff() {
-               return this.esBase == null ? true : this.esBase.equals("off");
-       }
-
-       public String getAAIBaseUrl() {
-               return this.aaiBase;
-       }
-
-       public String getEsBaseUrl() {
-               return this.esBase;
-       }
-
-       public Map<String, String> getAAIHeaders() {
-               return this.aaiHeaders;
-       }
-
-       public boolean trustInsecure() {
-               return this.trustInsecure;
-       }
-
-       public boolean corsEnabled() {
-               return this.corsEnabled;
-       }
-
-       public static MyProperties Instantiate(String filename) throws IOException, NumberFormatException {
-               mObj = new MyProperties(filename);
-               if (mObj != null)
-                       LOG.debug("instantiated:" + mObj.toString());
-               return mObj;
-       }
-
-       private MyProperties(String filename) throws IOException, NumberFormatException {
-               this.aaiBase = "off";
-               this.trustInsecure = false;
-               File f = new File(filename);
-               if (!f.exists()) {
-                       this.writeDefaults(f);
-               }
-               Properties defaultProps = new Properties();
-               FileInputStream in = new FileInputStream(filename);
-               defaultProps.load(in);
-               in.close();
-
-               this.aaiBase = defaultProps.getProperty("aai", "off");
-               this.aaiHeaders = _parseHeadersMap(defaultProps.getProperty("aaiHeaders", DEFAULT_AAI_HEADERS));
-               this.esBase = defaultProps.getProperty("database", "off");
-               this.trustInsecure = Integer.parseInt(defaultProps.getProperty("insecure", "0")) == 1;
-               this.corsEnabled = Integer.parseInt(defaultProps.getProperty("cors", "0")) == 1;
-       }
-
-       private static Map<String, String> _parseHeadersMap(String s) {
-               Map<String, String> r = new HashMap<String, String>();
-               try {
-                       JSONArray a = new JSONArray(s);
-                       if (a != null && a.length() > 0) {
-                               for (int i = 0; i < a.length(); i++) {
-                                       String item = a.getString(i);
-                                       String[] hlp = item.split(":");
-                                       if (hlp.length > 1) {
-                                               r.put(hlp[0], hlp[1]);
-                                       }
-                               }
-                       }
-               } catch (Exception e) {
-                       LOG.warn("problem loading headers map:" + e.getMessage());
-               }
-               return r;
-       }
-
-       private void writeDefaults(File f) throws IOException {
-               FileWriter fw = new FileWriter(f);
-               final String LR = "\n";
-               fw.write("aai=off" + LR);
-               fw.write("aaiHeaders=" + DEFAULT_AAI_HEADERS + LR);
-               fw.write("database=http://localhost:9200" + LR);
-               fw.write("insecure=1" + LR);
-               fw.write("cors=1");
-               fw.close();
-
-       }
-
-       public static MyProperties getInstance() {
-               return mObj;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index c7b3b98..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs">
-
-    <bean id="aaiServlet"
-        class="com.highstreet.technologies.apigateway.AaiServlet">
-    </bean>
-
-   <service interface="javax.servlet.http.HttpServlet" ref="aaiServlet">
-        <service-properties>
-            <entry key="alias" value="/aai" />
-        </service-properties>
-    </service>
-
-       <bean id="esServlet"
-        class="com.highstreet.technologies.apigateway.EsServlet">
-    </bean>
-
-   <service interface="javax.servlet.http.HttpServlet" ref="esServlet">
-        <service-properties>
-            <entry key="alias" value="/database" />
-        </service-properties>
-    </service>
-
-    <bean id="msServlet"
-        class="com.highstreet.technologies.apigateway.MSServlet">
-    </bean>
-
-   <service interface="javax.servlet.http.HttpServlet" ref="msServlet">
-        <service-properties>
-            <entry key="alias" value="/ms" />
-        </service-properties>
-    </service>
-</blueprint>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/test/SimpleTests.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/main/test/SimpleTests.java
deleted file mode 100644 (file)
index f2f4e4b..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-import java.io.File;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.json.JSONArray;
-import org.json.JSONObject;
-
-public class SimpleTests {
-
-
-       private static void testURI()
-       {
-               String uri="/ms/1/api/";
-               String query="task=getconfig";
-
-               long id=0;
-               String remoteUrl="";
-               uri = uri.substring("/ms/".length());
-
-               try {
-                       id = Long.parseLong(uri.substring(0, uri.indexOf("/")));
-                       uri=uri.substring(uri.indexOf("/"));
-               } catch (Exception err) {
-                       System.out.println(err.getMessage());
-               }
-
-               if(id>0)
-               {
-               remoteUrl=baseUrl(id)+uri;
-               if (query != null && query.length() > 0)
-                       remoteUrl += "?" + query;
-               }
-               System.out.println("url="+remoteUrl);
-       }
-       private static void testMSDBDataParser()
-       {
-               String resp="{\"took\":6,\"timed_out\":false,\"_shards\":{\"total\":5,\"successful\":5,\"failed\":0},\"hits\":{\"total\":2,\"max_score\":1.0,\"hits\":[{\"_index\":\"mwtn_v1\",\"_type\":\"mediator-server\",\"_id\":\"2\",\"_score\":1.0,\"_source\":{\"id\":2,\"name\":\"Server 2\",\"url\":\"http://mediatorsnmp.fritz.box:7070\"}},{\"_index\":\"mwtn_v1\",\"_type\":\"mediator-server\",\"_id\":\"1\",\"_score\":1.0,\"_source\":{\"id\":1,\"name\":\"Server 1\",\"url\":\"http://192.168.11.44:7070\"}}]}}";
-               JSONObject ro=new JSONObject(resp);
-               JSONArray a=ro.getJSONObject("hits").getJSONArray("hits");
-               for(int i=0;i<a.length();i++)
-               {
-                       JSONObject x=a.getJSONObject(i).getJSONObject("_source");
-                       System.out.println("id="+x.getLong("id")+" name=\""+x.getString("name")+"\" url=\""+x.getString("url")+"\"");
-               }
-
-       }
-
-        public static void walk(ArrayList<File> results, String path ) {
-
-               File root = new File( path );
-               File[] list = root.listFiles();
-
-               if (list == null) return;
-
-               for ( File f : list ) {
-                   if ( f.isDirectory() ) {
-                       walk(results, f.getAbsolutePath() );
-                       //System.out.println( "Dir:" + f.getAbsoluteFile() );
-                   }
-                   else {
-                       //System.out.println( "File:" + f.getAbsoluteFile() );
-                       if(f.isFile() && f.getName().endsWith(".md") )
-                               results.add(f);
-                   }
-               }
-           }
-       private static void testFindMDs()
-       {
-               final String BASEURI = "/help";
-               final int MAX_DEPTH = 10;
-               String uri="/help/";//req.getRequestURI();
-               Path basePath=new File("/home/herbert/odl/distribution-karaf-0.5.3-Boron-SR3").toPath();
-               uri=uri.substring(BASEURI.length());
-               try
-               {
-                       ArrayList<File> mdfiles=new ArrayList<>();
-                       walk(mdfiles,basePath.toAbsolutePath().toString());
-                       JSONArray a=new JSONArray();
-                       Iterator<File> it=mdfiles.iterator();
-                       while(it.hasNext())
-                               a.put(it.next().toString().substring(basePath.toAbsolutePath().toString().length()));
-                       //resp.getOutputStream().println(a.toString());
-                       System.out.println(a.toString());
-
-               }
-               catch(Exception err)
-               {
-                       err.printStackTrace();
-               }
-       }
-       private static void folderTests()
-       {
-               Path basePath=new File("/home/herbert/odl/distribution-karaf-0.5.3-Boron-SR3").toPath();
-               Path pHelp=basePath.resolve("help/");
-               String uri="0.1.0-SNAPSHOT/OpenDaylight";
-               System.out.println("phelp="+pHelp.toString());
-               Path pUri=pHelp.resolve(uri);
-               System.out.println("puri="+pUri.toString());
-       }
-
-       public static void main(String[] args)
-       {
-               //testURI();
-               //testMSDBDataParser();
-               //testFindMDs();
-       }
-
-       private static String baseUrl(long id) {
-               return "http://test.tld:7021";
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/test/resources/log4j.properties b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/impl/src/test/resources/log4j.properties
deleted file mode 100644 (file)
index 142663b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-log4j.rootLogger=INFO, out
-
-log4j.logger.org.apache.camel.impl.converter=WARN
-log4j.logger.org.apache.camel.management=WARN
-log4j.logger.org.apache.camel.impl.DefaultPackageScanClassResolver=WARN
-log4j.logger.org.springframework=ERROR
-
-# CONSOLE appender not used by default
-log4j.appender.out=org.apache.log4j.ConsoleAppender
-log4j.appender.out.layout=org.apache.log4j.PatternLayout
-log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/apigateway/pom.xml
deleted file mode 100644 (file)
index c49e98b..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
-       license agreements. See the NOTICE file distributed with this work for additional
-       information regarding copyright ownership. The ASF licenses this file to
-       You under the Apache License, Version 2.0 (the "License"); you may not use
-       this file except in compliance with the License. You may obtain a copy of
-       the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
-       by applicable law or agreed to in writing, software distributed under the
-       License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-       OF ANY KIND, either express or implied. See the License for the specific
-       language governing permissions and limitations under the License. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-       <modelVersion>4.0.0</modelVersion>
-
-       <groupId>com.highstreet.technologies.apigateway</groupId>
-       <artifactId>apigateway-parent</artifactId>
-       <version>0.5.1-SNAPSHOT</version>
-       <packaging>pom</packaging>
-
-       <properties>
-               <log4j-version>1.2.16</log4j-version>
-               <slf4j-version>1.6.1</slf4j-version>
-       </properties>
-
-       <modules>
-               <module>impl</module>
-               <module>features</module>
-       </modules>
-
-       <dependencies>
-               <dependency>
-               <groupId>javax.ws.rs</groupId>
-               <artifactId>javax.ws.rs-api</artifactId>
-               <version>2.0.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>${slf4j-version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-            <version>${slf4j-version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>${log4j-version}</version>
-            <scope>test</scope>
-        </dependency>
-         <dependency>
-        <groupId>org.json</groupId>
-        <artifactId>json</artifactId>
-        <version>20131018</version>
-      </dependency>
-    </dependencies>
-
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-compiler-plugin</artifactId>
-                               <version>3.3</version>
-                               <configuration>
-                                       <source>1.7</source>
-                                       <target>1.7</target>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.apache.felix</groupId>
-                               <artifactId>maven-bundle-plugin</artifactId>
-                               <version>3.0.1</version>
-                               <extensions>true</extensions>
-                               <configuration>
-                                       <instructions>
-                                               <_include>-bnd.bnd</_include>
-                                       </instructions>
-                               </configuration>
-                       </plugin>
-               </plugins>
-       </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/commons/binding-parent/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/commons/binding-parent/pom.xml
deleted file mode 100644 (file)
index ec39f7e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2015 Wipro Ltd. All rights reserved. This program and 
-       the accompanying materials are made available under the terms of the Eclipse 
-       Public License v1.0 which accompanies this distribution, and is available 
-       at http://www.eclipse.org/legal/epl-v10.html INTERNAL -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-       <parent>
-               <groupId>org.opendaylight.mdsal</groupId>
-               <artifactId>binding-parent</artifactId>
-               <version>0.10.1-Carbon</version>
-               <relativePath />
-       </parent>
-
-       <modelVersion>4.0.0</modelVersion>
-       <groupId>org.opendaylight.mwtn</groupId>
-       <artifactId>binding-parent</artifactId>
-       <version>0.5.1-SNAPSHOT</version>
-    <name>ONF :: Wireless :: ${project.artifactId}</name>
-       <packaging>pom</packaging>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/commons/config-parent/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/commons/config-parent/pom.xml
deleted file mode 100644 (file)
index 9425128..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2015 Wipro Ltd. All rights reserved. This program and 
-       the accompanying materials are made available under the terms of the Eclipse 
-       Public License v1.0 which accompanies this distribution, and is available 
-       at http://www.eclipse.org/legal/epl-v10.html INTERNAL -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-       <parent>
-               <groupId>org.opendaylight.controller</groupId>
-               <artifactId>config-parent</artifactId>
-               <version>0.6.1-Carbon</version>
-               <relativePath />
-       </parent>
-
-       <modelVersion>4.0.0</modelVersion>
-       <groupId>org.opendaylight.mwtn</groupId>
-       <artifactId>config-parent</artifactId>
-       <version>0.5.1-SNAPSHOT</version>
-       <name>ONF :: Wireless :: ${project.artifactId}</name>
-       <packaging>pom</packaging>
-
-       <properties>
-               <mdsal.model.version>0.10.1-Carbon</mdsal.model.version>
-               <mdsal.version>1.5.1-Carbon</mdsal.version>
-               <restconf.version>1.5.1-Carbon</restconf.version>
-               <yangtools.version>1.1.1-Carbon</yangtools.version>
-               <dlux.version>0.5.1-Carbon</dlux.version>
-               <netconf.version>1.2.1-Carbon</netconf.version>
-               <openflow.plugin.version>0.4.1-Carbon</openflow.plugin.version> 
-               <l2switch.version>0.5.1-Carbon</l2switch.version>
-               <checkstyle.skip>true</checkstyle.skip>
-               <console.version>3.0.1</console.version>
-       <!--    <yang.ext.version>2013.09.07.9.3-Boron-SR3</yang.ext.version>-->
-               <ietf.topology.version>2013.10.21.10.3-Carbon</ietf.topology.version>
-               <prefix>ONF :: Wireless :: </prefix>
-               <netty.version>4.1.7.Final</netty.version>
-               <jackson.version>2.3.2</jackson.version>
-       </properties>
-       
-
-       <dependencies>
-               <dependency>
-                       <groupId>junit</groupId>
-                       <artifactId>junit</artifactId>
-                       <scope>test</scope>
-               </dependency>
-
-               <dependency>
-                       <groupId>org.mockito</groupId>
-                       <artifactId>mockito-core</artifactId>
-                       <scope>test</scope>
-               </dependency>
-       </dependencies>
-
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-checkstyle-plugin</artifactId>
-                               <executions>
-                                       <execution>
-                                               <phase>process-sources</phase>
-                                               <goals>
-                                                       <goal>check</goal>
-                                               </goals>
-                                       </execution>
-                               </executions>
-                               <configuration>
-                                       <configLocation>
-                                               ${project.basedir}/../../commons/src/main/resources/checks.xml
-                                       </configLocation>
-                                       <failsOnError>true</failsOnError>
-                                       <includes>**/*.java,**/*.xml,**/*.ini,**/*.sh,**/*.bat</includes>
-                                       <excludes>**\/target\/,**\/bin\/,**\/third-party,**\/yang-gen-sal</excludes>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.jacoco</groupId>
-                               <artifactId>jacoco-maven-plugin</artifactId>
-                               <configuration>
-                                       <includes>
-                                               <include>org.opendaylight.atrium.*</include>
-                                       </includes>
-                               </configuration>
-                               <executions>
-                                       <execution>
-                                               <id>pre-test</id>
-                                               <goals>
-                                                       <goal>prepare-agent</goal>
-                                               </goals>
-                                       </execution>
-                                       <execution>
-                                               <id>post-test</id>
-                                               <goals>
-                                                       <goal>report</goal>
-                                               </goals>
-                                               <phase>test</phase>
-                                       </execution>
-                               </executions>
-                       </plugin>
-               </plugins>
-       </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/commons/configuration/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/commons/configuration/pom.xml
deleted file mode 100644 (file)
index dd96339..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2015 Wipro Ltd. and others. All rights reserved. This 
-       program and the accompanying materials are made available under the terms 
-       of the Eclipse Public License v1.0 which accompanies this distribution, and 
-       is available at http://www.eclipse.org/legal/epl-v10.html -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-       <modelVersion>4.0.0</modelVersion>
-       <groupId>org.opendaylight.mwtn</groupId>
-       <artifactId>configuration</artifactId>
-       <version>0.5.1-SNAPSHOT</version>
-    <name>ONF :: Wireless :: ${project.artifactId}</name>
-       <description>Configuration files for mwtn</description>
-       <packaging>jar</packaging>
-       <properties>
-               <maven.javadoc.skip>true</maven.javadoc.skip>
-               <checkstyle.skip>true</checkstyle.skip>
-       </properties>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/README.md b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/README.md
deleted file mode 100644 (file)
index 008ce69..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# Devicemanager
-
-The devicemanager application uses a persistent database to store NE related information.
-
-
-### OSS Faultmanagement umbrella
-
-Destination of fault notifications of the network elements.
-
-Test environment is the *evel-test-collector*.
-
-### Configuration "eventprovider.properties"
-
-Located in karaf under /etc
-Content like here:
-
-  ```
-  #Properties for Faultmanager. Password admin admin
-
-  eventReveicerUrl=http://127.0.0.1:30000/eventListener/v3
-  autorization=Basic YWRtaW46YWRtaW4=
-  sourceId=de305d54-75b4-431b-adb2-eb6b9e546014
-  httpTestUrl=https://plan.fritz.box:9092/ux/#
-  keyStore=etc/clientkeystore
-  keyStorePassword=daylight2016
-  ```
-
-### Configuration "aotsmconnector.properties"
-
-Located in karaf under /etc
-Content like here:
-
-  ```
-  #Properties
-
-  #soapurladd=off
-  soapurladd=http://soapserver.fritz.box/addmobility.php
-  #http timeout in seconds
-  soapaddtimeout=10
-  
-  #soapurlinq=off
-  soapurlinq=http://soapserver.fritz.box/inquire.php
-  #http timeout in seconds
-  soapinqtimeout=10
-   
-  #credentials
-  userName=user
-  userPassword=passwd
-  systemuser=user
-  assignedto=anotheruserid
-
-  #smtp fallback
-  #comment out if off
-  smtpHost=smtp.xxx.tld
-  smtpPort=587
-  smtpUsername=user
-  smtpPassword=passwd
-  smtpSender=odl@xxx.tld
-  smtpReceivers=email1@example.com,email2@example.com
-  ```
-
-### evel-test-collector
-
-Home: [evel-test-collector](https://github.com/att/evel-test-collector)
-Environment: Ubuntu 16.04 LTS, Python 2.7.12
-
-#### install
-
-Clone repository and install python packet manager.
-```
-git clone https://github.com/att/evel-test-collector.git
-sudo apt install python-pip
-sudo pip install jsonschema
-
-```
-Adapt to use the test script.
-
-  * Make the script executable.
-  * Add user credentials to config file
-
-```
-cd evel-test-collector/scripts/linux
-chmod 775 go-collector.sh
-vi ../../config/collector.conf
-
-```
-
-
-#### usage
-
-cd evel-test-collector/scripts/linux
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/api/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/api/pom.xml
deleted file mode 100644 (file)
index 01a7925..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2015 Wipro Ltd. All rights reserved. This program and
-    the accompanying materials are made available under the terms of the Eclipse
-    Public License v1.0 which accompanies this distribution, and is available
-    at http://www.eclipse.org/legal/epl-v10.html INTERNAL -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <parent>
-        <groupId>org.opendaylight.mwtn</groupId>
-        <artifactId>config-parent</artifactId>
-        <version>0.5.1-SNAPSHOT</version>
-        <relativePath>../../commons/config-parent</relativePath>
-    </parent>
-
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>devicemanager-api</artifactId>
-    <packaging>bundle</packaging>
-
-    <properties>
-        <maven.javadoc.skip>true</maven.javadoc.skip>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.opendaylight.netconf</groupId>
-            <artifactId>sal-netconf-connector</artifactId>
-            <version>${mdsal.version}</version>
-        </dependency>
-    </dependencies>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/api/src/main/java/org/opendaylight/mwtn/devicemanager/api/DeviceManagerService.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/api/src/main/java/org/opendaylight/mwtn/devicemanager/api/DeviceManagerService.java
deleted file mode 100644 (file)
index 959445d..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/**
- * Copyright (c) 2017 highstreet technologies GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.mwtn.devicemanager.api;
-
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
-
-public interface DeviceManagerService {
-
-    /*@Deprecated
-    public void startListenerOnNode(String nodeName);*/
-
-    /*@Deprecated
-    public void removeListenerOnNode(String nodeName);*/
-
-    /**
-     * Managed device is disconnected from node/mountpoint
-     * @param nNodeId id of the mountpoint
-     * @param nNode mountpoint contents
-     */
-    public void removeListenerOnNode(NodeId nNodeId, NetconfNode nNode);
-
-    /**
-     * Managed device is connected to node/mountpoint
-     * @param nNodeId id of the mountpoint
-     * @param nNode mountpoint contents
-     */
-    public void startListenerOnNode(NodeId nNodeId, NetconfNode nNode);
-
-    /**
-     * Creation indication of node/mountpoint
-     * @param nNodeId id of the mountpoint
-     * @param nNode mountpoint contents
-     */
-    public void mountpointNodeCreation(NodeId nNodeId, NetconfNode nNode);
-
-    /**
-     * Removal indication of node/mountpoint
-     * @param nNodeId id of the mountpoint
-     */
-    public void mountpointNodeRemoved(NodeId nNodeId);
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/api/src/main/yang/devicemanager-api.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/api/src/main/yang/devicemanager-api.yang
deleted file mode 100644 (file)
index f39c759..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-module devicemanager-api {
-
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:devicemanager:api";
-    prefix "devicemanager-api";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    description
-        "DeviceManager Api Module";
-
-    revision "2017-03-17" {
-        description
-            "Initial revision";
-    }
-
-    identity devicemanager-api {
-        base config:service-type;
-        config:java-class org.opendaylight.mwtn.devicemanager.api.DeviceManagerService;
-    }
-}
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/pom.xml
deleted file mode 100644 (file)
index 7dd3e73..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2015 Wipro Ltd. All rights reserved. This program and
-       the accompanying materials are made available under the terms of the Eclipse
-       Public License v1.0 which accompanies this distribution, and is available
-       at http://www.eclipse.org/legal/epl-v10.html INTERNAL -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-       <parent>
-               <groupId>org.opendaylight.mwtn</groupId>
-               <artifactId>config-parent</artifactId>
-               <version>0.5.1-SNAPSHOT</version>
-               <relativePath>../../commons/config-parent</relativePath>
-       </parent>
-
-       <modelVersion>4.0.0</modelVersion>
-       <artifactId>devicemanager-impl</artifactId>
-       <packaging>bundle</packaging>
-
-       <properties>
-               <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
-               <buildtime>${maven.build.timestamp} UTC</buildtime>
-       </properties>
-       <dependencies>
-               <dependency>
-                       <groupId>org.opendaylight.mwtn</groupId>
-                       <artifactId>devicemodel</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.mwtn</groupId>
-                       <artifactId>websocketmanager-api</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.mwtn</groupId>
-                       <artifactId>devicemanager-api</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.netconf</groupId>
-                       <artifactId>sal-netconf-connector</artifactId>
-                       <version>${mdsal.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.controller.model</groupId>
-                       <artifactId>model-inventory</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>org.opendaylight.mdsal.model</groupId>
-                       <artifactId>ietf-topology</artifactId>
-                       <!-- <version>${ietf.topology.version}</version> -->
-               </dependency>
-               <dependency>
-                       <groupId>org.json</groupId>
-                       <artifactId>json</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>javax.mail</groupId>
-                       <artifactId>mail</artifactId>
-                       <version>1.4.7</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.slf4j</groupId>
-                       <artifactId>slf4j-log4j12</artifactId>
-                       <!-- <version>1.6.6</version> managed -->
-               </dependency>
-               <dependency>
-                   <groupId>commons-beanutils</groupId>
-                   <artifactId>commons-beanutils</artifactId>
-                   <version>1.9.3</version>
-               </dependency>
-               <dependency>
-                   <groupId>org.apache.commons</groupId>
-                   <artifactId>commons-configuration2</artifactId>
-                   <version>2.2</version>
-               </dependency>
-
-               <!-- Elasticsearch dependencies below that should NOT be part of this bundle -->
-               <dependency>
-                       <groupId>com.google.guava</groupId>
-                       <artifactId>guava</artifactId>
-                       <!-- <version>18.0</version> -->
-                       <scope>compile</scope>
-               </dependency>
-
-               <!-- Elasticsearch dependencies below should be part of this bundle -->
-               <!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
-               <dependency>
-                       <groupId>org.elasticsearch</groupId>
-                       <artifactId>elasticsearch</artifactId>
-                       <version>2.2.0</version>
-               </dependency>
-               <dependency>
-                       <groupId>com.spatial4j</groupId>
-                       <artifactId>spatial4j</artifactId>
-                       <version>0.5</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.elasticsearch</groupId>
-                       <artifactId>securesm</artifactId>
-                       <version>1.0</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>com.carrotsearch</groupId>
-                       <artifactId>hppc</artifactId>
-                       <version>0.7.1</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>joda-time</groupId>
-                       <artifactId>joda-time</artifactId>
-                       <version>2.8.2</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.joda</groupId>
-                       <artifactId>joda-convert</artifactId>
-                       <version>1.2</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>com.fasterxml.jackson.core</groupId>
-                       <artifactId>jackson-core</artifactId>
-                       <version>2.6.3</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>com.fasterxml.jackson.core</groupId>
-                       <artifactId>jackson-annotations</artifactId>
-                       <version>2.6.3</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>com.fasterxml.jackson.core</groupId>
-                       <artifactId>jackson-databind</artifactId>
-                       <version>2.6.3</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>com.fasterxml.jackson.dataformat</groupId>
-                       <artifactId>jackson-dataformat-smile</artifactId>
-                       <version>2.6.3</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>com.fasterxml.jackson.dataformat</groupId>
-                       <artifactId>jackson-dataformat-yaml</artifactId>
-                       <version>2.6.3</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>com.fasterxml.jackson.dataformat</groupId>
-                       <artifactId>jackson-dataformat-cbor</artifactId>
-                       <version>2.6.3</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.yaml</groupId>
-                       <artifactId>snakeyaml</artifactId>
-                       <version>1.15</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>io.netty</groupId>
-                       <artifactId>netty</artifactId>
-                       <version>3.10.5.Final</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>com.ning</groupId>
-                       <artifactId>compress-lzf</artifactId>
-                       <version>1.0.2</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>com.tdunning</groupId>
-                       <artifactId>t-digest</artifactId>
-                       <version>3.0</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.hdrhistogram</groupId>
-                       <artifactId>HdrHistogram</artifactId>
-                       <version>2.1.6</version>
-                       <scope>compile</scope>
-               </dependency>
-               <dependency>
-                       <groupId>com.twitter</groupId>
-                       <artifactId>jsr166e</artifactId>
-                       <version>1.1.0</version>
-                       <scope>compile</scope>
-               </dependency>
-
-               <!-- Implicit dependencies -->
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-core</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-backward-codecs</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-analyzers-common</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-queries</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-memory</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-highlighter</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-queryparser</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-sandbox</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-suggest</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-misc</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-join</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-grouping</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-spatial</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-               <groupId>org.apache.lucene</groupId>
-               <artifactId>lucene-spatial3d</artifactId>
-                       <version>5.4.1</version>
-               </dependency>
-               <dependency>
-                   <groupId>jakarta-regexp</groupId>
-                   <artifactId>jakarta-regexp</artifactId>
-                   <version>1.4</version>
-               </dependency>
-               <dependency>
-                   <groupId>commons-collections</groupId>
-                   <artifactId>commons-collections</artifactId>
-                   <version>3.2.2</version>
-               </dependency>
-               <dependency>
-                   <groupId>commons-logging</groupId>
-                   <artifactId>commons-logging</artifactId>
-                   <version>1.2</version>
-               </dependency>
-               <dependency>
-                   <groupId>commons-cli</groupId>
-                   <artifactId>commons-cli</artifactId>
-                   <version>1.3.1</version>
-               </dependency>
-               <dependency>
-                 <groupId>org.apache.commons</groupId>
-                 <artifactId>commons-lang3</artifactId>
-          <version>3.4</version>
-               </dependency>
-               <dependency>
-                       <groupId>com.typesafe.akka</groupId>
-                       <artifactId>akka-actor_2.11</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>com.typesafe.akka</groupId>
-                       <artifactId>akka-cluster_2.11</artifactId>
-               </dependency>
-       </dependencies>
-       <build>
-               <resources>
-                       <resource>
-                               <directory>src/main/resources</directory>
-                               <filtering>true</filtering>
-                       </resource>
-               </resources>
-               <plugins>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-compiler-plugin</artifactId>
-                               <configuration>
-                                       <source>1.8</source>
-                                       <target>1.8</target>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.apache.felix</groupId>
-                               <artifactId>maven-bundle-plugin</artifactId>
-                               <extensions>true</extensions>
-                               <configuration>
-                                       <instructions>
-                                               <Import-Package>
-                                                       com.github.mustachejava;resolution:=optional,
-                                                       com.sun.jna.*;resolution:=optional,
-                                                       com.vividsolutions.jts.*;resolution:=optional,
-                                                       org.apache.log4j.helpers;resolution:=optional,
-                                                       org.noggit;resolution:=optional,
-                                                       org.apache.commons.jexl2;resolution:=optional,
-                                                       org.apache.commons.jxpath.*;resolution:=optional,
-                                                       org.apache.commons.vfs2.*;resolution:=optional,
-                                                       org.apache.commons.commons-codec;resolution:=optional,
-                                                       org.apache.xml.resolver.*;resolution:=optional,
-                                                       org.apache.log;resolution:=optional,
-                                                       *;resolution:=optional
-                                               </Import-Package>
-                                               <Embed-Dependency>jackson*,ela*,joda*,Hdr*,lucene*,
-                                               hppc,jsr166e,t-digest,snakeyaml,securesm,spatial4j,compress-lzf,commons-cli,jakarta-regexp,
-                                               commons-lang3,commons-collections,commons-logging,commons-beanutils,commons-configuration2</Embed-Dependency>
-                                               <Include-Resource>{maven-resources},{maven-dependencies},META-INF/git.properties=-target/classes/META-INF/git.properties</Include-Resource>
-                                               <Embed-Transitive>true</Embed-Transitive>
-                                       </instructions>
-                               </configuration>
-                       </plugin>
-               </plugins>
-       </build>
-
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/config/default-config.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/config/default-config.xml
deleted file mode 100644 (file)
index 09445ec..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<snapshot>
-    <required-capabilities>
-        <capability>urn:opendaylight:params:xml:ns:yang:devicemanager:api?module=devicemanager-api&amp;revision=2017-03-17</capability>
-        <capability>urn:opendaylight:params:xml:ns:yang:devicemanager:impl?module=devicemanager-impl&amp;revision=2017-03-17</capability>
-        <capability>urn:opendaylight:params:xml:ns:yang:websocketmanager?module=websocketmanager&amp;revision=2015-01-05</capability>
-        <capability>urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&amp;revision=2013-10-28</capability>
-    </required-capabilities>
-    <configuration>
-        <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-            <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-                <module>
-                    <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:devicemanager:impl">prefix:devicemanager-impl</type>
-                    <name>devicemanager-default</name>
-                    <broker>
-                        <type
-                            xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
-                        <name>binding-osgi-broker</name>
-                    </broker>
-                    <notification-service>
-                        <type
-                            xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">
-                            binding:binding-notification-service
-                        </type>
-                        <name>binding-notification-broker</name>
-                    </notification-service>
-                    <data-broker>
-                        <type
-                            xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-async-data-broker
-                        </type>
-                        <name>binding-data-broker</name>
-                    </data-broker>
-                </module>
-            </modules>
-            <services xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-                <service>
-                    <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:devicemanager:api">prefix:devicemanager-api</type>
-                    <instance>
-                        <name>devicemanager-service</name>
-                        <provider>/modules/module[type='devicemanager-impl'][name='devicemanager-default']
-                        </provider>
-                    </instance>
-                </service>
-            </services>
-        </data>
-    </configuration>
-</snapshot>
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/aaiConnector/impl/AaiProviderClient.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/aaiConnector/impl/AaiProviderClient.java
deleted file mode 100644 (file)
index acde506..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-package org.opendaylight.mwtn.aaiConnector.impl;
-
-import java.util.List;
-
-import org.opendaylight.mwtn.base.http.BaseHTTPResponse;
-import org.opendaylight.mwtn.base.internalTypes.InventoryInformation;
-import org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation;
-import org.opendaylight.mwtn.config.impl.AaiConfig;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration.IConfigChangedListener;
-import org.opendaylight.mwtn.devicemanager.impl.DeviceManagerImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class AaiProviderClient implements AutoCloseable {
-
-       private static Logger LOG = LoggerFactory.getLogger(AaiProviderClient.class);
-       private static boolean reloadConfigFlag;
-       private AaiConfig config;
-       private DeviceManagerImpl deviceManager;
-       private HtDevicemanagerConfiguration htconfig;
-       private final IConfigChangedListener configChangedListener = new IConfigChangedListener() {
-
-               @Override
-               public void onConfigChanged() {
-                       reloadConfigFlag=true;
-               }
-       };
-
-
-       public AaiConfig getConfig() {return this.config;}
-
-       private class AaiCreateRequestRunnable implements Runnable {
-
-               private static final int RESPCODE_NOTFOUND = BaseHTTPResponse.CODE404;
-               private static final int RESPCODE_FOUND = BaseHTTPResponse.CODE200;
-               private final AaiWebApiClient mClient;
-               private final String pnfId;
-               private final String type;
-               private final String model;
-               private final String vendor;
-               private final String oamIp;
-               private final List<String> ifaces;
-               private int timeout;
-               public AaiCreateRequestRunnable(String pnfId, String type, String model, String vendor, String oamIp,
-                               List<String> ifaces) {
-                       this.pnfId = pnfId;
-                       this.type = type;
-                       this.model = model;
-                       this.vendor = vendor;
-                       this.oamIp = oamIp;
-                       this.ifaces = ifaces;
-                       this.timeout=AaiProviderClient.this.config.getConnectionTimeout();
-                       this.mClient = new AaiWebApiClient(
-                                       AaiProviderClient.this.config.getBaseUrl(),
-                                       AaiProviderClient.this.config.getHeaders(),
-                                       AaiProviderClient.this.config.getTrustAll(),
-                                       AaiProviderClient.this.config.getPcks12CertificateFilename(),
-                                       AaiProviderClient.this.config.getPcks12CertificatePassphrase()
-                                       );
-               }
-
-               @Override
-               public void run() {
-                       LOG.debug("check if pnfid "+pnfId+" exists");
-                       this.mClient.setTimeout(timeout);
-                       BaseHTTPResponse response=this.mClient.pnfCheckIfExists(pnfId);
-                       if(response.code==RESPCODE_NOTFOUND)
-                       {
-                               LOG.debug("do pnfCreate for "+pnfId);
-                               this.mClient.pnfCreate(pnfId, type, model, vendor, oamIp, ifaces);
-                       }
-                       else if(response.code==RESPCODE_FOUND)
-                       {
-                               LOG.debug("pnfid "+pnfId+" found, nothing to do");
-                       }
-                       else
-                       {
-                               LOG.warn("unhandled response code: "+response.toString());
-                       }
-               }
-       };
-
-       private class AaiDeleteRequestRunnable implements Runnable {
-
-               private final AaiWebApiClient mClient;
-               private final String pnfId;
-               private int timeout;
-
-
-               public AaiDeleteRequestRunnable(String pnfId) {
-                       this.pnfId = pnfId;
-                       this.timeout=AaiProviderClient.this.config.getConnectionTimeout();
-                       this.mClient = new AaiWebApiClient(
-                                       AaiProviderClient.this.config.getBaseUrl(),
-                                       AaiProviderClient.this.config.getHeaders(),
-                                       AaiProviderClient.this.config.getTrustAll(),
-                                       AaiProviderClient.this.config.getPcks12CertificateFilename(),
-                                       AaiProviderClient.this.config.getPcks12CertificatePassphrase()
-                                       );
-               }
-
-               @Override
-               public void run() {
-                       this.mClient.setTimeout(this.timeout);
-                       this.mClient.pnfDelete(pnfId);
-               }
-       };
-
-       public AaiProviderClient(HtDevicemanagerConfiguration cfg,DeviceManagerImpl devMgr) {
-               this.config = cfg.getAai();
-               this.htconfig=cfg;
-               this.htconfig.registerConfigChangedListener(configChangedListener);
-               this.deviceManager = devMgr;
-
-       }
-
-       private void _reload()
-       {
-               if(reloadConfigFlag)
-               {
-                       this.config=AaiConfig.reload();
-                       LOG.info("config reloaded:"+config==null?"null":config.toString());
-               }
-               reloadConfigFlag=false;
-       }
-       public void onDeviceRegistered(String mountPointName) {
-               this._reload();
-               if(this.config.isOff())
-                       return;
-               ONFCoreNetworkElementRepresentation ne =this.deviceManager!=null?this.deviceManager.getNeByMountpoint(mountPointName):null;
-               this.onDeviceRegistered(mountPointName,ne!=null?ne.getInventoryInformation("MWPS"):InventoryInformation.DEFAULT);
-
-       }
-       public void onDeviceRegistered(String mountPointName,InventoryInformation i) {
-               this._reload();
-               if(this.config.isOff())
-                       return;
-               new Thread(new AaiCreateRequestRunnable(mountPointName, i.getType(), i.getModel(), i.getVendor(), i.getDeviceIpv4(), i.getInterfaceUuidList())).start();
-       }
-       public void onDeviceUnregistered(String mountPointName) {
-               this._reload();
-               if(this.config.isOff())
-                       return;
-               if(this.config.doDeleteOnMountPointRemoved())
-                       new Thread(new AaiDeleteRequestRunnable(mountPointName)).start();
-               else
-                       LOG.debug("prevent deleting device "+mountPointName+" by config");
-       }
-
-       @Override
-       public void close() throws Exception {
-               this.htconfig.unregisterConfigChangedListener(configChangedListener);
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/aaiConnector/impl/AaiWebApiClient.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/aaiConnector/impl/AaiWebApiClient.java
deleted file mode 100644 (file)
index 36cdd1b..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-package org.opendaylight.mwtn.aaiConnector.impl;
-
-import java.io.IOException;
-import java.util.List;
-import java.util.Map;
-
-import javax.annotation.Nonnull;
-
-import org.opendaylight.mwtn.base.http.BaseHTTPClient;
-import org.opendaylight.mwtn.base.http.BaseHTTPResponse;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class AaiWebApiClient extends BaseHTTPClient{
-
-       public static class URLParamEncoder {
-
-           public static String encode(String input) {
-               StringBuilder resultStr = new StringBuilder();
-               for (char ch : input.toCharArray()) {
-                   if (isUnsafe(ch)) {
-                       resultStr.append('%');
-                       resultStr.append(toHex(ch / 16));
-                       resultStr.append(toHex(ch % 16));
-                   } else {
-                       resultStr.append(ch);
-                   }
-               }
-               return resultStr.toString();
-           }
-
-           private static char toHex(int ch) {
-               return (char) (ch < 10 ? '0' + ch : 'A' + ch - 10);
-           }
-
-           private static boolean isUnsafe(char ch) {
-               if (ch > 128 || ch < 0)
-                   return true;
-               return " %$&+,/:;=?@<>#%".indexOf(ch) >= 0;
-           }
-
-       }
-       private static final String pnfJSON_INTERFACE_TEMPLATE = "        {\n" +
-                       "            \"interface-name\": \"@interface@\",\n" +
-                       "            \"speed-value\": \"300\",\n" +
-                       "            \"speed-units\": \"MBit/s\",\n" +
-                       "            \"port-description\": \"Air Interface (MWPS)\",\n" +
-                       "            \"equipment-identifier\": \"@pnfId@-@interface@\",\n" +
-                       "            \"interface-role\": \"Wireless\",\n" +
-                       "            \"interface-type\": \"Air Interface (MWPS)\",\n" +
-                       "            \"resource-version\": \"@model@\",\n" +
-                       "            \"relationship-list\": [\n" +
-                       "                {\n" +
-                       "                    \"related-to\": \"A keyword provided by A&AI to indicate type of node.\",\n" +
-                       "                    \"related-link\": \"URL to the object in A&AI.\",\n" +
-                       "                    \"relationship-data\": [\n" +
-                       "                        {\n" +
-                       "                            \"relationship-key\": \"A keyword provided by A&AI to indicate an attribute.\",\n" +
-                       "                            \"relationship-value\": \"Value of the attribute\"\n" +
-                       "                        }\n" +
-                       "                    ],\n" +
-                       "                    \"related-to-property\": [\n" +
-                       "                        {\n" +
-                       "                            \"property-key\": \"Key part of a key/value pair\",\n" +
-                       "                            \"property-value\": \"Value part of a key/value pair\"\n" +
-                       "                        }\n" +
-                       "                    ]\n" +
-                       "                }\n" +
-                       "            ]\n" +
-                       "        }\n";
-
-       private static final String pnfJSON_TEMPLATE = "{\n" +
-                       "    \"pnf-name\": \"@pnfId@\",\n" +
-                       "    \"pnf-id\": \"@pnfId@\",\n" +
-                       "    \"equip-type\": \"@type@\",\n" +
-                       "    \"equip-model\": \"@model@\",\n" +
-                       "    \"equip-vendor\": \"@vendor@\",\n" +
-                       "    \"ipaddress-v4-oam\": \"@oamIp@\",\n" +
-                       "    \"in-maint\": true,\n" +
-                       "    \"p-interfaces\": @interface-list@\n"+
-                       "}\n" +
-                       "";
-
-       private static String getPnfTemplateFilled(String pnfId,String type,String model,String vendor,String oamIp,List<String> ifaces)
-       {
-               return pnfJSON_TEMPLATE.replace("@pnfId@",pnfId).
-                               replace("@type@", type).
-                               replace("@model@", model).
-                               replace("@vendor@",vendor).
-                               replace("@oamIp@", oamIp).
-                               replace("@interface-list@", getPnfTemplateInterfaceList(pnfId,ifaces,model));
-       }
-       private static String getPnfTemplateInterfaceList(String pnfId,List<String> ifaces,String model) {
-               String s="[";
-               if(ifaces!=null)
-               {
-                       if(ifaces.size()>0)
-                       {
-                               s+=pnfJSON_INTERFACE_TEMPLATE.replace("@interface@", ifaces.get(0));
-                       }
-                       for(int i=1;i<ifaces.size();i++)
-                               s+=","+pnfJSON_INTERFACE_TEMPLATE.replace("@interface@", ifaces.get(i));
-               }
-               s+="]";
-
-               return s.replace("@pnfId@",pnfId).replace("@model@", model);
-       }
-       private static Logger LOG = LoggerFactory.getLogger(AaiWebApiClient.class);
-
-       private final Map<String, String> headers;
-
-       public AaiWebApiClient(String baseUrl, Map<String, String> headers, boolean trustAllCerts) {
-               this(baseUrl,headers,trustAllCerts,null,null);
-       }
-
-       public AaiWebApiClient(String baseUrl, Map<String, String> headers, boolean trustAllCerts, String certFilename,
-                       String passphrase) {
-               super(baseUrl, trustAllCerts, certFilename, passphrase, BaseHTTPClient.SSLCERT_PCKS);
-               this.headers = headers;
-       }
-
-
-       public boolean pnfCreate(String pnfId,String type,String model,String vendor,String oamIp,List<String> ifaces)
-       {
-               LOG.debug("registering "+pnfId +"(type="+type+", model="+model+", vendor="+vendor+",ip="+oamIp+")");
-               Map<String,String> headers = this.headers;
-               headers.put("Content-Type","application/json");
-               headers.put("Accept","application/json");
-               BaseHTTPResponse response=null;
-               try {
-                       String uri="network/pnfs/pnf/"+URLParamEncoder.encode( pnfId);
-                       String message=getPnfTemplateFilled(pnfId, type, model, vendor, oamIp, ifaces);
-                       response=this.sendRequest(uri,"PUT",message,headers);
-                       LOG.debug("finished with responsecode "+response.code);
-               } catch (IOException e) {
-                       LOG.warn("problem registering "+pnfId+": "+e.getMessage());
-               }
-               return response!=null?response.code==200:false;
-       }
-
-       public boolean pnfDelete(String pnfId)
-       {
-               LOG.debug("unregistering "+pnfId);
-               Map<String,String> headers = this.headers;
-               headers.put("Content-Type","application/json");
-               headers.put("Accept","application/json");
-               BaseHTTPResponse response=null;
-               try {
-                       String uri="network/pnfs/pnf/"+URLParamEncoder.encode( pnfId );
-                       response=this.sendRequest(uri,
-                                       "DELETE",
-                                       "",headers);
-                       LOG.debug("finished with responsecode "+response.code);
-               } catch (IOException e) {
-                       LOG.warn("problem unregistering "+pnfId+": "+e.getMessage());
-               }
-               return response!=null?response.code==200:false;
-       }
-       public @Nonnull BaseHTTPResponse pnfCheckIfExists(String pnfId) {
-
-               BaseHTTPResponse response=null;
-               LOG.debug("check for "+pnfId);
-               Map<String,String> headers = this.headers;
-               headers.put("Content-Type","application/json");
-               headers.put("Accept","application/json");
-               try {
-                       String uri="network/pnfs/pnf/"+URLParamEncoder.encode( pnfId );
-                       response=this.sendRequest(uri,
-                                       "GET",
-                                       "",headers);
-                       LOG.debug("finished with responsecode "+response.code);
-               } catch (IOException e) {
-                       LOG.warn("problem checking "+pnfId+": "+e.getMessage());
-                       response = BaseHTTPResponse.UNKNOWN;
-               }
-
-               return response;
-       }
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/EsObject.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/EsObject.java
deleted file mode 100644 (file)
index 6c5de23..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*********************************************************************************
- *  Copyright © 2015, highstreet technologies GmbH
- *  All rights reserved!
- *
- *  http://www.highstreet-technologies.com/
- *
- *  The reproduction, transmission or use of this document or its contents is not
- *  permitted without express written authority. Offenders will be liable for
- *  damages. All rights, including rights created by patent grant or registration
- *  of a utility model or design, are reserved. Technical modifications possible.
- *  Technical specifications and features are binding only insofar as they are
- *  specifically and expressly agreed upon in a written contract.
- *
- *  @author: Martin Skorupski [martin@skorupski.de]
- *********************************************************************************/
-package org.opendaylight.mwtn.base.database;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-/**
- * @author Herbert
- *
- */
-public class EsObject implements IsEsObject {
-
-    @JsonIgnore
-    private String esId;
-
-    @Override
-    public String getEsId() {
-        return esId;
-    }
-
-    @Override
-    public void setEsId(String esId) {
-        this.esId = esId;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDataBase.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDataBase.java
deleted file mode 100644 (file)
index 32829fa..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*********************************************************************************
- *  Copyright © 2015, highstreet technologies GmbH
- *  All rights reserved!
- *
- *  http://www.highstreet-technologies.com/
- *
- *  The reproduction, transmission or use of this document or its contents is not
- *  permitted without express written authority. Offenders will be liable for
- *  damages. All rights, including rights created by patent grant or registration
- *  of a utility model or design, are reserved. Technical modifications possible.
- *  Technical specifications and features are binding only insofar as they are
- *  specifically and expressly agreed upon in a written contract.
- *
- *  @author: Martin Skorupski [martin@skorupski.de]
- *********************************************************************************/
-package org.opendaylight.mwtn.base.database;
-
-import org.elasticsearch.client.Client;
-import org.elasticsearch.common.bytes.BytesReference;
-import org.elasticsearch.index.query.QueryBuilder;
-import org.elasticsearch.search.SearchHit;
-
-
-/**
- * Interface, used by access one object
- * @author Herbert
- *
- */
-public interface HtDataBase {
-
-    String getNetworkIndex();
-    void setNetworkIndex(String networkIndex);
-
-    Client getClient();
-    void closeDb();
-
-    public BytesReference doReadJsonData( String dataTypeName, IsEsObject esId );
-    public SearchHit[] doReadAllJsonData( int start, int length, String dataTypeName );
-    public SearchHit[] doReadByQueryJsonData( int start, int length, String dataTypeName, QueryBuilder query);
-
-    public String doWrite( String dataTypeName, IsEsObject esId, byte[] json);
-    public String doWrite( String dataTypeName, IsEsObject esId, String json);
-
-    public boolean doRemove( String dataTypeName, IsEsObject esId );
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDataBaseReaderAndWriter.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDataBaseReaderAndWriter.java
deleted file mode 100644 (file)
index 52f389c..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/*********************************************************************************
- *  Copyright © 2015, highstreet technologies GmbH
- *  All rights reserved!
- *
- *  http://www.highstreet-technologies.com/
- *
- *  The reproduction, transmission or use of this document or its contents is not
- *  permitted without express written authority. Offenders will be liable for
- *  damages. All rights, including rights created by patent grant or registration
- *  of a utility model or design, are reserved. Technical modifications possible.
- *  Technical specifications and features are binding only insofar as they are
- *  specifically and expressly agreed upon in a written contract.
- *
- *  @author: Martin Skorupski [martin@skorupski.de]
- *********************************************************************************/
-package org.opendaylight.mwtn.base.database;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.elasticsearch.index.query.QueryBuilder;
-import org.elasticsearch.search.SearchHit;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Generic class to write lists of model classes to the database.
- *
- */
-public class HtDataBaseReaderAndWriter<T extends IsEsObject> {
-
-    private static final Logger log = LoggerFactory.getLogger(HtDataBaseReaderAndWriter.class);
-
-
-    private final HtDataBase db;
-    private final String dataTypeName;
-    private final HtMapper<T> mapper;
-
-    /**
-     * Class specific access to database
-     * @param db ES database descriptor
-     * @param dataTypeName datatype name
-     * @param clazz class of datatype
-     */
-    public HtDataBaseReaderAndWriter(HtDataBase db, String dataTypeName, Class<? extends T> clazz) {
-
-        this.db = db;
-        this.dataTypeName = dataTypeName;
-        this.mapper = new HtMapper<>( clazz );
-
-    }
-
-    /**
-     * Remove Object from database
-     * @param object Object with content
-     * @return true if remove is done
-     */
-    public boolean doRemove( T object) {
-
-        return db.doRemove(dataTypeName, object );
-
-    }
-
-    /**
-     * Remove all data that match the filter
-     * @param query to specify data to be deleted
-     * @return number of removed objects
-     */
-    public int doRemoveByQuery(QueryBuilder query) {
-
-        int idx = 0;                //Idx for getAll
-        int iterateLength = 100;    //Step width for iterate
-
-        SearchHit hits[];
-        do {
-            hits = db.doReadByQueryJsonData(idx, iterateLength, dataTypeName, query);
-            log.debug("Found: {} elements: {}  Failures: {}",dataTypeName,hits.length, mapper.getMappingFailures());
-
-            T object;
-            idx += hits.length;
-            for (SearchHit hit : hits) {
-
-                object = mapper.getObjectFromJson( hit.getSourceRef() );
-
-                log.debug("Mapp Object: {}\nSource: '{}'\nResult: '{}'\n Failures: {}", hit.getId(), hit.getSourceAsString(), object, mapper.getMappingFailures());
-                if (object != null) {
-                    object.setEsId( hit.getId() );
-                    doRemove(object);
-                } else {
-                    log.warn("Mapp result null Object: {}\n Source: '{}'\n : '", hit.getId(), hit.getSourceAsString());
-                }
-            }
-        } while (hits.length == iterateLength); //Do it until end indicated, because less hits than iterateLength allows.
-
-        return idx;
-    }
-
-
-
-    /**
-     * Write one object into Database
-     * @param object Object with content
-     * @return This object for chained call pattern.
-     */
-    public T doWrite( T object) {
-
-        log.debug("doWrite {} {}",object.getClass().getSimpleName(), object.getEsId());
-
-        String json = mapper.objectToJson(object);
-        if (json != null) {
-            String esId = db.doWrite(dataTypeName, object, json);
-            object.setEsId(esId);
-            log.debug("doWrite done for {} {}",object.getClass().getSimpleName(), object.getEsId());
-            return esId == null ? null : object;
-        } else {
-            log.warn("Can not map object and write to database. {}",object.getClass().getSimpleName());
-            return null;
-        }
-
-    }
-
-    /**
-     * Write a list of Objects to the database.
-     * @param list Object list with content
-     * @return This object for chained call pattern.
-     */
-    public HtDataBaseReaderAndWriter<T> doWrite( Collection<T> list) {
-
-        int writeError = 0;
-        String indexName = db.getNetworkIndex();
-
-        log.debug("Write to ES database {}, {} Class: {}  {} elements",indexName,dataTypeName, mapper.getClazz().getSimpleName(), list.size());
-
-        if (indexName == null) {
-            throw new IllegalArgumentException("Missing Index");
-        }
-
-        if (list != null && !list.isEmpty()) {
-            for( T s : list ) {
-                if ( doWrite(s) == null )  {
-                    if ( ++writeError > 5 ) {
-                        log.warn("Leave because of to >5 write errors");
-                        break;
-                    }
-                }
-            }
-
-        }
-
-        return this;
-    }
-
-    /**
-     * Read one object via the object class specific ID
-     * @param object Object refrenced by idString
-     * @return The Object if found or null
-     */
-    public T doRead( IsEsObject object ) {
-        return mapper.getObjectFromJson( db.doReadJsonData( dataTypeName, object) );
-    }
-
-    /**
-     * Read all existing objects of a type
-     * @return the list of all objects
-     */
-    public List<T> doReadAll() {
-
-        List<T> res = new ArrayList<>();
-        int idx = 0;                //Idx for getAll
-        int iterateLength = 100;    //Step width for iterate
-
-        SearchHit hits[];
-
-
-        do {
-            hits = db.doReadAllJsonData(idx, iterateLength, dataTypeName);
-            log.debug("Read: {} elements: {}  Failures: {}",dataTypeName,hits.length, mapper.getMappingFailures());
-
-            T object;
-            idx += hits.length;
-            for (SearchHit hit : hits) {
-
-                object = mapper.getObjectFromJson( hit.getSourceRef() );
-
-                log.debug("Mapp Object: {}\nSource: '{}'\nResult: '{}'\n Failures: {}", hit.getId(), hit.getSourceAsString(), object, mapper.getMappingFailures());
-                if (object != null) {
-                    object.setEsId( hit.getId() );
-                    res.add( object );
-                } else {
-                    log.warn("Mapp result null Object: {}\n Source: '{}'\n : '", hit.getId(), hit.getSourceAsString());
-                }
-            }
-        } while (hits.length == iterateLength); //Do it until end indicated, because less hits than iterateLength allows.
-
-        return res;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseClientAbstract.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseClientAbstract.java
deleted file mode 100644 (file)
index b1fde01..0000000
+++ /dev/null
@@ -1,698 +0,0 @@
-/*********************************************************************************
- *  Copyright © 2016, highstreet technologies GmbH
- *  All rights reserved!
- *
- *  http://www.highstreet-technologies.com/
- *
- *  The reproduction, transmission or use of this document or its contents is not
- *  permitted without express written authority. Offenders will be liable for
- *  damages. All rights, including rights created by patent grant or registration
- *  of a utility model or design, are reserved. Technical modifications possible.
- *  Technical specifications and features are binding only insofar as they are
- *  specifically and expressly agreed upon in a written contract.
- *
- *  @author: Herbert Eiselt [herbert.eiselt@highstreet-technologies.com]
- *********************************************************************************/
-package org.opendaylight.mwtn.base.database;
-
-import java.io.IOException;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.List;
-import java.util.Set;
-
-import javax.annotation.Nullable;
-
-import org.elasticsearch.ElasticsearchException;
-import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
-import org.elasticsearch.action.admin.cluster.node.info.NodesInfoResponse;
-import org.elasticsearch.action.admin.indices.alias.IndicesAliasesResponse;
-import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
-import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
-import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequestBuilder;
-import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
-import org.elasticsearch.action.admin.indices.mapping.put.PutMappingResponse;
-import org.elasticsearch.action.delete.DeleteResponse;
-import org.elasticsearch.action.get.GetResponse;
-import org.elasticsearch.action.index.IndexRequestBuilder;
-import org.elasticsearch.action.index.IndexResponse;
-import org.elasticsearch.action.search.SearchResponse;
-import org.elasticsearch.client.Client;
-import org.elasticsearch.client.transport.TransportClient;
-import org.elasticsearch.cluster.node.DiscoveryNode;
-import org.elasticsearch.common.bytes.BytesReference;
-import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.common.transport.InetSocketTransportAddress;
-import org.elasticsearch.common.unit.TimeValue;
-import org.elasticsearch.index.query.QueryBuilder;
-import org.elasticsearch.index.query.QueryBuilders;
-import org.elasticsearch.search.SearchHit;
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author Herbert
- *
- */
-public class HtDatabaseClientAbstract implements HtDataBase, AutoCloseable {
-
-    private final Logger log = LoggerFactory.getLogger(HtDatabaseClientAbstract.class);
-
-    private static int DELAYSECONDS = 10;
-    private Client client;
-    private String esIndexAlias;
-
-    /**
-     * Full database initialization.
-     * @param esIndex Database index
-     * @param esNodeserverName Servername or Server-IP that hosts the node.
-     * @param esClusterName Name of the cluster
-     * @param esNodeName  Name of the node within the cluster to connect to.
-     * @throws UnknownHostException Servername not known.
-     */
-    public HtDatabaseClientAbstract(String esIndex, String esNodeserverName, String esClusterName, String esNodeName) throws UnknownHostException {
-
-        this.esIndexAlias = esIndex;
-
-        Settings settings = Settings.settingsBuilder()
-                .put("cluster.name", esClusterName)
-                .put("node.name", esNodeName)
-                .build();
-        this.client = getClient(esNodeserverName, settings);
-
-    }
-
-    /**
-     * Do not use the hostname for getting the client
-     * @param esIndex
-     * @param esClusterName
-     * @param esNodeName
-     * @throws UnknownHostException
-     */
-    public HtDatabaseClientAbstract(String esIndex, String esClusterName, String esNodeName) throws UnknownHostException {
-
-        this.esIndexAlias = esIndex;
-        Settings settings = Settings.settingsBuilder()
-                .put("cluster.name", esClusterName)
-                .put("node.name", esNodeName)
-                .build();
-        this.client = getClient(null, settings);
-    }
-
-
-    /**
-     * Simple database initialization. Query all ES configuration information from cluster node.
-     * @param esIndex Database index
-     * @param esNodeserverHostName Servername or Server-IP that hosts the node.
-     * @throws UnknownHostException Servername not known.
-     */
-
-    public HtDatabaseClientAbstract(String esIndex, String esNodeserverHostName) throws UnknownHostException {
-
-        this.esIndexAlias = esIndex;
-
-        Settings settings = Settings.settingsBuilder()
-                .put("client.transport.ignore_cluster_name",true)
-                .put("client.transport.sniff", true)
-                .build();
-        this.client = getClient(esNodeserverHostName, settings);
-    }
-
-    /**
-     * Simple database initialization. Query all ES configuration information from cluster node.
-     * @param esIndex Database index
-     * @param database databse node descriptor
-     */
-    public HtDatabaseClientAbstract(String esIndex, HtDatabaseNode database)  {
-
-        this.esIndexAlias = esIndex;
-       this.client = database.getClient();
-    }
-
-
-    /*----------------------------------
-     * some constructing functions, used by public constructors
-     */
-    /**
-     *
-     * @param esNodeserverName
-     * @param settings
-     * @return
-     * @throws UnknownHostException
-     */
-    private final TransportClient getClient(@Nullable String esNodeserverName, Settings settings) throws UnknownHostException {
-
-       TransportClient newClient = TransportClient.builder().settings(settings).build();
-
-        if (esNodeserverName != null) {
-               InetAddress nodeIp = InetAddress.getByName(esNodeserverName);
-                       newClient.addTransportAddress(new InetSocketTransportAddress(nodeIp, 9300));
-       }
-
-        setup(newClient);
-        return newClient;
-    }
-
-    private void setup(TransportClient newClient) {
-        NodesInfoResponse nodeInfos = newClient.admin().cluster().prepareNodesInfo().get();
-        String clusterName = nodeInfos.getClusterName().value();
-
-        // ------ Debug/ Info
-        StringBuffer logInfo = new StringBuffer();
-        logInfo.append("Create ES Client an localhost for Cluster '");
-        logInfo.append(clusterName);
-        logInfo.append("' for index '");
-        logInfo.append(esIndexAlias);
-        logInfo.append("' Nodelist: ");
-        for (DiscoveryNode node : newClient.connectedNodes()) {
-            logInfo.append("(");
-            logInfo.append(node.toString());
-            logInfo.append(") ");
-        }
-        log.info(logInfo.toString());
-        // ------ Debug/ Info
-
-        log.info("Starting Database service. Short wait.");
-
-               ClusterHealthResponse nodeStatus = newClient.admin().cluster().prepareHealth()
-                               .setWaitForGreenStatus()
-                               //.setWaitForYellowStatus()
-                       .setTimeout(TimeValue.timeValueSeconds(DELAYSECONDS))
-                       .get();
-               log.debug("Elasticsearch client started with status {}",nodeStatus.toString());
-
-
-        List<DiscoveryNode> nodeList = newClient.connectedNodes();
-
-        if (nodeList.isEmpty()) {
-            log.info("ES Client created for nodes: <empty node list>");
-        } else {
-            int t=0;
-            for (DiscoveryNode dn : nodeList) {
-                log.info("ES Client created for node#{}: {}",t , dn.getName());
-            }
-        }
-
-        Runtime.getRuntime().addShutdownHook(new Thread(){
-            @Override public void run(){
-                log.info("Shutdown node "+HtDatabaseClientAbstract.class.getSimpleName());
-            }
-        });
-
-        log.info("Database service started.");
-
-    }
-
-
-    /*----------------------------------
-     * Getter / Setter
-     */
-
-    @Override
-    public String getNetworkIndex() {
-        return esIndexAlias;
-    }
-
-    @Override
-    public void setNetworkIndex(String es_index) {
-        this.esIndexAlias = es_index;
-    }
-
-    @Override
-    public Client getClient() {
-        return client;
-    }
-
-    /*----------------------------------
-     * Functions
-     */
-
-    /**
-     * Close function
-     */
-    public void close() {
-       client.close();
-    }
-
-    /**
-     * Create an ES index. Delete an existing index.
-     */
-    public void doDeleteIndex() {
-        log.info("Remove index {}", esIndexAlias);
-
-        if (esIndexAlias == null) {
-            throw new IllegalArgumentException("Missing Index");
-        }
-
-        try {
-
-            // Delete index
-            IndicesExistsResponse res = client.admin().indices().prepareExists(esIndexAlias)
-                    .execute()
-                    .actionGet();
-
-            if (res.isExists()) {
-                log.info("Delete Index start: {}",esIndexAlias);
-                DeleteIndexRequestBuilder delIdx = client.admin().indices().prepareDelete(esIndexAlias);
-                delIdx.execute().actionGet();
-                log.info("Delete Index done.");
-            }
-
-        } catch (ElasticsearchException e) {
-            log.warn(e.getDetailedMessage());
-        }
-    }
-
-    /**
-     * Verify if index already created
-     * @return boolean accordingly
-     */
-    public boolean isExistsIndex() {
-
-        if (esIndexAlias == null) {
-            throw new IllegalArgumentException("Missing Index");
-        }
-
-        log.debug("Check status of ES index: {}", esIndexAlias);
-
-        final IndicesExistsResponse indexStatus = client.admin()
-            .indices().
-            prepareExists(esIndexAlias).
-            execute().
-            actionGet();
-
-        return indexStatus.isExists();
-
-    }
-
-
-    /**
-     * Create and write the mapping and setting of the index
-     * @param jsonString with mapping and setting definition Object or null for no configuration
-     */
-    public void doCreateIndexWithMapping(JSONObject jsonIndexMappingSetting) {
-
-        if (esIndexAlias == null) {
-            throw new IllegalArgumentException("Missing Index");
-        }
-
-        try {
-               String esIndexName = esIndexAlias+"_v1";
-            log.debug("Create not existing ES index: {} with alias:{}", esIndexName, esIndexAlias);
-
-            //Create index with mapping
-            CreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate(esIndexName);
-
-            if(jsonIndexMappingSetting!=null) {
-                // Handle optional mappings if requested
-               JSONObject jsonMapping = jsonIndexMappingSetting.optJSONObject("mappings");
-               if (jsonMapping != null) {
-                       log.debug("Set mapping for index {} {}", esIndexAlias, jsonMapping);
-                       Set<?> keys = jsonMapping.keySet();
-                       log.debug("Found length:"+jsonMapping.length()+" keys:"+keys.size());
-                       for (Object key : keys) {
-                               String docType = (String)key;
-                               log.debug("Doctype:{} mapping:{}",docType,jsonMapping.getJSONObject(docType).toString());
-                               createIndexRequestBuilder.addMapping(docType, jsonMapping.getJSONObject(docType).toString());
-                       }
-               } else {
-                       log.debug("No mapping requested for index {}", esIndexAlias);
-               }
-                // Handle optional settings if requested
-               JSONObject jsonSettings = jsonIndexMappingSetting.optJSONObject("settings");
-               if (jsonSettings != null) {
-                       log.debug("Set setting for index {} {}", esIndexAlias, jsonSettings);
-                       createIndexRequestBuilder.setSettings(Settings.settingsBuilder().loadFromSource(jsonSettings.toString()));
-               } else {
-                       log.debug("No settings requested for index {}", esIndexAlias);
-               }
-            }
-
-
-            CreateIndexResponse createResponse = createIndexRequestBuilder.execute().actionGet();
-            log.debug("CreateIndex response {}",createResponse);
-
-            {
-            //Set Alias
-            log.debug("Set alias {} to index {}",esIndexAlias, esIndexName);
-            IndicesAliasesResponse setAliasResponse = client.admin().indices().prepareAliases().addAlias(esIndexName,esIndexAlias)
-                       .execute().actionGet();
-            log.debug("CreateIndex response {}",setAliasResponse);
-            }
-
-        } catch (ElasticsearchException e) {
-               log.warn("ElasticsearchException: {}",e.getDetailedMessage());
-        }
-    }
-
-    /**
-     * Create Index with alias according to definition, but no mapping
-     */
-    public void doCreateIndex() {
-       doCreateIndexWithMapping(null);
-    }
-
-    /**
-     * Write a JSON mapping definition for a document from a file to ES
-     * Hint: A change of the mapping is not possible.
-     * @param documentType Document type in focus
-     * @param jsonString String with mapping definition in JSON Format
-     */
-
-    public void doWriteMappingJson( String jsonString) throws IllegalArgumentException {
-
-        if (esIndexAlias == null) {
-            throw new IllegalArgumentException("Missing Index");
-        }
-        if (jsonString == null) {
-            String s = "Mapping string parameter is null";
-            log.warn(s);
-            throw new IllegalArgumentException(s);
-        }
-
-        try {
-            // MAPPING GOES HERE
-            log.debug("Check status of ES index: {}", esIndexAlias);
-
-            final IndicesExistsResponse indexStatus = client.admin()
-                .indices().
-                prepareExists(esIndexAlias).
-                execute().
-                actionGet();
-
-            if (indexStatus.isExists()) {
-                log.debug("ES index exists: {}", esIndexAlias);
-                // TODO: CHANGE Mapping is not working. This here works only for new datatypes
-
-                PutMappingResponse res= client.admin().indices()
-                .preparePutMapping(esIndexAlias)
-                .setSource(jsonString)
-                .execute()
-                .actionGet();
-                log.debug("Result: {}", res.toString());
-
-            } else {
-                log.debug("Create not existing ES index: {}", esIndexAlias);
-
-                CreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate(esIndexAlias);
-                createIndexRequestBuilder
-                .addMapping(jsonString)
-                .execute()
-                .actionGet();
-            }
-
-        } catch (ElasticsearchException e) {
-            log.warn(e.getDetailedMessage());
-        }
-    }
-
-    /**
-     * Write a Json mapping definition for a document from a file to ES
-     * @param fileName Filename with json definition.
-     */
-    public void doWriteMappingFromFile(String fileName) {
-
-
-        log.info("Write mapping from File: {}", fileName);
-
-        if (esIndexAlias == null) {
-            throw new IllegalArgumentException("Missing Index");
-        }
-
-        if (fileName == null) {
-            log.warn("No mapping for {} specified in parameter file.", esIndexAlias);
-            return;
-        }
-
-        String content = null;
-
-        try {
-            content = new String(Files.readAllBytes(Paths.get(fileName)),"UTF-8");
-        } catch (IOException e1) {
-            log.warn("Can not read file: {}",e1.getMessage());
-        }
-
-        doWriteMappingJson(content);
-
-    }
-
-    /**
-     * Write list with json objects from json files
-     * @param docTypeAndFileName List with 2 String Array.
-     *      String[0] Contains the dataType name
-     *      String[1] Contains the filename
-     */
-    public void doWriteJsonFiles( List<String[]> docTypeAndFileName ) {
-
-        log.debug("Write JSONFiles: {}", docTypeAndFileName.size());
-        if (docTypeAndFileName != null) {
-            int t = 1;
-            for (String[] s : docTypeAndFileName) {
-                if (s.length == 2) {
-                    writeJsonObjectsFromFile( s[0], s[1]);
-                } else {
-                    log.warn("Wrong parameters number. Entry: {}", t);
-                }
-                t++;
-            }
-        }
-    }
-
-    /**
-     * Write one object into Database
-     * @param esId Database index
-     * @param dataTypeName Name of datatype
-     * @param json String in JSON format.
-     * @return esId of the object
-     */
-    @Override
-    public String doWrite( String dataTypeName, IsEsObject esId, String json) {
-        return doWrite(dataTypeName, esId, json.getBytes());
-    }
-
-    /**
-     * Write one object into Database
-     * @param esId Database index
-     * @param dataTypeName Name of datatype
-     * @param json String in JSON format.
-     * @return esId of the object
-     */
-
-    @Override
-    public String doWrite( String dataTypeName, IsEsObject esId, byte[] json) {
-       return doWrite(dataTypeName, esId.getEsId(), json);
-    }
-
-    /**
-     * Write one object into Database
-     * @param dataTypeName
-     * @param id id of the object or null
-     * @param json Object as json
-     * @return esId of the Object
-     */
-    public String dowrite(String dataTypeName, String id, JSONObject json) {
-       return doWrite(dataTypeName, id, json.toString().getBytes());
-    }
-
-    /**
-     * Write one object into Database
-     * @param esId Database index or null
-     * @param dataTypeName Name of datatype
-     * @param json String in JSON format.
-     * @return esId of the object
-     */
-
-    public String doWrite( String dataTypeName, String esId, byte[] json) {
-
-        if (esIndexAlias == null) {
-            throw new IllegalArgumentException("Missing Index");
-        }
-
-        IndexRequestBuilder request = esId == null || esId.isEmpty() ?
-                client.prepareIndex(esIndexAlias, dataTypeName) :
-                    client.prepareIndex(esIndexAlias, dataTypeName, esId);
-
-                IndexResponse response = null;
-                try {
-                    response = request.setSource(json).execute().actionGet();
-                } catch (ElasticsearchException e) {
-                    log.warn("ES Exception {} Json: {}", e.getMessage(), new String(json));
-                }
-
-                if (response == null) {
-                    log.warn("Response null during write: {} {}", esId, new String(json));
-                    return null;
-                } else {
-                    return response.getId();
-                }
-    }
-
-    /**
-     * Write JSON Data. First level contains datatype, next level id
-     * Example
-     *      "datatype" : {
-     *           "id" : {
-     *             }
-     *           }
-     *
-     * @param da
-     */
-       public void doWriteJSONObject(JSONObject json) {
-
-               Set<?> docTypes = json.keySet();
-               log.debug("Found number of keys:"+json.length()+" keys:"+docTypes.size());
-               for (Object docTypeKey : docTypes) {
-                       String docType = (String)docTypeKey;
-                       JSONObject objects = json.optJSONObject(docType);
-                       if (objects == null) {
-                               log.debug("Skip json {} with class {}",docType, json.get(docType).getClass());
-                       } else {
-                               Set<?> ids = objects.keySet();
-                               log.debug("write doctype {} with elements {}",docType,ids.size());
-                               for (Object idKey : ids) {
-                                       String id = (String)idKey;
-
-                                       JSONObject jsonIdObject = objects.optJSONObject(id);
-                                       if (jsonIdObject == null) {
-                                               log.debug("Skip jsonsub {} with class {}",id, objects.get(id).getClass());
-                                       } else {
-                                               if (log.isTraceEnabled()) {
-                                                       log.trace("Jsonsub object of id {} '{}'", id, jsonIdObject);
-                                               }
-                                               this.doWrite(docType, id, jsonIdObject.toString().getBytes());
-                                       }
-                               }
-                       }
-               }
-       }
-
-
-       /**
-     * Remove Object from database
-     */
-    @Override
-    public boolean doRemove( String dataTypeName, IsEsObject esId ) {
-
-        if (esIndexAlias == null) {
-            throw new IllegalArgumentException("Missing Index");
-        }
-
-        DeleteResponse response = client.prepareDelete(esIndexAlias, dataTypeName, esId.getEsId())
-                .execute()
-                .actionGet();
-
-        return response.isFound();
-    }
-
-    /**
-     * Read Json Object from database
-     */
-    @Override
-    public BytesReference doReadJsonData( String dataTypeName, IsEsObject esId ) {
-
-        log.debug("NetworkIndex: {}",esIndexAlias);
-        if (esId.getEsId() == null) {
-            throw new IllegalArgumentException("Read access to object without database Id");
-        }
-
-        GetResponse response = client.prepareGet(esIndexAlias, dataTypeName, esId.getEsId())
-                //.setOperationThreaded(false)
-                .execute()
-                .actionGet();
-
-        BytesReference json = response.getSourceAsBytesRef();
-        return json;
-    }
-
-    @Override
-    public SearchHit[] doReadByQueryJsonData( int start, int length, String dataTypeName, QueryBuilder qb ) {
-
-        log.debug("NetworkIndex: {}",esIndexAlias);
-
-        SearchResponse response1 = client.prepareSearch(esIndexAlias)
-                .setTypes(dataTypeName)
-                .setQuery( qb )
-                .setFrom(start).setSize(length)
-                .execute().actionGet();
-
-        SearchHit hits[] = response1.getHits().hits();
-        return hits;
-    }
-
-
-    @Override
-    public SearchHit[] doReadAllJsonData( int start, int length, String dataTypeName ) {
-
-        log.debug("NetworkIndex: {}",esIndexAlias);
-
-        //Use query
-        QueryBuilder qb = QueryBuilders.matchAllQuery();
-
-        SearchResponse response1 = client.prepareSearch(esIndexAlias)
-                .setTypes(dataTypeName)
-                .setQuery( qb )
-                .setFrom(start).setSize(length)
-                .execute().actionGet();
-
-        SearchHit hits[] = response1.getHits().hits();
-        return hits;
-    }
-
-
-
-    /**
-     * Write Json datetype that is specified by file to ES
-     * @param dataType    ES Datatype name
-     * @param fileName    file name
-     */
-    public void writeJsonObjectsFromFile( String dataType, String fileName ) {
-
-        log.debug("Start: Index: '{}' ' datatype: '{}'  File: '{}'", esIndexAlias, dataType, fileName);
-
-        String content = null;
-
-        try {
-            content = new String( Files.readAllBytes(Paths.get(fileName)), "UTF-8");
-        } catch (IOException e1) {
-            log.warn("Can not read file: {}",e1.getMessage());
-        }
-
-        if (content != null && content.charAt(0) == 0xfeff) {
-            content = content.substring(1);
-            log.debug("Delete first char {} {}", dataType, fileName);
-        }
-
-        if (content != null) {
-            IndexResponse response = null;
-            try {
-                response = client.prepareIndex(esIndexAlias, dataType)
-                        .setSource(content)
-                        .execute()
-                        .actionGet();
-            } catch (ElasticsearchException e) {
-                log.error("ElasticsearchException during write:  for {} from {}", e.getMessage(), dataType, fileName);
-            } catch (Exception e) {
-                log.error("Exception during write:  for {} from {}", e.getMessage(), dataType, fileName);
-            }
-
-            if (response != null) {
-                if (! response.isCreated()) {
-                    log.warn("Jackson Response not created: {} {} {}", response.toString(), dataType, fileName);
-                } else {
-                    log.debug("Created: {}", response.getId());
-                }
-            } else {
-                log.warn("Jackson Response null after write {} {}", dataType, fileName);
-            }
-        }
-
-    }
-
-    @Override
-    public void closeDb() {
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseNode.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseNode.java
deleted file mode 100644 (file)
index 1bffed3..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-package org.opendaylight.mwtn.base.database;
-
-import static org.elasticsearch.node.NodeBuilder.nodeBuilder;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.net.DatagramSocket;
-import java.net.ServerSocket;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.util.List;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipInputStream;
-
-import org.elasticsearch.action.admin.cluster.health.ClusterHealthResponse;
-import org.elasticsearch.client.Client;
-import org.elasticsearch.common.settings.Settings;
-import org.elasticsearch.common.unit.TimeValue;
-import org.elasticsearch.node.Node;
-import org.opendaylight.mwtn.base.internalTypes.Resources;
-import org.opendaylight.mwtn.config.impl.AkkaConfig;
-import org.opendaylight.mwtn.config.impl.AkkaConfig.ClusterNodeInfo;
-import org.opendaylight.mwtn.config.impl.EsConfig;
-import org.opendaylight.mwtn.config.impl.GeoConfig;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class HtDatabaseNode implements AutoCloseable {
-
-
-
-       private static final Logger LOGGER = LoggerFactory.getLogger(HtDatabaseNode.class);
-       private static final String DBCONFIGFILENAME = "etc/elasticsearch.yml";
-       private static int MIN_PORT_NUMBER = 1024;
-       private static int MAX_PORT_NUMBER = 65535;
-       private static int ES_PORT = 9200;
-       private static int DELAYSECONDS = 30;
-
-       private static String pluginFolder="etc/elasticsearch-plugins";
-
-       private static HtDatabaseNode oneNode = null;
-       /**
-        *
-        */
-       private static Integer initializedTarget = 0;
-       private static Integer initializedReached = 0;
-
-       private final Node node;
-
-       private HtDatabaseNode() {
-               LOGGER.debug("Start elasticsearch service");
-               node = nodeBuilder().settings(Settings.builder().put("path.home", "etc").put("path.conf", "etc")).node();
-               LOGGER.info("Starting Database service. Wait {} s", DELAYSECONDS);
-               // Wait for green status but only wait for 2 seconds
-               ClusterHealthResponse nodeStatus = node.client().admin().cluster().prepareHealth().setWaitForYellowStatus()
-                               .setTimeout(TimeValue.timeValueSeconds(DELAYSECONDS)).get();
-
-               LOGGER.debug("Elasticsearch service started with status {}", nodeStatus.toString());
-       }
-
-       /**
-        * Close node
-        */
-       @Override
-       public void close() {
-               node.close();
-               oneNode = null; //Release the one instance that was started !
-       }
-
-       public Boolean getInitialized() {
-               synchronized (initializedReached) {
-                       return initializedTarget != 0 && initializedReached == initializedTarget;
-               }
-       }
-
-       public void setInitializedReached() {
-               synchronized (initializedReached) {
-                       HtDatabaseNode.initializedReached++;
-               }
-       }
-
-       public void setInitializedTarget() {
-               synchronized (initializedTarget) {
-                       HtDatabaseNode.initializedTarget++;
-               }
-       }
-
-       public Client getClient() {
-               return node.client();
-       }
-
-
-       /* ---------------------------------------
-        * Static functions below
-        */
-
-
-       private static void extractZip(String zipFile, String outputFolder) {
-
-               byte[] buffer = new byte[1024];
-
-               try {
-
-                       // create output directory is not exists
-                       File folder = new File(outputFolder);
-                       if (!folder.exists()) {
-                               folder.mkdir();
-                       }
-
-                       // get the zip file content
-                       ZipInputStream zis = new ZipInputStream(new FileInputStream(zipFile));
-                       // get the zipped file list entry
-                       ZipEntry ze = zis.getNextEntry();
-
-                       while (ze != null) {
-
-                               String fileName = ze.getName();
-
-                               File newFile = new File(outputFolder + File.separator + fileName);
-                               System.out.println("file unzip : " + newFile.getAbsoluteFile());
-                               if(ze.isDirectory())
-                               {
-                                       newFile.mkdir();
-                               }
-                               else
-                               {
-
-                                       // create all non exists folders
-                                       // else you will hit FileNotFoundException for compressed folder
-                                       new File(newFile.getParent()).mkdirs();
-
-                                       FileOutputStream fos = new FileOutputStream(newFile);
-
-                                       int len;
-                                       while ((len = zis.read(buffer)) > 0) {
-                                               fos.write(buffer, 0, len);
-                                       }
-
-                                       fos.close();
-                               }
-                               ze = zis.getNextEntry();
-                       }
-
-                       zis.closeEntry();
-                       zis.close();
-               } catch (IOException ex) {
-                       LOGGER.warn("problem extracting " + zipFile + " to " + outputFolder);
-               }
-       }
-
-       // Visibility package for test purpose
-       static void checkorcreateplugins(String pluginFolder) {
-               File f = new File(pluginFolder);
-               String tmpFilename = pluginFolder + "/tmp.zip";
-               if (!f.exists())
-                       f.mkdir();
-
-               f = new File(pluginFolder + "/head");
-               File tmpFile = new File(tmpFilename);
-               if (!f.exists()) {
-                       LOGGER.debug("extracting head plugin");
-                       if (Resources.extractFileTo("/elasticsearch/plugins/head.zip", tmpFile)) {
-                               extractZip(tmpFile.getAbsolutePath(), pluginFolder);
-                       } else
-                               LOGGER.debug("problem extracting plugin res");
-               }
-               f = new File(pluginFolder + "/delete-by-query");
-               if (!f.exists()) {
-                       LOGGER.debug("extracting head delete-by-query plugin");
-                       if (Resources.extractFileTo("/elasticsearch/plugins/delete-by-query.zip", tmpFile)) {
-                               extractZip(tmpFile.getAbsolutePath(), pluginFolder);
-                       } else
-                               LOGGER.debug("problem extracting plugin res");
-               }
-               if(tmpFile.exists())
-                       tmpFile.delete();
-
-       }
-
-       /**
-        * Checks to see if a specific port is available.
-        *
-        * @param port
-        *            the port to check for availability
-        */
-       private static boolean isPortAvailable(int port) {
-               if (port < MIN_PORT_NUMBER || port > MAX_PORT_NUMBER) {
-                       throw new IllegalArgumentException("Invalid start port: " + port);
-               }
-
-               ServerSocket ss = null;
-               DatagramSocket ds = null;
-               try {
-                       ss = new ServerSocket(port);
-                       ss.setReuseAddress(true);
-                       ds = new DatagramSocket(port);
-                       ds.setReuseAddress(true);
-                       return true;
-               } catch (IOException e) {
-               } finally {
-                       if (ds != null) {
-                               ds.close();
-                       }
-
-                       if (ss != null) {
-                               try {
-                                       ss.close();
-                               } catch (IOException e) {
-                                       /* should not be thrown */
-                               }
-                       }
-               }
-
-               return false;
-       }
-
-       private static void checkorcreateConfigFile(EsConfig config, AkkaConfig akkaConfig,GeoConfig geoConfig) {
-               File f = new File(DBCONFIGFILENAME);
-               if (!f.exists()) {
-                       LOGGER.debug("no " + DBCONFIGFILENAME + " found - extracting from resources");
-                       if (Resources.extractFileTo("/elasticsearch/elasticsearch.yml", f)) {
-                               // replace template values
-                               LOGGER.debug("replace template values with config:" + config);
-                               Charset charset = StandardCharsets.UTF_8;
-                               try {
-                                       Path p = f.toPath();
-                                       String hostName = "0.0.0.0"; //Default as initialisation value
-                                       if(akkaConfig!=null && akkaConfig.isCluster())
-                                       {
-                                               LOGGER.debug("cluster configuration found");
-                                               hostName=akkaConfig.getClusterConfig().getHostName(hostName);
-                                               String clusterDBName=akkaConfig.getClusterConfig().getDBClusterName(null);
-                                               String nodeName=String.format("node%d.%s",akkaConfig.getClusterConfig().getRoleMemberIndex(),clusterDBName);
-                                               if(clusterDBName!=null)
-                                               {
-                                                       config.setCluster(clusterDBName);
-                                                       config.setNode(nodeName);
-                                                       LOGGER.info("set db name to "+clusterDBName+" nodename="+nodeName );
-                                               }
-                                               else
-                                                       LOGGER.warn("unable to set correct db clustername");
-                                       }
-                                       String content = new String(Files.readAllBytes(p), charset);
-                                       content = content.replaceAll("\\$clustername", config.getCluster()).replaceAll("\\$nodename",
-                                                       config.getNode()).replaceAll("\\$hostname", hostName);
-
-                                       //add cluster configuration
-                                       if(akkaConfig!=null && akkaConfig.isCluster())
-                                       {
-                                               List<ClusterNodeInfo> seedNodes=akkaConfig.getClusterConfig().getSeedNodes();
-                                               String nodesJSONString="[\""+seedNodes.get(0).getRemoteAddress()+"\"";
-                                               for(int i=1;i<seedNodes.size();i++)
-                                                       nodesJSONString+=",\""+seedNodes.get(i).getRemoteAddress()+"\"";
-                                               nodesJSONString+="]";
-                                               content+=System.lineSeparator()+String.format("discovery.zen.ping.unicast.hosts: %s",nodesJSONString);
-
-                                               if(geoConfig!=null)
-                                               {
-                                                       LOGGER.debug("adding zone configuration");
-                                                       content+=System.lineSeparator()+String.format("cluster.routing.allocation.awareness.force.zone.values: zone1,zone2");
-                                                       content+=System.lineSeparator()+String.format("cluster.routing.allocation.awareness.attributes: zone");
-                                                       if(geoConfig.isPrimary(akkaConfig.getClusterConfig().getRoleMember()))
-                                                       {
-                                                               content+=System.lineSeparator()+String.format("node.zone: zone1");
-                                                               LOGGER.debug("setting zone to zone1");
-                                                       }
-                                                       else
-                                                       {
-                                                               content+=System.lineSeparator()+String.format("node.zone: zone2");
-                                                               LOGGER.debug("setting zone to zone2");
-                                                       }
-                                               }
-                                       }
-                                       Files.write(p, content.getBytes(charset));
-                               } catch (IOException e) {
-                                       LOGGER.warn("problem replacing values in file: " + e.getMessage());
-
-                               }
-                       } else {
-                               LOGGER.warn("problem writing database.yml to etc folder from res");
-                       }
-               }
-       }
-
-       /**
-        * Start as singleton
-        * @return the node
-        */
-       public static HtDatabaseNode start(EsConfig config) throws IllegalStateException {
-               return start(config,null,null);
-       }
-
-       public static HtDatabaseNode start(EsConfig config, AkkaConfig akkaConfig,GeoConfig geoConfig) {
-               if (isPortAvailable(ES_PORT)) {
-                       LOGGER.info("ES Port not in use. Start internal ES.");
-                       if (oneNode == null) {
-                               checkorcreateplugins(pluginFolder);
-                               checkorcreateConfigFile(config,akkaConfig,geoConfig);
-                               oneNode = new HtDatabaseNode();
-                       } else
-                               throw new IllegalStateException("Database is already started, but can only be started once. Stop here.");
-               } else {
-                       LOGGER.info("ES Port in use. External ES used.");
-               }
-
-               return oneNode;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseUpdateFile.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseUpdateFile.java
deleted file mode 100644 (file)
index 045af63..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-package org.opendaylight.mwtn.base.database;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Enumeration;
-import java.util.zip.ZipEntry;
-import java.util.zip.ZipFile;
-
-import org.json.JSONArray;
-import org.json.JSONObject;
-import org.json.JSONTokener;
-
-public class HtDatabaseUpdateFile extends ZipFile {
-
-       public static final String FILENAME_DEFAULT = "elasticsearch_update.zip";
-
-       public class EsUpdateObject {
-               public final String Uri;
-               public final String Method;
-               public final JSONObject Body;
-
-               public EsUpdateObject(JSONObject o) {
-                       this.Uri = o.getString("uri");
-                       this.Method = o.getString("method");
-                       this.Body = o.getJSONObject("body");
-               }
-       }
-
-       public interface FileReadCallback {
-               void read(EsUpdateObject obj,String filename);
-
-               void onerror(String filename,IOException e);
-       }
-
-       private static final Comparator<ZipEntry> byfilenameComparator = new Comparator<ZipEntry>() {
-
-               @Override
-               public int compare(ZipEntry o1, ZipEntry o2) {
-                       return o1.getName().compareTo(o2.getName());
-               }
-       };
-
-       public HtDatabaseUpdateFile(String filename) throws IOException {
-               super(filename);
-       }
-
-       private static String readFile(final InputStream s) throws IOException {
-               // read file
-               BufferedReader in = new BufferedReader(new InputStreamReader(s));
-               StringBuilder sb = new StringBuilder();
-               String inputLine;
-               while ((inputLine = in.readLine()) != null) {
-                       sb.append(inputLine);
-               }
-               in.close();
-               s.close();
-               return sb.toString();
-       }
-
-       public boolean readFiles(FileReadCallback cb) {
-               boolean r=true;
-               Enumeration<? extends ZipEntry> entries = this.entries();
-               ArrayList<? extends ZipEntry> list = Collections.list(entries);
-               Collections.sort(list, byfilenameComparator);
-               for (ZipEntry entry : list) {
-                       if (entry.isDirectory())
-                               continue;
-                       try {
-                               InputStream stream = this.getInputStream(entry);
-                               Object data = new JSONTokener(readFile(stream)).nextValue();
-                               stream.close();
-                               if(data instanceof JSONArray)
-                               {
-                                       JSONArray a=(JSONArray)data;
-                                       for(int i=0;i<a.length();i++)
-                                       {
-                                               cb.read(new EsUpdateObject(a.getJSONObject(i)),entry.getName());
-                                       }
-                               }
-                               else if(data instanceof JSONObject)
-                               {
-                                       cb.read(new EsUpdateObject( (JSONObject)data),entry.getName());
-                               }
-                       } catch (IOException e) {
-                               r=false;
-                               cb.onerror(entry.getName(),e);
-                       }
-               }
-               return r;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseWebAPIClient.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtDatabaseWebAPIClient.java
deleted file mode 100644 (file)
index e4f7028..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.opendaylight.mwtn.base.database;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-
-import org.json.JSONObject;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-public class HtDatabaseWebAPIClient {
-
-       private static Logger LOG = LoggerFactory.getLogger(HtDatabaseWebAPIClient.class);
-       private static final int BUFSIZE = 1024;
-       private static final String CHARSET = "UTF-8";
-       private final String host;
-       private final int port;
-       public HtDatabaseWebAPIClient()
-       {
-               this.host="http://localhost";
-               this.port=9200;
-       }
-
-       public String sendRequest(String uri,String method,JSONObject body) throws IOException
-       {
-               LOG.debug("try to send request with uri="+uri+" as method="+method);
-               if(body!=null)
-                       LOG.trace("body:"+body.toString());
-               String surl=String.format("%s:%d%s",this.host,this.port,uri);
-               URL url = new URL(surl);
-               URLConnection http = url.openConnection();
-               ((HttpURLConnection) http).setRequestMethod(method);
-               http.setDoOutput(true);
-               http.setRequestProperty("Content-Type", "application/json");
-               byte[] buffer = new byte[BUFSIZE];
-               int len = 0, lensum = 0;
-               // send request
-               // Send the message to destination
-               if(!method.equals("GET"))
-               {
-                       try (OutputStream output = http.getOutputStream()) {
-                               output.write(body.toString().getBytes(CHARSET));
-                       }
-               }
-               int responseCode = ((HttpURLConnection) http).getResponseCode();
-               // Receive answer
-               InputStream response;
-               if (responseCode >= 200 && responseCode < 300)
-                       response = http.getInputStream();
-               else
-               {
-                       response = ((HttpURLConnection) http).getErrorStream();
-                       if(response==null)
-                               http.getInputStream();
-               }
-               String sresponse="";
-               if(response!=null)
-               {
-                       while (true) {
-                               len = response.read(buffer, 0, BUFSIZE);
-                               if (len <= 0)
-                                       break;
-                               lensum+=len;
-                               sresponse+=new String(buffer,0,len,CHARSET);
-                       }
-                       response.close();
-               }
-               else
-                       LOG.debug("response is null");
-               LOG.debug("ResponseCode: " + responseCode);
-               LOG.trace("Response: " + sresponse);
-
-               return sresponse;
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtMapper.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/HtMapper.java
deleted file mode 100644 (file)
index b46e833..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-/*********************************************************************************
- *  Copyright © 2015, highstreet technologies GmbH
- *  All rights reserved!
- *
- *  http://www.highstreet-technologies.com/
- *
- *  The reproduction, transmission or use of this document or its contents is not
- *  permitted without express written authority. Offenders will be liable for
- *  damages. All rights, including rights created by patent grant or registration
- *  of a utility model or design, are reserved. Technical modifications possible.
- *  Technical specifications and features are binding only insofar as they are
- *  specifically and expressly agreed upon in a written contract.
- *
- *  @author: Martin Skorupski [martin@skorupski.de]
- *********************************************************************************/
-package org.opendaylight.mwtn.base.database;
-
-import java.io.IOException;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.List;
-
-import org.elasticsearch.common.bytes.BytesReference;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.core.JsonParseException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.JsonNode;
-
-/**
- * @author Herbert
- *
- */
-public class HtMapper<T> {
-
-    private static final Logger log = LoggerFactory.getLogger(HtDatabaseClientAbstract.class);
-
-    private final Class<? extends T> clazz;
-
-    private final JsonMapperBase objectMapperRead;
-    private final JsonMapperBase objectMapperWrite;
-
-    private int mappingFailures;
-
-
-    public HtMapper(Class<? extends T> clazz) {
-
-        this.mappingFailures = 0;
-        this.clazz = clazz;
-
-        this.objectMapperRead = new JsonMapperBase();
-        this.objectMapperWrite = this.objectMapperRead;
-    }
-
-    public Class<? extends T> getClazz() {
-        return clazz;
-    }
-
-    public int getMappingFailures() {
-        return mappingFailures;
-    }
-
-    public String objectToJson( T object ) {
-        return objectMapperWrite.objectToJson(object);
-    }
-
-    public String objectListToJson( List<T> objectList ) {
-        return objectMapperWrite.objectListToJson( objectList );
-    }
-
-    public T readValue( JsonNode node ) {
-
-        try {
-            T object = objectMapperRead.readValue(node.traverse(), clazz);
-            return object;
-        } catch (JsonParseException e) {
-            mappingFailures++;
-            log.warn(e.toString());
-        } catch (JsonMappingException e) {
-            mappingFailures++;
-            log.warn(e.toString());
-        } catch (IOException e) {
-            mappingFailures++;
-            log.warn(e.toString());
-        } catch (Exception e) {
-            mappingFailures++;
-            log.warn(e.toString());
-        }
-        log.warn("Can not parse: {} {} ", clazz, node);
-        return null;
-
-    }
-
-    /**
-     * Do the mapping from Json to class
-     * Block further mapping if there is are to many failures
-     * @param json String with Objects JSON representation
-     * @return The Object
-     */
-    public T getObjectFromJson(byte[] json) {
-
-        if (json != null &&    mappingFailures < 10) {
-            try {
-                T object = objectMapperRead.readValue(json, clazz);
-                return object;
-            } catch (JsonParseException e) {
-                mappingFailures++;
-                log.warn(e.toString());
-            } catch (JsonMappingException e) {
-                mappingFailures++;
-                log.warn(e.toString());
-            } catch (IOException e) {
-                mappingFailures++;
-                log.warn(e.toString());
-            } catch (Exception e) {
-                mappingFailures++;
-                log.warn(e.toString());
-            }
-        }
-        log.warn("Problems parsing : {} {}", clazz, json);
-        return null;
-    }
-
-    /**
-     * Do the mapping from Json to class
-     * Block further mapping if there is are to many failures
-     * @param json Byte array with JSON Object representation
-     * @return The Object
-     */
-    public T getObjectFromJson(BytesReference json) {
-
-        return getObjectFromJson(json.toBytes());
-
-    }
-
-    /**
-     * Read json from File.
-     * @param fileName File with JSON text
-     * @return Object Object
-     */
-    public T readJsonObjectFromFile( String fileName ) {
-        byte[] content = null;
-        log.debug("Filename readJsonObjectFromFile: {}",fileName);
-
-        try {
-            content = Files.readAllBytes(Paths.get(fileName));
-        } catch (IOException e1) {
-            log.warn("IO Problem: {}", e1.getMessage());
-        }
-
-        if (content != null) {
-            return getObjectFromJson(content);
-        } else {
-            return null;
-        }
-    }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/IndexClientBuilder.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/IndexClientBuilder.java
deleted file mode 100644 (file)
index 858b6f8..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-package org.opendaylight.mwtn.base.database;
-
-import java.util.List;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import org.json.JSONObject;
-import org.opendaylight.mwtn.base.internalTypes.Resources;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Setup index in the database
- * @author herbert
- *
- */
-public class IndexClientBuilder implements AutoCloseable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(IndexClientBuilder.class);
-
-    /** Index name to be used */
-    private final String index;
-    /** Location of mapping data **/
-    private String mappingSettingFileName = null;
-    /** Location of configuration data **/
-    private String modelDataDirectory = null;
-
-       private final ScheduledExecutorService scheduler;
-    private HtDatabaseClientAbstract client;
-    private HtDatabaseNode database;
-
-
-    // --- Construct and initialize
-
-    public IndexClientBuilder(String index) {
-       this.index = index;
-       this.database = null;
-       this.scheduler = Executors.newSingleThreadScheduledExecutor();
-    }
-
-    // Additional setter functions
-
-    public IndexClientBuilder setMappingSettingJsonFileName(String jsonFileName) {
-       this.mappingSettingFileName = jsonFileName;
-       return(this);
-    }
-
-    public IndexClientBuilder setModelDataDirectory(String jsonDirectory) {
-       this.modelDataDirectory = jsonDirectory;
-       return(this);
-    }
-
-    /*
-    public IndexClientBuilder setDatabase(HtDatabaseNode database) {
-       this.database = database;
-       return(this);
-    }
-    */
-
-    public HtDatabaseClientAbstract create(String esNodeserverName, String esClusterName,String esNodeName) {
-       LOG.info("Create {} start with name parameters server/cluster/node {} {} {}",
-                       this.getClass().getSimpleName(), esNodeserverName, esClusterName, esNodeName);
-
-       client = null;
-
-       try {
-               // Create control structure
-               client = new HtDatabaseClientAbstract(index, esNodeserverName, esClusterName, esNodeName);
-               setupIndex();
-       } catch (Exception e) {
-               LOG.error("Can not start database client. Exception: {} {}", e.getMessage(), e.toString());
-       }
-
-       LOG.info("Create {} finished. DB Service {} started.", this.getClass().getSimpleName(),  client != null ? "sucessfully" : "not" );
-       return(client);
-
-    }
-
-    public HtDatabaseClientAbstract create(HtDatabaseNode database) {
-               LOG.info("Create {} start with node", this.getClass().getSimpleName() );
-       this.database = database;
-               client = new HtDatabaseClientAbstract(index, database);
-               setupIndex();
-               return client;
-    }
-
-
-    public void stop() {
-          this.scheduler.shutdown();
-    }
-
-    @Override
-    public void close() throws Exception {
-          stop();
-    }
-
-    private void setupIndex() {
-               if (! client.isExistsIndex()) {
-                       LOG.info("Index not existing ... create index");
-
-                       // Initialisation 1
-                       if (mappingSettingFileName != null) {
-                               JSONObject indexconfigdata=Resources.getJSONFile(mappingSettingFileName);
-                       client.doCreateIndexWithMapping(indexconfigdata);
-                       } else
-                               client.doCreateIndex();
-
-                       // Initialisation 2 - start asynchron initialization and let it run
-                       scheduler.schedule(fillDatabase, 0, TimeUnit.SECONDS);
-               }
-    }
-
-    private final Runnable fillDatabase = new Runnable() {
-       @Override
-       public void run() {
-               if (database != null) {
-                       database.setInitializedTarget();
-               }
-               try { //Prevent ending task by exception
-                               if (modelDataDirectory != null) {
-                                       LOG.info("... write initial data for index {}",index);
-                                       List<JSONObject> dataList=Resources.getJSONFiles(modelDataDirectory, false);
-                                       LOG.debug("received number of objects: {} of index {}", dataList.size(), index);
-                                       for (JSONObject da: dataList) {
-                                               client.doWriteJSONObject(da);
-                                       }
-                                       LOG.debug("wrote all objects for index {}", index);
-                               } else {
-                                       LOG.info("No initial data for index {}",index);
-                               }
-                       } catch (Exception e) {
-                               LOG.warn("Problem during initialization of index "+index+" {}", e);
-                       }
-               if (database != null) {
-                       database.setInitializedReached();
-               }
-       }
-    };
-
-    /*---------------------------------------------------------
-     * static files
-     */
-
-    public static IndexClientBuilder getBuilder(String index) {
-       return new IndexClientBuilder(index);
-    }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/IsEsObject.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/IsEsObject.java
deleted file mode 100644 (file)
index a7286d1..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*********************************************************************************
- *  Copyright © 2015, highstreet technologies GmbH
- *  All rights reserved!
- *
- *  http://www.highstreet-technologies.com/
- *
- *  The reproduction, transmission or use of this document or its contents is not
- *  permitted without express written authority. Offenders will be liable for
- *  damages. All rights, including rights created by patent grant or registration
- *  of a utility model or design, are reserved. Technical modifications possible.
- *  Technical specifications and features are binding only insofar as they are
- *  specifically and expressly agreed upon in a written contract.
- *
- *  @author: Martin Skorupski [martin@skorupski.de]
- *********************************************************************************/
-package org.opendaylight.mwtn.base.database;
-
-/**
- * Element is a document in the ES database.
- */
-public interface IsEsObject {
-
-    /**
-     * Set the ES Id
-     * @param id Set the ID, created by ES for this Object
-     */
-    void setEsId( String id );
-
-    /**
-     * Get Id content as string that is used in ES
-     * @return Related ID, that was specified by set command.
-     */
-    String getEsId();
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/JsonMapperBase.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/database/JsonMapperBase.java
deleted file mode 100644 (file)
index be11453..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*********************************************************************************
- *  Copyright © 2015, highstreet technologies GmbH
- *  All rights reserved!
- *
- *  http://www.highstreet-technologies.com/
- *
- *  The reproduction, transmission or use of this document or its contents is not
- *  permitted without express written authority. Offenders will be liable for
- *  damages. All rights, including rights created by patent grant or registration
- *  of a utility model or design, are reserved. Technical modifications possible.
- *  Technical specifications and features are binding only insofar as they are
- *  specifically and expressly agreed upon in a written contract.
- *
- *  @author: Martin Skorupski [martin@skorupski.de]
- *********************************************************************************/
-package org.opendaylight.mwtn.base.database;
-
-import java.io.IOException;
-import java.io.StringWriter;
-import java.util.List;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.annotation.JsonAutoDetect.Visibility;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.core.JsonGenerationException;
-import com.fasterxml.jackson.core.JsonGenerator.Feature;
-import com.fasterxml.jackson.databind.DeserializationFeature;
-import com.fasterxml.jackson.databind.JsonMappingException;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.SerializationFeature;
-
-/**
- * This class is used to define default for JSON Serialization and Deserialization for the project at a single place
- */
-public class JsonMapperBase extends ObjectMapper {
-
-    private static final long serialVersionUID = 1L;
-    private static final Logger LOG = LoggerFactory.getLogger(JsonMapperBase.class);
-
-    public JsonMapperBase() {
-
-        setVisibility(PropertyAccessor.ALL, Visibility.NONE);
-        setVisibility(PropertyAccessor.FIELD, Visibility.ANY);
-
-        // Deserialization
-        configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
-        configure(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_AS_NULL, true);
-
-        // Serialization
-        configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
-        getFactory().configure(Feature.ESCAPE_NON_ASCII, true);
-    }
-
-
-    public String objectToJson( Object object ) {
-        String res = null;
-
-        try {
-
-            StringWriter stringEmp = new StringWriter();
-            writeValue(stringEmp, object);
-            res = stringEmp.toString();
-            stringEmp.close();
-
-        } catch (JsonGenerationException e) {
-            LOG.debug(e.toString());
-        } catch (JsonMappingException e) {
-            LOG.debug(e.toString());
-        } catch (IOException e) {
-            LOG.debug(e.toString());
-        } catch (Exception e) {
-            LOG.debug(e.toString());
-        }
-
-        return res;
-    }
-
-    public String objectListToJson( List<? extends Object> objectList ) {
-        String res = null;
-
-        try {
-
-            StringWriter stringEmp = new StringWriter();
-            writeValue(stringEmp, objectList);
-            res = stringEmp.toString();
-            stringEmp.close();
-
-        } catch (JsonGenerationException e) {
-            LOG.debug(e.toString());
-        } catch (JsonMappingException e) {
-            LOG.debug(e.toString());
-        } catch (IOException e) {
-            LOG.debug(e.toString());
-        } catch (Exception e) {
-            LOG.debug(e.toString());
-        }
-
-        return res;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/http/BaseHTTPClient.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/http/BaseHTTPClient.java
deleted file mode 100644 (file)
index bfd8095..0000000
+++ /dev/null
@@ -1,267 +0,0 @@
-package org.opendaylight.mwtn.base.http;
-
-import java.io.ByteArrayInputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.nio.charset.Charset;
-import java.nio.charset.StandardCharsets;
-import java.nio.file.Files;
-import java.security.KeyFactory;
-import java.security.KeyManagementException;
-import java.security.KeyStore;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.Certificate;
-import java.security.cert.CertificateException;
-import java.security.cert.CertificateFactory;
-import java.security.cert.X509Certificate;
-import java.security.interfaces.RSAPrivateKey;
-import java.security.spec.InvalidKeySpecException;
-import java.security.spec.PKCS8EncodedKeySpec;
-import java.util.Base64;
-import java.util.Map;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.KeyManager;
-import javax.net.ssl.KeyManagerFactory;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-import javax.net.ssl.TrustManager;
-import javax.xml.bind.DatatypeConverter;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class BaseHTTPClient {
-
-       private static Logger LOG = LoggerFactory.getLogger(BaseHTTPClient.class);
-       public static int SSLCERT_NONE=-1;
-       public static int SSLCERT_PCKS=0;
-       public static int SSLCERT_PEM=1;
-       private SSLContext sc=null;
-       private static final int BUFSIZE = 1024;
-       private static final Charset CHARSET = StandardCharsets.UTF_8;
-       private static final String SSLCONTEXT = "TLSv1.2";
-       private static final int DEFAULT_HTTP_TIMEOUT = 30000; //in ms
-       private boolean TRUSTALL;
-       private final String baseUrl;
-       private int timeout = DEFAULT_HTTP_TIMEOUT;
-
-       public BaseHTTPClient(String base) {
-               this(base, false);
-       }
-       public BaseHTTPClient(String base, boolean trustAllCerts)
-       {
-               this(base,trustAllCerts,null,null,SSLCERT_NONE);
-       }
-       public BaseHTTPClient(String base, boolean trustAllCerts,String certFilename,String passphrase,int sslCertType) {
-               this.baseUrl = base;
-               this.TRUSTALL = trustAllCerts;
-               try {
-                       sc = setupSsl(TRUSTALL,certFilename,passphrase,sslCertType);
-               } catch (KeyManagementException | NoSuchAlgorithmException | UnrecoverableKeyException | CertificateException | KeyStoreException | IOException | InvalidKeySpecException e) {
-                       LOG.warn("problem ssl setup: " + e.getMessage());
-               }
-       }
-
-       protected BaseHTTPResponse sendRequest(String uri, String method, String body, Map<String, String> headers)
-                       throws IOException {
-               return this.sendRequest(uri, method, body != null ? body.getBytes(CHARSET) : null, headers);
-       }
-
-       protected BaseHTTPResponse sendRequest(String uri, String method, byte[] body, Map<String, String> headers)
-                       throws IOException {
-               if(uri==null)
-                       uri="";
-               String surl = this.baseUrl;
-               if(!surl.endsWith("/") && uri.length()>0)
-                       surl+="/";
-               if(uri.startsWith("/"))
-                       uri=uri.substring(1);
-               surl+=uri;
-               LOG.debug("try to send request with url=" + this.baseUrl + uri + " as method=" + method);
-               LOG.trace("body:" + (body==null?"null": new String(body, CHARSET)));
-               URL url = new URL(surl);
-               URLConnection http = url.openConnection();
-               http.setConnectTimeout(this.timeout);
-               if (surl.toString().startsWith("https"))
-               {
-                       if (sc != null)
-                       {
-                               ((HttpsURLConnection) http).setSSLSocketFactory(sc.getSocketFactory());
-                               if (TRUSTALL) {
-                                       LOG.debug("trusting all certs");
-                                       HostnameVerifier allHostsValid = new HostnameVerifier() {
-                                               public boolean verify(String hostname, SSLSession session) {
-                                                       return true;
-                                               }
-                                       };
-                                       ((HttpsURLConnection) http).setHostnameVerifier(allHostsValid);
-                               }
-                       } else //Should never happen
-                       {
-                       LOG.warn("No SSL context available");
-                       return new BaseHTTPResponse(-1, "");
-                       }
-               }
-               ((HttpURLConnection) http).setRequestMethod(method);
-               http.setDoOutput(true);
-               if (headers != null && headers.size() > 0) {
-                       for (String key : headers.keySet()) {
-                               http.setRequestProperty(key, headers.get(key));
-                               LOG.trace("set http header "+ key+": "+headers.get(key));
-                       }
-               }
-               byte[] buffer = new byte[BUFSIZE];
-               int len = 0, lensum = 0;
-               // send request
-               // Send the message to destination
-               if (!method.equals("GET") && body != null && body.length > 0) {
-                       try (OutputStream output = http.getOutputStream()) {
-                               output.write(body);
-                       }
-               }
-               int responseCode = ((HttpURLConnection) http).getResponseCode();
-               // Receive answer
-               InputStream response;
-               if (responseCode >= 200 && responseCode < 300)
-                       response = http.getInputStream();
-               else {
-                       response = ((HttpURLConnection) http).getErrorStream();
-                       if (response == null)
-                               response = http.getInputStream();
-               }
-               String sresponse = "";
-               if (response != null) {
-                       while (true) {
-                               len = response.read(buffer, 0, BUFSIZE);
-                               if (len <= 0)
-                                       break;
-                               lensum += len;
-                               sresponse += new String(buffer, 0, len, CHARSET);
-                       }
-                       response.close();
-               } else
-                       LOG.debug("response is null");
-               LOG.debug("ResponseCode: " + responseCode);
-               LOG.trace("Response (len:{}): {}",String.valueOf(lensum),sresponse);
-
-               return new BaseHTTPResponse(responseCode, sresponse);
-       }
-
-       public static SSLContext setupSsl(boolean trustall)
-                       throws NoSuchAlgorithmException, KeyManagementException, CertificateException, FileNotFoundException,
-                       IOException, UnrecoverableKeyException, KeyStoreException, InvalidKeySpecException {
-
-               return setupSsl(trustall, null, null, SSLCERT_NONE);
-       }
-
-       /**
-        *
-        * @param keyFilename
-        * @param certFilename
-        * @throws NoSuchAlgorithmException
-        * @throws KeyManagementException
-        * @throws IOException
-        * @throws FileNotFoundException
-        * @throws CertificateException
-        * @throws KeyStoreException
-        * @throws UnrecoverableKeyException
-        * @throws InvalidKeySpecException
-        */
-       public static SSLContext setupSsl(boolean trustall, String certFilename, String passPhrase,int certType) throws NoSuchAlgorithmException, KeyManagementException, CertificateException, FileNotFoundException, IOException, UnrecoverableKeyException, KeyStoreException, InvalidKeySpecException {
-
-               SSLContext sc = SSLContext.getInstance(SSLCONTEXT);
-               TrustManager[] trustCerts = null;
-               if (trustall) {
-                       trustCerts = new TrustManager[] { new javax.net.ssl.X509TrustManager() {
-                               public java.security.cert.X509Certificate[] getAcceptedIssuers() {
-                                       return null;
-                               }
-
-                               public void checkClientTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-                               }
-
-                               public void checkServerTrusted(java.security.cert.X509Certificate[] certs, String authType) {
-                               }
-                       } };
-
-               }
-               KeyManager[] kms=null;
-               if(certFilename!=null && passPhrase!=null && !certFilename.isEmpty() && !passPhrase.isEmpty())
-               {
-                       if(certType==SSLCERT_PCKS)
-                       {
-                               LOG.debug("try to load pcks file "+certFilename+ " with passphrase="+passPhrase);
-                               KeyStore keyStore = KeyStore.getInstance("PKCS12");
-                               keyStore.load(new FileInputStream(certFilename), passPhrase.toCharArray());
-                               KeyManagerFactory kmf = KeyManagerFactory.getInstance(KeyManagerFactory.getDefaultAlgorithm());
-                       kmf.init(keyStore, passPhrase.toCharArray());
-                       kms = kmf.getKeyManagers();
-                       LOG.debug("successful");
-
-                       }
-                       else if(certType==SSLCERT_PEM)
-                       {
-                               LOG.debug("try to load pem files cert="+certFilename+ " key="+passPhrase);
-                               File fCert = new File(certFilename);
-                               File fKey = new File(passPhrase);
-                               KeyStore keyStore = KeyStore.getInstance("JKS");
-                               keyStore.load(null);
-                               byte[] certBytes = parseDERFromPEM(Files.readAllBytes(fCert.toPath()), "-----BEGIN CERTIFICATE-----",
-                                               "-----END CERTIFICATE-----");
-                               byte[] keyBytes = parseDERFromPEM(Files.readAllBytes(fKey.toPath()), "-----BEGIN PRIVATE KEY-----",
-                                               "-----END PRIVATE KEY-----");
-
-                               X509Certificate cert = generateCertificateFromDER(certBytes);
-                               RSAPrivateKey key = generatePrivateKeyFromDER(keyBytes);
-                               keyStore.setCertificateEntry("cert-alias", cert);
-                           keyStore.setKeyEntry("key-alias", key, "changeit".toCharArray(), new Certificate[] {cert});
-
-                           KeyManagerFactory kmf = KeyManagerFactory.getInstance("SunX509");
-                           kmf.init(keyStore, "changeit".toCharArray());
-                           kms = kmf.getKeyManagers();
-                           LOG.debug("successful");
-                       }
-               }
-               // Init the SSLContext with a TrustManager[] and SecureRandom()
-               sc.init(kms, trustCerts, new java.security.SecureRandom());
-               return sc;
-       }
-       protected static byte[] parseDERFromPEM(byte[] pem, String beginDelimiter, String endDelimiter) {
-           String data = new String(pem);
-           String[] tokens = data.split(beginDelimiter);
-           tokens = tokens[1].split(endDelimiter);
-           return DatatypeConverter.parseBase64Binary(tokens[0]);
-       }
-
-       protected static RSAPrivateKey generatePrivateKeyFromDER(byte[] keyBytes) throws InvalidKeySpecException, NoSuchAlgorithmException {
-           PKCS8EncodedKeySpec spec = new PKCS8EncodedKeySpec(keyBytes);
-
-           KeyFactory factory = KeyFactory.getInstance("RSA");
-
-           return (RSAPrivateKey)factory.generatePrivate(spec);
-       }
-
-       protected static X509Certificate generateCertificateFromDER(byte[] certBytes) throws CertificateException {
-           CertificateFactory factory = CertificateFactory.getInstance("X.509");
-
-           return (X509Certificate)factory.generateCertificate(new ByteArrayInputStream(certBytes));
-       }
-       public static String getAuthorizationHeaderValue(String username, String password) {
-               return "Basic " + new String(Base64.getEncoder().encode((username+":"+password).getBytes()));
-       }
-       public void setTimeout(int timeout) {
-               this.timeout =timeout;
-       }
-
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/http/BaseHTTPResponse.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/http/BaseHTTPResponse.java
deleted file mode 100644 (file)
index 88dd73e..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-package org.opendaylight.mwtn.base.http;
-
-public class BaseHTTPResponse {
-
-       public static final int CODE404 = 404;
-       public static final int CODE200 = 200;
-       public static final BaseHTTPResponse UNKNOWN = new BaseHTTPResponse(-1, "");
-       public final int code;
-       public final String body;
-
-       public BaseHTTPResponse(int code,String body)
-       {
-               this.code=code;
-               this.body=body;
-       }
-
-       @Override
-       public String toString() {
-               return "BaseHTTPResponse [code=" + code + ", body=" + body + "]";
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/Environment.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/Environment.java
deleted file mode 100644 (file)
index 7b54a5c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-package org.opendaylight.mwtn.base.internalTypes;
-
-import java.net.Inet4Address;
-import java.net.UnknownHostException;
-import java.util.Map;
-
-public class Environment {
-
-       public static String getVar(String v)
-       {
-               if(v.equals("$HOSTNAME"))
-               {
-                       String s=null;
-                       try {
-                               s = Inet4Address.getLocalHost().getHostName();
-                       } catch (UnknownHostException e) {
-
-                       }
-                       if(s!=null && s.length()>0)
-                               return s;
-               }
-               Map<String, String> env = System.getenv();
-        for (String envName : env.keySet()) {
-           if(envName!=null && envName.equals(v))
-              return env.get(envName);
-        }
-        return null;
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/FileWatchdog.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/FileWatchdog.java
deleted file mode 100644 (file)
index e3b0ef5..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.opendaylight.mwtn.base.internalTypes;
-
-import java.io.File;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Check every now and then that a certain file has not changed. If it has, then
- * call the {@link #doOnChange} method.
- *
- * @author JunHo Yoon
- * @since 3.1.1
- */
-public abstract class FileWatchdog extends Thread {
-       private static final Logger LOGGER = LoggerFactory.getLogger(FileWatchdog.class);
-       /**
-        * The default delay between every file modification check, set to 60
-        * seconds.
-        */
-       public static final long DEFAULT_DELAY = 60000;
-       /**
-        * The name of the file to observe for changes.
-        */
-       private String filename;
-
-       /**
-        * The delay to observe between every check. By default set
-        * {@link #DEFAULT_DELAY}.
-        */
-       private long delay = DEFAULT_DELAY;
-
-       private File file;
-       private long lastModified = 0;
-       private boolean warnedAlready = false;
-       private boolean interrupted = false;
-
-       protected  FileWatchdog(String filename) {
-               this.filename = filename;
-               file = new File(filename);
-               setDaemon(true);
-               checkAndConfigure();
-       }
-
-       /**
-        * Set the delay to observe between each check of the file changes.
-        *
-        * @param delay
-        *            the frequency of file watch.
-        */
-       public  void setDelay(long delay) {
-               this.delay = delay;
-       }
-
-       /**
-        * abstract method to be run when the file is changed.
-        */
-       protected abstract void doOnChange();
-
-       protected  void checkAndConfigure() {
-               boolean fileExists;
-               try {
-                       fileExists = file.exists();
-               } catch (SecurityException e) {
-                       LOGGER.warn("Was not allowed to read check file existence, file:[" + filename + "].");
-                       interrupted = true; // there is no point in continuing
-                       return;
-               }
-
-               if (fileExists) {
-                       long l = file.lastModified(); // this can also throw a
-                       if (lastModified ==0) {
-                               lastModified = l; // is very unlikely.
-                       }
-                       if (l > lastModified) { // however, if we reached this point this
-                               lastModified = l; // is very unlikely.
-                               doOnChange();
-                               warnedAlready = false;
-                       }
-               } else {
-                       if (!warnedAlready) {
-                               LOGGER.debug("[" + filename + "] does not exist.");
-                               warnedAlready = true;
-                       }
-               }
-       }
-
-       /*
-        * (non-Javadoc)
-        *
-        * @see java.lang.Thread#run()
-        */
-       @Override
-       public  void run() {
-               while (!interrupted && !isInterrupted()) {
-                       try {
-                               Thread.sleep(delay);
-                       } catch (InterruptedException e) {
-
-                       }
-                       checkAndConfigure();
-               }
-       }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/IniConfigurationFile.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/IniConfigurationFile.java
deleted file mode 100644 (file)
index 95d6a13..0000000
+++ /dev/null
@@ -1,356 +0,0 @@
-package org.opendaylight.mwtn.base.internalTypes;
-
-import java.io.BufferedReader;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileReader;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map.Entry;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class IniConfigurationFile {
-
-       private static final Logger LOG = LoggerFactory.getLogger(IniConfigurationFile.class);
-
-       public static class ConfigurationException extends Exception {
-               /**
-                *
-                */
-               private static final long serialVersionUID = 733061908616404383L;
-
-               public ConfigurationException(String m) {
-                       super(m);
-               }
-       }
-
-       public static class ConversionException extends Exception {
-               /**
-                *
-                */
-               private static final long serialVersionUID = 5179891576029923079L;
-
-               public ConversionException(String m) {
-                       super(m);
-               }
-       }
-
-       public static final String SECTIONNAME_ROOT = "";
-       public static final String DELIMITER = "=";
-
-       private static class SectionValue {
-               public String Value;
-               public final List<String> Comments;
-               public boolean IsUncommented;
-
-               public SectionValue(String value) {
-                       this(value, new ArrayList<String>(), false);
-               }
-
-               public SectionValue(String value, List<String> commentsForValue, boolean isuncommented) {
-                       this.Comments = commentsForValue;
-                       this.Value = value;
-                       this.IsUncommented = isuncommented;
-               }
-       }
-
-       public static class Section {
-               public final String Name;
-               public final List<String> rawLines;
-               public final LinkedHashMap<String, SectionValue> values;
-
-               public Section(String name) {
-                       LOG.debug("new section created:" + name);
-                       this.Name = name;
-                       this.rawLines = new ArrayList<String>();
-                       this.values = new LinkedHashMap<String, SectionValue>();
-               }
-
-               public void addLine(String line) {
-                       LOG.trace("adding raw line:" + line);
-                       this.rawLines.add(line);
-               }
-
-               public String getProperty(String key) {
-                       return this.getProperty(key, null);
-               }
-
-               public String getProperty(String key, String defValue) {
-                       if (values.containsKey(key))
-                               return values.get(key).Value;
-                       return defValue;
-               }
-
-               public void setProperty(String key, String value) {
-                       boolean isuncommented = this.isCommentLine(key);
-                       if(isuncommented)
-                               key=key.substring(1);
-                       if (this.values.containsKey(key)) {
-                               this.values.get(key).Value = value;
-                               this.values.get(key).IsUncommented = isuncommented;
-                       } else {
-                               SectionValue sv = new SectionValue(value);
-                               sv.IsUncommented = isuncommented;
-                               this.values.put(key, sv);
-                       }
-               }
-
-               public void parseLines() {
-                       this.values.clear();
-                       List<String> commentsForValue = new ArrayList<String>();
-                       boolean uncommented = false;
-                       for (String line : rawLines) {
-
-                               if (this.isCommentLine(line)) {
-                                       if (!line.contains(DELIMITER)) {
-                                               commentsForValue.add(line);
-                                               continue;
-                                       } else {
-                                               uncommented = true;
-                                               line = line.substring(1);
-                                       }
-                               }
-                               if (!line.contains(DELIMITER))
-                                       continue;
-                               String hlp[] = line.split(DELIMITER);
-                               if(hlp.length>1)
-                               {
-                                       String key=hlp[0];
-                                       String value=line.length()>(key+DELIMITER).length()?line.substring((key+DELIMITER).length()):"";
-                                       if (this.values.containsKey(key))
-                                               this.values.get(key).Value = value;
-                                       else {
-                                               this.values.put(key, new SectionValue(value, commentsForValue, uncommented));
-                                               commentsForValue = new ArrayList<String>();
-                                       }
-                               }
-                               else
-                               {
-                                       LOG.warn("ignoring unknown formatted line:"+line);
-                               }
-                               uncommented = false;
-                       }
-               }
-
-               private boolean isCommentLine(String line) {
-                       for (String c : commentChars) {
-                               if (line.startsWith(c))
-                                       return true;
-                       }
-                       return false;
-               }
-
-               public String[] toLines() {
-                       List<String> lines = new ArrayList<String>();
-                       if (!this.Name.isEmpty())
-                               lines.add("[" + this.Name + "]");
-                       for (Entry<String, SectionValue> entry : this.values.entrySet()) {
-                               if (entry.getValue().Comments.size() > 0) {
-                                       for (String comment : entry.getValue().Comments)
-                                               lines.add(comment);
-                               }
-                               lines.add((entry.getValue().IsUncommented ? commentChars[0] : "") + entry.getKey() + DELIMITER
-                                               + entry.getValue().Value);
-                       }
-                       String[] alines = new String[lines.size()];
-                       return lines.toArray(alines);
-               }
-
-               public String getString(String key, String def) {
-                       return this.getProperty(key, def);
-               }
-
-               public boolean getBoolean(String key, boolean def) throws ConversionException {
-                       String v = this.getProperty(key);
-                       if (v == null || v.isEmpty())
-                               return def;
-                       if (v.equals("true"))
-                               return true;
-                       if (v.equals("false"))
-                               return false;
-                       throw new ConversionException("invalid value for key " + key);
-               }
-
-               public int getInt(String key, int def) throws ConversionException {
-                       String v = this.getProperty(key);
-                       if (v == null || v.isEmpty())
-                               return def;
-                       try {
-                               return Integer.parseInt(v);
-                       } catch (NumberFormatException e) {
-                               throw new ConversionException(e.getMessage());
-                       }
-               }
-
-               public boolean hasValues() {
-                       return this.values.size()>0;
-               }
-
-               public boolean hasKey(String key) {
-                       return this.values.containsKey(key);
-               }
-
-       }
-
-       private final File mFile;
-       private final List<Section> sections;
-       private static final String commentChars[] = { "#", ";" };
-
-       public IniConfigurationFile(File f) {
-               this.mFile = f;
-               this.sections = new ArrayList<Section>();
-               this.sections.add(new Section(SECTIONNAME_ROOT));
-
-       }
-
-       public void load() throws ConfigurationException {
-               String curSectionName = SECTIONNAME_ROOT;
-               LOG.debug("loading file");
-               BufferedReader br = null;
-               try {
-                       br = new BufferedReader(new FileReader(this.mFile));
-                       for (String line; (line = br.readLine()) != null;) {
-                               line = line.trim();
-                               if (line.isEmpty())
-                                       continue;
-                               if (line.startsWith("[") && line.endsWith("]")) {
-                                       curSectionName = line.substring(1, line.length() - 1);
-                                       this.addSection(curSectionName);
-                               } else
-                                       this.getSection(curSectionName).addLine(line);
-                       }
-
-               } catch (Exception e) {
-                       throw new ConfigurationException(e.getMessage());
-               } finally {
-                       try {
-                               if (br != null)
-                                       br.close();
-                       } catch (IOException e) {
-                       }
-               }
-               LOG.debug("finished loading file");
-               LOG.debug("start parsing sections");
-               for (Section section : this.sections)
-                       section.parseLines();
-               LOG.debug("finished parsing " + this.sections.size() + " sections");
-       }
-
-       private Section getSection(String name) {
-               for (Section s : this.sections) {
-                       if (s.Name.equals(name))
-                               return s;
-               }
-               return this.addSection(name);
-
-       }
-
-       private Section addSection(String name) {
-
-               Section s = new Section(name);
-               this.sections.add(s);
-               return s;
-       }
-
-       public void reLoad() throws ConfigurationException {
-               this.sections.clear();
-               this.sections.add(new Section(SECTIONNAME_ROOT));
-               this.load();
-       }
-
-       public String getProperty(String key, String defValue) {
-               Section s;
-               if (key.contains(".")) {
-                       s = this.getSection(key.substring(0, key.indexOf(".")));
-                       key = key.substring(key.indexOf(".") + 1);
-               } else
-                       s = this.getSection(SECTIONNAME_ROOT);
-
-               String v = s.getProperty(key);
-               if (v == null || v.isEmpty())
-                       return defValue;
-               return v;
-       }
-
-       public void setProperty(String key, String value) {
-               Section s;
-               if (key.contains(".")) {
-                       s = this.getSection(key.substring(0, key.indexOf(".")));
-                       key = key.substring(key.indexOf(".") + 1);
-               } else
-                       s = this.getSection(SECTIONNAME_ROOT);
-               s.setProperty(key, value);
-       }
-
-       public int getProperty(String key, int defValue) throws ConversionException {
-               Section s;
-               if (key.contains(".")) {
-                       s = this.getSection(key.substring(0, key.indexOf(".")));
-                       key = key.substring(key.indexOf(".") + 1);
-               } else
-                       s = this.getSection(SECTIONNAME_ROOT);
-
-               return s.getInt(key, defValue);
-       }
-
-       public void setProperty(String key, int value) {
-               Section s;
-               if (key.contains(".")) {
-                       s = this.getSection(key.substring(0, key.indexOf(".")));
-                       key = key.substring(key.indexOf(".") + 1);
-               } else
-                       s = this.getSection(SECTIONNAME_ROOT);
-               s.setProperty(key, String.format("%d", value));
-       }
-
-       public boolean getProperty(String key, boolean defValue) throws ConversionException {
-               Section s;
-               if (key.contains(".")) {
-                       s = this.getSection(key.substring(0, key.indexOf(".")));
-                       key = key.substring(key.indexOf(".") + 1);
-               } else
-                       s = this.getSection(SECTIONNAME_ROOT);
-
-               return s.getBoolean(key, defValue);
-       }
-
-       public void setProperty(String key, boolean value) {
-               Section s;
-               if (key.contains(".")) {
-                       s = this.getSection(key.substring(0, key.indexOf(".")));
-                       key = key.substring(key.indexOf(".") + 1);
-               } else
-                       s = this.getSection(SECTIONNAME_ROOT);
-               s.setProperty(key, value ? "true" : "false");
-       }
-
-       public void setProperty(String key, Object value) {
-               this.setProperty(key, value==null?"null":value.toString());
-       }
-
-       public void save() {
-               final String LR = "\n";
-               BufferedWriter bw;
-               try {
-                       bw = new BufferedWriter(new FileWriter(this.mFile, false));
-                       for (Section section : this.sections) {
-                               if(section.hasValues())
-                                       bw.write(String.join(LR, section.toLines()) + LR + LR);
-                       }
-                       bw.close();
-               } catch (Exception e) {
-
-               }
-
-       }
-
-       public Section subset(String section) {
-               return this.getSection(section);
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/InternalDateAndTime.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/InternalDateAndTime.java
deleted file mode 100644 (file)
index bba9a3a..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.base.internalTypes;
-
-import org.opendaylight.mwtn.base.netconf.NetconfTimeStamp;
-
-/**
- * Converts time stamps into internal format according to ONF1.2 and ISO 8601.
- * @author herbert
- *
- */
-public class InternalDateAndTime {
-
-    public static InternalDateAndTime TESTPATTERN = new InternalDateAndTime("2017-01-01T00:00:00.0Z");
-
-    String internalDateAndTime;
-
-    /**
-     * Static builder ONF1.2
-     * @param time in ONF1.2 yang format
-     * @return  InternalDateAndTime
-     */
-    public static InternalDateAndTime valueOf(org.opendaylight.yang.gen.v1.uri.onf.coremodel.corefoundationmodule.typedefinitions.rev160701.DateAndTime time) {
-        return new InternalDateAndTime(time);
-    }
-
-    /**
-     * Static builder ONF1.0
-     * @param time in ONF1.0 yang format
-     * @return  InternalDateAndTime
-     */
-
-    public static InternalDateAndTime valueOf(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime time) {
-        return new InternalDateAndTime(time);
-    }
-
-    /**
-     * @return     Getter with String representation
-     */
-    public String getValue() {
-        return internalDateAndTime;
-    }
-
-    /*----------------------------------------------------------------
-     * Private constructors and functions
-     */
-
-    /**
-     * Convert ONF 1.0 DateAndTime to String
-     * @param time as input
-     */
-    private InternalDateAndTime(org.opendaylight.yang.gen.v1.uri.onf.coremodel.corefoundationmodule.typedefinitions.rev160701.DateAndTime time) {
-        internalDateAndTime = NetconfTimeStamp.getTimeStampFromNetconf(time.getValue());
-    }
-
-
-    /**
-     * Convert ONF 1.2 DateAndTime to String
-     * @param time as input
-     */
-    private InternalDateAndTime(org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime time) {
-        internalDateAndTime = NetconfTimeStamp.getTimeStampFromNetconf(time.getValue());
-    }
-
-    /**
-     * Setup static TEST
-     * @param internalDateAndTime
-     */
-    private InternalDateAndTime(String internalDateAndTime) {
-        this.internalDateAndTime = internalDateAndTime;
-    }
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/InternalSeverity.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/InternalSeverity.java
deleted file mode 100644 (file)
index 2ca8149..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- * @author herbert
- *
- */
-package org.opendaylight.mwtn.base.internalTypes;
-
-public enum InternalSeverity {
-
-        NonAlarmed,
-        Warning,
-        Minor,
-        Major,
-        Critical;
-
-    public boolean isNoAlarmIndication() {
-        return this == NonAlarmed;
-    }
-
-    public String getValueAsString() {
-        return this.name();
-    }
-
-    @Override
-    public String toString() {
-        return this.name();
-    }
-
-    public String toNetconfString()
-    {
-       switch(this)
-       {
-       case NonAlarmed:
-               return "non-alarmed";
-       case Warning:
-               return "warning";
-       case Minor:
-               return "minor";
-       case Major:
-               return "major";
-       case Critical:
-               return "critical";
-       }
-       return "not-specified";
-    }
-
-    public static InternalSeverity valueOf(org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.SeverityType severity) {
-        switch( severity ) {
-            case NonAlarmed:
-                return InternalSeverity.NonAlarmed;
-            case Warning:
-                return InternalSeverity.Warning;
-            case Minor:
-                return InternalSeverity.Minor;
-            case Major:
-                return InternalSeverity.Major;
-            case Critical:
-                return InternalSeverity.Critical;
-        }
-        return null;
-    }
-
-    /**
-     * convert ONF 1.2 Severity
-     * @param severity as input
-     * @return String with related output
-     */
-    public static InternalSeverity valueOf(org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.SeverityType severity ) {
-        switch( severity ) {
-            case NonAlarmed:
-                return InternalSeverity.NonAlarmed;
-            case Warning:
-                return InternalSeverity.Warning;
-            case Minor:
-                return InternalSeverity.Minor;
-            case Major:
-                return InternalSeverity.Major;
-            case Critical:
-                return InternalSeverity.Critical;
-        }
-        return null;
-    }
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/InventoryInformation.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/InventoryInformation.java
deleted file mode 100644 (file)
index b4f1454..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.opendaylight.mwtn.base.internalTypes;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.annotation.Nonnull;
-
-public class InventoryInformation {
-
-       public static final String UNKNOWN = "unknown";
-       public static final InventoryInformation DEFAULT = new InventoryInformation(InventoryInformation.UNKNOWN, InventoryInformation.UNKNOWN, InventoryInformation.UNKNOWN, InventoryInformation.UNKNOWN, InventoryInformation.UNKNOWN, new ArrayList<String>());
-       private final String type;
-       private final String model;
-       private final String vendor;
-       private final String deviceIpv4;
-       private final String deviceIpv6;
-       private final List<String> interfaceUuidList;
-
-
-       public String getType() {return this.type;}
-       public String getModel() {return this.model;}
-       public String getVendor() {return this.vendor;}
-       public String getDeviceIpv4() {return this.deviceIpv4;}
-       public String getDeviceIpv6() {return this.deviceIpv6;}
-       public List<String> getInterfaceUuidList(){return this.interfaceUuidList;}
-
-       public InventoryInformation(String type,String model,String vendor,String ipv4,String ipv6,List<String> ifInfos )
-       {
-               this.type=type;
-               this.model=model;
-               this.vendor=vendor;
-               this.deviceIpv4=ipv4;
-               this.deviceIpv6=ipv6;
-               this.interfaceUuidList=ifInfos;
-
-       }
-
-       public @Nonnull static InventoryInformation fromNeXML(String xmlRaw,String layerProtocolFilter)
-       {
-               List<String> uuids = new ArrayList<String>();
-       String type=InventoryInformation.UNKNOWN;
-               String model=InventoryInformation.UNKNOWN;
-               String vendor=InventoryInformation.UNKNOWN;
-               String ipv4=InventoryInformation.UNKNOWN;
-               String ipv6=InventoryInformation.UNKNOWN;
-
-               //TODO: parse xml document
-
-               return new InventoryInformation(type, model, vendor, ipv4, ipv6, uuids);
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/Resources.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/Resources.java
deleted file mode 100644 (file)
index 89cf29b..0000000
+++ /dev/null
@@ -1,300 +0,0 @@
-package org.opendaylight.mwtn.base.internalTypes;
-
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileFilter;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.net.MalformedURLException;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.FrameworkUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class Resources {
-
-       private static final Logger LOG = LoggerFactory.getLogger(Resources.class);
-
-
-       private static URL getFileURL(String resFile)
-       {
-               Bundle b = FrameworkUtil.getBundle(Resources.class);
-               URL u=null;
-               if(b==null)
-               {
-                       LOG.warn("cannot load bundle resources");
-                       try {
-                               u=new File("src/main/resources"+resFile).toURI().toURL();
-                       } catch (MalformedURLException e) {
-                               LOG.warn(e.getMessage());
-                       }
-               }
-               else
-                       u= b.getEntry(resFile);
-               return u;
-       }
-
-       private static File getFile(String resFile)
-       {
-               Bundle b = FrameworkUtil.getBundle(Resources.class);
-               File f=null;
-               if(b==null)
-               {
-                       LOG.warn("cannot load bundle resources");
-                       f=new File("src/main/resources"+resFile);
-               } else
-                       try {
-                               f=new File(b.getEntry(resFile).toURI());
-                       } catch (URISyntaxException e) {
-
-                       }
-               return f;
-       }
-
-       private static String readFile(final URL u) throws IOException
-       {
-               return readFile(u.openStream());
-       }
-       private static String readFile(final File f) throws IOException
-       {
-               return readFile(new FileInputStream(f));
-       }
-       private static String readFile(final InputStream s) throws IOException
-       {
-               //read file
-               BufferedReader in = new BufferedReader(new InputStreamReader(s));
-        StringBuilder sb=new StringBuilder();
-               String inputLine;
-        while ((inputLine = in.readLine()) != null)
-        {
-               sb.append(inputLine);
-        }
-           in.close();
-           s.close();
-           return sb.toString();
-       }
-
-       public static String getFileContent(String resFile) throws IOException
-       {
-               return readFile(getFileURL(resFile));
-       }
-       public static List<File> getFiles(String folder,final String filter,final boolean recursive)
-       {
-               List<File> list=new ArrayList<File>();
-               FileFilter ff=new FileFilter() {
-
-                       @Override
-                       public boolean accept(File pathname) {
-                               if(pathname.isFile())
-                                       return pathname.getName().contains(filter);
-                               else
-                                       return true;
-                       }
-               };
-               File ffolder=getFile(folder);
-               if(ffolder!=null && ffolder.isDirectory())
-               {
-                       File[] files=ffolder.listFiles(ff);
-                       if(files!=null && files.length>0)
-                       {
-                               for(File f:files)
-                               {
-                                       if(f.isFile())
-                                               list.add(f);
-                                       else if(f.isDirectory() && recursive)
-                                       {
-                                               getFilesRecursive(f,ff,list);
-                                       }
-                               }
-                       }
-               }
-               return list;
-       }
-       public static List<URL> getFileURLs(String folder,final String filter,final boolean recursive) throws IOException
-       {
-               Bundle b = FrameworkUtil.getBundle(Resources.class);
-               List<URL> list=new ArrayList<URL>();
-               if(b==null)
-               {
-                       FileFilter ff=new FileFilter() {
-
-                               @Override
-                               public boolean accept(File pathname) {
-                                       if(pathname.isFile())
-                                               return pathname.getName().contains(filter);
-                                       else
-                                               return true;
-                               }
-                       };
-                       File ffolder=getFile(folder);
-                       if(ffolder!=null && ffolder.isDirectory())
-                       {
-                               File[] files=ffolder.listFiles(ff);
-                               if(files!=null && files.length>0)
-                               {
-                                       for(File f:files)
-                                       {
-                                               if(f.isFile())
-                                                       list.add(f.toURI().toURL());
-                                               else if(f.isDirectory() && recursive)
-                                               {
-                                                       getFileURLsRecursive(f,ff,list);
-                                               }
-                                       }
-                               }
-                       }
-               }
-               else
-               {
-                       getResourceURLsTreeRecurse(b,filter,b.getEntryPaths(folder),recursive,list);
-               }
-               return list;
-       }
-       private static void getFilesRecursive(File root, FileFilter ff, List<File> list) {
-               if(root!=null && root.isDirectory())
-               {
-                       File[] files=root.listFiles(ff);
-                       if(files!=null && files.length>0)
-                       {
-                               for(File f:files)
-                               {
-                                       if(f.isFile())
-                                               list.add(f);
-                                       else if(f.isDirectory())
-                                       {
-                                               getFilesRecursive(f,ff,list);
-                                       }
-                               }
-                       }
-               }
-
-       }
-       private static void getFileURLsRecursive(File root, FileFilter ff, List<URL> list) throws MalformedURLException {
-               if(root!=null && root.isDirectory())
-               {
-                       File[] files=root.listFiles(ff);
-                       if(files!=null && files.length>0)
-                       {
-                               for(File f:files)
-                               {
-                                       if(f.isFile())
-                                               list.add(f.toURI().toURL());
-                                       else if(f.isDirectory())
-                                       {
-                                               getFileURLsRecursive(f,ff,list);
-                                       }
-                               }
-                       }
-               }
-
-       }
-       private static void getResourceURLsTreeRecurse(Bundle b, String filter, Enumeration<String> resource,boolean recursive,List<URL> outp) throws IOException {
-               while (resource.hasMoreElements()) {
-                       String name = resource.nextElement();
-                       Enumeration<String> list = b.getEntryPaths(name);
-                       if (list != null) {
-                               if(recursive)
-                                       getResourceURLsTreeRecurse(b, filter, list,recursive,outp);
-                       } else {
-                               //Read
-                               if(name.contains(filter))
-                               {
-                                       LOG.debug("add "+name+ " to list");
-                                       outp.add(b.getEntry(name));
-                               }
-                               else
-                                       LOG.debug("filtered out "+name);
-                       }
-               }
-       }
-       public static List<JSONObject> getJSONFiles(String folder,boolean recursive)
-       {
-               List<URL> urls=null;
-               try {
-                       urls = getFileURLs(folder,".json",recursive);
-               } catch (IOException e1) {
-                       LOG.warn("failed to get urls from resfolder "+folder+" : "+e1.getMessage());
-               }
-               LOG.debug("found "+urls==null?"no":urls.size()+" files");
-               List<JSONObject> list=new ArrayList<JSONObject>();
-               if(urls!=null)
-               {
-                       for (URL u: urls)
-                       {
-                               LOG.debug("try to parse "+u.toString());
-                               try {
-                                       JSONObject o=new JSONObject(readFile(u));
-                                       list.add(o);
-                               } catch (JSONException | IOException e) {
-                                       LOG.warn("problem reading/parsing file "+u+" :"+e.getMessage());
-                               }
-                       }
-               }
-               return list;
-       }
-       public static JSONObject getJSONFile(String resFile) {
-               LOG.debug("loading json file "+resFile+" from res");
-               URL u=getFileURL(resFile);
-               if (u == null)
-               {
-                       LOG.warn("cannot find resfile: "+resFile);
-                       return null;
-               }
-               JSONObject o=null;
-               try
-               {
-                       //parse to jsonobject
-                   o=new JSONObject(readFile(u));
-               }
-               catch(Exception e)
-               {
-                       LOG.warn("problem reading/parsing file: "+e.getMessage());
-               }
-               return o;
-       }
-
-       public static boolean extractFileTo(String resFile, File oFile) {
-       if(oFile==null)
-               return false;
-       LOG.debug("try to copy "+resFile+" from res to "+oFile.getAbsolutePath());
-       URL u=getFileURL(resFile);
-               if (u == null)
-               {
-                       LOG.warn("cannot find resfile:"+resFile);
-                       return false;
-               }
-               try {
-                       InputStream in = u.openStream();
-                       oFile.getParentFile().mkdirs();
-                       OutputStream outStream;
-                       outStream = new FileOutputStream(oFile);
-                       int theInt;
-                       while ((theInt = in.read()) >= 0) {
-                               outStream.write(theInt);
-                       }
-                       in.close();
-                       outStream.flush();
-                       outStream.close();
-                       LOG.debug("file written successfully");
-               }
-               catch (IOException e) {
-                       LOG.error("problem writing file:"+e.getMessage());
-                       return false;
-               }
-               return true;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/TemplateFile.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/internalTypes/TemplateFile.java
deleted file mode 100644 (file)
index a699af0..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-package org.opendaylight.mwtn.base.internalTypes;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileReader;
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.Map;
-
-public class TemplateFile {
-
-       protected final HashMap<String, Object> mKeyValuePairs;
-       private final String mContent;
-
-       public TemplateFile(String content)
-       {
-               this.mKeyValuePairs = new HashMap<>();
-               this.mContent=content;
-
-       }
-       public TemplateFile(File f) throws IOException {
-               this.mKeyValuePairs = new HashMap<>();
-               BufferedReader br = new BufferedReader(new FileReader(f));
-               StringBuilder sb = new StringBuilder();
-               String line = br.readLine();
-
-               while (line != null) {
-                       sb.append(line);
-                       line = br.readLine();
-               }
-               this.mContent = sb.toString();
-               br.close();
-       }
-
-       public void addValue(String key, Object value) {
-               this.mKeyValuePairs.put(key, value);
-       }
-
-       public void removeValue(String key) {
-               this.mKeyValuePairs.remove(key);
-       }
-
-       private String replace() {
-               String s=this.mContent;
-               String key;
-               Object value;
-               for (Map.Entry<String, Object> entry : this.mKeyValuePairs.entrySet()) {
-                   key = entry.getKey();
-                   value = entry.getValue();
-                   if(value!=null)
-                       s=s.replace(key, value.toString());
-               }
-               return s;
-       }
-
-       @Override
-       public String toString() {
-               return this.replace();
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/AllPm.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/AllPm.java
deleted file mode 100644 (file)
index e6be0a4..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.base.netconf;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.opendaylight.mwtn.performancemanager.impl.database.types.EsHistoricalPerformance15Minutes;
-import org.opendaylight.mwtn.performancemanager.impl.database.types.EsHistoricalPerformance24Hours;
-
-/**
- * @author herbert
- *
- */
-
-public class AllPm {
-
-    static AllPm EMPTY = new AllPm();
-
-    private final List<EsHistoricalPerformance15Minutes> pm15 = new ArrayList<>();
-    private final List<EsHistoricalPerformance24Hours> pm24 = new ArrayList<>();
-
-    void add(EsHistoricalPerformance15Minutes pm) {
-        pm15.add(pm);
-    }
-
-    void add(EsHistoricalPerformance24Hours pm) {
-        pm24.add(pm);
-    }
-
-    public List<EsHistoricalPerformance15Minutes> getPm15() {
-        return pm15;
-    }
-
-    public List<EsHistoricalPerformance24Hours> getPm24() {
-        return pm24;
-    }
-
-    public Object size() {
-        return pm15.size()+pm24.size();
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/Capabilities.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/Capabilities.java
deleted file mode 100644 (file)
index 49c8e85..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * Convert capabilities of netconfnode into internal format.
- * Boron and Carbon are providing different versions
- */
-package org.opendaylight.mwtn.base.netconf;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Proxy;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class Capabilities {
-
-    private static final Logger LOG = LoggerFactory.getLogger(Capabilities.class);
-    private static final String INTERFACE_AVAILABLECAPABILITY = "org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.netconf.node.connection.status.available.capabilities.AvailableCapability";
-
-    private final List<String> capabilities = new ArrayList<String>();
-
-    public Capabilities(NetconfNode nnode) {
-       LOG.info("Create Capabilities constructor");
-
-       if (nnode != null) {
-               constructor( nnode.getAvailableCapabilities().getAvailableCapability() );
-       }
-    }
-
-    /**
-     * Does all construction steps
-     * @param pcapabilities with a list of capabilities. <br>
-     * Type could be <br>
-     * - Boron: List<code><String></code> <br>
-     * - Carbon: List<AvailableCapability>
-     */
-    private void constructor(List<?> pcapabilities) {
-       for (Object capability : pcapabilities) {
-               if (LOG.isTraceEnabled()) {
-                       LOG.trace("capability class: {} Interfaces: {}", capability.getClass().getName(), Arrays.toString(capability.getClass().getInterfaces()));
-               }
-               if (capability instanceof String) { //ODL Boron specific
-                       this.capabilities.add((String)capability);
-               } else if (hasInterface(capability, INTERFACE_AVAILABLECAPABILITY)) {  //Carbon specific part  .. handled via generic
-                       try {
-                               Method method = capability.getClass().getDeclaredMethod("getCapability");
-                               this.capabilities.add(method.invoke(capability).toString());
-                       } catch (NoSuchMethodException | SecurityException | IllegalAccessException | IllegalArgumentException | InvocationTargetException e) {
-                               LOG.warn("Unknown capability class leads to a problem", e);
-                       }
-               } else {
-                       LOG.warn("Unknown capability class: {}", capability.getClass(), Arrays.toString(capability.getClass().getInterfaces()));
-               }
-       }
-    }
-
-    /**
-     * check if namespace is supported by given capabilites
-     * @param theCapability Capability to search
-     * @return true if available
-     */
-    public boolean isSupportingNamespace(QName theCapability ) {
-
-        String theNameSpace = theCapability.getNamespace().toString();
-
-        for (String capability : capabilities) {
-            LOG.trace("Check {} against {}", capability, theNameSpace);
-            if (capability.contains(theNameSpace)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-       @Override
-       public String toString() {
-               return "Capabilities [capabilities=" + capabilities + "]";
-       }
-
-
-       /**
-        * Check if object is proxy and has specific interface
-        * @param object Name of the object to verify
-        * @param interfaceName is the name of the interface
-        * @return boolean accordingly
-        */
-       static boolean hasInterface(Object object, String interfaceName) {
-               if (object instanceof Proxy) {
-                       Class<?>[] interfaces = object.getClass().getInterfaces();
-                       for (Class<?> i : interfaces) {
-                               if (i.getName().equals(interfaceName)) {
-                                       return true;
-                               }
-                       }
-               }
-               return false;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ExtendedAirInterfaceHistoricalPerformanceType.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ExtendedAirInterfaceHistoricalPerformanceType.java
deleted file mode 100644 (file)
index c2560e8..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.opendaylight.mwtn.base.netconf;
-
-import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corefoundationmodule.typedefinitions.rev160701.DateAndTime;
-import org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.imported_data_types.rev160710.ObjectIdentifier;
-import org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.object_classes.rev160710.OTNHistoryData;
-import org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.type_definitions.rev160710.GranularityPeriodType;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.airinterface.rev160901.mw_airinterface_pac.AirInterfaceConfiguration;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.AirInterfaceHistoricalPerformanceType;
-import org.opendaylight.yangtools.yang.binding.DataContainer;
-
-public class ExtendedAirInterfaceHistoricalPerformanceType implements OTNHistoryData, LinkIdentifyingObject {
-
-    private final AirInterfaceHistoricalPerformanceType airInterfaceHistoricalPerformanceType;
-    private final AirInterfaceConfiguration airInterfaceConfiguration;
-
-    public ExtendedAirInterfaceHistoricalPerformanceType(AirInterfaceHistoricalPerformanceType data, AirInterfaceConfiguration conf) {
-        this.airInterfaceHistoricalPerformanceType = data;
-        this.airInterfaceConfiguration = conf;
-    }
-
-
-    public AirInterfaceHistoricalPerformanceType getAirInterfaceHistoricalPerformanceType() {
-        return airInterfaceHistoricalPerformanceType;
-    }
-
-
-    public AirInterfaceConfiguration getAirInterfaceConfiguration() {
-        return airInterfaceConfiguration;
-    }
-
-
-    @Override
-    public Class<? extends DataContainer> getImplementedInterface() {
-        return airInterfaceHistoricalPerformanceType.getImplementedInterface();
-    }
-
-    @Override
-    public String getHistoryDataId() {
-        return airInterfaceHistoricalPerformanceType.getHistoryDataId();
-    }
-
-    @Override
-    public DateAndTime getPeriodEndTime() {
-        return airInterfaceHistoricalPerformanceType.getPeriodEndTime();
-    }
-
-    @Override
-    public GranularityPeriodType getGranularityPeriod() {
-        return airInterfaceHistoricalPerformanceType.getGranularityPeriod();
-    }
-
-    @Override
-    public ObjectIdentifier getObjectClass() {
-        return airInterfaceHistoricalPerformanceType.getObjectClass();
-    }
-
-    @Override
-    public ObjectIdentifier getNameBinding() {
-        return airInterfaceHistoricalPerformanceType.getNameBinding();
-    }
-
-    @Override
-    public Boolean isSuspectIntervalFlag() {
-        return airInterfaceHistoricalPerformanceType.isSuspectIntervalFlag();
-    }
-
-    @Override
-    public String getSignalId() {
-        return airInterfaceConfiguration.getRadioSignalID();
-    }
-
-
-    @Override
-    public String toString() {
-        return "ExtendedAirInterfaceHistoricalPerformanceType [airInterfaceHistoricalPerformanceType="
-                + airInterfaceHistoricalPerformanceType + ", airInterfaceConfiguration=" + airInterfaceConfiguration
-                + "]";
-    }
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ExtendedAirInterfaceHistoricalPerformanceType12.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ExtendedAirInterfaceHistoricalPerformanceType12.java
deleted file mode 100644 (file)
index aea77e5..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-package org.opendaylight.mwtn.base.netconf;
-
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.DateAndTime;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.GranularityPeriodType;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.ObjectIdentifier;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.OtnHistoryDataG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.AirInterfaceConfigurationG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.AirInterfaceHistoricalPerformanceTypeG;
-import org.opendaylight.yangtools.yang.binding.DataContainer;
-
-public class ExtendedAirInterfaceHistoricalPerformanceType12 implements OtnHistoryDataG, LinkIdentifyingObject {
-
-    private final AirInterfaceHistoricalPerformanceTypeG airInterfaceHistoricalPerformanceType;
-    private final AirInterfaceConfigurationG airInterfaceConfiguration;
-
-    public ExtendedAirInterfaceHistoricalPerformanceType12(AirInterfaceHistoricalPerformanceTypeG data, AirInterfaceConfigurationG conf) {
-        this.airInterfaceHistoricalPerformanceType = data;
-        this.airInterfaceConfiguration = conf;
-    }
-
-
-    public AirInterfaceHistoricalPerformanceTypeG getAirInterfaceHistoricalPerformanceType() {
-        return airInterfaceHistoricalPerformanceType;
-    }
-
-
-    public AirInterfaceConfigurationG getAirInterfaceConfiguration() {
-        return airInterfaceConfiguration;
-    }
-
-
-    @Override
-    public Class<? extends DataContainer> getImplementedInterface() {
-        return airInterfaceHistoricalPerformanceType.getImplementedInterface();
-    }
-
-    @Override
-    public String getHistoryDataId() {
-        return airInterfaceHistoricalPerformanceType.getHistoryDataId();
-    }
-
-    @Override
-    public DateAndTime getPeriodEndTime() {
-        return airInterfaceHistoricalPerformanceType.getPeriodEndTime();
-    }
-
-
-    @Override
-    public GranularityPeriodType getGranularityPeriod() {
-        return airInterfaceHistoricalPerformanceType.getGranularityPeriod();
-    }
-
-
-     @Override
-    public ObjectIdentifier getObjectClass() {
-        return airInterfaceHistoricalPerformanceType.getObjectClass();
-    }
-
-
-    @Override
-    public ObjectIdentifier getNameBinding() {
-        return airInterfaceHistoricalPerformanceType.getNameBinding();
-    }
-
-    @Override
-    public Boolean isSuspectIntervalFlag() {
-        return airInterfaceHistoricalPerformanceType.isSuspectIntervalFlag();
-    }
-
-    @Override
-    public String getSignalId() {
-        return airInterfaceConfiguration.getRadioSignalId();
-    }
-
-
-    @Override
-    public String toString() {
-        return "ExtendedAirInterfaceHistoricalPerformanceType [airInterfaceHistoricalPerformanceType="
-                + airInterfaceHistoricalPerformanceType + ", airInterfaceConfiguration=" + airInterfaceConfiguration
-                + "]";
-    }
-
-
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/GenericTransactionUtils.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/GenericTransactionUtils.java
deleted file mode 100644 (file)
index 92b4748..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-package org.opendaylight.mwtn.base.netconf;
-
-import java.util.NoSuchElementException;
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.concurrent.atomic.AtomicReference;
-
-import javax.annotation.Nullable;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.binding.api.WriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.yangtools.yang.binding.DataObject;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Optional;
-import com.google.common.base.Preconditions;
-import com.google.common.util.concurrent.CheckedFuture;
-
-public final class GenericTransactionUtils {
-    static final Logger logger = LoggerFactory.getLogger(GenericTransactionUtils.class);
-
-    public static <T extends DataObject> boolean writeData(DataBroker dataBroker, LogicalDatastoreType logicalDatastoreType,
-            InstanceIdentifier<T> iid, T dataObject, boolean isAdd) {
-        Preconditions.checkNotNull(dataBroker);
-        WriteTransaction modification = dataBroker.newWriteOnlyTransaction();
-        if (isAdd) {
-            if (dataObject == null) {
-                logger.warn("Invalid attempt to add a non-existent object to path {}", iid);
-                return false;
-            }
-            modification.merge(logicalDatastoreType, iid, dataObject, true /*createMissingParents*/);
-        }
-        else {
-            modification.delete(LogicalDatastoreType.CONFIGURATION, iid);
-        }
-        CheckedFuture<Void, TransactionCommitFailedException> commitFuture = modification.submit();
-        try {
-            commitFuture.checkedGet();
-            logger.debug("Transaction success for {} of object {}", isAdd ? "add" : "delete", dataObject);
-            return true;
-        } catch (Exception e) {
-            logger.warn("Transaction failed with error {} for {} of object {}", e.getMessage(), isAdd ? "add" : "delete", dataObject);
-            modification.cancel();
-            return false;
-        }
-    }
-
-     /*
-     /**
-     * Deliver the data back or null
-     * @param dataBroker for accessing data
-     * @param dataStoreType to address datastore
-     * @param iid id to access data
-     * @return Optional for the data
-     * /
-    private static <T extends DataObject> Optional<T> readDataOptional(DataBroker dataBroker, LogicalDatastoreType dataStoreType, InstanceIdentifier<T> iid) {
-
-        Preconditions.checkNotNull(dataBroker);
-        ReadOnlyTransaction readTransaction = dataBroker.newReadOnlyTransaction();
-        try {
-            CheckedFuture<Optional<T>, ReadFailedException> od = readTransaction.read(dataStoreType, iid);
-            Optional<T> optionalData = od.get();
-            readTransaction.close();
-            return optionalData;
-        } catch (CancellationException | ExecutionException | InterruptedException | NoSuchElementException e) {
-            logger.warn("Read transaction for identifier "+iid+" failed with error "+e.getMessage());
-            readTransaction.close();
-            return Optional.fromNullable(null);
-        }
-    } /**/
-
-    /**
-     * Deliver the data back or null. Warning
-     * @param <T> SubType of the DataObject to be handled
-     * @param dataBroker for accessing data
-     * @param dataStoreType to address datastore
-     * @param iid id to access data
-     * @return null or object
-     */
-    @Nullable
-    public static <T extends DataObject> T readData(DataBroker dataBroker, LogicalDatastoreType dataStoreType, InstanceIdentifier<T> iid) {
-        //return readDataOptional(dataBroker, dataStoreType, iid).orNull();
-        AtomicBoolean noErrorIndication = new AtomicBoolean();
-        AtomicReference<String> statusText = new AtomicReference<>();
-
-        T obj = readDataOptionalWithStatus(dataBroker, dataStoreType, iid, noErrorIndication, statusText);
-
-        if (! noErrorIndication.get()) {
-            logger.warn("Read transaction for identifier "+iid+" failed with error "+statusText.get());
-        }
-
-        return obj;
-    }
-
-    /**
-     * Deliver the data back or null
-     * @param <T> SubType of the DataObject to be handled
-     * @param dataBroker for accessing data
-     * @param dataStoreType to address datastore
-     * @param iid id to access data
-     * @param noErrorIndication (Output) true if data could be read and are available and is not null
-     * @param statusIndicator (Output) String with status indications during the read.
-     * @return null or object
-     */
-    @Nullable
-    public static <T extends DataObject> T readDataOptionalWithStatus(DataBroker dataBroker, LogicalDatastoreType dataStoreType, InstanceIdentifier<T> iid, AtomicBoolean noErrorIndication, AtomicReference<String> statusIndicator) {
-
-        T data = null;
-        noErrorIndication.set(false);
-        statusIndicator.set("Preconditions");
-        Preconditions.checkNotNull(dataBroker);
-        statusIndicator.set("Create Read Transaction");
-        ReadOnlyTransaction readTransaction = dataBroker.newReadOnlyTransaction();
-
-        try {
-            CheckedFuture<Optional<T>, ReadFailedException> od = readTransaction.read(dataStoreType, iid);
-            statusIndicator.set("Read done");
-            if (od != null) {
-                statusIndicator.set("Unwrap checkFuture done");
-                Optional<T> optionalData = od.get();
-                if (optionalData != null) {
-                    statusIndicator.set("Unwrap optional done");
-                       data = optionalData.orNull();
-                       statusIndicator.set("Read transaction done");
-                               noErrorIndication.set(true);
-                }
-            }
-        } catch (CancellationException | ExecutionException | InterruptedException | NoSuchElementException e) {
-            statusIndicator.set("Read transaction for identifier "+iid+" failed with error "+e.getMessage());
-        }
-
-        readTransaction.close();
-        return data;
-    }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/InternGenericCurrentProblemType.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/InternGenericCurrentProblemType.java
deleted file mode 100644 (file)
index c625d7a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * 
- */
-package org.opendaylight.mwtn.base.netconf;
-
-/**
- * @author herbert
- *
- */
-public class InternGenericCurrentProblemType {
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/LinkIdentifyingObject.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/LinkIdentifyingObject.java
deleted file mode 100644 (file)
index db25936..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-package org.opendaylight.mwtn.base.netconf;
-
-public interface LinkIdentifyingObject {
-
-    public String getSignalId();
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/NetconfTimeStamp.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/NetconfTimeStamp.java
deleted file mode 100644 (file)
index e05cdde..0000000
+++ /dev/null
@@ -1,269 +0,0 @@
-package org.opendaylight.mwtn.base.netconf;
-
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.TimeZone;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corefoundationmodule.typedefinitions.rev160701.DateAndTime;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class NetconfTimeStamp {
-    private static final Logger LOG = LoggerFactory.getLogger(NetconfTimeStamp.class);
-
-    private static final TimeZone TIMEZONEUTC = TimeZone.getTimeZone("GMT");
-    private static final SimpleDateFormat dateFormatResult = init("yyyy-MM-dd'T'HH:mm:ss.S'Z'",TIMEZONEUTC);
-    private static final SimpleDateFormat dateFormatConvert = init("yyyy-MM-dd HH:mm:ss.S", TIMEZONEUTC);
-    private static int MILLISECONDSDIGITS = 3; //Digits of milliseconds  in dateFormatResult
-    private static String MILLISECONDZEROS = "000"; //String with zeros for milliseconds in dateFormatResult
-    /*
-    private static final Pattern dateNetconfPatter[] = {
-            // 10 Groups, 1-7,9+10, ISO8601
-            Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})\\.(\\d+)?(Z|([+-]\\d{2}):(\\d{2}))"),
-            // 10 Groups, 1-7,9+10, Microwave ONF
-            Pattern.compile("(\\d{4})(\\d{2})(\\d{2})(\\d{2})(\\d{2})(\\d{2}).(\\d+)?(Z|([+-]\\d{2})(\\d{2}))"),
-            // 9 Groups, 1-6, 8+9Ericson. Example: 2017-01-23T13:32:38-05:00
-            Pattern.compile("(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2}):(\\d{2})?(Z|([+-]\\d{2}):(\\d{2}))")
-    };
-     */
-    private static final Pattern dateNetconfPatter = Pattern
-            // Formats:
-            //      1) ISO8601. Example 2017-01-18T11:44:49.482-05:00
-            //      2) Microwave ONF. Examples 20170118114449.1Z, 20170118114449.1-0500
-            //      3.1) Ericson. Example: 2017-01-23T13:32:38-05:00
-            //      3.2) Ericson. Example: 2017-01-23T13:32-05:00
-            // Always 10 Groups,
-            //          1:Year   2:Month   3:day     4:Hour   5:minute      6:optional sec 7:optional ms 8:optioal Z or 9:offset signedhour 10:min
-            .compile("(\\d{4})-?(\\d{2})-?(\\d{2})T?(\\d{2}):?(\\d{2})(?:(?::?)(\\d{2}))?(?:.(\\d+))?(?:(Z)|([+-]\\d{2}):?(\\d{2}))");
-
-
-    /* ------------------------------------
-     * Construct
-     */
-
-    /**
-     * Do not provide public constructor for this static module
-     */
-
-    private NetconfTimeStamp() {
-    }
-
-    /**
-     * Static initialization
-     *//*
-    private static void doInit() {
-        LOG.debug("Init begin");
-        //dateFormatResult =new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'");
-        dateFormatResult =new SimpleDateFormat("yyyyMMddHHmmss.S'Z'"); //Netconf 1.0 format
-        dateFormatResult.setTimeZone(TIMEZONEUTC);
-        dateFormatConvert =new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.S");
-        dateFormatConvert.setTimeZone(TIMEZONEUTC);
-        LOG.debug("Init end");
-    }*/
-
-    public static SimpleDateFormat init(String format, TimeZone zone ) {
-        SimpleDateFormat dateFormat;
-        dateFormat = new SimpleDateFormat(format);
-        dateFormat.setTimeZone(zone);
-        return dateFormat;
-    }
-
-    /* ------------------------------------
-     * Public function
-     */
-
-    /**
-     * Get actual timestamp as NETCONF specific type NETCONF/YANG 1.0 Format
-     * @return String with Date in NETCONF/YANG Format Version 1.0.
-     */
-    public static String getTimeStampAsNetconfString() {
-        /*if (dateFormatResult == null) {
-            doInit();
-        }*/
-        return getRightFormattedDate(new Date().getTime());
-    }
-
-    /**
-     * Get actual timestamp as NETCONF specific type NETCONF/YANG 1.0 Format
-     * @return DateAndTime Type 1.0. Date in NETCONF/YANG Format Version 1.0.
-     */
-    public static DateAndTime getTimeStamp() {
-        /*if (dateFormatResult == null) {
-            doInit();
-        }*/
-        //Time in GMT
-        return DateAndTime.getDefaultInstance(getTimeStampAsNetconfString());
-    }
-
-    /*
-     * Input ist in folgenden Formaten, die über Netconf empfangen wurden möglich:
-     *
-     * Format1
-     *        ISO 8601
-     *        2017-01-18T11:44:49.482-05:00
-     *
-     * Format2 Netconf
-     *        Netconf - pattern aus ietf-yang-types "2013-07-15"
-     *        Pattern: "\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?(Z|[\+\-](\d{2}):(\d{2}))"
-     *
-     * Format3 Netconf
-     *        (Netconf) DateAndTime CoreModel-CoreFoundationModule-TypeDefinitions vom 2016-07-01
-     *        Example1: 20170118114449.1Z
-     *        Example2: 20170118114449.1-0500
-     *        Pattern: "\d{4}\d{2}\d{2}\d{2}\d{2}\d{2}.\d+?(Z|[\+\-](\d{2})(\d{2}))"
-     *          typedef DateAndTime {
-     *                description "This primitive type defines the date and time according to the following structure:
-     *                    'yyyyMMddhhmmss.s[Z|{+|-}HHMm]' where:
-     *                    yyyy    '0000'..'9999'    year
-     *                    MM        '01'..'12'            month
-     *                    dd        '01'..'31'            day
-     *                    hh        '00'..'23'            hour
-     *                    mm        '00'..'59'            minute
-     *                    ss        '00'..'59'            second
-     *                    s        '.0'..'.9'            tenth of second (set to '.0' if EMS or NE cannot support this granularity)
-     *                    Z        'Z'                    indicates UTC (rather than local time)
-     *                    {+|-}    '+' or '-'            delta from UTC
-     *                    HH        '00'..'23'            time zone difference in hours
-     *                    Mm        '00'..'59'            time zone difference in minutes.";
-     *                type string;
-     *            }
-     * Format4 E/// specific
-     *         Example1: 2017-01-23T13:32:38-05:00
-     *         Example2: 2017-01-23T13:32-05:00
-     *
-     * @param netconfTime as String according the formats given above
-     * @return String in ISO8601 Format for database and presentation.
-     */
-
-    /**
-    * Return the String with a NETCONF time converted to long
-    * @param netconfTime as String according the formats given above
-    * @return Epoch milliseconds
-    * @throws IllegalArgumentException In case of no compliant time format definition for the string
-    * @throws ParseException Time parsing failed
-    */
-   public static long getTimeStampFromNetconfAsMilliseconds( String netconfTime ) throws IllegalArgumentException, ParseException {
-       /*if (dateFormatResult == null) {
-           doInit();
-       }*/
-       Matcher m;
-       {
-           m = dateNetconfPatter.matcher(netconfTime);
-           //According to spezified matches there have to be 10 parameter
-           if (m.matches() && m.groupCount() == 10) {
-               //Convert now
-                  long utcMillis = dateFormatConvert.parse(getTimeAsNormalizedString(m, m.group(6), m.group(7))).getTime()
-                               - getTimezoneOffsetMilliseconds(m.group(9), m.group(10));
-                  return utcMillis;
-           } else {
-               throw new IllegalArgumentException("No pattern for NETCONF data string: "+netconfTime);
-           }
-       }
-   }
-
-   /**
-    * Deliver String result.
-    * @param netconfTime as String according the formats given above
-    * @return If successful: String in ISO8601 Format for database and presentation.
-    * If "wrong formed input" the Input string with the prefix "Mailformed date" is delivered back.
-    */
-    public static String getTimeStampFromNetconf( String netconfTime ) {
-        /*if (dateFormatResult == null) {
-            doInit();
-        }*/
-        Matcher m;
-        {
-            m = dateNetconfPatter.matcher(netconfTime);
-            //According to spezified matches there have to be 10 parameter
-            if (m.matches() && m.groupCount() == 10) {
-                //Convert now
-                try {
-                    long utcMillis = dateFormatConvert.parse(getTimeAsNormalizedString(m, m.group(6), m.group(7))).getTime()
-                            - getTimezoneOffsetMilliseconds(m.group(9), m.group(10));
-                    return getRightFormattedDate(utcMillis);
-                } catch (ParseException e) {
-                    LOG.info(e.getMessage());
-                } catch (IllegalArgumentException e) {
-                    LOG.info(e.getMessage());
-                }
-            }
-        }
-        LOG.debug("No pattern for NETCONF data string: {}",netconfTime);
-        return "Malformed date: "+netconfTime; //Error handling
-    }
-    /*-------------------------------------------
-     * Private and static functions
-     */
-    /**
-     * Convert timeZone parameter in format [+-]/d/d:/d/d into milliseconds
-     * @param m Index 9 with "+/-" and hour string or null for UTZ, Index 10 with minutes
-     * @return long milliseconds of TimeZoneOffset
-     * @throws IllegalArgumentException If parameters are wrong
-     */
-    private static long getTimezoneOffsetMilliseconds(String timeZoneHour, String timeZoneMinute) throws IllegalArgumentException {
-        //-- Calculate timezone specific offset
-        long timeZoneOffsetMilliseconds = 0;
-        if (timeZoneHour != null) {
-            //Time zone offset in hours and minutes
-            int tzHour = 0;
-            int tzMinutes = 0;
-            tzHour = Integer.valueOf(timeZoneHour);
-            if (timeZoneMinute != null) {
-                tzMinutes = Integer.valueOf(timeZoneMinute);
-            } else {
-                throw new IllegalArgumentException("Problem in Netconf Time format timeZone minutes parameter.");
-            }
-            timeZoneOffsetMilliseconds = (tzHour * 60 + (tzHour > 0 ? tzMinutes : -tzMinutes))*60000;
-        }
-        return timeZoneOffsetMilliseconds;
-    }
-    /**
-     * Convert parameters to String with year .. minutes and optional Seconds and  .. milliseconds
-     * @param m Matcher with parsed date
-     * @param secString Seconds as String or null
-     * @param msString Milliseconds as String or null
-     * @return Normalized time string
-     */
-    private static String getTimeAsNormalizedString(Matcher m, String secString, String msString) {
-        //-- Create time as normalized string
-        StringBuffer sb = new StringBuffer();
-        sb.append(m.group(1)); //year
-        sb.append('-');
-        sb.append(m.group(2)); //Month
-        sb.append('-');
-        sb.append(m.group(3)); //Day
-        sb.append(' ');
-        sb.append(m.group(4)); //Hour 0-23
-        sb.append(':');
-        sb.append(m.group(5)); //Minute
-        sb.append(':');
-        sb.append(secString != null ? secString : "00"); //Seconds (optional)
-        sb.append('.');
-        if (msString == null) { //Milliseconds optional
-            sb.append(MILLISECONDZEROS);
-        } else if (msString.length() <= MILLISECONDSDIGITS) {
-            sb.append(msString); //Millisecond
-            sb.append(MILLISECONDZEROS.substring(0, MILLISECONDSDIGITS-msString.length()));
-        } else {
-            sb.append(msString.substring(0, MILLISECONDSDIGITS )); //Only first Three
-        }
-        return sb.toString();
-    }
-    /**
-     * Deliver format in a way that milliseconds are correct.
-     * @param dateMillis Date as milliseconds in Java definition
-     * @return String
-     */
-    private static String getRightFormattedDate( long dateMillis ) {
-        /*if (dateFormatResult == null) {
-            doInit();
-        }*/
-        long tenthOfSeconds = dateMillis % 1000/100L; //Extract 100 milliseconds
-        long base = dateMillis / 1000L * 1000L; //Cut milliseconds to 000
-        Date newDate = new Date( base + tenthOfSeconds);
-        return dateFormatResult.format(newDate);
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreEmpty.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreEmpty.java
deleted file mode 100644 (file)
index d8bda8e..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.base.netconf;
-
-import org.opendaylight.controller.md.sal.binding.api.MountPoint;
-import org.opendaylight.mwtn.base.internalTypes.InventoryInformation;
-
-/**
- * @author herbert
- *
- */
-public class ONFCoreEmpty implements ONFCoreNetworkElementRepresentation {
-
-    private String mountPointNodeName = "";
-
-
-    ONFCoreEmpty(String mountPointNodeName) {
-        this.mountPointNodeName = mountPointNodeName;
-    }
-
-    @Override
-    public void initialReadFromNetworkElement() {
-    }
-
-    @Override
-    public String getMountPointNodeName() {
-        return mountPointNodeName;
-    }
-
-    @Override
-    public void resetPMIterator() {
-    }
-
-    @Override
-    public boolean hasNext() {
-        return false;
-    }
-
-    @Override
-    public void next() {
-    }
-
-    @Override
-    public AllPm getHistoricalPM() {
-        return AllPm.EMPTY;
-    }
-
-    @Override
-    public String pmStatusToString() {
-        return "ONFCoreEmpty";
-    }
-
-    @Override
-    public int removeAllCurrentProblemsOfNode() {
-        return 0;
-    }
-
-    @Override
-    public void doRegisterMicrowaveEventListener(MountPoint mointPoint) {
-        //Do nothing
-    }
-
-    @Override
-    public void prepareCheck() {
-        //Do nothing here
-    }
-
-    @Override
-    public boolean checkAndConnectionToMediatorIsOk() {
-        return false;
-    }
-
-    @Override
-    public boolean checkAndConnectionToNeIsOk() {
-        return false;
-    }
-
-    @Override
-    public void initSynchronizationExtension() {
-    }
-
-       @Override
-       public InventoryInformation getInventoryInformation() {
-               return InventoryInformation.DEFAULT;
-       }
-
-       @Override
-       public InventoryInformation getInventoryInformation(String layerProtocolFilter) {
-               return InventoryInformation.DEFAULT;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreInterfacePac.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreInterfacePac.java
deleted file mode 100644 (file)
index b79b2ef..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.base.netconf;
-
-/**
- * @author herbert
- *
- */
-public class ONFCoreInterfacePac<T> {
-
-
-    Class<T> myClass;
-
-    ONFCoreInterfacePac( Class<T> myClass ) {
-        this.myClass = myClass;
-    }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElement10.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElement10.java
deleted file mode 100644 (file)
index 35f7dcb..0000000
+++ /dev/null
@@ -1,770 +0,0 @@
-/*
-* Copyright (c) 2017 highstreet technologies GmbH and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.base.netconf;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.MountPoint;
-import org.opendaylight.controller.md.sal.binding.api.NotificationService;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.mwtn.base.internalTypes.InternalDateAndTime;
-import org.opendaylight.mwtn.base.internalTypes.InternalSeverity;
-import org.opendaylight.mwtn.base.internalTypes.InventoryInformation;
-import org.opendaylight.mwtn.devicemanager.impl.ProviderClient;
-import org.opendaylight.mwtn.devicemanager.impl.database.service.HtDatabaseEventsService;
-import org.opendaylight.mwtn.devicemanager.impl.listener.MicrowaveEventListener;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.WebSocketServiceClient;
-import org.opendaylight.mwtn.performancemanager.impl.database.types.EsHistoricalPerformance15Minutes;
-import org.opendaylight.mwtn.performancemanager.impl.database.types.EsHistoricalPerformance24Hours;
-import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corefoundationmodule.superclassesandcommonpackages.rev160710.UniversalId;
-import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corefoundationmodule.superclassesandcommonpackages.rev160710.extension.ExtensionList;
-import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corenetworkmodule.objectclasses.rev160811.NetworkElement;
-import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corenetworkmodule.objectclasses.rev160811.logicalterminationpoint.LpList;
-import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corenetworkmodule.objectclasses.rev160811.networkelement.LtpRefList;
-import org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.object_classes.rev160710.OTNHistoryData;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.networkelement.currentproblemlist.rev161120.GenericCurrentProblemType;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.networkelement.currentproblemlist.rev161120.NetworkElementCurrentProblems;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.networkelement.currentproblemlist.rev161120.networkelementcurrentproblems.CurrentProblemList;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.airinterface.rev160901.MWAirInterfacePac;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.airinterface.rev160901.MWAirInterfacePacKey;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.airinterface.rev160901.mw_airinterface_pac.AirInterfaceConfiguration;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.airinterface.rev160901.mw_airinterface_pac.AirInterfaceCurrentProblems;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.airinterface.rev160901.mw_airinterface_pac.AirInterfaceHistoricalPerformances;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.ethernetcontainer.rev160902.MWEthernetContainerPac;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.ethernetcontainer.rev160902.MWEthernetContainerPacKey;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.ethernetcontainer.rev160902.mw_ethernetcontainer_pac.EthernetContainerCurrentProblems;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.ethernetcontainer.rev160902.mw_ethernetcontainer_pac.EthernetContainerHistoricalPerformances;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.AirInterfaceCurrentProblemType;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.ContainerCurrentProblemType;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.ContainerHistoricalPerformanceType;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Optional;
-
-/**
- * Get information over NETCONF device according to ONF Coremodel. Read networkelement and conditional packages.
- *
- * Get conditional packages from Networkelement
- * Possible interfaces are:
- *   MWPS, LTP(MWPS-TTP), MWAirInterfacePac, MicrowaveModel-ObjectClasses-AirInterface
- *   ETH-CTP,LTP(Client), MW_EthernetContainer_Pac
- *   MWS, LTP(MWS-CTP-xD), MWAirInterfaceDiversityPac, MicrowaveModel-ObjectClasses-AirInterfaceDiversity
- *   MWS, LTP(MWS-TTP), ,MicrowaveModel-ObjectClasses-HybridMwStructure
- *   MWS, LTP(MWS-TTP), ,MicrowaveModel-ObjectClasses-PureEthernetStructure
- *
- * @author herbert
- *
- */
-public class ONFCoreNetworkElement10 extends ONFCoreNetworkElementBase {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ONFCoreNetworkElementRepresentation.class);
-
-    private static final InstanceIdentifier<NetworkElement> NETWORKELEMENT_IID = InstanceIdentifier
-            .builder(NetworkElement.class)
-            .build();
-
-    /*-----------------------------------------------------------------------------
-     * Class members
-     */
-
-    // Non specific part. Used by all functions.
-    /** interfaceList is used by performance monitoring (pm) task and should be synchronized */
-    private final @Nonnull List<LpList> interfaceList = Collections.synchronizedList(new CopyOnWriteArrayList<>());
-    private final @Nonnull MicrowaveEventListener microwaveEventListener;
-    private @Nullable NetworkElement optionalNe = null;
-
-    // Performance monitoring specific part
-    /** Lock for the PM access specific elements that could be null */
-    private final @Nonnull Object pmLock = new Object();
-    private @Nullable Iterator<LpList> interfaceListIterator = null;
-    /** Actual pmLp used during iteration over interfaces */
-    private @Nullable LpList pmLp = null;
-
-    // Device monitoring specific part
-    /** Lock for the DM access specific elements that could be null */
-    private final @Nonnull Object dmLock = new Object();
-    /** Interface used for device monitoring (dm). If not null it contains the interface that is used for monitoring calls */
-    private @Nullable InstanceIdentifier<AirInterfaceCurrentProblems> dmAirIfCurrentProblemsIID = null;
-
-    /*------------------------------------------------------------------------
-     * Constructing
-     */
-
-    public ONFCoreNetworkElement10(String mountPointNodeName, Capabilities capabilities,
-            DataBroker netconfNodeDataBroker, WebSocketServiceClient webSocketService,
-            HtDatabaseEventsService databaseService, ProviderClient dcaeProvider ,@Nullable ProviderClient aotsmClient) {
-
-        super(mountPointNodeName, netconfNodeDataBroker, capabilities );
-
-        //Create MicrowaveService here
-        this.microwaveEventListener = new MicrowaveEventListener(mountPointNodeName, webSocketService, databaseService, dcaeProvider,aotsmClient);
-
-        LOG.info("Create NE instance {}", ONFCoreNetworkElement10.class.getSimpleName());
-    }
-
-    public static boolean checkType(Capabilities capabilities) {
-        return capabilities.isSupportingNamespace(NetworkElement.QNAME);
-    }
-
-    public static ONFCoreNetworkElement10 build(String mountPointNodeName, Capabilities capabilities,
-            DataBroker netconfNodeDataBroker, WebSocketServiceClient webSocketService,
-            HtDatabaseEventsService databaseService, ProviderClient dcaeProvider ,@Nullable ProviderClient aotsmClient) {
-
-        return checkType(capabilities) ? new ONFCoreNetworkElement10(mountPointNodeName, capabilities, netconfNodeDataBroker, webSocketService, databaseService, dcaeProvider ,aotsmClient) : null;
-
-    }
-
-
-    /*------------------------------------------------------------------------
-     * Functions
-     */
-
-    /**
-     * Have this as a separate function to avoid that representation is not created because of exceptions are thrown.
-     */
-    @Override
-    public void initialReadFromNetworkElement() {
-        LOG.debug("Get info about {}", mountPointNodeName);
-
-        int problems = microwaveEventListener.removeAllCurrentProblemsOfNode();
-        LOG.debug("Removed all {} problems from database at registration",problems);
-
-
-        //Step 2.1: access data broker within this mount point
-        LOG.debug("DBRead start");
-        //Step 2.2: read NEtworkElement from data store and initialize class variables
-        readNetworkElementAndInterfaces();
-
-        //Step 2.3: read the existing faults and add to DB
-        int problemsFound = readAllCurrentProblemsToDB();
-
-        LOG.info("Found info at {} for device {} number of problems: {}", mountPointNodeName, getUuId(), problemsFound);
-
-    }
-
-    /*------------------------------------------------------------
-     * private function to access database
-     */
-
-    /**
-     * Read from NetworkElement and verify LTPs have changed.
-     * If the NE has changed, update to the new structure.
-     * From initial state it changes also.
-     */
-    private synchronized boolean readNetworkElementAndInterfaces() {
-
-        LOG.debug("Update mountpoint if changed {}", mountPointNodeName);
-
-        //get NE data
-        synchronized (pmLock) {
-            boolean change = false;
-
-            optionalNe = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, NETWORKELEMENT_IID);
-            if (optionalNe == null) {
-                LOG.debug("Unable to read NE data for mountpoint {}", mountPointNodeName);
-                if (! interfaceList.isEmpty()) {
-                    interfaceList.clear();
-                    interfaceListIterator = null;
-                    change = true;
-                }
-            } else {
-                LOG.debug("Mountpoint '{}' NE-Name '{}'", mountPointNodeName, optionalNe.getNameList().toString());
-                List<LpList> actualInterfaceList = getLtpList(optionalNe);
-                if (! interfaceList.equals(actualInterfaceList) ) {
-                    LOG.debug("Mountpoint '{}' Update LTP List. Elements {}", mountPointNodeName, actualInterfaceList.size() );
-                    interfaceList.clear();
-                    interfaceList.addAll(actualInterfaceList);
-                    interfaceListIterator = null;
-                    change = true;
-                }
-            }
-            return change;
-        }
-    }
-
-    /**
-     * Get UUID as string from networkelemen
-     * @return UUID or EMPTY
-     */
-    private String getUuId() {
-        String uuid = EMPTY;
-
-        try {
-            uuid = optionalNe != null ? optionalNe.getUuid() != null ? optionalNe.getUuid().getValue() : EMPTY : EMPTY;
-        } catch (NullPointerException  e) {
-            //Unfortunately throws null pointer if not definied
-        }
-        return uuid;
-    }
-
-    /**
-     * Read current problems of AirInterfaces and EthernetContainer
-     * according to NE status into DB
-     * @return Number of problems
-     */
-    private int readAllCurrentProblemsToDB() {
-
-        int problemsFound = 0;
-
-        synchronized (pmLock) {
-            for (LpList lp : interfaceList) {
-                if (ONFLayerProtocolName.MWAirInterface.is(lp.getLayerProtocolName())) {
-                    //if (ltp.getLayerProtocolName().getValue().contains("MWPS")) {
-                    problemsFound += readTheFaultsOfMWAirInterfacePac(lp.getUuid());
-                    synchronized (dmLock) {
-                        if (dmAirIfCurrentProblemsIID == null) {
-                            dmAirIfCurrentProblemsIID = getMWAirInterfacePacIId(lp.getUuid());
-                        }
-                    }
-                }
-                if (ONFLayerProtocolName.EthernetContainer10.is(lp.getLayerProtocolName())) {
-                    //if (ltp.getLayerProtocolName().getValue().contains("ETH")) {
-                    problemsFound += readTheFaultsOfMWEthernetContainerPac(lp.getUuid());
-                }
-            }
-        }
-
-        //Step 2.4: Read other problems from Mountpoint
-        if (isNetworkElementCurrentProblemsSupporting10) {
-            problemsFound += readNetworkElementCurrentProblems();
-        }
-
-        return problemsFound;
-    }
-
-    /**
-     * Read currentProblems of network elemement
-     * @return number of listed problems<br>
-     *
-     * <br>EXAMPLE from log:<br>
-     * karaf.log:2016-12-05 16:36:15,764 | INFO  | dispatcher-25390 | EventManagerImpl                 | 346 - org.opendaylight.mwtn.eventmanager-impl - 0.3.0.SNAPSHOT | DBRead
-     * Currentproblems: NetworkElementCurrentProblems{getCurrentProblemList=[
-     *   CurrentProblemList{
-     *      getProblemName=powerLoss, getProblemSeverity=Critical, getSequenceNumber=1,
-     *      getTimeStamp=DateAndTime [_value=20160822133005.0Z], augmentations={}},
-     *      CurrentProblemList{
-     *          getProblemName=powerLoss,
-     *          getProblemSeverity=Minor,
-     *          getSequenceNumber=2,
-     *          getTimeStamp=DateAndTime [_value=20160822143005.0Z], augmentations={}}],  augmentations={}}
-     *
-     *          cpl(2),
-     *             powerLoss[CurrentProblemList{getProblemName=powerLoss, getProblemSeverity=Critical, getSequenceNumber=1, getTimeStamp=DateAndTime [_value=20160822133005.0Z], augmentations={}}],
-     *             powerLoss[CurrentProblemList{getProblemName=powerLoss, getProblemSeverity=Minor, getSequenceNumber=2, getTimeStamp=DateAndTime [_value=20160822143005.0Z], augmentations={}}]
-     */
-
-    private int readNetworkElementCurrentProblems() {
-
-        int problemsFound = 0;
-        LOG.info("DBRead Get {} NetworkElementCurrentProblems", mountPointNodeName);
-
-        InstanceIdentifier<NetworkElementCurrentProblems> networkElementCurrentProblemsIID = InstanceIdentifier
-                .builder(NetworkElementCurrentProblems.class)
-                .build();
-
-        //Step 2.3: read to the config data store
-        NetworkElementCurrentProblems problems;
-        try {
-            problems = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, networkElementCurrentProblemsIID);
-            if (problems == null) {
-                LOG.debug("DBRead NetworkElementCurrentProblems no CurrentProblemsList");
-            } else {
-                List<CurrentProblemList> cpl = problems.getCurrentProblemList();
-                LOG.debug("DBRead NetworkElementCurrentProblems input: {}", cpl);
-
-                if (cpl != null) {
-                    List<ProblemNotificationXml> resultList = new ArrayList<>();
-                    for(GenericCurrentProblemType problem : cpl) {
-                        resultList.add(new ProblemNotificationXml(mountPointNodeName, problem.getObjectIdRef(),
-                                problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                                problem.getSequenceNumber().toString(), InternalDateAndTime.valueOf(problem.getTimeStamp())));
-
-                    }
-                    microwaveEventListener.initCurrentProblem(resultList);
-                    LOG.debug("DBRead NetworkElementCurrentProblems result: {}",resultList);
-                    problemsFound = resultList.size();
-                }
-            }
-        } catch (Exception e) {
-            LOG.warn( "DBRead {} NetworkElementCurrentProblems not supported. Message '{}' ", mountPointNodeName, e.getMessage() );
-        }
-        return problemsFound;
-    }
-
-
-    /*
-    /**
-     * Read the NetworkElement part from database.
-     * @return NetworkElement or null
-     * /
-    private NetworkElement readNetworkElement() {
-        //Step 2.2: construct data and the relative iid
-        // The schema path to identify an instance is
-        // <i>CoreModel-CoreNetworkModule-ObjectClasses/NetworkElement</i>
-
-        //InstanceIdentifier<NetworkElement> networkElementIID = InstanceIdentifier
-        //       .builder(NetworkElement.class)
-        //       .build();
-
-        //Step 2.3: read to the config data store
-        return GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, NETWORKELEMENT_IID);
-    } */
-
-    /**
-     * Prepare check by updating NE state and reading all interfaces.
-     * @see org.opendaylight.mwtn.deviceMonitor.impl.DeviceMonitorSupport#prepareCheck()
-     */
-    @Override
-    public void prepareCheck() {
-        synchronized (dmLock) {
-            boolean change = readNetworkElementAndInterfaces();
-            if (change) {
-                int problems = microwaveEventListener.removeAllCurrentProblemsOfNode();
-                int problemsFound = readAllCurrentProblemsToDB();
-                LOG.info("Resync mountpoint {} for device {}. Removed {}. Current problems: {}", mountPointNodeName, getUuId(), problems, problemsFound);
-            }
-        }
-    }
-
-    /**
-     * New implementation
-     * @see org.opendaylight.mwtn.deviceMonitor.impl.DeviceMonitorSupport#checkAndConnectionToMediatorIsOk()
-     */
-    @Override
-    public boolean checkAndConnectionToMediatorIsOk() {
-        synchronized (dmLock) {
-            return optionalNe != null;
-        }
-    }
-
-    /**
-     * New implementation to interpret status with empty LTP List as notConnected => false
-     * @see org.opendaylight.mwtn.deviceMonitor.impl.DeviceMonitorSupport#checkAndConnectionToNeIsOk()
-     */
-    @Override
-    public boolean checkAndConnectionToNeIsOk() {
-        synchronized (dmLock) {
-            return optionalNe != null && !interfaceList.isEmpty();
-        }
-
-    }
-
-    /* OLD:public boolean checkAndConnectionToNeIsOk() {
-        synchronized (dmLock) {
-           if (dmAirIfCurrentProblemsIID != null) {
-              //Read to the config data store
-              AtomicBoolean noErrorIndicator = new AtomicBoolean();
-              AtomicReference<String> status = new AtomicReference<>();
-
-              GenericTransactionUtils.readDataOptionalWithStatus(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, dmAirIfCurrentProblemsIID, noErrorIndicator, status);
-              LOG.debug("Status noErrorIndicator: {} statusTxt:{}",noErrorIndicator.get(), status.get());
-              return noErrorIndicator.get();
-           }
-        }
-
-        return true;
-        }
-    */
-
-    /**
-     * Get List of UUIDs for conditional packages from Networkelement<br>
-     * Possible interfaces are:<br>
-     *   MWPS, LTP(MWPS-TTP), MWAirInterfacePac, MicrowaveModel-ObjectClasses-AirInterface<br>
-     *   ETH-CTP,LTP(Client), MW_EthernetContainer_Pac<br>
-     *   MWS, LTP(MWS-CTP-xD), MWAirInterfaceDiversityPac, MicrowaveModel-ObjectClasses-AirInterfaceDiversity<br>
-     *   MWS, LTP(MWS-TTP), ,MicrowaveModel-ObjectClasses-HybridMwStructure<br>
-     *   MWS, LTP(MWS-TTP), ,MicrowaveModel-ObjectClasses-PureEthernetStructure<br>
-     * @param ne Networkelement
-     * @return Id List, never null.
-     */
-    private static List<LpList> getLtpList( @Nullable NetworkElement ne ) {
-
-        List<LpList> res = new ArrayList<>();
-
-        if (ne != null) {
-            List<LtpRefList> ltpRefList = ne.getLtpRefList();
-            if (ltpRefList == null) {
-                LOG.debug("DBRead NE-Interfaces: null");
-            } else {
-                for (LtpRefList ltRefListE : ltpRefList ) {
-                    List<LpList> lpList = ltRefListE.getLpList();
-                    if (lpList == null) {
-                        LOG.debug("DBRead NE-Interfaces Reference List: null");
-                    } else {
-                        for (LpList lp : lpList) {
-                            ////LayerProtocolName layerProtocolName = lpListE.getLayerProtocolName();
-                            //UniversalId uuId = lpListE.getUuid();
-                            res.add(lp);
-                        }
-                    }
-                }
-            }
-        } else {
-            LOG.debug("DBRead NE: null");
-        }
-
-        //---- Debug
-        if (LOG.isDebugEnabled()) {
-            StringBuffer strBuf = new StringBuffer();
-            for (LpList ltp : res) {
-                if (strBuf.length() > 0) {
-                    strBuf.append(", ");
-                }
-                strBuf.append(ltp.getLayerProtocolName().getValue());
-                strBuf.append(':');
-                strBuf.append(ltp.getUuid().getValue());
-            }
-            LOG.debug("DBRead NE-Interfaces: {}", strBuf.toString());
-        }
-        //---- Debug end
-
-        return res;
-    }
-
-     private int readTheFaultsOfMWEthernetContainerPac(UniversalId interfacePacUuid) {
-
-        int problemsFound = 0;
-        LOG.info("DBRead Get {} MWEthernetContainerPac: {}", mountPointNodeName, interfacePacUuid.getValue());
-
-        //Step 2.2: construct data and the relative iid
-        InstanceIdentifier<EthernetContainerCurrentProblems> mwEthInterfaceIID = InstanceIdentifier
-                .builder(MWEthernetContainerPac.class, new MWEthernetContainerPacKey(interfacePacUuid))
-                .child(EthernetContainerCurrentProblems.class)
-                .build();
-
-        //Step 2.3: read to the config data store
-        EthernetContainerCurrentProblems ethProblems = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, mwEthInterfaceIID);
-        if (ethProblems == null) {
-            LOG.debug("DBRead EthProblems Id {} no EthernetContainerCurrentProblems", interfacePacUuid.getValue());
-        } else if (ethProblems.getCurrentProblemList() == null) {
-            LOG.debug("DBRead Id {} empty CurrentProblemsList", interfacePacUuid.getValue());
-        } else {
-            List<ProblemNotificationXml> resultList = new ArrayList<>();
-            for ( ContainerCurrentProblemType problem : ethProblems.getCurrentProblemList()) {
-                resultList.add(new ProblemNotificationXml(mountPointNodeName, interfacePacUuid.getValue(),
-                        problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                        problem.getSequenceNumber().toString(), InternalDateAndTime.valueOf(problem.getTimeStamp())));
-
-            }
-            microwaveEventListener.initCurrentProblem(resultList);
-            LOG.debug("DBRead EthProblems result: {}",resultList);
-            problemsFound = resultList.size();
-        }
-        return problemsFound;
-     }
-
-     /**
-      * Deliver for specific AirInterfacePac with key the related IId
-      * @param interfacePacUuid as UniversalId
-      * @return related InstanceIdentifier
-      */
-     private InstanceIdentifier<AirInterfaceCurrentProblems> getMWAirInterfacePacIId(UniversalId interfacePacUuid) {
-         InstanceIdentifier<AirInterfaceCurrentProblems> mwAirInterfaceIID = InstanceIdentifier
-                 .builder(MWAirInterfacePac.class, new MWAirInterfacePacKey(interfacePacUuid))
-                 .child(AirInterfaceCurrentProblems.class)
-                 .build();
-         return mwAirInterfaceIID;
-     }
-
-     private int readTheFaultsOfMWAirInterfacePac(UniversalId interfacePacUuid) {
-
-         int problemsFound = 0;
-         LOG.info("DBRead Get {} MWAirInterfacePac: {}", mountPointNodeName, interfacePacUuid.getValue());
-         //----
-         //Step 2.2: construct data and the relative iid
-
-         InstanceIdentifier<AirInterfaceCurrentProblems> mwAirInterfaceIID = getMWAirInterfacePacIId(interfacePacUuid);
-
-         //Step 2.3: read to the config data store
-         AirInterfaceCurrentProblems airProblems = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, mwAirInterfaceIID);
-
-         if (airProblems == null) {
-             LOG.debug("DBRead Id {} no AirInterfaceCurrentProblems", interfacePacUuid);
-         } else if (airProblems.getCurrentProblemList() == null) {
-             LOG.debug("DBRead Id {} no CurrentProblemList", interfacePacUuid);
-         } else {
-             List<ProblemNotificationXml> resultList = new ArrayList<>();
-             for ( AirInterfaceCurrentProblemType problem : airProblems.getCurrentProblemList()) {
-                 resultList.add(new ProblemNotificationXml(mountPointNodeName, interfacePacUuid.getValue(),
-                         problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                         problem.getSequenceNumber().toString(), InternalDateAndTime.valueOf(problem.getTimeStamp())));
-
-             }
-             microwaveEventListener.initCurrentProblem(resultList);
-             LOG.debug("DBRead AirProblems result: {}",resultList);
-             problemsFound = resultList.size();
-         }
-         return problemsFound;
-     }
-
-     public List<ExtendedAirInterfaceHistoricalPerformanceType> readTheHistoricalPerformanceDataOfMWAirInterfacePac(LpList lp) {
-
-         String uuId = lp.getUuid().getValue();
-
-         List<ExtendedAirInterfaceHistoricalPerformanceType> resultList = new ArrayList<>();
-         LOG.debug("DBRead Get {} MWAirInterfacePac: {}", mountPointNodeName, uuId);
-         //----
-         UniversalId mwAirInterfacePacuuId = new UniversalId(uuId);
-         //Step 2.1: construct data and the relative iid
-         InstanceIdentifier<AirInterfaceConfiguration> mwAirInterfaceConfigurationIID = InstanceIdentifier
-                 .builder(MWAirInterfacePac.class, new MWAirInterfacePacKey(mwAirInterfacePacuuId))
-                 .child(AirInterfaceConfiguration.class)
-                 .build();
-         AirInterfaceConfiguration airConfiguration = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, mwAirInterfaceConfigurationIID);
-
-         if (airConfiguration == null) {
-             LOG.debug("DBRead MWAirInterfacePac Id {} no AirInterfaceConfiguration", mwAirInterfacePacuuId);
-
-         } else {
-
-             //Step 2.2: construct data and the relative iid
-             InstanceIdentifier<AirInterfaceHistoricalPerformances> mwAirInterfaceHistoricalPerformanceIID = InstanceIdentifier
-                     .builder(MWAirInterfacePac.class, new MWAirInterfacePacKey(mwAirInterfacePacuuId))
-                     .child(AirInterfaceHistoricalPerformances.class)
-                     .build();
-
-             //Step 2.3: read to the config data store
-             AirInterfaceHistoricalPerformances airHistoricalPerformanceData = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, mwAirInterfaceHistoricalPerformanceIID);
-
-             if (airHistoricalPerformanceData == null) {
-                 LOG.debug("DBRead MWAirInterfacePac Id {} no AirInterfaceHistoricalPerformances", mwAirInterfacePacuuId);
-
-             } else {
-                 List<org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.airinterface.rev160901.airinterfacehistoricalperformances.HistoricalPerformanceDataList> airHistPMList = airHistoricalPerformanceData.getHistoricalPerformanceDataList();
-                 LOG.debug("DBRead MWAirInterfacePac Id {} Records intermediate: {}",mwAirInterfacePacuuId, airHistPMList.size());
-                 if (airHistPMList != null) {
-                     for ( org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.AirInterfaceHistoricalPerformanceType pmRecord : airHistPMList) {
-                         resultList.add(new ExtendedAirInterfaceHistoricalPerformanceType(pmRecord, airConfiguration));
-                     }
-                 }
-             }
-         }
-         LOG.debug("DBRead MWAirInterfacePac Id {} Records result: {}",mwAirInterfacePacuuId, resultList.size());
-         return resultList;
-     }
-
-     public List<ContainerHistoricalPerformanceType> readTheHistoricalPerformanceDataOfEthernetContainer(LpList lp) {
-
-         final String myName = "MWEthernetContainerPac";
-         String uuId = lp.getUuid().getValue();
-
-         List<ContainerHistoricalPerformanceType> resultList = new ArrayList<>();
-         LOG.debug("DBRead Get {} : {}", mountPointNodeName, myName,uuId);
-         //----
-         UniversalId ethContainerPacuuId = new UniversalId(uuId);
-         //Step 2.2: construct data and the relative iid
-         InstanceIdentifier<EthernetContainerHistoricalPerformances> ethContainerIID = InstanceIdentifier
-                 .builder(MWEthernetContainerPac.class, new MWEthernetContainerPacKey(ethContainerPacuuId))
-                 .child(EthernetContainerHistoricalPerformances.class)
-                 .build();
-
-         //Step 2.3: read to the config data store
-         EthernetContainerHistoricalPerformances ethContainerHistoricalPerformanceData = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, ethContainerIID);
-
-         if (ethContainerHistoricalPerformanceData == null) {
-             LOG.debug("DBRead {} Id {} no EthernetContainerHistoricalPerformances", myName, ethContainerPacuuId);
-         } else {
-             List<org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.objectclasses.ethernetcontainer.rev160902.ethernetcontainerhistoricalperformances.HistoricalPerformanceDataList> airHistPMList = ethContainerHistoricalPerformanceData.getHistoricalPerformanceDataList();
-             LOG.debug("DBRead {} Id {} Records intermediate: {}", myName, ethContainerPacuuId, airHistPMList.size());
-             if (airHistPMList != null) {
-                 for ( org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.ContainerHistoricalPerformanceType pmRecord : airHistPMList) {
-                     resultList.add(pmRecord);
-                 }
-             }
-         }
-         LOG.debug("DBRead {} Id {} Records result: {}", myName, ethContainerPacuuId, resultList.size());
-         return resultList;
-     }
-
-    private List<? extends OTNHistoryData> readTheHistoricalPerformanceData(LpList lp) {
-         ONFLayerProtocolName lpName = ONFLayerProtocolName.valueOf(lp.getLayerProtocolName());
-
-         switch( lpName ) {
-             case MWAirInterface:
-                 return readTheHistoricalPerformanceDataOfMWAirInterfacePac(lp);
-
-             case EthernetContainer10:
-                 return readTheHistoricalPerformanceDataOfEthernetContainer(lp);
-
-             case EthernetContainer12:
-             case EthernetPhysical:
-             case TDMContainer:
-             case Ethernet:
-             case Structure:
-             case Unknown:
-                 LOG.debug("Do not read HistoricalPM data for", lpName);
-                 break;
-         }
-         return new ArrayList<>();
-     }
-
-    @Override
-    public AllPm getHistoricalPM() {
-        synchronized ( pmLock ) {
-            if (pmLp != null) {
-                AllPm allPm = new AllPm();
-                LpList lp = pmLp;
-
-                List<? extends OTNHistoryData> resultList = readTheHistoricalPerformanceData(lp);
-
-                for (OTNHistoryData perf : resultList) {
-
-                    switch(perf.getGranularityPeriod()) {
-                    case PERIOD15MIN: {
-                        EsHistoricalPerformance15Minutes pm = new EsHistoricalPerformance15Minutes(mountPointNodeName, lp)
-                                .setHistoricalRecord15Minutes(perf);
-                        allPm.add(pm);
-                    }
-                    break;
-
-                    case PERIOD24HOURS: {
-                        LOG.debug("Write 24h create");
-                        EsHistoricalPerformance24Hours pm = new EsHistoricalPerformance24Hours(mountPointNodeName, lp)
-                                .setHistoricalRecord24Hours(perf);
-                        LOG.debug("Write 24h write to DB");
-                        allPm.add(pm);
-                    }
-
-                    break;
-                    default:
-                        LOG.warn("Unknown granularity {}",perf.getGranularityPeriod());
-                        break;
-                    }
-                }
-                return allPm;
-            } else {
-                return AllPm.EMPTY;
-            }
-        }
-
-    }
-
-    @Override
-    public void resetPMIterator() {
-        synchronized ( pmLock ) {
-            interfaceListIterator = interfaceList.iterator();
-        }
-       LOG.debug("PM reset iterator");
-    }
-
-    @Override
-    public boolean hasNext() {
-       boolean res;
-        synchronized ( pmLock ) {
-            res = interfaceListIterator != null ? interfaceListIterator.hasNext(): false;
-        }
-       LOG.debug("PM hasNext LTP {}", res);
-        return res;
-    }
-
-    @Override
-    public void next() {
-        synchronized ( pmLock ) {
-            pmLp = interfaceListIterator != null ? interfaceListIterator.next() : null;
-        }
-       LOG.debug("PM next LTP {}", pmLp.getUuid().toString());
-    }
-
-    @Override
-    public String pmStatusToString() {
-       StringBuffer res = new StringBuffer();
-        synchronized ( pmLock ) {
-            res.append(pmLp == null ? "no interface" : pmLp.getLayerProtocolName().getValue());
-            for (LpList lp : interfaceList ) {
-               res.append("IF:");
-               res.append(lp.getLayerProtocolName().getValue());
-               res.append(" ");
-            }
-        }
-        return(res.toString());
-    }
-
-    @Override
-    public int removeAllCurrentProblemsOfNode() {
-        return microwaveEventListener.removeAllCurrentProblemsOfNode();
-    }
-
-    @Override
-    public void doRegisterMicrowaveEventListener(MountPoint mountPoint) {
-        final Optional<NotificationService> optionalNotificationService = mountPoint.getService(NotificationService.class);
-        final NotificationService notificationService = optionalNotificationService.get();
-        notificationService.registerNotificationListener(microwaveEventListener);
-    }
-
-    @Override
-       public @Nonnull InventoryInformation getInventoryInformation() {
-       return this.getInventoryInformation(null);
-    }
-
-       @Override
-       public @Nonnull InventoryInformation getInventoryInformation(String layerProtocolFilter) {
-
-               String type=InventoryInformation.UNKNOWN;
-               String model=InventoryInformation.UNKNOWN;
-               String vendor=InventoryInformation.UNKNOWN;
-               String ipv4=InventoryInformation.UNKNOWN;
-               String ipv6=InventoryInformation.UNKNOWN;
-               List<String> uuids = new ArrayList<String>();
-               LOG.debug("request inventory information. filter:"+layerProtocolFilter);
-
-               if (optionalNe != null) {
-
-                       //uuids
-                       for(LpList lp : this.interfaceList)
-                       {
-                               if(layerProtocolFilter==null || layerProtocolFilter.isEmpty())
-                                       uuids.add(lp.getUuid().getValue());
-                               else if(lp.getLayerProtocolName()!=null &&
-                                       lp.getLayerProtocolName().getValue()!=null &&
-                                       lp.getLayerProtocolName().getValue().equals(layerProtocolFilter))
-                               uuids.add(lp.getUuid().getValue());
-                       }
-                       //type
-                       List<ExtensionList> extensions = optionalNe.getExtensionList();
-                       if(extensions!=null)
-                       {
-                               for(ExtensionList e: extensions)
-                               {
-                                       if(e.getValueName()!=null)
-                                       {
-                                               if(e.getValueName().equals("neIpAddress"))
-                                               {
-                                                       ipv4=e.getValue();
-                                                       LOG.debug("ip information found: "+ipv4);
-                                               }
-                                       }
-                               }
-                               if(ipv4==InventoryInformation.UNKNOWN)
-                       {
-                               LOG.debug("no ip information found");
-                       }
-                       }
-                       else
-               {
-                       LOG.debug("extension list is null");
-               }
-               }
-
-
-               return new InventoryInformation(type, model, vendor, ipv4, ipv6, uuids);
-       }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElement12.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElement12.java
deleted file mode 100644 (file)
index 37fd335..0000000
+++ /dev/null
@@ -1,1435 +0,0 @@
-/*
-* Copyright (c) 2017 highstreet technologies GmbH and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.base.netconf;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.List;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-import javax.annotation.Nonnull;
-import javax.annotation.Nullable;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.MountPoint;
-import org.opendaylight.controller.md.sal.binding.api.NotificationService;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.mwtn.base.internalTypes.InternalDateAndTime;
-import org.opendaylight.mwtn.base.internalTypes.InternalSeverity;
-import org.opendaylight.mwtn.base.internalTypes.InventoryInformation;
-import org.opendaylight.mwtn.devicemanager.impl.ProviderClient;
-import org.opendaylight.mwtn.devicemanager.impl.database.service.HtDatabaseEventsService;
-import org.opendaylight.mwtn.devicemanager.impl.listener.MicrowaveEventListener12;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.WebSocketServiceClient;
-import org.opendaylight.mwtn.performancemanager.impl.database.types.EsHistoricalPerformance15Minutes;
-import org.opendaylight.mwtn.performancemanager.impl.database.types.EsHistoricalPerformance24Hours;
-//import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.networkelement.currentproblemlist.rev161120.GenericCurrentProblemType;
-//import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.networkelement.currentproblemlist.rev161120.NetworkElementCurrentProblems;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ptp.dataset.rev170208.InstanceList;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ptp.dataset.rev170208.InstanceListKey;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ptp.dataset.rev170208.PortDsEntry;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ptp.dataset.rev170208.instance.list.PortDsList;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.ptp.dataset.rev170208.port.ds.entry.PortIdentity;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.Equipment;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.EquipmentKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.NetworkElement;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.UniversalId;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.extension.g.Extension;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.logical.termination.point.g.Lp;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.network.element.Ltp;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.GranularityPeriodType;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.OtnHistoryDataG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.AirInterfaceCurrentProblemTypeG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.AirInterfaceDiversityCurrentProblemTypeG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.AirInterfaceHistoricalPerformanceTypeG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ContainerCurrentProblemTypeG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ContainerHistoricalPerformanceTypeG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwAirInterfaceDiversityPac;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwAirInterfaceDiversityPacKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwAirInterfacePac;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwAirInterfacePacKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwEthernetContainerPac;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwEthernetContainerPacKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwHybridMwStructurePac;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwHybridMwStructurePacKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwPureEthernetStructurePac;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwPureEthernetStructurePacKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwTdmContainerPac;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwTdmContainerPacKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.StructureCurrentProblemTypeG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.air._interface.diversity.pac.AirInterfaceDiversityCurrentProblems;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.air._interface.pac.AirInterfaceConfiguration;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.air._interface.pac.AirInterfaceCurrentProblems;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.air._interface.pac.AirInterfaceHistoricalPerformances;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.ethernet.container.pac.EthernetContainerCurrentProblems;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.ethernet.container.pac.EthernetContainerHistoricalPerformances;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.hybrid.mw.structure.pac.HybridMwStructureCurrentProblems;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.pure.ethernet.structure.pac.PureEthernetStructureCurrentProblems;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.tdm.container.pac.TdmContainerCurrentProblems;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.onf.core.model.conditional.packages.rev170402.NetworkElementPac;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.onf.core.model.conditional.packages.rev170402.network.element.pac.NetworkElementCurrentProblems;
-//import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.onf.core.model.conditional.packages.rev170402.NetworkElementPac;
-//import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.onf.core.model.conditional.packages.rev170402.network.element.pac.NetworkElementCurrentProblems;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.onf.ethernet.conditional.packages.rev170402.EthernetPac;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.opendaylight.yangtools.yang.common.QName;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Optional;
-
-/**
- * Get information over NETCONF device according to ONF Coremodel. Read
- * networkelement and conditional packages.
- *
- * Get conditional packages from Networkelement Possible interfaces are: MWPS,
- * LTP(MWPS-TTP), MWAirInterfacePac, MicrowaveModel-ObjectClasses-AirInterface
- * ETH-CTP,LTP(Client), MW_EthernetContainer_Pac MWS, LTP(MWS-CTP-xD),
- * MWAirInterfaceDiversityPac,
- * MicrowaveModel-ObjectClasses-AirInterfaceDiversity MWS, LTP(MWS-TTP),
- * ,MicrowaveModel-ObjectClasses-HybridMwStructure MWS, LTP(MWS-TTP),
- * ,MicrowaveModel-ObjectClasses-PureEthernetStructure
- *
- * @author herbert
- *
- */
-public class ONFCoreNetworkElement12 extends ONFCoreNetworkElementBase {
-
-       private static final Logger LOG = LoggerFactory.getLogger(ONFCoreNetworkElement12.class);
-
-       private static final List<Extension> EMPTYLTPEXTENSIONLIST = new ArrayList<>();
-       // private static final List<Ltp> EMPTYLTPLIST = new ArrayList<>();
-
-       private static final InstanceIdentifier<NetworkElement> NETWORKELEMENT_IID = InstanceIdentifier
-                       .builder(NetworkElement.class).build();
-
-       private static final InstanceIdentifier<InstanceList> PTPINSTANCES_IID = InstanceIdentifier
-                       .builder(InstanceList.class, new InstanceListKey(1)).build();
-
-       /*-----------------------------------------------------------------------------
-        * Class members
-        */
-
-       // Non specific part. Used by all functions.
-       /** interfaceList is used by PM task and should be synchonized */
-       private final @Nonnull List<Lp> interfaceList = Collections.synchronizedList(new CopyOnWriteArrayList<>());
-       private final @Nonnull MicrowaveEventListener12 microwaveEventListener;
-       private @Nullable NetworkElement optionalNe = null;
-
-       // Performance monitoring specific part
-       /** Lock for the PM access specific elements that could be null */
-       private final @Nonnull Object pmLock = new Object();
-       private @Nullable Iterator<Lp> interfaceListIterator = null;
-       /** Actual pmLp used during iteration over interfaces */
-       private @Nullable Lp pmLp = null;
-
-       // Device monitoring specific part
-       /** Lock for the DM access specific elements that could be null */
-       private final @Nonnull Object dmLock = new Object();
-       /**
-        * Interface used for device monitoring (dm). If not null it contains the
-        * interface that is used for monitoring calls
-        */
-       private @Nullable InstanceIdentifier<AirInterfaceCurrentProblems> dmAirIfCurrentProblemsIID = null;
-       private final boolean isNetworkElementCurrentProblemsSupporting12;
-       private ListenerRegistration<MicrowaveEventListener12> listenerRegistrationresult;
-
-       /*-----------------------------------------------------------------------------
-        * Construction
-        */
-
-       /**
-        * Constructor
-        *
-        * @param mountPointNodeName
-        *            as String
-        * @param capabilities
-        *            of the specific network element
-        * @param netconfNodeDataBroker
-        *            for the network element specific data
-        * @param webSocketService
-        *            to forward event notifications
-        * @param databaseService
-        *            to access the database
-        * @param dcaeProvider
-        *            to forward problem / change notifications
-        */
-       private ONFCoreNetworkElement12(String mountPointNodeName, Capabilities capabilities,
-                       DataBroker netconfNodeDataBroker, WebSocketServiceClient webSocketService,
-                       HtDatabaseEventsService databaseService, ProviderClient dcaeProvider,
-                       @Nullable ProviderClient aotsmClient) {
-
-               super(mountPointNodeName, netconfNodeDataBroker, capabilities);
-
-               // Create MicrowaveService here
-               this.microwaveEventListener = new MicrowaveEventListener12(mountPointNodeName, webSocketService,
-                               databaseService, dcaeProvider, aotsmClient);
-               this.isNetworkElementCurrentProblemsSupporting12 = capabilities.isSupportingNamespace(NetworkElementPac.QNAME);
-               LOG.debug("support necurrent-problem-list=" + this.isNetworkElementCurrentProblemsSupporting12);
-               LOG.info("Create NE instance {}", InstanceList.QNAME.getLocalName());
-       }
-
-       /**
-        * Check capabilities are matching the this specific implementation and create
-        * network element representation if so.
-        *
-        * @param mountPointNodeName
-        *            as String
-        * @param capabilities
-        *            of the specific network element
-        * @param netconfNodeDataBroker
-        *            for the network element specific data
-        * @param webSocketService
-        *            to forward event notifications
-        * @param databaseService
-        *            to access the database
-        * @param dcaeProvider
-        *            to forward problem / change notifications
-        * @return created Object if conditions are OK or null if not.
-        */
-       public static @Nullable ONFCoreNetworkElement12 build(String mountPointNodeName, Capabilities capabilities,
-                       DataBroker netconfNodeDataBroker, WebSocketServiceClient webSocketService,
-                       HtDatabaseEventsService databaseService, ProviderClient dcaeProvider,
-                       @Nullable ProviderClient aotsmClient) {
-               return checkType(capabilities)
-                               ? new ONFCoreNetworkElement12(mountPointNodeName, capabilities, netconfNodeDataBroker, webSocketService,
-                                               databaseService, dcaeProvider, aotsmClient)
-                               : null;
-       }
-
-       /*-----------------------------------------------------------------------------
-        * Functions
-        */
-
-       private static boolean checkType(Capabilities capabilities) {
-               return capabilities.isSupportingNamespace(NetworkElement.QNAME);
-       }
-
-       /**
-        * Prepare check by updating NE state and reading all interfaces.
-        *
-        * @see org.opendaylight.mwtn.deviceMonitor.impl.DeviceMonitorSupport#prepareCheck()
-        */
-       @Override
-       public void prepareCheck() {
-               synchronized (dmLock) {
-                       boolean change = readNetworkElementAndInterfaces();
-                       if (change) {
-                               int problems = microwaveEventListener.removeAllCurrentProblemsOfNode();
-                               List<ProblemNotificationXml> resultList = readAllCurrentProblemsToDB();
-                               microwaveEventListener.initCurrentProblem(resultList);
-                               LOG.info("Resync mountpoint {} for device {}. Removed {}. Current problems: {}", mountPointNodeName,
-                                               getUuId(), problems, resultList.size());
-                       }
-               }
-       }
-
-       /**
-        * New implementation
-        *
-        * @see org.opendaylight.mwtn.deviceMonitor.impl.DeviceMonitorSupport#checkAndConnectionToMediatorIsOk()
-        */
-       @Override
-       public boolean checkAndConnectionToMediatorIsOk() {
-               synchronized (dmLock) {
-                       return optionalNe != null;
-               }
-       }
-
-       /**
-        * New implementation to interpret status with empty LTP List as notConnected =>
-        * false
-        *
-        * @see org.opendaylight.mwtn.deviceMonitor.impl.DeviceMonitorSupport#checkAndConnectionToNeIsOk()
-        */
-       @Override
-       public boolean checkAndConnectionToNeIsOk() {
-               synchronized (dmLock) {
-                       return optionalNe != null && !interfaceList.isEmpty();
-               }
-
-       }
-
-       /*
-        * /** Check connection by requesting NetworkElement object
-        *
-        * @see org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation#
-        * checkAndConnectionToMediatorIsOk() /
-        *
-        * @Override public boolean checkAndConnectionToMediatorIsOk() {
-        *
-        * //Read to the config data store AtomicBoolean noErrorIndicator = new
-        * AtomicBoolean(); AtomicReference<String> status = new AtomicReference<>();
-        *
-        * GenericTransactionUtils.readDataOptionalWithStatus(netconfNodeDataBroker,
-        * LogicalDatastoreType.OPERATIONAL, NETWORKELEMENT_IID, noErrorIndicator,
-        * status);
-        * LOG.debug("Status noErrorIndicator: {} statusTxt:{}",noErrorIndicator.get(),
-        * status.get()); return noErrorIndicator.get(); }
-        */
-
-       /*
-        * /** Check connection only possible if AirInterface (MWTN) exists. Request
-        *
-        * @see org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation#
-        * checkAndConnectionToNeIsOk() /
-        *
-        * @Override public boolean checkAndConnectionToNeIsOk() { synchronized (dmLock)
-        * { if (dmAirIfCurrentProblemsIID != null) { //Read to the config data store
-        * AtomicBoolean noErrorIndicator = new AtomicBoolean(); AtomicReference<String>
-        * status = new AtomicReference<>();
-        *
-        * GenericTransactionUtils.readDataOptionalWithStatus(netconfNodeDataBroker,
-        * LogicalDatastoreType.OPERATIONAL, dmAirIfCurrentProblemsIID,
-        * noErrorIndicator, status);
-        * LOG.debug("Status noErrorIndicator: {} statusTxt:{}",noErrorIndicator.get(),
-        * status.get()); return noErrorIndicator.get(); } } return true; }
-        */
-
-       /*-----------------------------------------------------------------------------
-        * Sychronization
-        */
-
-       /**
-        * Query synchronization information out of NE
-        */
-
-       @Override
-       public void initSynchronizationExtension() {
-               // ClockIdentityType vv;
-               try {
-                       if (!capabilities.isSupportingNamespace(InstanceList.QNAME)) {
-                               LOG.debug("Mountpoint {} does not support PTP", mountPointNodeName);
-                       } else {
-                               StringBuffer sb = new StringBuffer();
-                               sb.append("NE " + mountPointNodeName + " does support synchronisation.\n");
-                               InstanceList ptpInstance = readPTPClockInstances();
-                               if (ptpInstance != null) {
-                                       List<PortDsList> dsList = ptpInstance.getPortDsList();
-                                       if (dsList != null) {
-                                               int t = 0;
-                                               for (PortDsEntry portDs : ptpInstance.getPortDsList()) {
-                                                       PortIdentity portId = portDs.getPortIdentity();
-                                                       if (portId != null) {
-                                                               sb.append("Port[");
-                                                               sb.append(portId.getPortNumber());
-                                                               sb.append("]{ ClockId: ");
-                                                               sb.append(portId.getClockIdentity());
-                                                               sb.append(", Portstate: ");
-                                                               sb.append(portDs.getPortState());
-                                                               sb.append("}, ");
-                                                       } else {
-                                                               sb.append("Incomplete port #" + t + ", ");
-                                                       }
-                                                       t++;
-                                               }
-                                       } else {
-                                               sb.append("dsList contains null");
-                                       }
-                               } else
-                                       sb.append("ptpInstance equals null");
-                               LOG.trace(sb.toString());
-                       }
-               } catch (Exception e) {
-                       LOG.info("Inconsistent synchronisation structure: " + e.getMessage());
-               }
-
-       }
-
-       @Nullable
-       private InstanceList readPTPClockInstances() {
-               return GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL,
-                               PTPINSTANCES_IID);
-       }
-
-       /*-----------------------------------------------------------------------------
-        * Problem/Fault related functions
-        */
-
-       /**
-        * Read during startup all relevant structure and status parameters from device
-        */
-       @Override
-       public void initialReadFromNetworkElement() {
-               // optionalNe.getLtp().get(0).getLp();
-               LOG.debug("Get info about {}", mountPointNodeName);
-
-               int problems = microwaveEventListener.removeAllCurrentProblemsOfNode();
-               LOG.debug("Removed all {} problems from database at registration", problems);
-
-               // Step 2.1: access data broker within this mount point
-               LOG.debug("DBRead start");
-
-               // Step 2.2: read ne from data store
-               readNetworkElementAndInterfaces();
-
-               // Step 2.3: read the existing faults and add to DB
-               List<ProblemNotificationXml> resultList = readAllCurrentProblemsToDB();
-
-               microwaveEventListener.initCurrentProblem(resultList);
-
-               LOG.info("Found info at {} for device {} number of problems: {}", mountPointNodeName, getUuId(),
-                               resultList.size());
-       }
-       @Override
-       public InventoryInformation getInventoryInformation() {
-               return this.getInventoryInformation(null);
-       }
-       @Override
-    public @Nonnull InventoryInformation getInventoryInformation(String layerProtocolFilter) {
-
-       List<String> uuids = new ArrayList<String>();
-       String type=InventoryInformation.UNKNOWN;
-               String model=InventoryInformation.UNKNOWN;
-               String vendor=InventoryInformation.UNKNOWN;
-               String ipv4=InventoryInformation.UNKNOWN;
-               String ipv6=InventoryInformation.UNKNOWN;
-               LOG.debug("request inventory information. filter:"+layerProtocolFilter);
-               if (optionalNe != null) {
-
-                       //uuids
-               for(Lp lp : this.interfaceList)
-               {
-                       if(layerProtocolFilter==null || layerProtocolFilter.isEmpty())
-                                       uuids.add(lp.getUuid().getValue());
-                               else if(lp.getLayerProtocolName()!=null &&
-                                       lp.getLayerProtocolName().getValue()!=null &&
-                                       lp.getLayerProtocolName().getValue().equals(layerProtocolFilter))
-                               uuids.add(lp.getUuid().getValue());
-               }
-               LOG.debug("uuids found: {}",uuids);
-               //type
-               List<Extension> extensions = optionalNe.getExtension();
-               if(extensions!=null)
-               {
-                       String topLevelEqUuid=null;
-                       for(Extension e: extensions)
-                       {
-                               if(e.getValueName()!=null)
-                               {
-                                       if(e.getValueName().equals("top-level-equipment") && e.getValue()!=null)
-                                       {
-                                               topLevelEqUuid=e.getValue();
-                                               LOG.debug("top level equipment found: "+topLevelEqUuid);
-                                       }
-                                       else if(e.getValueName().equals("neIpAddress") && e.getValue()!=null)
-                                       {
-                                               ipv4=e.getValue();
-                                               LOG.debug("ip information found: "+ipv4);
-                                       }
-                               }
-                       }
-                       if(ipv4==InventoryInformation.UNKNOWN)
-                       {
-                               LOG.debug("no ip information found");
-                       }
-                       if(topLevelEqUuid!=null)
-                       {
-                               Equipment e = this.readEquipmentPac(topLevelEqUuid);
-                               if(e!=null)
-                               {
-                                       if( e.getManufacturedThing()!=null &&
-                                                       e.getManufacturedThing().getEquipmentType()!=null &&
-                                                       e.getManufacturedThing().getEquipmentType().getTypeName()!=null)
-                                       {
-                                               type = e.getManufacturedThing().getEquipmentType().getTypeName();
-                                               LOG.debug("equipment type found: "+type);
-                                       }
-                                       else
-                                       {
-                                               LOG.debug("no equipment type found");
-                                       }
-                                       if( e.getManufacturedThing()!=null &&
-                                                       e.getManufacturedThing().getEquipmentType()!=null &&
-                                                       e.getManufacturedThing().getEquipmentType().getModelIdentifier()!=null)
-                                       {
-                                               model=e.getManufacturedThing().getEquipmentType().getModelIdentifier();
-                                               LOG.debug("model identifier found:"+model);
-                                       }
-                                       else
-                                       {
-                                               LOG.debug("no model identifier found");
-                                       }
-                                       if(e.getManufacturedThing()!=null &&
-                                                       e.getManufacturedThing().getManufacturerProperties()!=null &&
-                                                       e.getManufacturedThing().getManufacturerProperties().getManufacturerIdentifier()!=null)
-                                       {
-                                               vendor = e.getManufacturedThing().getManufacturerProperties().getManufacturerIdentifier();
-                                               LOG.debug("manifacturer found: "+ vendor);
-                                       }
-                                       else
-                                       {
-                                               LOG.debug("no manifacturer found");
-                                       }
-                               }
-                       }
-                       else
-                       {
-                               LOG.debug("no top level equipment found");
-                       }
-               }
-               else
-               {
-                       LOG.debug("extension list is null");
-               }
-               }
-
-       return new InventoryInformation(type, model, vendor, ipv4, ipv6, uuids);
-
-
-    }
-
-
-       /**
-        * LOG the newly added problems of the interface pac
-        *
-        * @param idxStart
-        * @param uuid
-        * @param resultList
-        */
-       private void debugResultList(String uuid, List<ProblemNotificationXml> resultList, int idxStart) {
-               if (LOG.isDebugEnabled()) {
-                       StringBuffer sb = new StringBuffer();
-                       int idx = 0;
-                       for (int t = idxStart; t < resultList.size(); t++) {
-                               sb.append(idx++);
-                               sb.append(":{");
-                               sb.append(resultList.get(t));
-                               sb.append('}');
-                       }
-                       LOG.debug("Found problems {} {}", uuid, sb.toString());
-               }
-       }
-
-       /**
-        * Read from NetworkElement and verify LTPs have changed. If the NE has changed,
-        * update to the new structure. From initial state it changes also.
-        */
-       private synchronized boolean readNetworkElementAndInterfaces() {
-
-               LOG.debug("Update mountpoint if changed {}", mountPointNodeName);
-
-               optionalNe = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL,
-                               NETWORKELEMENT_IID);
-               ;
-               synchronized (pmLock) {
-                       boolean change = false;
-
-                       if (optionalNe == null) {
-                               LOG.debug("Unable to read NE data for mountpoint {}", mountPointNodeName);
-                               if (!interfaceList.isEmpty()) {
-                                       interfaceList.clear();
-                                       interfaceListIterator = null;
-                                       change = true;
-                               }
-
-                       } else {
-                               LOG.debug("Mountpoint '{}' NE-Name '{}'", mountPointNodeName, optionalNe.getName().toString());
-                               List<Lp> actualInterfaceList = getLtpList(optionalNe);
-                               if (!interfaceList.equals(actualInterfaceList)) {
-                                       LOG.debug("Mountpoint '{}' Update LTP List. Elements {}", mountPointNodeName,
-                                                       actualInterfaceList.size());
-                                       interfaceList.clear();
-                                       interfaceList.addAll(actualInterfaceList);
-                                       interfaceListIterator = null;
-                                       change = true;
-                               }
-                       }
-                       return change;
-               }
-       }
-
-       /**
-        * Read current problems of AirInterfaces and EthernetContainer according to NE
-        * status into DB
-        *
-        * @return List with all problems
-        */
-       private List<ProblemNotificationXml> readAllCurrentProblemsToDB() {
-
-               // Step 2.3: read the existing faults and add to DB
-               List<ProblemNotificationXml> resultList = new ArrayList<>();
-               int idxStart; // Start index for debug messages
-               UniversalId uuid;
-
-               synchronized (pmLock) {
-                       for (Lp ltp : interfaceList) {
-
-                               idxStart = resultList.size();
-                               uuid = ltp.getUuid();
-                               Class<?> lpClass = getLpExtension(ltp);
-
-                               ONFLayerProtocolName lpName = ONFLayerProtocolName.valueOf(ltp.getLayerProtocolName());
-                               switch (lpName) {
-                               case MWAirInterface:
-                                       readTheFaultsOfMwAirInterfacePac(uuid, resultList);
-                                       synchronized (dmLock) {
-                                               if (dmAirIfCurrentProblemsIID == null) {
-                                                       dmAirIfCurrentProblemsIID = getMWAirInterfacePacIId(uuid);
-                                               }
-                                       }
-                                       break;
-
-                               case EthernetContainer12:
-                                       readTheFaultsOfMwEthernetContainerPac(uuid, resultList);
-                                       break;
-
-                               case TDMContainer:
-                                       readTheFaultsOfMwTdmContainerPac(uuid, resultList);
-                                       break;
-
-                               case Structure:
-                                       if (lpClass == MwHybridMwStructurePac.class) {
-                                               readTheFaultsOfMwHybridMwStructurePac(uuid, resultList);
-
-                                       } else if (lpClass == MwAirInterfaceDiversityPac.class) {
-                                               readTheFaultsOfMwAirInterfaceDiversityPac(uuid, resultList);
-
-                                       } else if (lpClass == MwPureEthernetStructurePac.class) {
-                                               readTheFaultsOfMwPureEthernetStructurePac(uuid, resultList);
-
-                                       } else {
-                                               LOG.warn("Unassigned lp model {} class {}", lpName, lpClass);
-                                       }
-                                       break;
-
-                               case Ethernet:
-                                       // No alarms supported
-                                       break;
-                               case EthernetContainer10:
-                               default:
-                                       LOG.warn("Unassigned or not expected lp in model {}", lpName);
-                               }
-
-                               debugResultList(uuid.getValue(), resultList, idxStart);
-
-                       }
-               }
-
-               // Step 2.4: Read other problems from mountpoint
-               if (isNetworkElementCurrentProblemsSupporting10) {
-                       idxStart = resultList.size();
-                       readNetworkElementCurrentProblems10(resultList);
-                       debugResultList("CurrentProblems10", resultList, idxStart);
-               }
-
-               // Step 2.5: Read other problems from mountpoint
-               if (isNetworkElementCurrentProblemsSupporting12) {
-                       idxStart = resultList.size();
-                       readNetworkElementCurrentProblems12(resultList);
-                       debugResultList("CurrentProblems12", resultList, idxStart);
-               }
-
-               return resultList;
-
-       }
-
-       /**
-        * Get uuid of Optional NE.
-        *
-        * @return Uuid or EMPTY String if optionNE is not available
-        */
-       private String getUuId() {
-               String uuid = EMPTY;
-
-               try {
-                       uuid = optionalNe != null ? optionalNe.getUuid() != null ? optionalNe.getUuid().getValue() : EMPTY : EMPTY;
-               } catch (NullPointerException e) {
-                       // Unfortunately throws null pointer if not definied
-               }
-               return uuid;
-       }
-
-       /**
-        * Read the NetworkElement part from database.
-        *
-        * @return Optional with NetworkElement or empty
-        */
-       @Nullable
-       private NetworkElement readNetworkElement() {
-               // Step 2.2: construct data and the relative iid
-               // The schema path to identify an instance is
-               // <i>CoreModel-CoreNetworkModule-ObjectClasses/NetworkElement</i>
-               /*
-                * InstanceIdentifier<NetworkElement> networkElementIID = InstanceIdentifier
-                * .builder(NetworkElement.class) .build();
-                */
-               // Read to the config data store
-               return GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL,
-                               NETWORKELEMENT_IID);
-       }
-
-       /**
-        * Get from LayProtocolExtensions the related generated ONF Interface PAC class
-        * which represents it.
-        *
-        * @param ltp
-        *            logical termination point
-        * @return Class of InterfacePac
-        */
-       @Nullable
-       private static Class<?> getLpExtension(@Nullable Lp ltp) {
-
-               String capability = EMPTY;
-               String revision = EMPTY;
-               String conditionalPackage = EMPTY;
-               Class<?> res = null;
-
-               if (ltp != null) {
-                       for (Extension e : getExtensionList(ltp)) {
-                               if (e.getValueName().contentEquals("capability")) {
-                                       capability = e.getValue();
-                                       int idx = capability.indexOf("?");
-                                       if (idx != -1) {
-                                               capability = capability.substring(0, idx);
-                                       }
-                               }
-                               if (e.getValueName().contentEquals("revision")) {
-                                       revision = e.getValue();
-                               }
-                               if (e.getValueName().contentEquals("conditional-package")) {
-                                       conditionalPackage = e.getValue();
-                               }
-                       }
-               }
-               // QName qName =
-               // org.opendaylight.yangtools.yang.common.QName.create("urn:onf:params:xml:ns:yang:microwave-model",
-               // "2017-03-24", "mw-air-interface-pac").intern();
-               LOG.info("LpExtension capability={} revision={} conditionalPackage={}", capability, revision,
-                               conditionalPackage);
-               if (!capability.isEmpty() && !revision.isEmpty() && !conditionalPackage.isEmpty()) {
-                       try {
-                               QName qName = QName.create(capability, revision, conditionalPackage);
-
-                               if (qName.equals(MwAirInterfacePac.QNAME)) {
-                                       res = MwAirInterfacePac.class;
-                               } else if (qName.equals(MwAirInterfaceDiversityPac.QNAME)) {
-                                       res = MwAirInterfaceDiversityPac.class;
-                               } else if (qName.equals(MwPureEthernetStructurePac.QNAME)) {
-                                       res = MwPureEthernetStructurePac.class;
-                               } else if (qName.equals(MwHybridMwStructurePac.QNAME)) {
-                                       res = MwHybridMwStructurePac.class;
-                               } else if (qName.equals(MwEthernetContainerPac.QNAME)) {
-                                       res = MwEthernetContainerPac.class;
-                               } else if (qName.equals(MwTdmContainerPac.QNAME)) {
-                                       res = MwTdmContainerPac.class;
-                               } else if (qName.equals(EthernetPac.QNAME)) {
-                                       res = MwTdmContainerPac.class;
-                               }
-                               LOG.info("Found QName {} mapped to {}", String.valueOf(qName), String.valueOf(res));
-                       } catch (IllegalArgumentException e) {
-                               LOG.debug("Can not create QName from ({}{{}{{}): {}", capability, revision, conditionalPackage,
-                                               e.getMessage());
-                       }
-               }
-               return res;
-       }
-
-       /**
-        * Read element from class that could be not available
-        *
-        * @param ltp
-        *            layer termination point
-        * @return List with extension parameters or empty list
-        */
-       @Nonnull
-       private static List<Extension> getExtensionList(@Nullable Lp ltp) {
-               if (ltp != null && ltp.getExtension() != null) {
-                       return ltp.getExtension();
-               } else {
-                       return EMPTYLTPEXTENSIONLIST;
-               }
-       }
-
-       /**
-        * Get List of UUIDs for conditional packages from Networkelement<br>
-        * Possible interfaces are:<br>
-        * MWPS, LTP(MWPS-TTP), MWAirInterfacePac,
-        * MicrowaveModel-ObjectClasses-AirInterface<br>
-        * ETH-CTP,LTP(Client), MW_EthernetContainer_Pac<br>
-        * MWS, LTP(MWS-CTP-xD), MWAirInterfaceDiversityPac,
-        * MicrowaveModel-ObjectClasses-AirInterfaceDiversity<br>
-        * MWS, LTP(MWS-TTP), ,MicrowaveModel-ObjectClasses-HybridMwStructure<br>
-        * MWS, LTP(MWS-TTP), ,MicrowaveModel-ObjectClasses-PureEthernetStructure<br>
-        *
-        * @param ne
-        *            Networkelement
-        * @return Id List, never null.
-        */
-       private static List<Lp> getLtpList(@Nullable NetworkElement ne) {
-
-               List<Lp> res = Collections.synchronizedList(new ArrayList<Lp>());
-
-               if (ne != null) {
-                       List<Ltp> ltpRefList = ne.getLtp();
-                       if (ltpRefList == null) {
-                               LOG.debug("DBRead NE-Interfaces: null");
-                       } else {
-                               for (Ltp ltRefListE : ltpRefList) {
-                                       List<Lp> lpList = ltRefListE.getLp();
-                                       if (lpList == null) {
-                                               LOG.debug("DBRead NE-Interfaces Reference List: null");
-                                       } else {
-                                               for (Lp ltp : lpList) {
-                                                       //// LayerProtocolName layerProtocolName = lpListE.getLayerProtocolName();
-                                                       // UniversalId uuId = lpListE.getUuid();
-                                                       res.add(ltp);
-                                               }
-                                       }
-                               }
-                       }
-               } else {
-                       LOG.debug("DBRead NE: null");
-               }
-
-               // ---- Debug
-               if (LOG.isDebugEnabled()) {
-                       StringBuffer strBuf = new StringBuffer();
-                       for (Lp ltp : res) {
-                               if (strBuf.length() > 0) {
-                                       strBuf.append(", ");
-                               }
-                               strBuf.append(ltp.getLayerProtocolName().getValue());
-                               strBuf.append(':');
-                               strBuf.append(ltp.getUuid().getValue());
-                       }
-                       LOG.debug("DBRead NE-Interfaces: {}", strBuf.toString());
-               }
-               // ---- Debug end
-
-               return res;
-       }
-
-       /*-----------------------------------------------------------------------------
-        * Performance related data
-        */
-
-       /**
-        * PM MwAirInterfacePac
-        *
-        * @param lp
-        * @return
-        */
-       private List<ExtendedAirInterfaceHistoricalPerformanceType12> readTheHistoricalPerformanceDataOfMwAirInterfacePac(
-                       Lp lp) {
-
-               String uuId = lp.getUuid().getValue();
-
-               List<ExtendedAirInterfaceHistoricalPerformanceType12> resultList = new ArrayList<>();
-               LOG.debug("DBRead Get {} MWAirInterfacePac: {}", mountPointNodeName, uuId);
-               // ----
-               UniversalId mwAirInterfacePacuuId = new UniversalId(uuId);
-               // Step 2.1: construct data and the relative iid
-               InstanceIdentifier<AirInterfaceConfiguration> mwAirInterfaceConfigurationIID = InstanceIdentifier
-                               .builder(MwAirInterfacePac.class, new MwAirInterfacePacKey(mwAirInterfacePacuuId))
-                               .child(AirInterfaceConfiguration.class).build();
-               AirInterfaceConfiguration airConfiguration = GenericTransactionUtils.readData(netconfNodeDataBroker,
-                               LogicalDatastoreType.OPERATIONAL, mwAirInterfaceConfigurationIID);
-
-               if (airConfiguration == null) {
-                       LOG.debug("DBRead MWAirInterfacePac Id {} no AirInterfaceConfiguration", mwAirInterfacePacuuId);
-
-               } else {
-                       // Step 2.2: construct data and the relative iid
-                       InstanceIdentifier<AirInterfaceHistoricalPerformances> mwAirInterfaceHistoricalPerformanceIID = InstanceIdentifier
-                                       .builder(MwAirInterfacePac.class, new MwAirInterfacePacKey(mwAirInterfacePacuuId))
-                                       .child(AirInterfaceHistoricalPerformances.class).build();
-
-                       // Step 2.3: read to the config data store
-                       AirInterfaceHistoricalPerformances airHistoricalPerformanceData = GenericTransactionUtils.readData(
-                                       netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, mwAirInterfaceHistoricalPerformanceIID);
-
-                       if (airHistoricalPerformanceData == null) {
-                               LOG.debug("DBRead MWAirInterfacePac Id {} no AirInterfaceHistoricalPerformances",
-                                               mwAirInterfacePacuuId);
-                       } else {
-                               // org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170320.air._interface.historical.performances.g.HistoricalPerformanceDataList
-                               List<org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.air._interface.historical.performances.g.HistoricalPerformanceDataList> airHistPMList = airHistoricalPerformanceData
-                                               .getHistoricalPerformanceDataList();
-                               LOG.debug("DBRead MWAirInterfacePac Id {} Records intermediate: {}", mwAirInterfacePacuuId,
-                                               airHistPMList.size());
-                               if (airHistPMList != null) {
-                                       for (AirInterfaceHistoricalPerformanceTypeG pmRecord : airHistoricalPerformanceData
-                                                       .getHistoricalPerformanceDataList()) {
-                                               resultList.add(new ExtendedAirInterfaceHistoricalPerformanceType12(pmRecord, airConfiguration));
-                                       }
-                               }
-                       }
-               }
-               LOG.debug("DBRead MWAirInterfacePac Id {} Records result: {}", mwAirInterfacePacuuId, resultList.size());
-               return resultList;
-       }
-
-       private List<ContainerHistoricalPerformanceTypeG> readTheHistoricalPerformanceDataOfEthernetContainer(Lp lp) {
-
-               final String myName = "MWEthernetContainerPac";
-               String uuId = lp.getUuid().getValue();
-
-               List<ContainerHistoricalPerformanceTypeG> resultList = new ArrayList<>();
-               LOG.debug("DBRead Get {} : {}", mountPointNodeName, myName, uuId);
-               // ----
-               UniversalId ethContainerPacuuId = new UniversalId(uuId);
-               // Step 2.2: construct data and the relative iid
-               InstanceIdentifier<EthernetContainerHistoricalPerformances> ethContainerIID = InstanceIdentifier
-                               .builder(MwEthernetContainerPac.class, new MwEthernetContainerPacKey(ethContainerPacuuId))
-                               .child(EthernetContainerHistoricalPerformances.class).build();
-
-               // Step 2.3: read to the config data store
-               EthernetContainerHistoricalPerformances ethContainerHistoricalPerformanceData = GenericTransactionUtils
-                               .readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL, ethContainerIID);
-
-               if (ethContainerHistoricalPerformanceData == null) {
-                       LOG.debug("DBRead {} Id {} no HistoricalPerformances", myName, ethContainerPacuuId);
-               } else {
-                       // import
-                       // org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170320.ethernet.container.historical.performances.g.HistoricalPerformanceDataList
-                       List<org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ethernet.container.historical.performances.g.HistoricalPerformanceDataList> airHistPMList = ethContainerHistoricalPerformanceData
-                                       .getHistoricalPerformanceDataList();
-                       LOG.debug("DBRead {} Id {} Records intermediate: {}", myName, ethContainerPacuuId, airHistPMList.size());
-                       if (airHistPMList != null) {
-                               for (ContainerHistoricalPerformanceTypeG pmRecord : airHistPMList) {
-                                       resultList.add(pmRecord);
-                               }
-                       }
-               }
-               LOG.debug("DBRead {} Id {} Records result: {}", myName, ethContainerPacuuId, resultList.size());
-               return resultList;
-       }
-
-       @Nonnull
-       private List<? extends OtnHistoryDataG> readTheHistoricalPerformanceData(Lp lp) {
-               ONFLayerProtocolName lpName = ONFLayerProtocolName.valueOf(lp.getLayerProtocolName());
-
-               switch (lpName) {
-               case MWAirInterface:
-                       return readTheHistoricalPerformanceDataOfMwAirInterfacePac(lp);
-
-               case EthernetContainer12:
-                       return readTheHistoricalPerformanceDataOfEthernetContainer(lp);
-
-               case EthernetContainer10:
-               case EthernetPhysical:
-               case Ethernet:
-               case TDMContainer:
-               case Structure:
-               case Unknown:
-                       LOG.debug("Do not read HistoricalPM data for {} {}", lpName, lp.getUuid().getValue());
-                       break;
-               }
-               return new ArrayList<>();
-       }
-
-       @Override
-       public AllPm getHistoricalPM() {
-
-               synchronized (pmLock) {
-                       if (pmLp != null) {
-                               LOG.debug("Enter query PM");
-                               AllPm allPm = new AllPm();
-                               Lp lp = pmLp;
-
-                               List<? extends OtnHistoryDataG> resultList = readTheHistoricalPerformanceData(lp);
-                               LOG.debug("Got records: {}", resultList.size());
-                               // org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.GranularityPeriodType
-                               GranularityPeriodType granularityPeriod;
-                               for (OtnHistoryDataG perf : resultList) {
-
-                                       granularityPeriod = perf.getGranularityPeriod();
-                                       if (granularityPeriod == null) {
-                                               granularityPeriod = GranularityPeriodType.Unknown;
-                                       }
-
-                                       switch (granularityPeriod) {
-                                       case Period15Min: {
-                                               EsHistoricalPerformance15Minutes pm = new EsHistoricalPerformance15Minutes(mountPointNodeName,
-                                                               lp).setHistoricalRecord15Minutes(perf);
-                                               allPm.add(pm);
-                                       }
-                                               break;
-
-                                       case Period24Hours: {
-                                               EsHistoricalPerformance24Hours pm = new EsHistoricalPerformance24Hours(mountPointNodeName, lp)
-                                                               .setHistoricalRecord24Hours(perf);
-                                               LOG.debug("Write 24h write to DB");
-                                               allPm.add(pm);
-                                       }
-                                               break;
-
-                                       default:
-                                               LOG.warn("Unknown granularity {}", perf.getGranularityPeriod());
-                                               break;
-
-                                       }
-                               }
-                               LOG.debug("Deliver normalized records: {}", allPm.size());
-                               return allPm;
-                       } else {
-                               LOG.debug("Deliver empty, no LTP");
-                               return AllPm.EMPTY;
-                       }
-               }
-       }
-
-       @Override
-       public void resetPMIterator() {
-               synchronized (pmLock) {
-                       interfaceListIterator = interfaceList.iterator();
-               }
-               LOG.debug("PM reset iterator");
-       }
-
-       @Override
-       public boolean hasNext() {
-               boolean res;
-               synchronized (pmLock) {
-                       res = interfaceListIterator != null ? interfaceListIterator.hasNext() : false;
-               }
-               LOG.debug("PM hasNext LTP {}", res);
-               return res;
-       }
-
-       @Override
-       public void next() {
-               synchronized (pmLock) {
-                       pmLp = interfaceListIterator != null ? interfaceListIterator.next() : null;
-               }
-               LOG.debug("PM next LTP {}", pmLp.getLayerProtocolName().getValue());
-       }
-
-       @Override
-       public String pmStatusToString() {
-               StringBuffer res = new StringBuffer();
-               synchronized (pmLock) {
-                       res.append(pmLp == null ? "no interface" : pmLp.getLayerProtocolName().getValue());
-                       for (Lp lp : interfaceList) {
-                               res.append("IF:");
-                               res.append(lp.getLayerProtocolName().getValue());
-                               res.append(" ");
-                       }
-               }
-               return (res.toString());
-       }
-
-       /*------------------------------------------------------------
-        * private function to access database
-        */
-
-       /*-----------------------------------------------------------------------------
-        * Reading problems for the networkElement V1.0
-        */
-
-       private List<ProblemNotificationXml> readNetworkElementCurrentProblems10(List<ProblemNotificationXml> resultList) {
-
-               LOG.info("DBRead Get {} NetworkElementCurrentProblems", mountPointNodeName);
-
-               InstanceIdentifier<org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.networkelement.currentproblemlist.rev161120.NetworkElementCurrentProblems> networkElementCurrentProblemsIID = InstanceIdentifier
-                               .builder(
-                                               org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.networkelement.currentproblemlist.rev161120.NetworkElementCurrentProblems.class)
-                               .build();
-
-               // Step 2.3: read to the config data store
-               org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.networkelement.currentproblemlist.rev161120.NetworkElementCurrentProblems problems;
-               try {
-                       problems = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL,
-                                       networkElementCurrentProblemsIID);
-                       if (problems == null) {
-                               LOG.debug("DBRead no NetworkElementCurrentProblems");
-                       } else if (problems.getCurrentProblemList() == null) {
-                               LOG.debug("DBRead empty CurrentProblemList");
-                       } else {
-                               for (org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.networkelement.currentproblemlist.rev161120.GenericCurrentProblemType problem : problems
-                                               .getCurrentProblemList()) {
-                                       resultList.add(new ProblemNotificationXml(mountPointNodeName, problem.getObjectIdRef(),
-                                                       problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                                                       problem.getSequenceNumber().toString(),
-                                                       InternalDateAndTime.valueOf(problem.getTimeStamp())));
-                               }
-                       }
-               } catch (Exception e) {
-                       LOG.warn("DBRead {} NetworkElementCurrentProblems not supported. Message '{}' ", mountPointNodeName,
-                                       e.getMessage());
-               }
-               return resultList;
-       }
-
-       /*-----------------------------------------------------------------------------
-        * Reading problems for the networkElement V1.0
-        */
-
-       private List<ProblemNotificationXml> readNetworkElementCurrentProblems12(List<ProblemNotificationXml> resultList) {
-
-               LOG.info("DBRead Get {} NetworkElementCurrentProblems12", mountPointNodeName);
-
-               InstanceIdentifier<org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.onf.core.model.conditional.packages.rev170402.NetworkElementPac> networkElementCurrentProblemsIID = InstanceIdentifier
-                               .builder(
-                                               org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.onf.core.model.conditional.packages.rev170402.NetworkElementPac.class)
-                               .build();
-
-               // Step 2.3: read to the config data store
-               NetworkElementPac problemPac;
-               NetworkElementCurrentProblems problems;
-               try {
-                       problemPac = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL,
-                                       networkElementCurrentProblemsIID);
-                       problems = problemPac.getNetworkElementCurrentProblems();
-                       if (problems == null) {
-                               LOG.debug("DBRead no NetworkElementCurrentProblems12");
-                       } else if (problems.getCurrentProblemList() == null) {
-                               LOG.debug("DBRead empty CurrentProblemList12");
-                       } else {
-                               for (org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.onf.core.model.conditional.packages.rev170402.network.element.current.problems.g.CurrentProblemList problem : problems
-                                               .getCurrentProblemList()) {
-                                       resultList.add(new ProblemNotificationXml(mountPointNodeName, problem.getObjectReference(),
-                                                       problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                                                       problem.getSequenceNumber().toString(),
-                                                       InternalDateAndTime.valueOf(problem.getTimeStamp())));
-                               }
-                       }
-               } catch (Exception e) {
-                       LOG.warn("DBRead {} NetworkElementCurrentProblems12 not supported. Message '{}' ", mountPointNodeName,
-                                       e.getMessage());
-               }
-               return resultList;
-
-       }
-
-       /*-----------------------------------------------------------------------------
-        * Reading problems for specific interface pacs
-        */
-
-       /**
-        * Generate ID
-        *
-        * @param interfacePacUuid
-        *            for airinterface
-        * @return AirInterfaceCurrentProblemsIID
-        */
-       private InstanceIdentifier<AirInterfaceCurrentProblems> getMWAirInterfacePacIId(UniversalId interfacePacUuid) {
-               InstanceIdentifier<AirInterfaceCurrentProblems> mwAirInterfaceIID = InstanceIdentifier
-                               .builder(MwAirInterfacePac.class, new MwAirInterfacePacKey(interfacePacUuid))
-                               .child(AirInterfaceCurrentProblems.class).build();
-               return mwAirInterfaceIID;
-       }
-
-       /**
-        * Read problems of specific interfaces
-        *
-        * @param uuId
-        *            Universal Id String of the interface
-        * @return number of alarms
-        */
-       private List<ProblemNotificationXml> readTheFaultsOfMwAirInterfacePac(UniversalId interfacePacUuid,
-                       List<ProblemNotificationXml> resultList) {
-
-               final Class<MwAirInterfacePac> clazzPac = MwAirInterfacePac.class;
-               // final Class<MwAirInterfacePacKey> clazzPacKey = MwAirInterfacePacKey.class;
-               // final Class<AirInterfaceCurrentProblems> clazzProblems =
-               // AirInterfaceCurrentProblems.class;
-               // final Class<AirInterfaceCurrentProblemTypeG> clazzProblem =
-               // AirInterfaceCurrentProblemTypeG.class;
-
-               LOG.info("DBRead Get problems for class {} from mountpoint {} for uuid {}", clazzPac.getSimpleName(),
-                               mountPointNodeName, interfacePacUuid.getValue());
-
-               // Step 2.2: construct data and the relative iid
-               InstanceIdentifier<AirInterfaceCurrentProblems> mwAirInterfaceIID = InstanceIdentifier
-                               .builder(MwAirInterfacePac.class, new MwAirInterfacePacKey(interfacePacUuid))
-                               .child(AirInterfaceCurrentProblems.class).build();
-
-               // Step 2.3: read to the config data store
-               AirInterfaceCurrentProblems problems = GenericTransactionUtils.readData(netconfNodeDataBroker,
-                               LogicalDatastoreType.OPERATIONAL, mwAirInterfaceIID);
-
-               if (problems == null) {
-                       LOG.debug("DBRead Id {} no AirInterfaceCurrentProblems", interfacePacUuid);
-               } else if (problems.getCurrentProblemList() == null) {
-                       LOG.debug("DBRead Id {} empty CurrentProblemList", interfacePacUuid);
-               } else {
-                       for (AirInterfaceCurrentProblemTypeG problem : problems.getCurrentProblemList()) {
-                               resultList.add(new ProblemNotificationXml(mountPointNodeName, interfacePacUuid.getValue(),
-                                               problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                                               problem.getSequenceNumber().toString(), InternalDateAndTime.valueOf(problem.getTimeStamp())));
-                       }
-               }
-               return resultList;
-       }
-
-       /**
-        * Read problems of specific interfaces
-        *
-        * @param uuId
-        *            Universal index of Interfacepac
-        * @return number of alarms
-        */
-       private List<ProblemNotificationXml> readTheFaultsOfMwEthernetContainerPac(UniversalId interfacePacUuid,
-                       List<ProblemNotificationXml> resultList) {
-
-               final Class<MwEthernetContainerPac> clazzPac = MwEthernetContainerPac.class;
-               // final Class<MwEthernetContainerPacKey> clazzPacKey =
-               // MwEthernetContainerPacKey.class;
-               // final Class<EthernetContainerCurrentProblems> clazzProblems =
-               // EthernetContainerCurrentProblems.class;
-               // final Class<ContainerCurrentProblemTypeG> clazzProblem =
-               // ContainerCurrentProblemTypeG.class;
-
-               LOG.info("DBRead Get problems for class {} from mountpoint {} for uuid {}", clazzPac.getSimpleName(),
-                               mountPointNodeName, interfacePacUuid.getValue());
-
-               InstanceIdentifier<EthernetContainerCurrentProblems> mwEthInterfaceIID = InstanceIdentifier
-                               .builder(MwEthernetContainerPac.class, new MwEthernetContainerPacKey(interfacePacUuid))
-                               .child(EthernetContainerCurrentProblems.class).build();
-
-               EthernetContainerCurrentProblems problems = GenericTransactionUtils.readData(netconfNodeDataBroker,
-                               LogicalDatastoreType.OPERATIONAL, mwEthInterfaceIID);
-               if (problems == null) {
-                       LOG.debug("DBRead Id {} no EthernetContainerCurrentProblems", interfacePacUuid);
-               } else if (problems.getCurrentProblemList() == null) {
-                       LOG.debug("DBRead Id {} empty CurrentProblemsList", interfacePacUuid);
-               } else {
-                       for (ContainerCurrentProblemTypeG problem : problems.getCurrentProblemList()) {
-                               resultList.add(new ProblemNotificationXml(mountPointNodeName, interfacePacUuid.getValue(),
-                                               problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                                               problem.getSequenceNumber().toString(), InternalDateAndTime.valueOf(problem.getTimeStamp())));
-                       }
-               }
-               return resultList;
-       }
-
-       /**
-        * Read problems of specific interfaces
-        *
-        * @param uuId
-        *            Universal index of Interfacepac
-        * @return number of alarms
-        */
-       private List<ProblemNotificationXml> readTheFaultsOfMwAirInterfaceDiversityPac(UniversalId interfacePacUuid,
-                       List<ProblemNotificationXml> resultList) {
-
-               final Class<MwAirInterfaceDiversityPac> clazzPac = MwAirInterfaceDiversityPac.class;
-               // final Class<MwAirInterfaceDiversityPacKey> clazzPacKey =
-               // MwAirInterfaceDiversityPacKey.class;
-               final Class<AirInterfaceDiversityCurrentProblems> clazzProblems = AirInterfaceDiversityCurrentProblems.class;
-               // final Class<AirInterfaceDiversityCurrentProblemTypeG> clazzProblem =
-               // AirInterfaceDiversityCurrentProblemTypeG.class;
-
-               LOG.info("DBRead Get problems for class {} from mountpoint {} for uuid {}", clazzPac.getSimpleName(),
-                               mountPointNodeName, interfacePacUuid.getValue());
-
-               InstanceIdentifier<AirInterfaceDiversityCurrentProblems> mwEthInterfaceIID = InstanceIdentifier
-                               .builder(clazzPac, new MwAirInterfaceDiversityPacKey(interfacePacUuid)).child(clazzProblems).build();
-
-               AirInterfaceDiversityCurrentProblems problems = GenericTransactionUtils.readData(netconfNodeDataBroker,
-                               LogicalDatastoreType.OPERATIONAL, mwEthInterfaceIID);
-               if (problems == null) {
-                       LOG.debug("DBRead Id {} no AirInterfaceDiversityCurrentProblems", interfacePacUuid);
-               } else if (problems.getCurrentProblemList() == null) {
-                       LOG.debug("DBRead Id {} empty CurrentProblemList", interfacePacUuid);
-               } else {
-                       for (AirInterfaceDiversityCurrentProblemTypeG problem : problems.getCurrentProblemList()) {
-                               resultList.add(new ProblemNotificationXml(mountPointNodeName, interfacePacUuid.getValue(),
-                                               problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                                               problem.getSequenceNumber().toString(), InternalDateAndTime.valueOf(problem.getTimeStamp())));
-                       }
-               }
-               return resultList;
-       }
-
-       /**
-        * Read problems of specific interfaces
-        *
-        * @param uuId
-        *            Universal index of Interfacepac
-        * @return number of alarms
-        */
-       private List<ProblemNotificationXml> readTheFaultsOfMwPureEthernetStructurePac(UniversalId interfacePacUuid,
-                       List<ProblemNotificationXml> resultList) {
-
-               final Class<MwPureEthernetStructurePac> clazzPac = MwPureEthernetStructurePac.class;
-               // final Class<MwPureEthernetStructurePacKey> clazzPacKey =
-               // MwPureEthernetStructurePacKey.class;
-               final Class<PureEthernetStructureCurrentProblems> clazzProblems = PureEthernetStructureCurrentProblems.class;
-               // final Class<StructureCurrentProblemTypeG> clazzProblem =
-               // StructureCurrentProblemTypeG.class;
-
-               LOG.info("DBRead Get problems for class {} from mountpoint {} for uuid {}", clazzPac.getSimpleName(),
-                               mountPointNodeName, interfacePacUuid.getValue());
-
-               InstanceIdentifier<PureEthernetStructureCurrentProblems> mwEthInterfaceIID = InstanceIdentifier
-                               .builder(clazzPac, new MwPureEthernetStructurePacKey(interfacePacUuid)).child(clazzProblems).build();
-
-               PureEthernetStructureCurrentProblems problems = GenericTransactionUtils.readData(netconfNodeDataBroker,
-                               LogicalDatastoreType.OPERATIONAL, mwEthInterfaceIID);
-               if (problems == null) {
-                       LOG.debug("DBRead Id {} no PureEthernetStructureCurrentProblems", interfacePacUuid);
-               } else if (problems.getCurrentProblemList() == null) {
-                       LOG.debug("DBRead Id {} empty CurrentProblemsList", interfacePacUuid);
-               } else {
-                       for (StructureCurrentProblemTypeG problem : problems.getCurrentProblemList()) {
-                               resultList.add(new ProblemNotificationXml(mountPointNodeName, interfacePacUuid.getValue(),
-                                               problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                                               problem.getSequenceNumber().toString(), InternalDateAndTime.valueOf(problem.getTimeStamp())));
-                       }
-               }
-               return resultList;
-       }
-
-       /**
-        * Read problems of specific interfaces
-        *
-        * @param uuId
-        *            Universal index of Interfacepac
-        * @return number of alarms
-        */
-       private List<ProblemNotificationXml> readTheFaultsOfMwHybridMwStructurePac(UniversalId interfacePacUuid,
-                       List<ProblemNotificationXml> resultList) {
-
-               final Class<MwHybridMwStructurePac> clazzPac = MwHybridMwStructurePac.class;
-               // final Class<MwHybridMwStructurePacKey> clazzPacKey =
-               // MwHybridMwStructurePacKey.class;
-               final Class<HybridMwStructureCurrentProblems> clazzProblems = HybridMwStructureCurrentProblems.class;
-               // final Class<HybridMwStructureCurrentProblemsG> clazzProblem =
-               // HybridMwStructureCurrentProblemsG.class;
-
-               LOG.info("DBRead Get problems for class {} from mountpoint {} for uuid {}", clazzPac.getSimpleName(),
-                               mountPointNodeName, interfacePacUuid.getValue());
-
-               InstanceIdentifier<HybridMwStructureCurrentProblems> mwEthInterfaceIID = InstanceIdentifier
-                               .builder(clazzPac, new MwHybridMwStructurePacKey(interfacePacUuid)).child(clazzProblems).build();
-
-               HybridMwStructureCurrentProblems problems = GenericTransactionUtils.readData(netconfNodeDataBroker,
-                               LogicalDatastoreType.OPERATIONAL, mwEthInterfaceIID);
-               if (problems == null) {
-                       LOG.debug("DBRead Id {} no HybridMwStructureCurrentProblems", interfacePacUuid);
-               } else if (problems.getCurrentProblemList() == null) {
-                       LOG.debug("DBRead Id {} empty CurrentProblemsList", interfacePacUuid);
-               } else {
-                       for (StructureCurrentProblemTypeG problem : problems.getCurrentProblemList()) {
-                               resultList.add(new ProblemNotificationXml(mountPointNodeName, interfacePacUuid.getValue(),
-                                               problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                                               problem.getSequenceNumber().toString(), InternalDateAndTime.valueOf(problem.getTimeStamp())));
-                       }
-               }
-               return resultList;
-       }
-
-       /**
-        * Read problems of specific interfaces. TODO Goal for future implementation
-        * without usage of explicit new. Key is generated by newInstance() function
-        * here to verify this approach.
-        *
-        * @param uuId
-        *            Universal index of Interfacepac
-        * @return number of alarms
-        * @throws SecurityException
-        * @throws NoSuchMethodException
-        * @throws InvocationTargetException
-        * @throws IllegalArgumentException
-        * @throws IllegalAccessException
-        * @throws InstantiationException
-        */
-       private List<ProblemNotificationXml> readTheFaultsOfMwTdmContainerPac(UniversalId interfacePacUuid,
-                       List<ProblemNotificationXml> resultList) {
-
-               final Class<MwTdmContainerPac> clazzPac = MwTdmContainerPac.class;
-               final Class<MwTdmContainerPacKey> clazzPacKey = MwTdmContainerPacKey.class;
-               final Class<TdmContainerCurrentProblems> clazzProblems = TdmContainerCurrentProblems.class;
-               // final Class<ContainerCurrentProblemTypeG> clazzProblem =
-               // ContainerCurrentProblemTypeG.class;
-
-               LOG.info("DBRead Get problems for class {} from mountpoint {} for uuid {}", clazzPac.getSimpleName(),
-                               mountPointNodeName, interfacePacUuid.getValue());
-
-               try {
-                       // -- Specific part 1
-                       Constructor<MwTdmContainerPacKey> cons = clazzPacKey.getConstructor(UniversalId.class); // Avoid new()
-                       InstanceIdentifier<TdmContainerCurrentProblems> mwEthInterfaceIID = InstanceIdentifier
-                                       .builder(clazzPac, cons.newInstance(interfacePacUuid)).child(clazzProblems).build();
-
-                       // -- Specific part 2
-                       TdmContainerCurrentProblems problems = GenericTransactionUtils.readData(netconfNodeDataBroker,
-                                       LogicalDatastoreType.OPERATIONAL, mwEthInterfaceIID);
-                       if (problems == null) {
-                               LOG.debug("DBRead Id {} no TdmContainerCurrentProblems", interfacePacUuid);
-                       } else if (problems.getCurrentProblemList() == null) {
-                               LOG.debug("DBRead Id {} empty CurrentProblemsList", interfacePacUuid);
-                       } else {
-                               // -- Specific part 3
-                               for (ContainerCurrentProblemTypeG problem : problems.getCurrentProblemList()) {
-                                       resultList.add(new ProblemNotificationXml(mountPointNodeName, interfacePacUuid.getValue(),
-                                                       problem.getProblemName(), InternalSeverity.valueOf(problem.getProblemSeverity()),
-                                                       problem.getSequenceNumber().toString(),
-                                                       InternalDateAndTime.valueOf(problem.getTimeStamp())));
-                               }
-                       }
-               } catch (NoSuchMethodException | SecurityException | InstantiationException | IllegalAccessException
-                               | IllegalArgumentException | InvocationTargetException e) {
-                       LOG.warn("Could not reade instance of MwTdmContainerPacKey: ", e);
-               }
-               return resultList;
-       }
-
-       private @Nullable Equipment readEquipmentPac(String interfacePacUuid) {
-
-               return this.readEquipmentPac(new UniversalId(interfacePacUuid));
-       }
-
-       /**
-        * Read problems of specific interfaces
-        *
-        * @param interfacePacUuid
-        *            Universal index of Equipmentpac
-        * @return Equipment or null
-        */
-       private @Nullable Equipment readEquipmentPac(UniversalId interfacePacUuid) {
-
-               final Class<Equipment> clazzPac = Equipment.class;
-
-               LOG.info("DBRead Get problems for class {} from mountpoint {} for uuid {}", clazzPac.getSimpleName(),
-                               mountPointNodeName, interfacePacUuid.getValue());
-
-               InstanceIdentifier<Equipment> equipmentIID = InstanceIdentifier
-                               .builder(Equipment.class, new EquipmentKey(interfacePacUuid)).build();
-
-               Equipment res = GenericTransactionUtils.readData(netconfNodeDataBroker, LogicalDatastoreType.OPERATIONAL,
-                               equipmentIID);
-
-               return res;
-       }
-
-       /**
-        * Remove all entries from list
-        */
-       @Override
-       public int removeAllCurrentProblemsOfNode() {
-               return microwaveEventListener.removeAllCurrentProblemsOfNode();
-       }
-
-       /**
-        * Register the listener
-        */
-       @Override
-       public void doRegisterMicrowaveEventListener(MountPoint mountPoint) {
-               LOG.info("End registration listener for Mountpoint {}", mountPoint.getIdentifier().toString());
-               final Optional<NotificationService> optionalNotificationService = mountPoint
-                               .getService(NotificationService.class);
-               final NotificationService notificationService = optionalNotificationService.get();
-               // notificationService.registerNotificationListener(microwaveEventListener);
-               listenerRegistrationresult = notificationService.registerNotificationListener(microwaveEventListener);
-               LOG.info("End registration listener for Mountpoint {} Listener: {} Result: {}",
-                               mountPoint.getIdentifier().toString(), optionalNotificationService, listenerRegistrationresult);
-       }
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElementBase.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElementBase.java
deleted file mode 100644 (file)
index b2d12d8..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.base.netconf;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.networkelement.currentproblemlist.rev161120.NetworkElementCurrentProblems;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * @author herbert
- *
- */
-public abstract class ONFCoreNetworkElementBase implements ONFCoreNetworkElementRepresentation {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ONFCoreNetworkElementBase.class);
-
-    protected static final String EMPTY = "";
-
-    protected final String mountPointNodeName;
-    protected final DataBroker netconfNodeDataBroker;
-    protected final Capabilities capabilities;
-    protected final boolean isNetworkElementCurrentProblemsSupporting10;
-
-    protected ONFCoreNetworkElementBase(String mountPointNodeName,
-            DataBroker netconfNodeDataBroker,
-            Capabilities capabilities ) {
-        LOG.info("Create ONFCoreNetworkElementBase");
-        this.mountPointNodeName = mountPointNodeName;
-        this.netconfNodeDataBroker = netconfNodeDataBroker;
-        this.capabilities = capabilities;
-
-        this.isNetworkElementCurrentProblemsSupporting10 = capabilities.isSupportingNamespace(NetworkElementCurrentProblems.QNAME);
-
-    }
-
-    @Override
-    public String getMountPointNodeName() {
-        return mountPointNodeName;
-    }
-
-    /*-----------------------------------------------------------------------------
-     * Sychronization
-     */
-
-    @Override
-       public void initSynchronizationExtension() {
-    }
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElementFactory.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElementFactory.java
deleted file mode 100644 (file)
index 343f5a9..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-package org.opendaylight.mwtn.base.netconf;
-
-import javax.annotation.Nullable;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.ReadTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
-import org.opendaylight.mwtn.devicemanager.impl.ProviderClient;
-import org.opendaylight.mwtn.devicemanager.impl.database.service.HtDatabaseEventsService;
-import org.opendaylight.mwtn.devicemanager.impl.xml.WebSocketServiceClient;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Optional;
-
-/**
- * Create a Network Element representation according to the capability information.
- * The capabilities are more than an ODL-QName. After the ? other terms than "revision" are provided.
- *
- */
-public class ONFCoreNetworkElementFactory {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ONFCoreNetworkElementFactory.class);
-
-    public static ONFCoreNetworkElementRepresentation create( String mountPointNodeName,
-            DataBroker dataBroker, WebSocketServiceClient webSocketService, HtDatabaseEventsService databaseService, InstanceIdentifier<Node> instanceIdentifier,
-            DataBroker mountpointDataBroker, ProviderClient dcaeProvider, @Nullable ProviderClient aotsmClient ) {
-
-        ReadTransaction tx=dataBroker.newReadOnlyTransaction();
-        ONFCoreNetworkElementRepresentation res = null;
-
-        try {
-            Optional<Node> nodeOption = tx.read(LogicalDatastoreType.OPERATIONAL,instanceIdentifier).checkedGet();
-            if (nodeOption.isPresent()) {
-                Node node = nodeOption.get();
-                NetconfNode nnode=node.getAugmentation(NetconfNode.class);
-                if (nnode != null) {
-                    ConnectionStatus csts=nnode.getConnectionStatus();
-                    if (csts == ConnectionStatus.Connected) {
-                        Capabilities capabilities = new Capabilities(nnode);
-                        LOG.info("Mountpoint {} capabilities {}",mountPointNodeName, capabilities);
-
-                        res = ONFCoreNetworkElement10.build(mountPointNodeName, capabilities, mountpointDataBroker, webSocketService, databaseService, dcaeProvider,aotsmClient);
-                        if (res == null) {
-                            res = ONFCoreNetworkElement12.build(mountPointNodeName, capabilities, mountpointDataBroker, webSocketService, databaseService, dcaeProvider,aotsmClient);
-                        }
-                    }
-                }
-            }
-        } catch (ReadFailedException | IllegalArgumentException e) {
-            LOG.warn("Can not generate specific NE Version representation. ", e);
-        }
-        if (res == null) {
-            res = new ONFCoreEmpty(mountPointNodeName);
-        }
-
-        LOG.info("Mointpoint {} started as {}", mountPointNodeName,res.getClass().getSimpleName() );
-
-        return res;
-    }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElementRepresentation.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFCoreNetworkElementRepresentation.java
deleted file mode 100644 (file)
index b0c5590..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-package org.opendaylight.mwtn.base.netconf;
-
-import org.opendaylight.controller.md.sal.binding.api.MountPoint;
-import org.opendaylight.mwtn.base.internalTypes.InventoryInformation;
-import org.opendaylight.mwtn.deviceMonitor.impl.DeviceMonitorSupport;
-
-public interface ONFCoreNetworkElementRepresentation extends DeviceMonitorSupport {
-
-       public void initialReadFromNetworkElement();
-
-       public String getMountPointNodeName();
-
-       public void resetPMIterator();
-
-       public boolean hasNext();
-
-       public void next();
-
-       public AllPm getHistoricalPM();
-
-       public String pmStatusToString();
-
-       public int removeAllCurrentProblemsOfNode();
-
-       public void doRegisterMicrowaveEventListener(MountPoint mountPoint);
-
-       public void initSynchronizationExtension();
-
-       public InventoryInformation getInventoryInformation();
-
-       public InventoryInformation getInventoryInformation(String layerProtocolFilter);
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFLayerProtocolName.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/base/netconf/ONFLayerProtocolName.java
deleted file mode 100644 (file)
index e04851f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.opendaylight.mwtn.base.netconf;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public enum ONFLayerProtocolName {
-
-    MWAirInterface("MWPS"),                    //V1.0 + V1.2
-    EthernetContainer10("ETH-CTP"),            //V1.0
-    EthernetContainer12("ETC"),                //V1.2
-    EthernetPhysical("ETY"),                //V1.2
-    TDMContainer("TDM"),                    //V1.2
-    Structure("MWS"),                        //V1.0 + V1.2
-    Ethernet("ETH"),                        //V1.2
-    Unknown("");
-
-    private static final Logger LOG = LoggerFactory.getLogger(ONFLayerProtocolName.class);
-
-    private final String myLayerProtocolName;
-
-    ONFLayerProtocolName( String myLayerProtocolName ) {
-        this.myLayerProtocolName = myLayerProtocolName;
-    }
-
-    public boolean is( org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.LayerProtocolName onfName ) {
-        return myLayerProtocolName.equals(onfName.getValue());
-    }
-
-    public boolean is( org.opendaylight.yang.gen.v1.uri.onf.coremodel.corenetworkmodule.typedefinitions.rev160710.LayerProtocolName onfName ) {
-        return myLayerProtocolName.equals(onfName.getValue());
-    }
-
-    public static ONFLayerProtocolName valueOf( org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.LayerProtocolName onfName ) {
-        for (ONFLayerProtocolName protocol : ONFLayerProtocolName.values()) {
-            if (protocol.is(onfName)) {
-                return protocol;
-            }
-        }
-        LOG.info("Can not map {}. Use Unknown",onfName.getValue() );
-        return Unknown;
-    }
-
-    public static ONFLayerProtocolName valueOf( org.opendaylight.yang.gen.v1.uri.onf.coremodel.corenetworkmodule.typedefinitions.rev160710.LayerProtocolName onfName ) {
-        for (ONFLayerProtocolName protocol : ONFLayerProtocolName.values()) {
-            if (protocol.is(onfName)) {
-                return protocol;
-            }
-        }
-        LOG.info("Can not map {}. Use Unknown",onfName.getValue() );
-        return Unknown;
-    }
-}
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/AaiClientPropertiesFile.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/AaiClientPropertiesFile.java
deleted file mode 100644 (file)
index 46ffa63..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-package org.opendaylight.mwtn.config.impl;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-public class AaiClientPropertiesFile{
-
-       private final File mFile;
-       private String mPCKS12CertFilename;
-       private String mPCKS12Passphrase;
-       private boolean mTrustInsecureSSL;
-       private String mApplicationIdentifier;
-       private String mRemoteUrl;
-       private int mConnectionTimeout;
-       private int mReadTimeout;
-
-       public String getFilename()
-       { return this.mFile.getAbsolutePath();  }
-       public String getPCKS12CertFilename()
-       {return this.mPCKS12CertFilename;}
-       public String getPCKS12Passphrase()
-       {return this.mPCKS12Passphrase; }
-       public boolean trustInsecureSSL()
-       {return this.mTrustInsecureSSL;}
-       public String getApplicationIdentifier()
-       {return this.mApplicationIdentifier;}
-       public String getRemoteUrl()
-       {return this.mRemoteUrl;}
-       public int getConnectionTimeout()
-       {return this.mConnectionTimeout;}
-       public int getReadTimeout()
-       {return this.mReadTimeout;}
-
-       public boolean exists()
-       {return this.mFile.exists();}
-       public AaiClientPropertiesFile(String filename)
-       {
-               this.mFile=new File(filename);
-       }
-       public void load() throws IOException,NumberFormatException
-       {
-               Properties defaultProps = new Properties();
-               FileInputStream in = new FileInputStream(this.mFile);
-               defaultProps.load(in);
-               this.mPCKS12CertFilename=defaultProps.getProperty("org.onap.ccsdk.sli.adaptors.aai.ssl.key",null);
-               this.mPCKS12Passphrase=defaultProps.getProperty("org.onap.ccsdk.sli.adaptors.aai.ssl.key.psswd",null);
-               this.mTrustInsecureSSL=defaultProps.getProperty("org.onap.ccsdk.sli.adaptors.aai.host.certificate.ignore","false").equals("true");
-               this.mApplicationIdentifier=defaultProps.getProperty("org.onap.ccsdk.sli.adaptors.aai.application",null);
-               this.mRemoteUrl=defaultProps.getProperty("org.onap.ccsdk.sli.adaptors.aai.uri",null);
-               this.mConnectionTimeout=Integer.parseInt(defaultProps.getProperty("connection.timeout","60000"));
-               this.mReadTimeout=Integer.parseInt(defaultProps.getProperty("read.timeout","60000"));
-               in.close();
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/AaiConfig.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/AaiConfig.java
deleted file mode 100644 (file)
index 370860f..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-package org.opendaylight.mwtn.config.impl;
-
-import java.io.IOException;
-import java.util.Base64;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile.ConfigurationException;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration.ISubConfigHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class AaiConfig extends BaseSubConfig {
-
-       private static final Logger LOG = LoggerFactory.getLogger(AaiConfig.class);
-
-       private static final String SECTION_MARKER_AAI = "aai";
-
-       private static final String PROPERTY_KEY_AAIPROP_FILE ="aaiPropertiesFile";
-       private static final String PROPERTY_KEY_BASEURL = "aaiUrl";
-       private static final String PROPERTY_KEY_USERCREDENTIALS = "aaiUserCredentials";
-       private static final String PROPERTY_KEY_HEADERS = "aaiHeaders";
-       private static final String PROPERTY_KEY_DELETEONMOUNTPOINTREMOVED = "aaiDeleteOnMountpointRemove";
-       private static final String PROPERTY_KEY_TRUSTALLCERTS = "aaiTrustAllCerts";
-       private static final String PROPERTY_KEY_APIVERSION = "aaiApiVersion";
-       private static final String PROPERTY_KEY_PCKS12CERTFILENAME = "aaiPcks12ClientCertFile";
-       private static final String PROPERTY_KEY_PCKS12PASSPHRASE = "aaiPcks12ClientCertPassphrase";
-       private static final String PROPERTY_KEY_CONNECTIONTIMEOUT = "aaiClientConnectionTimeout";
-       private static final String PROPERTY_KEY_APPLICATIONID = "aaiApplicationId";
-
-       private static final String DEFAULT_VALUE_AAIPROP_FILE ="null";
-       private static final String DEFAULT_VALUE_BASEURL = "off";
-       private static final String DEFAULT_VALUE_APPLICATION = "SDNR";
-       private static final String DEFAULT_VALUE_USERNAME = "";
-       private static final String DEFAULT_VALUE_USERPASSWORD = "";
-       private static final String DEFAULT_VALUE_USERCREDENTIALS = "";
-       private static final String DEFAULT_VALUE_HEADERS = "[\"X-TransactionId: 9999\"]";
-       private static final boolean DEFAULT_VALUE_DELETEONMOUNTPOINTREMOVED = false;
-       private static final boolean DEFAULT_VALUE_TRUSTALLCERTS = false;
-       private static final int DEFAULT_VALUE_CONNECTION_TIMEOUT = 30000;      //in ms
-       private static final String DEFAULT_VALUE_APIVERSION = "aai/v13";
-       private static final String DEFAULT_VALUE_PCKS12CERTFILENAME ="";
-       private static final String DEFAULT_VALUE_PCKS12PASSPHRASE = "";
-       private static final String DEFAULT_VALUE_APPLICATIONID = "SDNR";
-
-       private static final String HEADER_KEY_APPLICATION = "X-FromAppId";
-
-
-       private static AaiConfig aaiConfig;
-
-       private String aaiPropFile;
-       private String baseUrl;
-       private String apiVersion;
-       private String applicationIdentifier;
-       private String username;
-       private String password;
-       private String pcks12CertificateFilename;
-       private String pcks12CertificatePassphrase;
-       private int connectionTimeout;
-       private boolean deleteOnMountPointRemoved;
-       private boolean trustAllCerts;
-
-       public boolean doDeleteOnMountPointRemoved() {
-               return this.deleteOnMountPointRemoved;
-       }
-
-       private Map<String, String> headers;
-
-
-       private AaiConfig() {
-               super();
-               this.aaiPropFile = DEFAULT_VALUE_AAIPROP_FILE;
-               this.apiVersion=DEFAULT_VALUE_APIVERSION;
-               this.applicationIdentifier = DEFAULT_VALUE_APPLICATION;
-               this.baseUrl = DEFAULT_VALUE_BASEURL;
-               this.username = DEFAULT_VALUE_USERNAME;
-               this.password = DEFAULT_VALUE_USERPASSWORD;
-               this.deleteOnMountPointRemoved = DEFAULT_VALUE_DELETEONMOUNTPOINTREMOVED;
-               this.trustAllCerts=DEFAULT_VALUE_TRUSTALLCERTS;
-               this.applicationIdentifier=DEFAULT_VALUE_APPLICATIONID;
-       }
-
-       /*
-        * private void change(AaiConfig cfg) { this.baseUrl=cfg.baseUrl;
-        * this.username=cfg.username; this.password=cfg.password;
-        * this.deleteOnMountPointRemoved=cfg.deleteOnMountPointRemoved; }
-        */
-       public AaiConfig(IniConfigurationFile config, ISubConfigHandler configHandler) throws ConfigurationException {
-               this(config, configHandler, true);
-       }
-
-       public AaiConfig(IniConfigurationFile config, ISubConfigHandler configHandler, boolean save)
-                       throws ConfigurationException {
-               super(config, configHandler, SECTION_MARKER_AAI);
-               // load
-               this.aaiPropFile=this.getString(PROPERTY_KEY_AAIPROP_FILE, "");
-               AaiClientPropertiesFile aaiProperties = new AaiClientPropertiesFile(this.aaiPropFile);
-               String defBaseUrl=DEFAULT_VALUE_BASEURL;
-               String defPCKSCertFilename=DEFAULT_VALUE_PCKS12CERTFILENAME;
-               String defPCKSPassphrase=DEFAULT_VALUE_PCKS12PASSPHRASE;
-               String defApplicationId=DEFAULT_VALUE_APPLICATION;
-               int defconnectionTimeout=DEFAULT_VALUE_CONNECTION_TIMEOUT;
-               boolean loaded=false;
-               if(aaiProperties.exists())
-               {
-                       LOG.debug("found another aaiclient.properties file");
-                       try
-                       {
-                               aaiProperties.load();
-                               loaded=true;
-                               LOG.debug("loaded successfully");
-                       }
-                       catch(IOException|NumberFormatException e)
-                       {
-                               LOG.warn("problem loading external properties file "+aaiProperties.getFilename()+": "+e.getMessage());
-                       }
-                       if(loaded)      //preload new default values
-                       {
-                               String value;
-                               value = aaiProperties.getRemoteUrl();
-                               if (value != null)
-                                       defBaseUrl = value;
-                               value = aaiProperties.getPCKS12CertFilename();
-                               if (value != null)
-                                       defPCKSCertFilename = value;
-                               value = aaiProperties.getPCKS12Passphrase();
-                               if (value != null)
-                                       defPCKSPassphrase = value;
-                               value = aaiProperties.getApplicationIdentifier();
-                               if (value != null)
-                                       defApplicationId = value;
-                       }
-               }
-               else
-                       LOG.debug("no aaiclient.properties file found");
-
-
-               this.baseUrl = this.getString(PROPERTY_KEY_BASEURL, defBaseUrl);
-               this.apiVersion=this.getString(PROPERTY_KEY_APIVERSION,DEFAULT_VALUE_APIVERSION);
-               String credentials = this.getString(PROPERTY_KEY_USERCREDENTIALS, DEFAULT_VALUE_USERCREDENTIALS);
-               if (credentials.contains(":")) {
-                       try {
-                               this.username = credentials.split(":")[0];
-                               this.password = credentials.split(":")[1];
-                       } catch (Exception e) {
-                               this.username = DEFAULT_VALUE_USERNAME;
-                               this.password = DEFAULT_VALUE_USERPASSWORD;
-                       }
-               } else {
-                       this.username = DEFAULT_VALUE_USERNAME;
-                       this.password = DEFAULT_VALUE_USERPASSWORD;
-               }
-               this.headers = _parseHeadersMap(this.getString(PROPERTY_KEY_HEADERS, DEFAULT_VALUE_HEADERS));
-               this.applicationIdentifier = this.getString(PROPERTY_KEY_APPLICATIONID, defApplicationId);
-               this.pcks12CertificateFilename=this.getString(PROPERTY_KEY_PCKS12CERTFILENAME, defPCKSCertFilename);
-               this.pcks12CertificatePassphrase=this.getString(PROPERTY_KEY_PCKS12PASSPHRASE, defPCKSPassphrase);
-               this.connectionTimeout = this.getInt(PROPERTY_KEY_CONNECTIONTIMEOUT, defconnectionTimeout);
-               this.deleteOnMountPointRemoved = this.getBoolean(PROPERTY_KEY_DELETEONMOUNTPOINTREMOVED,
-                               DEFAULT_VALUE_DELETEONMOUNTPOINTREMOVED);
-               this.trustAllCerts = this.getBoolean(PROPERTY_KEY_TRUSTALLCERTS, DEFAULT_VALUE_TRUSTALLCERTS);
-
-               boolean missing=(!this.hasKey(PROPERTY_KEY_APPLICATIONID))|| (!this.hasKey(PROPERTY_KEY_CONNECTIONTIMEOUT))||
-                               (!this.hasKey(PROPERTY_KEY_TRUSTALLCERTS)) || (!this.hasKey(PROPERTY_KEY_PCKS12CERTFILENAME)) ||
-                               (!this.hasKey(PROPERTY_KEY_PCKS12PASSPHRASE));
-               if(missing)
-                       LOG.debug("some params missing in config file");
-               //re-save if external aaiproperties file changed to show that params are submitted internally
-               if(missing || (aaiConfig!=null && aaiConfig!=this && (
-                               !propertyEquals(aaiConfig.aaiPropFile, this.aaiPropFile) ||
-                               !propertyEquals(aaiConfig.pcks12CertificateFilename, this.pcks12CertificateFilename) ||
-                               !propertyEquals(aaiConfig.pcks12CertificatePassphrase, this.pcks12CertificatePassphrase) ||
-                               !propertyEquals(aaiConfig.connectionTimeout, this.connectionTimeout)
-
-                               )))
-               {
-                       LOG.debug("force saving because of reload changes from remote file");
-                       save=true;
-               }
-               if (save) {
-                       config.setProperty(SECTION_MARKER_AAI + "." + PROPERTY_KEY_BASEURL, this.baseUrl);
-                       config.setProperty(SECTION_MARKER_AAI + "." + PROPERTY_KEY_USERCREDENTIALS,
-                                       (nullorempty(this.username) && nullorempty(this.password))?"":(this.username + ":" + this.password));
-                       config.setProperty(SECTION_MARKER_AAI + "." + PROPERTY_KEY_HEADERS, _printHeadersMap(this.headers));
-                       config.setProperty(SECTION_MARKER_AAI + "." + PROPERTY_KEY_DELETEONMOUNTPOINTREMOVED,
-                                       this.deleteOnMountPointRemoved);
-                       config.setProperty(SECTION_MARKER_AAI + "." + PROPERTY_KEY_TRUSTALLCERTS, this.trustAllCerts);
-                       config.setProperty(SECTION_MARKER_AAI+"."+PROPERTY_KEY_AAIPROP_FILE, this.aaiPropFile);
-                       config.setProperty(SECTION_MARKER_AAI+"."+PROPERTY_KEY_APIVERSION,this.apiVersion);
-                       config.setProperty(SECTION_MARKER_AAI+"."+PROPERTY_KEY_APPLICATIONID, this.applicationIdentifier);
-                       config.setProperty(SECTION_MARKER_AAI+"."+PROPERTY_KEY_CONNECTIONTIMEOUT, this.connectionTimeout);
-                       /*if(this.pcks12CertificateFilename !=null && !this.pcks12CertificateFilename.isEmpty() &&
-                                       this.pcks12CertificatePassphrase!=null && !this.pcks12CertificatePassphrase.isEmpty())*/
-                       {
-                               LOG.debug("no client credentials to save");
-                               config.setProperty(SECTION_MARKER_AAI+"."+PROPERTY_KEY_PCKS12CERTFILENAME, this.pcks12CertificateFilename);
-                               config.setProperty(SECTION_MARKER_AAI+"."+PROPERTY_KEY_PCKS12PASSPHRASE, this.pcks12CertificatePassphrase);
-                       }
-                       LOG.debug("save");
-                       this.save();
-               }
-       }
-
-       private boolean nullorempty(String s) {
-               return s==null || s.isEmpty();
-       }
-
-       public boolean isOff() {
-               return this.baseUrl == null || this.baseUrl.toLowerCase().equals("off");
-       }
-
-       private static boolean propertyEquals(final Object p1,final Object p2)
-       {
-               return (p1==null && (p2==null) || p1.equals(p2));
-       }
-       private static boolean propertyEquals(final boolean p1,final boolean p2)
-       {
-               return p1==p2;
-       }
-       private static boolean propertyEquals(final int p1,final int p2)
-       {
-               return p1==p2;
-       }
-       @Override
-       public boolean equals(Object obj) {
-               if (obj instanceof AaiConfig) {
-                       AaiConfig cobj = (AaiConfig) obj;
-                       if(!AaiConfig.propertyEquals(cobj.baseUrl, this.baseUrl))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.apiVersion, this.apiVersion))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.username, this.username))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.password, this.password))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.deleteOnMountPointRemoved, this.deleteOnMountPointRemoved))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.headers, this.headers))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.trustAllCerts, this.trustAllCerts))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.aaiPropFile, this.aaiPropFile))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.connectionTimeout, this.connectionTimeout))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.pcks12CertificateFilename, this.pcks12CertificateFilename))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.pcks12CertificatePassphrase, this.pcks12CertificatePassphrase))
-                               return false;
-                       if(!AaiConfig.propertyEquals(cobj.applicationIdentifier, this.applicationIdentifier))
-                               return false;
-
-                       /*
-                       if (!((cobj.baseUrl == null && this.baseUrl == null) || cobj.baseUrl.equals(this.baseUrl)))
-                               return false;
-                       if (!((cobj.apiVersion == null && this.apiVersion == null) || cobj.apiVersion.equals(this.apiVersion)))
-                               return false;
-                       if (!((cobj.username == null && this.username == null) || cobj.username.equals(this.username)))
-                               return false;
-                       if (!((cobj.password == null && this.password == null) || cobj.password.equals(this.password)))
-                               return false;
-                       if (!(cobj.deleteOnMountPointRemoved != this.deleteOnMountPointRemoved))
-                               return false;
-                       if (!((cobj.headers == null && this.headers == null) || cobj.headers.equals(this.headers)))
-                               return false;
-                       if (!(cobj.trustAllCerts != this.trustAllCerts))
-                               return false;
-*/
-                       return true;
-               }
-               return super.equals(obj);
-       }
-
-       public String getBaseUrl() {
-               String url=this.baseUrl;
-               if(!url.endsWith("/"))
-                       url+="/";
-               if(this.apiVersion.startsWith("/"))
-                       this.apiVersion=this.apiVersion.substring(1);
-               return url+this.apiVersion;
-       }
-
-       public Map<String, String> getHeaders() {
-               if (this.headers == null)
-                       this.headers = new HashMap<String, String>();
-               this.headers.put(HEADER_KEY_APPLICATION, this.applicationIdentifier);
-               String s = this.headers.getOrDefault("Authorization", null);
-               if (nullorempty(s) && !nullorempty(this.username) && !nullorempty(this.password)) {
-                       this.headers.put("Authorization", "Basic "
-                                       + new String(Base64.getEncoder().encode((this.username + ":" + this.password).getBytes())));
-               }
-               return this.headers;
-       }
-
-       @Override
-       public String toString() {
-               return "AaiConfig [aaiPropFile=" + aaiPropFile + ", baseUrl=" + baseUrl + ", apiVersion=" + apiVersion
-                               + ", applicationIdentifier=" + applicationIdentifier + ", username=" + username + ", password="
-                               + password + ", pcks12CertificateFilename=" + pcks12CertificateFilename
-                               + ", pcks12CertificatePassphrase=" + pcks12CertificatePassphrase + ", connectionTimeout="
-                               + connectionTimeout + ", deleteOnMountPointRemoved=" + deleteOnMountPointRemoved + ", trustAllCerts="
-                               + trustAllCerts + ", headers=" + this.getHeaders() + "]";
-       }
-
-       private static String _printHeadersMap(Map<String, String> headers) {
-               String r = "[";
-               if (headers != null) {
-                       int i = 0;
-                       for (Entry<String, String> entry : headers.entrySet()) {
-                               if (i > 0)
-                                       r += ",";
-                               r += "\"" + entry.getKey() + ":" + entry.getValue() + "\"";
-                               i++;
-                       }
-               }
-               r += "]";
-               return r;
-       }
-
-       private static Map<String, String> _parseHeadersMap(String s) throws JSONException {
-               Map<String, String> r = new HashMap<String, String>();
-               JSONArray a = new JSONArray(s);
-               if (a != null && a.length() > 0) {
-                       for (int i = 0; i < a.length(); i++) {
-                               String item = a.getString(i);
-                               String[] hlp = item.split(":");
-                               if (hlp.length > 1) {
-                                       r.put(hlp[0], hlp[1]);
-                               }
-                       }
-               }
-               return r;
-       }
-
-       public static boolean isInstantiated() {
-               return aaiConfig != null;
-       }
-
-       public static AaiConfig getDefaultConfiguration() {
-               return new AaiConfig();
-       }
-
-       public static AaiConfig getAai(IniConfigurationFile config, ISubConfigHandler configHandler) {
-               if (aaiConfig == null)
-                       try {
-                               aaiConfig = new AaiConfig(config, configHandler);
-                       } catch (ConfigurationException e) {
-                               aaiConfig = AaiConfig.getDefaultConfiguration();
-                       }
-               return aaiConfig;
-       }
-
-       public static AaiConfig reload() {
-               if (aaiConfig == null)
-                       return null;
-               AaiConfig tmpConfig;
-               try {
-                       tmpConfig = new AaiConfig(aaiConfig.getConfig(), aaiConfig.getConfigHandler(), false);
-               } catch (ConfigurationException e) {
-                       tmpConfig = AaiConfig.getDefaultConfiguration();
-                       LOG.warn("problem loading config: "+e.getMessage());
-               }
-               aaiConfig = tmpConfig;
-               return aaiConfig;
-       }
-
-       public boolean getTrustAll() {
-               return this.trustAllCerts;
-       }
-
-       public String getPcks12CertificateFilename() {
-               return this.pcks12CertificateFilename;
-       }
-
-       public String getPcks12CertificatePassphrase() {
-               return this.pcks12CertificatePassphrase;
-       }
-
-       public int getConnectionTimeout() {
-               return this.connectionTimeout;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/AkkaConfig.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/AkkaConfig.java
deleted file mode 100644 (file)
index 7f430a3..0000000
+++ /dev/null
@@ -1,260 +0,0 @@
-package org.opendaylight.mwtn.config.impl;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
-
-public class AkkaConfig {
-
-       private static final Logger LOG = LoggerFactory.getLogger(AkkaConfig.class);
-
-       public static class ClusterNodeInfo {
-               @Override
-               public String toString() {
-                       return "ClusterNodeInfo [protocol=" + protocol + ", clusterName=" + clusterName + ", remoteAdr=" + remoteAdr
-                                       + ", port=" + port + "]";
-               }
-
-               private final String protocol;
-               private final String clusterName;
-               private final String remoteAdr;
-               private final int port;
-
-               public String getRemoteAddress() {
-                       return this.remoteAdr;
-               }
-
-               public ClusterNodeInfo(String s) throws Exception {
-                       final String regex = "([a-z.]*):\\/\\/([a-zA-Z0-9-]*)@([a-zA-Z0-9.-]*):([0-9]*)";
-                       final Pattern pattern = Pattern.compile(regex);
-                       final Matcher matcher = pattern.matcher(s);
-                       if (!matcher.find())
-                               throw new Exception("invalid seedNode format");
-                       this.protocol = matcher.group(1);
-                       this.clusterName = matcher.group(2);
-                       this.remoteAdr = matcher.group(3);
-                       this.port = Integer.parseInt(matcher.group(4));
-               }
-
-               public ClusterNodeInfo(String protocol, String clustername, String remoteadr, int port) {
-                       this.protocol=protocol;
-                       this.clusterName=clustername;
-                       this.remoteAdr=remoteadr;
-                       this.port=port;
-               }
-
-               public static ClusterNodeInfo defaultSingleNodeInfo() {
-                       return new ClusterNodeInfo("akka.tcp","opendaylight-cluster-data","127.0.0.1",2550);
-               }
-       }
-
-       public static class ClusterRoleInfo {
-               private final String Role;
-               private final int Index;
-
-               public ClusterRoleInfo(String s) throws Exception {
-                       final String regex = "([a-zA-Z]*)-([0-9]*)";
-                       final Pattern pattern = Pattern.compile(regex);
-                       final Matcher matcher = pattern.matcher(s);
-                       if (!matcher.find())
-                               throw new Exception("unexpected role format:"+s);
-                       this.Role = matcher.group(1);
-                       this.Index = Integer.parseInt(matcher.group(2));
-               }
-
-               private ClusterRoleInfo(String role, int idx) {
-                       this.Role=role;
-                       this.Index=idx;
-               }
-
-               @Override
-               public boolean equals(Object obj) {
-                       if(obj instanceof ClusterRoleInfo)
-                               return ((ClusterRoleInfo)obj).Index== this.Index && ((ClusterRoleInfo)obj).Role.equals(this.Role);
-                       return super.equals(obj);
-               }
-               public static ClusterRoleInfo defaultSingleNodeRole() {
-                       return new ClusterRoleInfo("member",1);
-               }
-               @Override
-               public String toString() {
-                       return "ClusterRoleInfo [Role=" + Role + ", Index=" + Index + "]";
-               }
-       }
-       public static class ClusterRoleInfoCollection extends ArrayList<ClusterRoleInfo>
-       {
-               private static final long serialVersionUID = 1L;
-               public ClusterRoleInfo get(String role)
-               {
-                       for(ClusterRoleInfo info:this)
-                       {
-                               if(info.Role.equals(role))
-                                       return info;
-                       }
-                       return null;
-               }
-               public boolean contains(ClusterRoleInfo info)
-               {
-                       if(info==null)
-                               return false;
-                       for(ClusterRoleInfo i:this)
-                       {
-                               if(i.equals(info))
-                                       return true;
-                       }
-                       return false;
-               }
-       }
-       public static class ClusterConfig {
-               @Override
-               public String toString() {
-                       return "ClusterConfig [seedNodes=" + seedNodes + ", roles=" + roles + "]";
-               }
-
-               private final List<ClusterNodeInfo> seedNodes;
-               private final ClusterRoleInfoCollection roles;
-               private ClusterNodeInfo ismeInfo;
-
-               public static ClusterConfig defaultSingleNodeConfig()
-               {
-                       ClusterConfig cfg=new ClusterConfig();
-                       cfg.ismeInfo=ClusterNodeInfo.defaultSingleNodeInfo();
-                       cfg.seedNodes.add(cfg.ismeInfo);
-                       cfg.roles.add(ClusterRoleInfo.defaultSingleNodeRole());
-                       return cfg;
-               }
-               private ClusterConfig()
-               {
-                       this.seedNodes = new ArrayList<ClusterNodeInfo>();
-                       this.roles = new ClusterRoleInfoCollection();
-
-               }
-               public ClusterConfig(Config o) throws Exception {
-                       {
-                               this.seedNodes = new ArrayList<ClusterNodeInfo>();
-                               this.roles = new ClusterRoleInfoCollection();
-                               List<String> a = o.getStringList("seed-nodes");
-                               for (int i = 0; i < a.size(); i++) {
-                                       ClusterNodeInfo info = new ClusterNodeInfo(a.get(i));
-                                       this.seedNodes.add(info);
-                               }
-                               a = o.getStringList("roles");
-                               for (int i = 0; i < a.size(); i++) {
-                                       ClusterRoleInfo s = new ClusterRoleInfo(a.get(i));
-                                       this.roles.add(s);
-                               }
-                               int idx = this.roles.get(0).Index - 1;
-                               if (idx >= 0 && idx < this.seedNodes.size())
-                                       this.ismeInfo = this.seedNodes.get(idx);
-                               else
-                                       this.ismeInfo = null;
-                       }
-
-               }
-
-               public boolean isCluster() {
-                       return this.seedNodes != null ? this.seedNodes.size() > 1 : false;
-               }
-
-               public boolean isMe(ClusterNodeInfo i) {
-                       return this.ismeInfo != null ? this.ismeInfo.equals(i) : false;
-               }
-
-               public List<ClusterNodeInfo> getSeedNodes() {
-                       return this.seedNodes;
-               }
-
-               public String getHostName(String defaultValue) {
-                       if (getRoleMemberIndex() > 0 && getRoleMemberIndex() <= seedNodes.size())
-                               return this.seedNodes.get(getRoleMemberIndex()-1).remoteAdr;
-                       else {
-                               LOG.warn("Seednode not available for roleMemberIndex {}. Using default {}",getRoleMember(), defaultValue);
-                               return defaultValue;
-                       }
-               }
-
-               public String getDBClusterName(String defaultValue) {
-                       String r = null;
-                       if (this.seedNodes != null && this.seedNodes.size() > 0) {
-                               r = String.format("cluster-%s.%d", this.seedNodes.get(0).remoteAdr, this.seedNodes.get(0).port);
-                       }
-                       if (r == null || r.isEmpty())
-                               r = defaultValue;
-                       return r;
-               }
-
-               public int getRoleMemberIndex() {
-
-                       ClusterRoleInfo role=this.roles.get("member");
-                       return role!=null?role.Index:0;
-               }
-               public ClusterRoleInfo getRoleMember() {
-                       return this.roles.get("member");
-               }
-       }
-
-       private static final String DEFAULT_FILENAME = "configuration/initial/akka.conf";
-       private final String filename;
-       private ClusterConfig cluserConfig;
-
-       public ClusterConfig getClusterConfig() {
-               return this.cluserConfig;
-       }
-
-       private AkkaConfig(String filename) {
-               this.filename = filename;
-       }
-
-       public AkkaConfig() {
-               this(null);
-       }
-
-       @Override
-       public String toString() {
-               return "AkkaConfig [filename=" + filename + ", cluserConfig=" + cluserConfig + "]";
-       }
-
-       private void loadFromFile() throws Exception {
-               Config cfg = ConfigFactory.parseFile(new File(this.filename));
-               this.cluserConfig = new ClusterConfig(cfg.getConfig("odl-cluster-data").getConfig("akka").getConfig("cluster"));
-       }
-
-       public boolean isCluster() {
-               return this.cluserConfig != null ? this.cluserConfig.isCluster() : false;
-       }
-
-       public static AkkaConfig load() throws Exception {
-               return load(DEFAULT_FILENAME);
-       }
-
-       public static AkkaConfig load(String filename) throws Exception {
-               AkkaConfig cfg = new AkkaConfig(filename);
-               cfg.loadFromFile();
-               return cfg;
-       }
-
-       public boolean isSingleNode() {
-               return !this.isCluster();
-       }
-       public static AkkaConfig defaultSingleNodeConfig()
-       {
-               AkkaConfig cfg=new AkkaConfig();
-               cfg.cluserConfig=new ClusterConfig();
-               return cfg;
-       }
-
-       public static AkkaConfig parse(String content) throws Exception {
-               Config cfg = ConfigFactory.parseString(content);
-               AkkaConfig c=new AkkaConfig();
-               c.cluserConfig=new ClusterConfig(cfg.getConfig("odl-cluster-data").getConfig("akka").getConfig("cluster"));
-               return c;
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/BaseSubConfig.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/BaseSubConfig.java
deleted file mode 100644 (file)
index df6b72b..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-package org.opendaylight.mwtn.config.impl;
-
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile.ConversionException;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile.Section;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration.ISubConfigHandler;
-
-public class BaseSubConfig {
-
-
-       private final Section subconfig;
-       private final ISubConfigHandler configHandler;
-       private final IniConfigurationFile config;
-       protected Section getSubConfig() {
-               return this.subconfig;
-       }
-       protected ISubConfigHandler getConfigHandler() {
-               return this.configHandler;
-       }
-       protected IniConfigurationFile getConfig() {
-               return this.config;
-       }
-       public BaseSubConfig()
-       {
-               this.config=null;
-               this.subconfig=null;
-               this.configHandler=null;
-       }
-       public BaseSubConfig(IniConfigurationFile config, ISubConfigHandler configHandler,String section) {
-               this.config = config;
-               this.subconfig = config.subset(section);
-               this.configHandler = configHandler;
-       }
-       protected boolean hasKey(String key)
-       {
-               if(this.subconfig==null)
-                       return false;
-               return this.subconfig.hasKey(key);
-       }
-       protected String getString(String key,String def)
-       {
-               if(this.subconfig==null)
-                       return def;
-               String s;
-               //try
-               {
-                       s=this.subconfig.getString(key, def);
-                       if(s.isEmpty())
-                               s=def;
-               }
-               /*catch(ConversionException e)
-               {
-                       s=def;
-               }
-               */
-               return s;
-       }
-       protected boolean getBoolean(String key, boolean def) {
-               if(this.subconfig==null)
-                       return def;
-               boolean s;
-               try {
-                       s=this.subconfig.getBoolean(key, def);
-               }
-               catch(ConversionException e)
-               {
-                       s=def;
-               }
-               return s;
-       }
-       protected int getInt(String key, int def) {
-               if(this.subconfig==null)
-                       return def;
-               int s;
-               try {
-                       s=this.subconfig.getInt(key, def);
-               }
-               catch(ConversionException e)
-               {
-                       s=def;
-               }
-               return s;
-       }
-       protected void save()
-       {
-               if(this.configHandler!=null)
-                       this.configHandler.save();
-       }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/DcaeConfig.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/DcaeConfig.java
deleted file mode 100644 (file)
index fa12ede..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-package org.opendaylight.mwtn.config.impl;
-
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile.ConfigurationException;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration.ISubConfigHandler;
-
-public class DcaeConfig extends BaseSubConfig {
-       private static final String SECTION_MARKER_DCAE = "dcae";
-
-       private static final String PROPERTY_KEY_EVENTRECEIVERURL = "dcaeUrl";
-       //private static final String PROPERTY_KEY_TESTCOLLECTOR = "dcaeTestCollector";
-       private static final String PROPERTY_KEY_USERCREDENTIALS = "dcaeUserCredentials";
-       private static final String PROPERTY_KEY_TIMERPERIOD = "dcaeHeartbeatPeriodSeconds";
-
-       private static final String DEFAULT_VALUE_EVENTRECEIVERURL = "off";
-       private static final String DEFAULT_VALUE_TESTCOLLECTOR = "no";
-       private static final String DEFAULT_VALUE_USERCREDENTIALS = "admin:admin";
-       private static final int DEFAULT_VALUE_TIMERPERIOD = 120;
-
-       private static DcaeConfig dcaeConfig = null; // Singleton of configuration data
-
-       private String eventReceiverUrl;
-       private String userCredentials;
-       private Integer timerPeriodSeconds;
-
-       private DcaeConfig() {
-               super();
-               this.eventReceiverUrl = DEFAULT_VALUE_EVENTRECEIVERURL;
-               this.userCredentials = DEFAULT_VALUE_USERCREDENTIALS;
-               this.timerPeriodSeconds = DEFAULT_VALUE_TIMERPERIOD;
-       }
-
-       private DcaeConfig(IniConfigurationFile config, ISubConfigHandler configHandler) throws ConfigurationException {
-               this(config, configHandler, true);
-       }
-
-       private DcaeConfig(IniConfigurationFile config, ISubConfigHandler configHandler, boolean save)
-                       throws ConfigurationException {
-
-               super(config, configHandler, SECTION_MARKER_DCAE);
-
-               this.eventReceiverUrl = this.getString(PROPERTY_KEY_EVENTRECEIVERURL, DEFAULT_VALUE_EVENTRECEIVERURL);
-               this.userCredentials = this.getString(PROPERTY_KEY_USERCREDENTIALS, DEFAULT_VALUE_USERCREDENTIALS);
-               this.timerPeriodSeconds = this.getInt(PROPERTY_KEY_TIMERPERIOD, DEFAULT_VALUE_TIMERPERIOD);
-               if (save) {
-                       config.setProperty(SECTION_MARKER_DCAE + "." + PROPERTY_KEY_EVENTRECEIVERURL, this.eventReceiverUrl);
-                       config.setProperty(SECTION_MARKER_DCAE + "." + PROPERTY_KEY_USERCREDENTIALS, this.userCredentials);
-                       config.setProperty(SECTION_MARKER_DCAE + "." + PROPERTY_KEY_TIMERPERIOD, this.timerPeriodSeconds);
-
-                       this.save();
-               }
-       }
-
-       /*
-        * Setter
-        */
-
-       public void setEventReceiverUrl(String eventReveicerUrl) {
-               this.eventReceiverUrl = eventReveicerUrl;
-       }
-
-       public void setUserCredentials(String userCredentials) {
-               this.userCredentials = userCredentials;
-       }
-
-
-
-       public void setTimerPeriodSeconds(Integer timerPeriodSeconds) {
-               this.timerPeriodSeconds = timerPeriodSeconds;
-       }
-
-       /*
-        * Getter
-        */
-
-       public String getEventReveicerUrl() {
-               return eventReceiverUrl;
-       }
-
-       public String getUserCredentials() {
-               return userCredentials;
-       }
-
-
-       public Integer getTimerPeriodSeconds() {
-               return timerPeriodSeconds;
-       }
-
-       @Override
-       public String toString() {
-               return "DcaeConfig [eventReceiverUrl=" + eventReceiverUrl + ", userCredentials=" + userCredentials
-                               + ", timerPeriodSeconds=" + timerPeriodSeconds + "]";
-       }
-
-       @Override
-       public boolean equals(Object obj) {
-               if (obj instanceof DcaeConfig) {
-                       DcaeConfig cobj = (DcaeConfig) obj;
-                       if (!((cobj.eventReceiverUrl == null && this.eventReceiverUrl == null)
-                                       || cobj.eventReceiverUrl.equals(this.eventReceiverUrl)))
-                               return false;
-                       if (!((cobj.userCredentials == null && this.userCredentials == null)
-                                       || cobj.userCredentials.equals(this.userCredentials)))
-                               return false;
-                       if (cobj.timerPeriodSeconds != this.timerPeriodSeconds)
-                               return false;
-                       return true;
-               }
-               return super.equals(obj);
-       }
-
-       /*-------------------------------------
-        * static Functions
-        */
-
-       public static DcaeConfig getDefaultConfiguration() {
-               return (new DcaeConfig());
-       }
-
-       public static DcaeConfig getDcae(IniConfigurationFile config, ISubConfigHandler configHandler) {
-               if (dcaeConfig == null)
-                       try {
-                               dcaeConfig = new DcaeConfig(config, configHandler);
-                       } catch (ConfigurationException e) {
-                               dcaeConfig = DcaeConfig.getDefaultConfiguration();
-                       }
-               return dcaeConfig;
-       }
-
-       public static boolean isInstantiated() {
-               return dcaeConfig != null;
-       }
-
-       public static DcaeConfig reload() {
-               if (dcaeConfig == null)
-                       return null;
-               DcaeConfig tmpConfig;
-               try {
-                       tmpConfig = new DcaeConfig(dcaeConfig.getConfig(), dcaeConfig.getConfigHandler(), false);
-               } catch (ConfigurationException e) {
-                       tmpConfig = DcaeConfig.getDefaultConfiguration();
-               }
-               dcaeConfig = tmpConfig;
-               return dcaeConfig;
-       }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/EsConfig.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/EsConfig.java
deleted file mode 100644 (file)
index 0965c3d..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-package org.opendaylight.mwtn.config.impl;
-
-import org.opendaylight.mwtn.base.internalTypes.Environment;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile.ConfigurationException;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration.ISubConfigHandler;
-
-public class EsConfig extends BaseSubConfig {
-
-       public static final String SECTION_MARKER_ES = "es";
-
-       public static final String ESDATATYPENAME = "database";
-
-       private static final String EMPTY = "empty";
-
-       private static final String PROPERTY_KEY_CLUSTER = "esCluster";
-
-       private static final String DEFAULT_VALUE_CLUSTER = "";
-
-       private static EsConfig esConfig;
-
-       private String cluster;
-       private String host;
-       private String node;
-       private String index;
-
-       public static String getESDATATYPENAME() {
-               return ESDATATYPENAME;
-       }
-
-       public String getCluster() {
-               return cluster;
-       }
-
-       public void setCluster(String cluster) {
-               this.cluster = cluster;
-       }
-
-       public String getHost() {
-               return host;
-       }
-
-       public void setHost(String host) {
-               this.host = host;
-       }
-
-       public String getNode() {
-               return node;
-       }
-
-       public void setNode(String node) {
-               this.node = node;
-       }
-
-       public String getIndex() {
-               return index;
-       }
-
-       public void setIndex(String index) {
-               this.index = index;
-       }
-
-       @Override
-       public String toString() {
-               return "EsConfig [cluster=" + cluster + ", host=" + host + ", node=" + node + ", index=" + index + "]";
-       }
-
-       public EsConfig(IniConfigurationFile config, ISubConfigHandler configHandler) throws ConfigurationException {
-               this(config, configHandler, true);
-       }
-
-       public EsConfig(IniConfigurationFile config, ISubConfigHandler configHandler, boolean save)
-                       throws ConfigurationException {
-
-               super(config, configHandler, SECTION_MARKER_ES);
-               String clustername = Environment.getVar("$HOSTNAME");
-
-               String c = this.getString(PROPERTY_KEY_CLUSTER, clustername);
-               if (c != null && c.startsWith("$"))
-                       c = Environment.getVar(c);
-               this.cluster = c;
-               this.node = String.format("%s%s", this.cluster, "n1");
-               this.host = "localhost";
-
-               if (save) {
-                       config.setProperty(SECTION_MARKER_ES + "." + PROPERTY_KEY_CLUSTER, this.cluster);
-                       this.save();
-               }
-       }
-
-       private EsConfig() {
-               super();
-               this.host = EMPTY;
-               this.node = EMPTY;
-               this.index = EMPTY;
-               this.cluster = DEFAULT_VALUE_CLUSTER;
-       }
-
-       @Override
-       public boolean equals(Object obj) {
-               if (obj instanceof EsConfig) {
-                       EsConfig cobj = (EsConfig) obj;
-                       if (!((cobj.cluster == null && this.cluster == null) || cobj.cluster.equals(this.cluster)))
-                               return false;
-                       if (!((cobj.host == null && this.host == null) || cobj.host.equals(this.host)))
-                               return false;
-                       if (!((cobj.node == null && this.node == null) || cobj.node.equals(this.node)))
-                               return false;
-                       if (!((cobj.index == null && this.index == null) || cobj.index.equals(this.index)))
-                               return false;
-                       return true;
-               }
-               return super.equals(obj);
-       }
-
-       public EsConfig cloneWithIndex(String index) {
-               EsConfig c = new EsConfig();
-               c.index = index;
-               c.host = this.host;
-               c.node = this.node;
-               c.cluster = this.cluster;
-               return c;
-       }
-
-       public static boolean isInstantiated() {
-               return esConfig != null;
-       }
-
-       public static EsConfig getDefaultConfiguration() {
-               return new EsConfig();
-       }
-
-       public static EsConfig getEs(IniConfigurationFile config, ISubConfigHandler configHandler) {
-               if (esConfig == null)
-                       try {
-                               esConfig = new EsConfig(config, configHandler);
-                       } catch (ConfigurationException e) {
-                               esConfig = EsConfig.getDefaultConfiguration();
-                       }
-               return esConfig;
-       }
-
-       public static EsConfig reload() {
-               if (esConfig == null)
-                       return null;
-               EsConfig tmpConfig;
-               try {
-                       tmpConfig = new EsConfig(esConfig.getConfig(), esConfig.getConfigHandler(), false);
-               } catch (ConfigurationException e) {
-                       tmpConfig = EsConfig.getDefaultConfiguration();
-               }
-               esConfig = tmpConfig;
-               return esConfig;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/GeoConfig.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/GeoConfig.java
deleted file mode 100644 (file)
index 5397440..0000000
+++ /dev/null
@@ -1,141 +0,0 @@
-package org.opendaylight.mwtn.config.impl;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.opendaylight.mwtn.config.impl.AkkaConfig.ClusterRoleInfo;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
-
-public class GeoConfig {
-
-
-       public static class RolesTableEntry
-       {
-               @Override
-               public String toString() {
-                       return "RolesTableEntry [role=" + role + ", ip=" + ip + "]";
-               }
-               private final AkkaConfig.ClusterRoleInfo role;
-               private final String ip;
-               public RolesTableEntry(Config c) throws Exception {
-                       this.role = new ClusterRoleInfo(c.getString("role"));
-                       this.ip=c.getString("ip");
-               }
-       }
-       public static class RolesTable extends ArrayList<RolesTableEntry>
-       {
-               /**
-                *
-                */
-               private static final long serialVersionUID = -9146218864237487506L;
-
-               public RolesTable(List<? extends Config> configList) throws Exception {
-                       for(Config c : configList)
-                       {
-                               this.add(new RolesTableEntry(c));
-                       }
-               }
-
-       }
-
-       private static final String DEFAULT_FILENAME = "configuration/initial/geo.conf";
-       private static final String LUMINA_ROOTNODENAME = "lumina-geo-cluster";
-       private final String filename;
-       private final String rootNodename;
-       private AkkaConfig.ClusterRoleInfoCollection primaryRoles;
-       private AkkaConfig.ClusterRoleInfoCollection secondayRoles;
-       private RolesTable rolesTable;
-       private GeoConfig()
-       {
-               this(null);
-       }
-       @Override
-       public String toString() {
-               return "GeoConfig [filename=" + filename + ", rootNodename=" + rootNodename + ", primaryRoles=" + primaryRoles
-                               + ", secondayRoles=" + secondayRoles + ", rolesTable=" + rolesTable + "]";
-       }
-       private GeoConfig(String filename)
-       {
-               this(filename,LUMINA_ROOTNODENAME);
-       }
-       private GeoConfig(String filename,String rootNodeName)
-       {
-               this.filename=filename;
-               this.rootNodename=rootNodeName;
-       }
-       public static boolean fileExists()
-       {
-               File f=new File(DEFAULT_FILENAME);
-               return f.exists();
-       }
-       public static GeoConfig load() throws Exception
-       {
-               return load(DEFAULT_FILENAME);
-       }
-       public static GeoConfig load(String filename) throws Exception
-       {
-               GeoConfig cfg=new GeoConfig(filename);
-               cfg._load();
-               return cfg;
-       }
-       private void _load() throws Exception
-       {
-               this._load(ConfigFactory.parseFile(new File(this.filename)));
-       }
-       private void _load(Config cfg) throws Exception {
-                this.primaryRoles=new AkkaConfig.ClusterRoleInfoCollection();
-               List<String> a=cfg.getConfig(this.rootNodename).getStringList("primary_roles");
-
-               for (int i = 0; i < a.size(); i++) {
-                       ClusterRoleInfo s = new ClusterRoleInfo(a.get(i));
-                       this.primaryRoles.add(s);
-               }
-               this.secondayRoles=new AkkaConfig.ClusterRoleInfoCollection();
-               a=cfg.getConfig(this.rootNodename).getStringList("secondary_roles");
-               for (int i = 0; i < a.size(); i++) {
-                       ClusterRoleInfo s = new ClusterRoleInfo(a.get(i));
-                       this.secondayRoles.add(s);
-               }
-               this.checkDuplicateRoleEntries();
-               this.rolesTable = new RolesTable(cfg.getConfig(this.rootNodename).getConfigList("ip_roles_table"));
-       }
-       private void checkDuplicateRoleEntries() throws Exception {
-               AkkaConfig.ClusterRoleInfoCollection duplicateEntries=new AkkaConfig.ClusterRoleInfoCollection();
-               for(ClusterRoleInfo primaryRole: this.primaryRoles)
-               {
-                       if(this.secondayRoles.contains(primaryRole))
-                               duplicateEntries.add(primaryRole);
-               }
-               if(duplicateEntries.size()>0)
-                       throw new Exception("duplicate entries found: "+duplicateEntries.toString());
-
-       }
-       public static GeoConfig parse(String content) throws Exception {
-               GeoConfig cfg=new GeoConfig();
-               cfg._load(ConfigFactory.parseString(content));
-               return cfg;
-       }
-       public AkkaConfig.ClusterRoleInfoCollection getPrimaryRoles() {
-               return this.primaryRoles;
-       }
-       public AkkaConfig.ClusterRoleInfoCollection getSecondaryRoles() {
-               return this.secondayRoles;
-       }
-       public boolean isPrimary(ClusterRoleInfo roleMember) {
-               return !this.isSecondary(roleMember);
-       }
-       private boolean isSecondary(ClusterRoleInfo roleMember) {
-               if(roleMember==null)
-                       return false;
-               for(ClusterRoleInfo info:this.secondayRoles)
-               {
-                       if(info.equals(roleMember))
-                               return true;
-               }
-               return false;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/HtDevicemanagerConfiguration.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/HtDevicemanagerConfiguration.java
deleted file mode 100644 (file)
index 480430e..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-package org.opendaylight.mwtn.config.impl;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.opendaylight.mwtn.base.internalTypes.FileWatchdog;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile.ConfigurationException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class HtDevicemanagerConfiguration {
-
-       private static final long FILE_POLL_INTERVAL_MS = 1000;
-
-       public interface IConfigChangedListener {
-               void onConfigChanged();
-       }
-       public static class ConfigFileObserver extends FileWatchdog
-       {
-               private final List<IConfigChangedListener> mConfigChangedHandlers = new ArrayList<IConfigChangedListener>();
-               protected ConfigFileObserver(String filename) {
-                       super(filename);
-                       this.setDelay(FILE_POLL_INTERVAL_MS);
-               }
-
-               @Override
-               protected void doOnChange() {
-
-                       boolean succeeded=true;
-                       LOG.debug("property file has changed");
-                       try {
-                               mConfig.reLoad();
-
-                       } catch (ConfigurationException e) {
-                               LOG.warn("error reloading config: "+e.getMessage());
-                               succeeded = false;
-
-                       }
-                       if(!succeeded)
-                               return;
-                       if(this.mConfigChangedHandlers==null)
-                       {
-                               LOG.debug("handler list is null");//should never happen
-                               return;
-                       }
-                       //push event to all listeners
-                       for (IConfigChangedListener listener : this.mConfigChangedHandlers) {
-                               if (listener != null)
-                                       listener.onConfigChanged();
-                       }
-               }
-
-               public void registerConfigChangedListener(IConfigChangedListener l) {
-                       if (!this.mConfigChangedHandlers.contains(l))
-                               this.mConfigChangedHandlers.add(l);
-               }
-
-               public void unregisterConfigChangedListener(IConfigChangedListener l) {
-                       this.mConfigChangedHandlers.remove(l);
-               }
-
-
-       }
-       public interface ISubConfigHandler {
-               void save();
-       }
-
-       private static final Logger LOG = LoggerFactory.getLogger(HtDevicemanagerConfiguration.class);
-
-       private static final String CONFIGURATIONFILE = "etc/devicemanager.properties";
-       private static final String CONFIGURATIONTESTFILE = "test.properties"; // for
-       // testing
-
-       private static HtDevicemanagerConfiguration mObj;
-       private static HtDevicemanagerConfiguration mObjTest;
-
-       public static HtDevicemanagerConfiguration getConfiguration() {
-               if (mObj == null)
-                       mObj = new HtDevicemanagerConfiguration(CONFIGURATIONFILE);
-               return mObj;
-       }
-       public static HtDevicemanagerConfiguration getTestConfiguration() {
-               if (mObjTest == null)
-                       mObjTest = new HtDevicemanagerConfiguration(CONFIGURATIONTESTFILE);
-               return mObjTest;
-       }
-       private static IniConfigurationFile mConfig;
-       private File mFile;
-
-       public IniConfigurationFile getMConfig() {
-               return mConfig;
-       }
-
-       private final ConfigFileObserver fileObserver;
-       public void registerConfigChangedListener(IConfigChangedListener l) {
-               this.fileObserver.registerConfigChangedListener(l);
-       }
-
-       public void unregisterConfigChangedListener(IConfigChangedListener l) {
-               this.fileObserver.unregisterConfigChangedListener(l);
-       }
-
-       private HtDevicemanagerConfiguration(String filename) {
-
-               try {
-                       this.mFile = new File(filename);
-                       if (!this.mFile.exists())
-                               this.mFile.createNewFile();
-                       if(mConfig==null)
-                               mConfig = new IniConfigurationFile(this.mFile);
-                       mConfig.load();
-
-               } catch (ConfigurationException e) {
-                       LOG.error("error loading config values:" + e.getMessage());
-
-               } catch (IOException e) {
-                       LOG.error("error loading config file " + filename + ": " + e.getMessage());
-               }
-
-               this.fileObserver=new ConfigFileObserver(filename);
-               this.fileObserver.start();
-       }
-
-       @Override
-       protected void finalize() throws Throwable {
-               if(this.fileObserver!=null)
-                       this.fileObserver.interrupt();
-               super.finalize();
-       }
-       public DcaeConfig getDcae() {
-               return DcaeConfig.getDcae(mConfig, this.subconfigHandler);
-       }
-
-       public AaiConfig getAai() {
-               return AaiConfig.getAai(mConfig, this.subconfigHandler);
-       }
-
-       public EsConfig getEs() {
-               return EsConfig.getEs(mConfig, this.subconfigHandler);
-       }
-
-       public PmConfig getPm() {
-               return PmConfig.getPm(mConfig, this.subconfigHandler);
-       }
-
-       private final ISubConfigHandler subconfigHandler = new ISubConfigHandler() {
-
-               @Override
-               public void save() {
-                       mConfig.save();
-               }
-       };
-
-       public ISubConfigHandler getSubconfigHandler() {
-               return subconfigHandler;
-       }
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/HtLogger.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/HtLogger.java
deleted file mode 100644 (file)
index 258989c..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.opendaylight.mwtn.config.impl;
-
-import java.util.HashMap;
-
-import org.apache.log4j.BasicConfigurator;
-import org.apache.log4j.ConsoleAppender;
-import org.apache.log4j.Level;
-import org.apache.log4j.PatternLayout;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-public class HtLogger {
-
-       private static final HashMap<String, Logger> mLogs=new HashMap<>();
-
-       public static void initConsole(Level lvl)
-       {
-               BasicConfigurator.configure();
-               org.apache.log4j.Logger.getRootLogger().getLoggerRepository().resetConfiguration();
-               ConsoleAppender console = new ConsoleAppender(); // create appender
-               // configure the appender
-               // String PATTERN = "%d [%p|%c|%C{1}] %m%n";
-               String PATTERN = "%d [%p|%C{1}] %m%n";
-               console.setLayout(new PatternLayout(PATTERN));
-               console.setThreshold(lvl);
-               console.activateOptions();
-               // add appender to any Logger (here is root)
-               org.apache.log4j.Logger.getRootLogger().addAppender(console);
-       }
-       public static Logger GetInstance(Object cls)
-       {
-               String key=cls.getClass().getName();
-               if(mLogs.containsKey(key))
-                       return mLogs.get(key);
-               Logger l=LoggerFactory.getLogger(cls.getClass());
-               mLogs.put(key, l);
-               return l;
-       }
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/PmConfig.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/config/impl/PmConfig.java
deleted file mode 100644 (file)
index 71c29d9..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-package org.opendaylight.mwtn.config.impl;
-
-import org.opendaylight.mwtn.base.internalTypes.Environment;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile;
-import org.opendaylight.mwtn.base.internalTypes.IniConfigurationFile.ConfigurationException;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration.ISubConfigHandler;
-
-public class PmConfig extends BaseSubConfig {
-
-       private static final String SECTION_MARKER_PM = "pm";
-       private static final String PROPERTY_KEY_ENABLED = "pmEnabled";
-       private static final String PROPERTY_KEY_CLUSTER = "pmCluster";
-
-       private static final boolean DEFAULT_VALUE_ENABLED = true;
-       private static final String DEFAULT_VALUE_CLUSTER = "";
-       private static PmConfig pmConfig;
-
-       private boolean enabled;
-
-       public static final String ESDATATYPENAME = "database";
-
-       private static final String EMPTY = "empty";
-
-       private String cluster;
-       private String host;
-       private String node;
-
-       public static String getESDATATYPENAME() {
-               return ESDATATYPENAME;
-       }
-
-       public String getCluster() {
-               return cluster;
-       }
-
-       public void setCluster(String cluster) {
-               this.cluster = cluster;
-       }
-
-       public String getHost() {
-               return host;
-       }
-
-       public void setHost(String host) {
-               this.host = host;
-       }
-
-       public String getNode() {
-               return node;
-       }
-
-       public void setNode(String node) {
-               this.node = node;
-       }
-
-       public boolean isPerformanceManagerEnabled() {
-               return this.enabled;
-       }
-
-       public PmConfig(IniConfigurationFile config, ISubConfigHandler configHandler) throws ConfigurationException {
-               this(config, configHandler, true);
-       }
-
-       public PmConfig(IniConfigurationFile config, ISubConfigHandler configHandler, boolean save)
-                       throws ConfigurationException {
-
-               super(config, configHandler, SECTION_MARKER_PM);
-               String clustername = Environment.getVar("$HOSTNAME");
-
-               this.enabled = this.getBoolean(PROPERTY_KEY_ENABLED, DEFAULT_VALUE_ENABLED);
-               String c = this.getString(PROPERTY_KEY_CLUSTER, clustername);
-               if (c != null && c.startsWith("$"))
-                       c = Environment.getVar(c);
-               this.cluster = c;
-               this.node = String.format("%s%s", this.cluster, "n1");
-               this.host = "localhost";
-
-               if (save) {
-                       config.setProperty(SECTION_MARKER_PM + "." + PROPERTY_KEY_ENABLED, this.enabled);
-                       config.setProperty(SECTION_MARKER_PM + "." + PROPERTY_KEY_CLUSTER, this.cluster);
-
-                       this.save();
-               }
-       }
-
-       private PmConfig() {
-               super();
-               this.cluster = EMPTY;
-               this.host = EMPTY;
-               this.node = EMPTY;
-               this.enabled = DEFAULT_VALUE_ENABLED;
-       }
-
-       @Override
-       public boolean equals(Object obj) {
-               if (obj instanceof PmConfig) {
-                       PmConfig cobj = (PmConfig) obj;
-                       if (!((cobj.cluster == null && this.cluster == null) || cobj.cluster.equals(this.cluster)))
-                               return false;
-                       if (!((cobj.host == null && this.host == null) || cobj.host.equals(this.host)))
-                               return false;
-                       if (!((cobj.node == null && this.node == null) || cobj.node.equals(this.node)))
-                               return false;
-                       return true;
-               }
-               return super.equals(obj);
-       }
-
-       public static PmConfig getDefaultConfiguration() {
-               PmConfig c = new PmConfig();
-               c.enabled = DEFAULT_VALUE_ENABLED;
-               c.cluster = DEFAULT_VALUE_CLUSTER;
-               return c;
-       }
-
-       @Override
-       public String toString() {
-               return "PmConfig [enabled=" + enabled + ", cluster=" + cluster + ", host=" + host + ", node=" + node + "]";
-       }
-
-       public static boolean isInstantiated() {
-               return pmConfig != null;
-       }
-
-       public static PmConfig getPm(IniConfigurationFile config, ISubConfigHandler configHandler) {
-               if (pmConfig == null)
-                       try {
-                               pmConfig = new PmConfig(config, configHandler);
-                       } catch (ConfigurationException e) {
-                               pmConfig = PmConfig.getDefaultConfiguration();
-                       }
-               return pmConfig;
-       }
-
-       public static PmConfig reload() {
-               if (pmConfig == null)
-                       return null;
-               PmConfig tmpConfig;
-               try {
-                       tmpConfig = new PmConfig(pmConfig.getConfig(), pmConfig.getConfigHandler(), false);
-               } catch (ConfigurationException e) {
-                       tmpConfig = PmConfig.getDefaultConfiguration();
-               }
-               pmConfig = tmpConfig;
-               return pmConfig;
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeMessages.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeMessages.java
deleted file mode 100644 (file)
index fc98d45..0000000
+++ /dev/null
@@ -1,329 +0,0 @@
-/**
-        ecompProvider.sendProblemNotification(ownKeyName, notificationXml);
- * ECOMP Messages are generated an send to destination
- *
- * @author herbert
- */
-package org.opendaylight.mwtn.dcaeConnector.impl;
-
-import java.io.IOException;
-import java.net.HttpURLConnection;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLConnection;
-import java.text.ParseException;
-
-import javax.annotation.Nullable;
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLSession;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalSeverity;
-import org.opendaylight.mwtn.base.internalTypes.InventoryInformation;
-import org.opendaylight.mwtn.base.netconf.NetconfTimeStamp;
-import org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation;
-import org.opendaylight.mwtn.devicemanager.impl.DeviceManagerImpl;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DcaeMessages {
-
-       private static final Logger LOG = LoggerFactory.getLogger(DcaeSenderImpl.class);
-
-    private static final String DCAE_NORMAL =  "NORMAL";
-    private static final String DCAE_MINOR =  "MINOR";
-    private static final String DCAE_WARNING =  "WARNING";
-    private static final String DCAE_CRITICAL =  "CRITICAL";
-    private static final String DCAE_MAJOR =  "MAJOR";
-
-    private static final String eventNamePrefix = "fault_Microwave_Radio_Alarms";
-    private static final String eventType = "Microwave_Radio_Alarms";
-    private static final String eventSourceType = "Microwave_Radio";
-
-    private static final String charset = "UTF-8";
-
-       private static final HostnameVerifier allHostsValid = new HostnameVerifier() {
-               public boolean verify(String hostname, SSLSession session) {
-                       return true;
-               }
-       };
-
-    //Configurable parameters
-    private final DcaeSender dcaeSender;
-    private final int heartbeatIntervallSeconds;
-    private final String entityName;
-    private final DeviceManagerImpl deviceManager;
-
-    //Variables
-    private int heartbeatsequence = 0;
-
-    public DcaeMessages(DcaeSender ecompSender, String entityName, Integer heartbeatIntervallSeconds, DeviceManagerImpl deviceManager) {
-        this.dcaeSender = ecompSender;
-        this.entityName = entityName;
-        this.deviceManager = deviceManager;
-        this.heartbeatIntervallSeconds = heartbeatIntervallSeconds;
-    }
-
-    /**
-     * Create a heartbeat message.
-     * @return Result string with answer from server
-     */
-    public String postHeartBeat() {
-        String epochTimeMicrosecondsString = getEpochTimeMicroseconds();
-        String body = assembleHeartbeatFromTemplate(null,
-                       epochTimeMicrosecondsString,
-                       heartbeatsequence++,
-                       NetconfTimeStamp.getTimeStampAsNetconfString()).toString();
-        return dcaeSender.sendDcaePost( body);
-    }
-
-    /**
-     * ONF 1.2 Problem Notification
-     * @param mountPointName self-explaining
-     * @param notification Notification input
-     * @return String with answer
-     */
-
-    public String postNotification(String mountPointName, ProblemNotificationXml notification) {
-
-        String problemName = notification.getProblem();
-        String sequence = notification.getCounter();
-        String objId = notification.getObjectId();
-        String severity = convert( notification.getSeverity());
-        String timeStamp = convert( notification.getTimeStamp() );
-
-        String body = assembleEventNotificationFromTemplate(null,
-                timeStamp, sequence,
-                mountPointName, objId, problemName, severity, notification.getTimeStamp() ).toString();
-
-        return dcaeSender.sendDcaePost( body);
-    }
-
-    /**
-     * Setup a connection to URL with authorisation header
-     * @param url e.g. "https://plan.fritz.box:9092/ux/#" or "
-     * @param basicAuth authorisation header like "Basic SGVyYmVydDpIZXJiZXJ0"
-     * @param insertContentHeader
-     * @return Null in case of error or the URLConnection
-     * @throws IOException
-     * @throws MalformedURLException
-     */
-    static @Nullable HttpURLConnection openConnection( URL url, String basicAuth, boolean insertContentHeader, @Nullable SSLContext sc) throws MalformedURLException, IOException {
-
-        //Prepare the connection
-        HttpURLConnection newHttpConnection = null;
-        {
-               URLConnection newConnection = url.openConnection();
-               if (newConnection instanceof HttpURLConnection) {
-                LOG.debug("Setup connection to {} ", url.toString());
-
-                       newHttpConnection = (HttpURLConnection)newConnection;
-
-                newHttpConnection.setDoOutput(true); // Triggers POST.
-                newHttpConnection.setRequestProperty("Accept-Charset", charset);
-                if (basicAuth != null) {
-                       newHttpConnection.setRequestProperty("Authorization", basicAuth);
-                }
-                if (insertContentHeader) {
-                       newHttpConnection.setRequestProperty("Content-Type", "application/json;charset=" + charset);
-                }
-
-                if (newHttpConnection instanceof HttpsURLConnection) {
-                       LOG.debug("SSL connection setup with trust all.");
-                       HttpsURLConnection newHttpsConnection = (HttpsURLConnection)newHttpConnection;
-                       if (sc != null) {
-                               newHttpsConnection.setSSLSocketFactory(sc.getSocketFactory());
-                       } else {
-                               LOG.warn("No SSL Contect available");
-                       }
-                       newHttpsConnection.setHostnameVerifier(allHostsValid);
-                }
-               } else {
-                       LOG.warn("URL not a HTTP protocol: {}", url);
-               }
-        }
-        return newHttpConnection;
-    }
-
-    /* -----------------
-     * Private function for message creation and with templates
-     */
-
-    /**
-     * Get actual microseconds
-     * @return String
-     */
-    private String getEpochTimeMicroseconds() {
-        long microseconds = System.nanoTime() / 1000;
-        return String.valueOf(microseconds);
-    }
-
-    /**
-     * Assemble heartbeat message
-     * @param sb StringBuffer to be used or null to allocate
-     * @param epochTimeMicrosecondsString Text with time stamp
-     * @param sequence integer sequence number
-     * @param eventTimeValueNetconfFormatString like this: 2018-05-14T05:32:17.292Z
-     * @return StringBuffer with result
-     */
-    private StringBuffer assembleHeartbeatFromTemplate(
-                    StringBuffer sb,
-                    String epochTimeMicrosecondsString,
-                    int sequence,
-                    String eventTimeValueNetconfFormatString) {
-
-        if (sb == null) {
-          sb = new StringBuffer();
-        }
-        sb.append("{\n" +
-                "    \"event\": {\n" +
-                "        \"commonEventHeader\": {\n" +
-                "            \"domain\": \"heartbeat\",\n" +
-                "            \"eventId\": \"testpattern-ab305d54-85b4-a31b-7db2-fb6b9e546015\",\n" +
-                "            \"eventName\": \"heartbeat_Controller\",\n" +
-                "            \"eventType\": \"Controller\",\n" +
-                "            \"priority\": \"Low\",\n" +
-                "            \"reportingEntityId\": \"\",\n" +
-                "            \"reportingEntityName\": \""+entityName+"\",\n" +
-                "            \"sequence\": "+String.valueOf(sequence)+",\n" +
-                "            \"sourceId\": \"\",\n" +
-                "            \"sourceName\": \""+entityName+"\",\n" +
-                "            \"startEpochMicrosec\": "+epochTimeMicrosecondsString+",\n" +
-                "            \"lastEpochMicrosec\": "+epochTimeMicrosecondsString+",\n" +
-                "            \"version\": 3.0\n" +
-                "        },\n" +
-                "        \"heartbeatFields\": {\n" +
-                "            \"additionalFields\": [\n" +
-                "                 {\n" +
-                "                   \"name\": \"eventTime\",\n" +
-                "                   \"value\": \""+eventTimeValueNetconfFormatString+"\"\n" +
-                "                 }\n" +
-                "            ],\n" +
-                "            \"heartbeatFieldsVersion\": 1.0,\n" +
-                "            \"heartbeatInterval\": "+heartbeatIntervallSeconds+"\n" +
-                "        }\n" +
-                "    }\n" +
-                "}\n"
-        );
-
-        return sb;
-    }
-
-    /**
-     * Assemble notification message
-     * @param sb StringBuffer to be used or null to allocate
-     * @param epochTimeMicrosecondsString Text with time stamp
-     * @param sequence integer sequence number
-     * @param mountpointName
-     * @param objId
-     * @param problemName
-     * @param severity
-     * @return StringBuffer with result
-     */
-
-    private StringBuffer assembleEventNotificationFromTemplate(StringBuffer sb,
-            String epochTimeMicrosecondsString, String sequence,
-            String mountpointName, String objId, String problemName, String severity, String eventTimeValueNetconfFormatString
-            ) {
-
-        if (sb == null) {
-            sb = new StringBuffer();
-        }
-
-        ONFCoreNetworkElementRepresentation optionalNe = deviceManager != null ? deviceManager.getNeByMountpoint(mountpointName) : null;
-        InventoryInformation neInventory = optionalNe != null ? optionalNe.getInventoryInformation() : InventoryInformation.DEFAULT;
-
-        sb.append("{\n" +
-                "    \"event\": {\n" +
-                "        \"commonEventHeader\": {\n" +
-                "            \"domain\": \"fault\",\n" +
-                "            \"eventId\": \""+mountpointName+"_"+objId+"_"+problemName+"\",\n" +
-                "            \"eventName\": \""+eventNamePrefix+"_"+problemName+"\",\n" +
-                "            \"eventType\": \""+eventType+"\",\n" +
-                "            \"sequence\": "+sequence+",\n" +
-                "            \"priority\": \"High\",\n" +
-                "            \"reportingEntityId\": \"\",\n" +
-                "            \"reportingEntityName\": \""+entityName+"\",\n" +
-                "            \"sourceId\": \"\",\n" +
-                "            \"sourceName\": \""+mountpointName+"\",\n" +
-                "            \"startEpochMicrosec\": "+epochTimeMicrosecondsString+",\n" +
-                "            \"lastEpochMicrosec\": "+epochTimeMicrosecondsString+",\n" +
-                "            \"version\": 3.0\n" +
-                "        },\n" +
-                "        \"faultFields\": {\n" +
-                "            \"alarmAdditionalInformation\": [\n" +
-                "                 {\n" +
-                "                   \"name\": \"eventTime\",\n" +
-                "                   \"value\": \""+eventTimeValueNetconfFormatString+"\"\n" +
-                "                 },\n" +
-                "                 {\n" +
-                "                   \"name\": \"equipType\",\n" +
-                "                   \"value\": \""+neInventory.getType()+"\"\n" +
-                "                 },\n" +
-                "                 {\n" +
-                "                   \"name\": \"vendor\",\n" +
-                "                   \"value\": \""+neInventory.getVendor()+"\"\n" +
-                "                 },\n" +
-                "                 {\n" +
-                "                   \"name\": \"model\",\n" +
-                "                   \"value\": \""+neInventory.getModel()+"\"\n" +
-                "                 }\n" +
-                "            ],\n" +
-                "            \"faultFieldsVersion\":2.0,\n" +
-                "            \"eventSourceType\": \""+eventSourceType+"\",\n" +
-                "            \"alarmCondition\": \""+problemName+"\",\n" +
-                "            \"alarmInterfaceA\": \""+objId+"\",\n" +
-                "            \"specificProblem\": \""+problemName+"\",\n" +
-                "            \"eventSeverity\": \""+severity+"\",\n" +
-                "            \"vfStatus\": \"Active\"\n" +
-                "        }\n" +
-                "    }\n" +
-                "}\n"
-                );
-
-        return sb;
-    }
-
-    /* -----------------
-     * Convert internal type formats into the Ecomp format
-     */
-
-    private String convert(InternalSeverity severity ) {
-         switch( severity ) {
-            case NonAlarmed:
-                break;
-            case Warning:
-                return DCAE_WARNING;
-            case Minor:
-                return DCAE_MINOR;
-            case Major:
-                return DCAE_MAJOR;
-            case Critical:
-                return DCAE_CRITICAL;
-        }
-        return DCAE_NORMAL;
-    }
-
-
-    /**
-     * Time has to be converted into milliseconds
-     * @param timeAsString time as string
-     * @return
-     */
-    private String convert(String timeAsString) {
-
-        long microseconds = -1;
-        try {
-            microseconds = NetconfTimeStamp.getTimeStampFromNetconfAsMilliseconds(timeAsString) * 1000;
-        } catch (IllegalArgumentException e) {
-            e.printStackTrace();
-        } catch (ParseException e) {
-            e.printStackTrace();
-        }
-        return String.valueOf(microseconds);
-    }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeProviderClient.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeProviderClient.java
deleted file mode 100644 (file)
index c933da4..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-package org.opendaylight.mwtn.dcaeConnector.impl;
-
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.TimeUnit;
-
-import org.opendaylight.mwtn.config.impl.DcaeConfig;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration.IConfigChangedListener;
-import org.opendaylight.mwtn.devicemanager.impl.DeviceManagerImpl;
-import org.opendaylight.mwtn.devicemanager.impl.ProviderClient;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-public class DcaeProviderClient implements AutoCloseable, ProviderClient {
-
-    private static final Logger LOG = LoggerFactory.getLogger(DcaeProviderClient.class);
-
-    private static final int MIN_HEARTBEAT_TIME_SECONDS = 30;
-
-       private final HtDevicemanagerConfiguration htConfig;
-       private final String entityName;
-       private final DeviceManagerImpl deviceManager;
-
-       private DcaeProviderWorker worker;
-
-    public DcaeProviderClient(HtDevicemanagerConfiguration cfg, String entityName, DeviceManagerImpl deviceManager) {
-
-       this.entityName = entityName;
-       this.deviceManager = deviceManager;
-       this.htConfig=cfg;
-               this.htConfig.registerConfigChangedListener(configChangedListener );
-
-               worker = new DcaeProviderWorker(this.htConfig.getDcae(), entityName, deviceManager);
-    }
-
-       @Override
-    public void sendProblemNotification(String mountPointName, ProblemNotificationXml notification) {
-       synchronized(worker) {
-               worker.sendProblemNotification(mountPointName, notification);
-       }
-    }
-
-       @Override
-       public void sendProblemNotification(String mountPointName, ProblemNotificationXml notification, boolean neDeviceAlarm) {
-               sendProblemNotification(mountPointName, notification);
-       }
-
-       @Override
-       public void close() {
-               this.htConfig.unregisterConfigChangedListener(configChangedListener);
-       synchronized(worker) {
-               worker.close();
-       }
-       }
-
-    /* ---------------------------------------------------------
-     * Private
-     */
-
-
-       private IConfigChangedListener configChangedListener = new IConfigChangedListener() {
-
-               @Override
-               public void onConfigChanged() {
-                       synchronized(worker) {
-                               worker.close();
-                               worker = new DcaeProviderWorker(DcaeConfig.reload(), entityName, deviceManager);
-                       }
-               }
-       };
-
-       private static class DcaeProviderWorker implements AutoCloseable {
-
-
-           private final ScheduledExecutorService scheduler;
-           private final DcaeSenderImpl dcaepClient;
-           private final DcaeMessages dcaeMessages;
-
-           public DcaeProviderWorker(DcaeConfig configuration, String entityName, DeviceManagerImpl deviceManager) {
-
-
-               //Start services
-               LOG.info("Configuration: "+configuration);
-               int heartbeatSeconds = configuration.getTimerPeriodSeconds();
-               if ( heartbeatSeconds < MIN_HEARTBEAT_TIME_SECONDS ) {
-                       heartbeatSeconds = MIN_HEARTBEAT_TIME_SECONDS;
-                       LOG.info("Adjust heartbeat intervall to minimum of { } seconds.",heartbeatSeconds);
-               }
-
-               dcaepClient = new DcaeSenderImpl(configuration.getEventReveicerUrl(), configuration.getUserCredentials());
-               dcaeMessages = new DcaeMessages(dcaepClient, entityName, heartbeatSeconds, deviceManager);
-
-               //Activate task
-               LOG.info("Create Fault manager client Task");
-               this.scheduler = Executors.newSingleThreadScheduledExecutor();
-               Runnable task = new DcaeProviderTask(dcaeMessages);
-
-               LOG.info("Fault task created with "+heartbeatSeconds+" Seconds");
-
-               this.scheduler.scheduleAtFixedRate(task, 0, heartbeatSeconds, TimeUnit.SECONDS);
-               LOG.info("Fault task scheduled");
-           }
-
-           public void sendProblemNotification(String mountPointName, ProblemNotificationXml notification) {
-               LOG.debug("Notification answer: {}", dcaeMessages.postNotification(mountPointName, notification));
-           }
-
-               @Override
-               public void close() {
-                       try {
-                               this.scheduler.awaitTermination(5, TimeUnit.SECONDS);
-                       } catch (InterruptedException e) {
-                       }
-               }
-
-
-       }
-
-}
-
-
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeProviderTask.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeProviderTask.java
deleted file mode 100644 (file)
index 5f695cd..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Event provider to ECOMP for heartbeat message
- *
- * @author herbert
- *
- */
-package org.opendaylight.mwtn.dcaeConnector.impl;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-class DcaeProviderTask  implements Runnable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(DcaeProviderTask.class);
-
-    private int t = 0;
-    private final DcaeMessages dcaeMessages;
-
-    DcaeProviderTask(DcaeMessages dcaeMessages) {
-        LOG.info("Create eventprovider task");
-        this.dcaeMessages = dcaeMessages;
-    }
-
-    private void sendHeartbeat() {
-         dcaeMessages.postHeartBeat();
-    }
-
-    @Override
-    public void run() {
-        LOG.debug("DCAE provider heartbeat tick start {}", t++);
-        sendHeartbeat();
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeSender.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeSender.java
deleted file mode 100644 (file)
index 89992f6..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.dcaeConnector.impl;
-
-/**
- * @author herbert
- *
- */
-public interface DcaeSender {
-
-    public String sendDcaePost(String body);
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeSenderImpl.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/impl/DcaeSenderImpl.java
deleted file mode 100644 (file)
index ede5150..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-/**
- * Client for ECOMP notification server
- *
- * Reference: @link http://stackoverflow.com/questions/13022717/java-and-https-url-connection-without-downloading-certificate
- *
- * @author herbert
- */
-package org.opendaylight.mwtn.dcaeConnector.impl;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.OutputStream;
-import java.io.Reader;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.KeyManagementException;
-import java.security.KeyStoreException;
-import java.security.NoSuchAlgorithmException;
-import java.security.UnrecoverableKeyException;
-import java.security.cert.CertificateException;
-import java.security.spec.InvalidKeySpecException;
-import java.util.Base64;
-
-import javax.net.ssl.SSLContext;
-
-import org.opendaylight.mwtn.base.http.BaseHTTPClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DcaeSenderImpl implements DcaeSender {
-
-    private static final Logger LOG = LoggerFactory.getLogger(DcaeSenderImpl.class);
-    private static String EMPTY = "";
-    private static final String charset = "UTF-8";
-
-    private final String urlString;
-    private final String basicAuth;
-
-       private SSLContext sc = null;
-    private URL url = null;
-    private HttpURLConnection connection = null;
-
-    public DcaeSenderImpl( String url, String userCredentials)  {
-
-       LOG.info("DcaeSenderImpl setup start with {} {}", url, userCredentials);
-
-        this.urlString = url;
-        this.basicAuth = "Basic " + new String(Base64.getEncoder().encode(userCredentials.getBytes()));
-
-        if (urlString != null && !urlString.equals("off")) {
-               try {
-                       this.url = new URL(url);
-                       sc = BaseHTTPClient.setupSsl(true);
-               } catch (KeyManagementException | NoSuchAlgorithmException | UnrecoverableKeyException | CertificateException | KeyStoreException | InvalidKeySpecException | IOException e) {
-                       LOG.warn("SSL setup failed: {}", e.getMessage());
-               }
-        }
-        LOG.info("DcaeSenderImpl setup ends");
-    }
-
-    /**
-     * Send message to ECOMP Server
-     * @param body for POST message
-     */
-    @Override
-    public String sendDcaePost(String body) {
-
-        if (url != null) {
-            try {
-                connection = DcaeMessages.openConnection(url, basicAuth, true, sc);
-                if (connection != null) {
-                    return processPost(connection, body);
-                } else {
-                               LOG.warn("No SSL context available");
-                }
-            } catch (IOException e) {
-                LOG.warn("Dcae post failed {}", e.getMessage());
-            }
-        }
-        return EMPTY;
-    }
-
-    /**
-     * Connect to Server and expect answer.
-     * @return with answer body
-     */
-    public String testConnectServer() {
-
-       if (url != null) {
-            try {
-                connection = DcaeMessages.openConnection(url, null, false, sc);
-                if (connection != null) {
-                    return receiveInitialAnswer(connection);
-                }
-            } catch (IOException e) {
-                LOG.warn("Dcae post failed {}", e.getMessage());
-            }
-        }
-        return EMPTY;
-    }
-
-    /**
-     * Show status in readable form for testing
-     * @return String with result
-     */
-    public String getStatusAsString() {
-        StringBuffer sb = new StringBuffer();
-
-        sb.append("URL: "+ url.getPath() +" "+ url.getPort() + " Host: "+ url.getHost());
-        sb.append("\n");
-        if (connection != null) {
-            sb.append("Connection setup: ");
-            sb.append(connection.getClass().getName());
-            sb.append(" ");
-         } else {
-            sb.append("Connection setup: No connection (server problem or switched off)");
-        }
-        return sb.toString();
-
-    }
-
-
-    /*------------------------------------------------------------------------------
-     * Private functions
-     */
-
-
-    /**
-     * Send Post and wait for answer
-     * @param connection
-     * @param body
-     * @return
-     * @throws IOException
-     */
-    private static String processPost( HttpURLConnection connection, String body ) throws IOException {
-
-        LOG.debug("Post message: {}", connection.getURL().toString());
-        if (LOG.isTraceEnabled()) {
-               LOG.trace("Body: {} ", body);
-        }
-
-        //Send the message to destination
-        try (OutputStream output = connection.getOutputStream()) {
-            output.write(body.getBytes(charset));
-        }
-
-        //Receive answer
-               try {
-                       int responseCode = connection.getResponseCode();
-                   LOG.debug("Response code: {}", String.valueOf(responseCode));
-
-                   InputStream response= null;
-                       if (responseCode >= 200 && responseCode < 300)
-                               response = connection.getInputStream();
-                       else {
-                               response = connection.getErrorStream();
-                               if (response == null)
-                                       response = connection.getInputStream();
-                       }
-
-                       if (response != null) {
-                           BufferedReader rd = new BufferedReader(new InputStreamReader(response));
-                           String line;
-                           StringBuilder result = new StringBuilder();
-                           while ((line = rd.readLine()) != null) {
-                               result.append(line);
-                           }
-                           rd.close();
-                           if (LOG.isTraceEnabled()) {
-                               LOG.trace("Result: {} ", result.toString());
-                           }
-                           return result.toString();
-                       }
-               } catch (IOException e) {
-                       LOG.debug("No response received: {}", e.getMessage());
-               }
-               return EMPTY;
-    }
-
-
-
-
-    /**
-     * Read initial answer from Server after connect
-     * @param connection that was opened
-     * @return String with answer message
-     * @throws IOException
-     */
-    private static String receiveInitialAnswer(URLConnection iConnection) throws IOException {
-
-
-        final StringBuffer response = new StringBuffer();
-
-        if (iConnection != null) {
-
-            final Reader reader = new InputStreamReader(iConnection.getInputStream());
-            final BufferedReader br = new BufferedReader(reader);
-            String line = "";
-            while ((line = br.readLine()) != null) {
-                response.append(line);
-                response.append("\n");
-            }
-            br.close();
-        }
-
-        return response.toString();
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/test/DcaePrivateTester.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/test/DcaePrivateTester.java
deleted file mode 100644 (file)
index 0e16d27..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.dcaeConnector.test;
-
-import java.io.BufferedReader;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.net.URL;
-import java.net.URLConnection;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.HostnameVerifier;
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-
-/**
- * @author herbert
- *
- */
-public class DcaePrivateTester {
-
-
-    public static void test(URL url, boolean readFromServer) throws Exception {
-        // Create a trust manager that does not validate certificate chains
-        TrustManager[] trustAllCerts = new TrustManager[] { new X509TrustManager() {
-            @Override
-            public java.security.cert.X509Certificate[] getAcceptedIssuers() {
-                return null;
-            }
-            @Override
-            public void checkClientTrusted(X509Certificate[] certs, String authType) {
-            }
-            @Override
-            public void checkServerTrusted(X509Certificate[] certs, String authType) {
-            }
-        } };
-        // Install the all-trusting trust manager
-        final SSLContext sc = SSLContext.getInstance("TLS");
-        sc.init(null, trustAllCerts, new java.security.SecureRandom());
-        HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
-        // Create all-trusting host name verifier
-        HostnameVerifier allHostsValid = (hostname, session) -> true;
-
-        // Install the all-trusting host verifier
-        HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
-
-        //URL url = new URL("https://www.google.com");
-        URLConnection con = url.openConnection();
-        System.out.println("Connection background: "+con.getClass().getName()+" "+url.getHost());
-
-        if (readFromServer) {
-            final Reader reader = new InputStreamReader(con.getInputStream());
-            final BufferedReader br = new BufferedReader(reader);
-            String line = "";
-            while ((line = br.readLine()) != null) {
-                System.out.println(line);
-            }
-            br.close();
-        } /**/
-    } // End of main
-
-
-
-//    httpTestUrl=https://plan.fritz.box:9092/ux/#
-//    keyStore=etc/clientkeystore
-//    keyStorePassword=daylight2016
-    public static void main(String[] args) {
-
-        String urlString = "https://www.google.de";
-        //String urlString = "https://plan.fritz.box:9092/ux/#";
-        //String urlString = "http://plan.fritz.box:9091/ux/#";
-        //String urlString = "http://127.0.0.1:30000/eventListener/v3";
-
-        try {
-            test(new URL(urlString), true);
-        } catch (Exception e) {
-            System.out.println("(..something..) failed");
-            e.printStackTrace();
-        }
-        /*
-        System.out.println("Test HTTPS");
-
-        final HttpsClient httpTestClient;
-        httpTestClient = new HttpsClient();
-
-        httpTestClient.testIt(
-                //"https://plan.fritz.box:9092/ux/#",
-                "https://www.google.de",
-                "/home/herbert/odl/distribution-karaf-0.5.1-Boron-SR1/etc/clientkeystore",
-                "daylight2016"
-        );/**/
-
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/test/DcaeTestClient.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/test/DcaeTestClient.java
deleted file mode 100644 (file)
index 5e00bd8..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- *
- * @author herbert
- *
- */
-package org.opendaylight.mwtn.dcaeConnector.test;
-
-import org.opendaylight.mwtn.config.impl.DcaeConfig;
-import org.opendaylight.mwtn.dcaeConnector.impl.DcaeMessages;
-import org.opendaylight.mwtn.dcaeConnector.impl.DcaeSenderImpl;
-
-public class DcaeTestClient {
-
-    private static final boolean TESTCOLLECTOR_YES = true;
-
-       public static void main(String[] args) {
-
-        System.out.println("Test program to verify DCAE https connectivity");
-
-        //Get configuration
-        DcaeConfig configuration = DcaeConfig.getDefaultConfiguration();
-
-        if (configuration != null) {
-
-            //Start services
-            System.out.println("Configuration: "+configuration);
-
-            DcaeSenderImpl dcaeClient = new DcaeSenderImpl(configuration.getEventReveicerUrl(), configuration.getUserCredentials());
-
-            if (TESTCOLLECTOR_YES) {
-                System.out.println("Connect to testclient and send notifications");
-
-                DcaeMessages dcaeMessages = new DcaeMessages(dcaeClient, "ControllerName", 31, null);
-
-                for (int t=0; t < 2; t++) {
-                    try {
-                        Thread.sleep(1000);                 //1000 milliseconds is one second.
-                    } catch(InterruptedException ex) {
-                        Thread.currentThread().interrupt();
-                    }
-                    System.out.println(t+". Send notification and receive answer message");
-                    System.out.println("Heartbeat message: "+dcaeMessages.postHeartBeat());
-                    System.out.println("Status of ECOMP Client: "+dcaeClient.getStatusAsString());
-                }
-
-            } else {
-
-                System.out.println("Connect to server and receive initial answer.");
-                System.out.println("Message: "+dcaeClient.testConnectServer());
-
-            }
-
-        }
-   }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/test/HttpsClient.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/dcaeConnector/test/HttpsClient.java
deleted file mode 100644 (file)
index 7b96b4f..0000000
+++ /dev/null
@@ -1,293 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.dcaeConnector.test;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.security.KeyManagementException;
-import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
-import java.security.cert.Certificate;
-import java.security.cert.X509Certificate;
-
-import javax.net.ssl.HttpsURLConnection;
-import javax.net.ssl.SSLContext;
-import javax.net.ssl.SSLPeerUnverifiedException;
-import javax.net.ssl.SSLSocketFactory;
-import javax.net.ssl.TrustManager;
-import javax.net.ssl.X509TrustManager;
-
-import org.opendaylight.mwtn.dcaeConnector.impl.DcaeProviderClient;
-
-/**
- * @author herbert
- *
- */
-public class HttpsClient{
-
-    private static final MyLogger LOG = MyLogger.getLogger(DcaeProviderClient.class);
-
-    void test() {
-
-        TrustManager tm = new X509TrustManager() {
-
-            @Override
-            public void checkClientTrusted(X509Certificate[] chain, String authType)
-                    throws java.security.cert.CertificateException {
-                //do nothing, you're the client
-            }
-
-            @Override
-            public void checkServerTrusted(X509Certificate[] chain, String authType)
-                    throws java.security.cert.CertificateException {
-                /* chain[chain.length -1] is the candidate for the
-                 * root certificate.
-                 * Look it up to see whether it's in your list.
-                 * If not, ask the user for permission to add it.
-                 * If not granted, reject.
-                 * Validate the chain using CertPathValidator and
-                 * your list of trusted roots.
-                 */
-            }
-
-            @Override
-            public X509Certificate[] getAcceptedIssuers() {
-                   //also only relevant for servers
-                 return null;
-            }
-        };
-
-        TrustManager tml[] = new TrustManager[1];
-        tml[0] = tm;
-
-
-        try {
-            SSLContext ctx = SSLContext.getInstance("TLS");
-            ctx.init(null, tml, null);
-            @SuppressWarnings("unused")
-                       SSLSocketFactory sslF = ctx.getSocketFactory();
-
-        } catch (NoSuchAlgorithmException | KeyManagementException e) {
-            e.printStackTrace();
-        }
-
-
-    };
-
-    void setupAllTrustingManager() {
-        // Create a trust manager that does not validate certificate chains
-        TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){
-            @Override
-            public X509Certificate[] getAcceptedIssuers(){return null;}
-            @Override
-            public void checkClientTrusted(X509Certificate[] certs, String authType){}
-            @Override
-            public void checkServerTrusted(X509Certificate[] certs, String authType){}
-        }};
-
-        // Install the all-trusting trust manager
-        try {
-            SSLContext sc = SSLContext.getInstance("TLS");
-            sc.init(null, trustAllCerts, new SecureRandom());
-            HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
-        } catch (Exception e) {
-            ;
-        }
-    }
-
-    void testIt(String https_url, String keyStoreName, String keyStorePassword){
-
-        LOG.info("Message to: {} begin.", https_url);
-
-        if (https_url.equals("off")) {
-            LOG.info("Function switched off");
-            return;
-        }
-
-        /*
-        KeyManagerFactory keyManagerFactory = null;
-
-        try {
-            KeyStore ks = KeyStore.getInstance("JKS");
-            FileInputStream in = new FileInputStream(keyStoreName);
-            ks.load(in, keyStorePassword.toCharArray());
-
-            CertificateFactory certFactory = CertificateFactory.getInstance("X.509");
-            FileInputStream in2 = new FileInputStream("etc/eventprovider.cert");
-            X509Certificate cert = (X509Certificate)certFactory.generateCertificate(in2);
-
-            KeyStore.Entry newEntry = new KeyStore.TrustedCertificateEntry(cert);
-            ks.setEntry("someAlias", newEntry, null);
-
-            keyManagerFactory = KeyManagerFactory.getInstance("X509");
-            keyManagerFactory.init(ks, "yourKeyStorePassword".toCharArray());
-
-        } catch (KeyStoreException e1) {
-            LOG.info("Exception: {}", e1.getMessage());
-        } catch (FileNotFoundException e1) {
-            LOG.info("Exception: {}", e1.getMessage());
-        } catch (NoSuchAlgorithmException e1) {
-            LOG.info("Exception: {}", e1.getMessage());
-        } catch (CertificateException e1) {
-            LOG.info("Exception: {}", e1.getMessage());
-        } catch (IOException e1) {
-            LOG.info("Exception: {}", e1.getMessage());
-        } catch (UnrecoverableKeyException e1) {
-            LOG.info("Exception: {}", e1.getMessage());
-        }
-
-        // Create a trust manager that does not validate certificate chains
-        TrustManager[] trustAllCerts = new TrustManager[]{new X509TrustManager(){
-            @Override
-            public X509Certificate[] getAcceptedIssuers(){return null;}
-            @Override
-            public void checkClientTrusted(X509Certificate[] certs, String authType){}
-            @Override
-            public void checkServerTrusted(X509Certificate[] certs, String authType){}
-        }};
-         */
-        File file = new File(keyStoreName);
-        LOG.info("Setup keystore begin "+keyStoreName+" "+keyStorePassword+" Exists: "+file.exists());
-
-        System.setProperty("javax.net.debug","ssl");
-        System.setProperty("javax.net.ssl.keyStoreType", "jks");
-        System.setProperty("javax.net.ssl.keyStore", keyStoreName);
-        System.setProperty("javax.net.ssl.keyStorePassword", keyStorePassword);
-
-        LOG.info("Setup keystore complete");
-
-        javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(
-                (hostname, sslSession) -> {
-                 LOG.info("Hostname check {}", hostname);
-                 return true;
-              });
-        LOG.info("Setup name verifier.");
-
-        try {
-            /*
-            SSLContext sslContext = SSLContext.getInstance("TLS");
-            sslContext.init(keyManagerFactory.getKeyManagers(), trustAllCerts, null);
-            SSLContext.setDefault(sslContext);
-            */
-
-            URL url = new URL(https_url);
-            LOG.info("Url object created");
-
-            HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
-
-            LOG.info("openConnection");
-
-            //dumpl all cert info
-            print_https_cert(con);
-
-            //dump all the content
-            print_content(con);
-
-        } catch (MalformedURLException e) {
-            LOG.info("Exception: {}", e.getMessage());
-        } catch (IOException e) {
-            LOG.info("Exception: {}", e.getMessage());
-        }
-
-        LOG.info("Message to: {} end.", https_url);
-
-    }
-
-    private void print_https_cert(HttpsURLConnection con){
-
-        StringBuffer logMsg = new StringBuffer();
-
-        if(con!=null){
-
-            try {
-                logMsg.append("Response Code : " + con.getResponseCode());
-                logMsg.append("Cipher Suite : " + con.getCipherSuite());
-                logMsg.append("\n");
-
-                Certificate[] certs = con.getServerCertificates();
-                for(Certificate cert : certs){
-                    logMsg.append("Cert Type : " + cert.getType());
-                    logMsg.append("Cert Hash Code : " + cert.hashCode());
-                    logMsg.append("Cert Public Key Algorithm : " + cert.getPublicKey().getAlgorithm());
-                    logMsg.append("Cert Public Key Format : " + cert.getPublicKey().getFormat());
-                    logMsg.append("\n");
-                }
-
-
-            } catch (SSLPeerUnverifiedException e) {
-                logMsg.append(e.getMessage());
-            } catch (IOException e){
-                logMsg.append(e.getMessage());
-            }
-        } else {
-            logMsg.append("No connection");
-        }
-
-        LOG.info(logMsg.toString());
-   }
-
-    private void print_content(HttpsURLConnection con){
-
-         StringBuffer logMsg = new StringBuffer();
-         if(con!=null){
-
-            try {
-
-
-                logMsg.append("****** Content of the URL ********");
-                BufferedReader br =
-                        new BufferedReader(
-                                new InputStreamReader(con.getInputStream()));
-
-                String input;
-
-                while ((input = br.readLine()) != null){
-                    logMsg.append(input);
-                }
-                br.close();
-
-
-            } catch (IOException e) {
-                logMsg.append(e.getMessage());
-            }
-
-        } else {
-            logMsg.append("No connection");
-        }
-
-        LOG.info(logMsg.toString());
-
-    }
-
-    private static class MyLogger {
-
-        private void out( String s, Object...oList) {
-            StringBuffer sb = new StringBuffer();
-            sb.append("-------> ");
-            sb.append(s);
-            sb.append(" P: ");
-            int t = 0;
-            for (Object o: oList) {
-                sb.append("[");
-                sb.append(t++);
-                sb.append("](");
-                sb.append(o.toString());
-                sb.append(")");
-            }
-            System.out.println(sb.toString());
-        }
-
-        void info( String s, Object...o) {
-            out(s,o);
-        }
-
-        static MyLogger getLogger(Class<?> c) {
-            return new MyLogger();
-        }
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/Checker.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/Checker.java
deleted file mode 100644 (file)
index d368dc4..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- * (c) highstreet technologies GmbH
- */
-package org.opendaylight.mwtn.deviceMonitor.impl;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Steps to Monitor the connection to a network element during state connected
- */
-abstract class Checker {
-
-    @SuppressWarnings("unused")
-    private static final Logger LOG = LoggerFactory.getLogger(Checker.class);
-
-    /**
-     * Check action.
-     * @return true if reachable, false if not
-     */
-    abstract boolean isReachableOnce();
-
-    /**
-     * Procedure to check the connection of one mountpoint
-     * @return true if reachable, false if not
-     */
-    boolean isConnected() {
-        return isReachableOnce();
-    }
-}
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitor.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitor.java
deleted file mode 100644 (file)
index a9c0abe..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.deviceMonitor.impl;
-
-import org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation;
-
-/**
- * @author herbert
- *
- */
-public interface DeviceMonitor {
-
-
-    /**
-     * Stop the complete service and terminates all actions
-     */
-    public void close();
-
-    /**
-     * createMountpoint registers a new mountpoint monitoring service
-     * @param mountPointNodeName name of mountpoint
-     */
-    public void createMountpointIndication(String mountPointNodeName);
-
-    /**
-     * removeMountpoint deregisters a mountpoint for registration services
-     * @param mountPointNodeName to deregister
-     */
-    public void removeMountpointIndication(String mountPointNodeName);
-
-    /**
-     * Notify of device state changes to "connected"
-     * @param mountPointNodeName name of mountpoint
-     * @param ne to monitor
-     */
-    public void deviceConnectIndication(String mountPointNodeName, ONFCoreNetworkElementRepresentation ne);
-
-    /**
-     * Notify of device state change to "disconnected"
-     * @param mountPointNodeName to deregister
-     */
-    public void deviceDisconnectIndication(String mountPointNodeName);
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorImpl.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorImpl.java
deleted file mode 100644 (file)
index 6ba0b07..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- * (c) 2017 highstreet technologies GmbH
- */
-
-package org.opendaylight.mwtn.deviceMonitor.impl;
-
-import java.util.Enumeration;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-
-import org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation;
-import org.opendaylight.mwtn.devicemanager.impl.listener.ODLEventListener;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- *  Implementation of concept "Active monitoring" of a device.<br>
- *    <br>
- *  For each existing mountpoint a task runs with 120s cycle time. Every 120 seconds the check actions are performed.
- *  The request is handled by the NETCONF layer with a (default)configured time-out of 60 seconds.<br>
- *  Generated alarms, by the object/node "SDN-Controller" are (enum DeviceMonitorProblems):<br>
- *      - notConnected(InternalSeverity.Warning)<br>
- *      - noConnectionMediator(InternalSeverity.Minor)<br>
- *      - noConnectionNe(InternalSeverity.Critical)<br>
- *    <br>
- *  1. Mountpoint does not exist<br>
- *  If the mountpoint does not exists there are no related current alarms in the database.<br>
- *    <br>
- *  2. Created mountpoint with state "Connecting" or "UnableToConnect"<br>
- *  If the Mountpoint is created and connection status is "Connecting" or "UnableToConnect".<br>
- *  - After about 2..4 Minutes ... raise alarm "notConnected" with severity warning<br>
- *    <br>
- *  3. Created mountpoint with state "Connection"<br>
- *  There are two monitor activities.<br>
- *      3a. Check of Mediator connection by requesting (typical) cached data.<br>
- *          - After about 60 seconds raise alarm: connection-loss-mediator with severity minor<br>
- *          - Request from Mediator: network-element<br>
- *    <br>
- *      3b. Check connection to NEby requesting (typical) non-cached data.<br>
- *          - Only if AirInterface available. The first one is used.<br>
- *          - Requested are the currentAlarms<br>
- *          - After about 60 seconds raise alarm: connection-loss-network-element with severity critical<br>
- *    <br>
- * @author herbert
- */
-
-public class DeviceMonitorImpl implements DeviceMonitor, AutoCloseable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(DeviceMonitorImpl.class);
-
-    private final ConcurrentHashMap<String, DeviceMonitorTask> queue;
-    private final ScheduledExecutorService scheduler;
-    private final ODLEventListener odlEventListener;
-
-    /*-------------------------------------------------------------
-     * Construction/ destruction of service
-     */
-
-    /**
-     * Basic implementation of devicemonitoring
-     * @param odlEventListener as destination for problems
-     */
-    public DeviceMonitorImpl(ODLEventListener odlEventListener) {
-        LOG.info("Construct {}", this.getClass().getSimpleName());
-
-        this.odlEventListener = odlEventListener;
-        this.queue = new ConcurrentHashMap<>();
-        this.scheduler = Executors.newScheduledThreadPool(1);
-    }
-
-    /**
-     * Stop the service. Stop all running monitoring tasks.
-     */
-    @Override
-    synchronized public void close() {
-        LOG.info("Close {}", this.getClass().getSimpleName());
-
-        Enumeration<String> e = queue.keys();
-        while (e.hasMoreElements()) {
-            deviceDisconnectIndication(e.nextElement());
-        }
-
-        scheduler.shutdown();
-    }
-
-    /*-------------------------------------------------------------
-     * Register/ Deregister Mountpoint
-     */
-
-    @Override
-    synchronized public void createMountpointIndication(String mountPointNodeName) {
-
-        LOG.debug("Register for monitoring {} {}",mountPointNodeName, mountPointNodeName.hashCode());
-
-        LOG.info("Do start of DeviceMonitor task");
-        //Runnable task = new PerformanceManagerTask(queue, databaseService);
-        DeviceMonitorTask task = new DeviceMonitorTask(mountPointNodeName, this.odlEventListener);
-        queue.put(mountPointNodeName, task);
-        task.start(scheduler);
-    }
-
-    @Override
-    synchronized public void removeMountpointIndication(String mountPointNodeName) {
-
-        if (queue.containsKey(mountPointNodeName)) {
-            DeviceMonitorTask task = queue.get(mountPointNodeName);
-            //Remove from here
-            queue.remove(mountPointNodeName);
-
-            //Clear all problems
-            task.removeMountpointIndication();
-            LOG.debug("Task stopped: {}", mountPointNodeName);
-        } else {
-            LOG.warn("Task not in queue anymore: {}", mountPointNodeName);
-        }
-    }
-
-    /*-------------------------------------------------------------
-     * Register/ Deregister device
-     */
-
-    @Override
-    synchronized public void deviceConnectIndication(String mountPointNodeName, ONFCoreNetworkElementRepresentation ne) {
-
-        LOG.debug("ne changes to connected state {}",mountPointNodeName);
-        if (queue.containsKey(mountPointNodeName)) {
-            DeviceMonitorTask task = queue.get(mountPointNodeName);
-            task.deviceConnectIndication(ne);
-        } else {
-            LOG.warn("Monitoring task not in queue anymore: {} {} {}", mountPointNodeName, mountPointNodeName.hashCode(), queue.size());
-        }
-    }
-
-    @Override
-    synchronized public void deviceDisconnectIndication(String mountPointNodeName) {
-
-        LOG.debug("ne changes to disconnected state {}",mountPointNodeName);
-        if (queue.containsKey(mountPointNodeName)) {
-            DeviceMonitorTask task = queue.get(mountPointNodeName);
-            task.deviceDisconnectIndication();
-        } else {
-            LOG.warn("Monitoring task not in queue anymore: {} {} {}", mountPointNodeName, mountPointNodeName.hashCode(), queue.size());
-        }
-    }
-
-    /*-------------------------------------------------------------
-     * Private functions
-     */
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorProblems.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorProblems.java
deleted file mode 100644 (file)
index 8100060..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/**
- * Problems generated by DeviceMonitor
- *
- * @author herbert
- *
- */
-package org.opendaylight.mwtn.deviceMonitor.impl;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalSeverity;
-
-public enum DeviceMonitorProblems {
-
-       /**
-        * Mountpoint is not connected via NETCONF with NE/Mediator = ssh connection
-        */
-    connectionLossOAM(InternalSeverity.Major),
-
-    /**
-     * Mountpoint is connected via Netconf to Mediator, but mediator is not responding.
-     * Connection state to NE is unknown.
-     */
-    connectionLossMediator(InternalSeverity.Major),
-
-    /** Mountpoint is connected via Netconf to Mediator.
-     * This connection is OK, but mediator <-> NE Connection is not OK
-     */
-    connectionLossNeOAM(InternalSeverity.Major);
-
-    InternalSeverity severity;
-
-    DeviceMonitorProblems(InternalSeverity severity) {
-        this.severity = severity;
-    }
-
-    InternalSeverity getSeverity() {
-        return severity;
-    }
-
-}
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorSupport.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorSupport.java
deleted file mode 100644 (file)
index 8179f8f..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.deviceMonitor.impl;
-
-/**
- * @author herbert
- *
- */
-public interface DeviceMonitorSupport {
-
-    /**
-     * Prepare subsequent check calls
-     */
-    public void prepareCheck();
-
-    /**
-     * Test connection to mediator, by getting data that have to be called from NE
-     * @return true if connection working, false if not
-     */
-    public boolean checkAndConnectionToMediatorIsOk();
-
-    /**
-     * Test connection to NE via mediator, by getting data that have to be called from NE
-     * @return true if connection working, false if not
-     */
-    public boolean checkAndConnectionToNeIsOk();
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorTask.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/deviceMonitor/impl/DeviceMonitorTask.java
deleted file mode 100644 (file)
index 308df01..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-/**
- * @author herbert
- *
- */
-package org.opendaylight.mwtn.deviceMonitor.impl;
-
-import java.util.Collections;
-import java.util.EnumSet;
-import java.util.Set;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-import javax.annotation.Nullable;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalSeverity;
-import org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation;
-import org.opendaylight.mwtn.devicemanager.impl.listener.ODLEventListener;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class DeviceMonitorTask implements Runnable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(DeviceMonitorTask.class);
-    private static final String LOGMARKER = "DMTick";
-
-    private final String mountPointName;
-    private final ODLEventListener odlEventListener;
-    private final Checker checkConnectionToMediator;
-    private final Checker checkConnectionToNe;
-
-    private int tickCounter; //Added for each tick. Not relevant for internal status
-
-    private ScheduledFuture<?> taskHandle;
-    private final Object lockNe = new Object();    //USe top lock access to member ne
-    private @Nullable ONFCoreNetworkElementRepresentation ne; //Indication if in status connect or disconnect
-    private Integer disconnectSupervisionTickout; //Tickcounter of task ticks for "not connected indication"
-    private Set<DeviceMonitorProblems> currentProblems; //List with actual problems. Synchronized by itself
-
-
-
-    /*------------------------------------------------------------
-     * Construction
-     */
-
-    /**
-     * Setup monitoring task
-     * @param mountPointName to monitor
-     * @param odlEventListener to forward problems to
-     */
-    public DeviceMonitorTask(String mountPointName, ODLEventListener odlEventListener) {
-        LOG.debug("Init task {}", DeviceMonitorTask.class.getSimpleName());
-
-        //Setup finals
-        this.mountPointName = mountPointName;
-        this.odlEventListener = odlEventListener;
-        this.checkConnectionToMediator = new Checker() {
-            @Override
-            boolean isReachableOnce() {
-                synchronized(lockNe) {
-                    //If ne is not connected anymore clear alarms
-                    return ne == null ? true : ne.checkAndConnectionToMediatorIsOk();
-                }
-            }
-        };
-        this.checkConnectionToNe = new Checker() {
-            @Override
-            boolean isReachableOnce() {
-                synchronized(lockNe) {
-                    //If ne is not connected anymore clear alarms
-                    return ne == null ? true : ne.checkAndConnectionToNeIsOk();
-                }
-            }
-        };
-
-        //Setup parameters
-        this.taskHandle = null;
-        this.tickCounter = 0;
-        this.ne = null;
-        this.currentProblems = Collections.synchronizedSet(EnumSet.noneOf(DeviceMonitorProblems.class));
-        this.disconnectSupervisionTickout = 0;
-
-        int removed = odlEventListener.removeAllCurrentProblemsOfNode(mountPointName);
-        LOG.debug("{} Init task removed fault entries {}", LOGMARKER, removed);
-
-    }
-
-    /**
-     * Start for each object an own instance of the thread.
-     * @param scheduler for all the threads.
-     */
-    public void start(ScheduledExecutorService scheduler) {
-        LOG.info("{} {} DeviceMonitor task to create", LOGMARKER, tickCounter);
-        if (taskHandle == null) {
-            startDisconnectSupervision();
-            taskHandle = scheduler.scheduleAtFixedRate(this, 0, 120, TimeUnit.SECONDS);
-            LOG.info("DeviceMonitor task scheduled");
-        } else {
-            LOG.error("{} {} Task already running.", LOGMARKER, tickCounter);
-        }
-    }
-
-    /**
-     * Call after NE change state to connected
-     * @param neParam that connected
-     */
-
-    public void deviceConnectIndication(ONFCoreNetworkElementRepresentation neParam) {
-        LOG.info("{} {} Connect {} and stop.", LOGMARKER, tickCounter, mountPointName);
-        clear(DeviceMonitorProblems.connectionLossOAM);
-        synchronized(lockNe) {
-            this.ne = neParam;
-        }
-        stopDisconnectSupervision();
-    }
-
-    /**
-     * If ne is disconnected do the related actions.
-     */
-
-    public void deviceDisconnectIndication() {
-        LOG.info("{} {} Disconnect {} and start.", LOGMARKER, tickCounter, mountPointName);
-        clear(DeviceMonitorProblems.connectionLossOAM);
-        synchronized(lockNe) {
-            this.ne = null;
-        }
-        startDisconnectSupervision();
-    }
-
-    /**
-     * Do all actions to clean up the log if mountpoint has been deleted.
-     * Prepare cancellation of the task and cancel task
-     */
-
-    public void removeMountpointIndication() {
-         for (DeviceMonitorProblems problem : DeviceMonitorProblems.values()) {
-            clear(problem);
-        }
-         //Cancel the task
-         if (this.taskHandle != null) {
-             this.taskHandle.cancel(false);
-             LOG.info("{} {} DeviceMonitor task canceled for {}", LOGMARKER, tickCounter, mountPointName);
-         } else {
-             LOG.error("{} {} Task already stopped", LOGMARKER, tickCounter);
-         }
-    }
-
-    /*------------------------------------------------------------
-     * Functions
-     */
-
-    /**
-     * Raise a problem, but only once
-     * @param problem
-     */
-    private void raise(DeviceMonitorProblems problem) {
-        LOG.debug("{} Raise problem {} Raised-status {}",LOGMARKER, problem.name(), currentProblems.contains(problem));
-        synchronized(currentProblems) {
-            if (! currentProblems.contains(problem)) {
-                currentProblems.add(problem);
-                odlEventListener.onProblemNotification(mountPointName, problem.name(), problem.getSeverity());
-            }
-        }
-
-    }
-
-    /**
-     * Raise a problem, but only once
-     * @param problem
-     */
-    private void clear(DeviceMonitorProblems problem) {
-        LOG.debug("{} Clear problem {} Raised-status {}",LOGMARKER, problem.name(), currentProblems.contains(problem));
-        synchronized(currentProblems) {
-            if (currentProblems.contains(problem)) {
-                currentProblems.remove(problem);
-                odlEventListener.onProblemNotification(mountPointName, problem.name(), InternalSeverity.NonAlarmed);
-            }
-        }
-    }
-
-    /**
-     * Process problem notification cascade
-     * @param isReachable
-     * @param problem
-     */
-    private void clearRaiseIfConnected(Checker checker, DeviceMonitorProblems problem) {
-        LOG.debug("{} check start {} problem {} Raised-status {}",LOGMARKER, tickCounter, problem.name(), currentProblems.contains(problem));
-        if (checker.isConnected()) {
-            clear(problem);
-        } else {
-            raise(problem);
-        }
-        LOG.debug("{} check end {} problem {} Raised-status {}",LOGMARKER, tickCounter, problem.name(), currentProblems.contains(problem));
-    }
-
-
-    private void startDisconnectSupervision() {
-        synchronized(disconnectSupervisionTickout) {
-            this.disconnectSupervisionTickout = 2;
-        }
-    }
-
-    private void stopDisconnectSupervision() {
-        synchronized(disconnectSupervisionTickout) {
-            this.disconnectSupervisionTickout = 0;
-        }
-    }
-
-    private boolean processDisconnectSupervisionAndCheckExceeded() {
-        synchronized(disconnectSupervisionTickout) {
-            if (disconnectSupervisionTickout == 0) {
-                return true;
-            } else if (disconnectSupervisionTickout > 0) {
-                disconnectSupervisionTickout--;
-            }
-            return false;
-        }
-    }
-
-    /*------------------------------------------------------------
-     * TASK
-     */
-
-    /**
-     * Task to monitor connectivity to Network Elements.
-     * Connectivity problems lead to alarm indication.
-     */
-    @Override
-    public void run() {
-
-        try {
-            boolean neNullIndicator;
-            synchronized (lockNe) {
-                neNullIndicator = ne == null;
-            }
-            LOG.debug("{} START mountpoint {} tick {} ne==null {} tickout {}",LOGMARKER, mountPointName, tickCounter, neNullIndicator, disconnectSupervisionTickout);
-            if (neNullIndicator) { //NE not connected
-                LOG.debug("{} {} NE disconnected check {}", LOGMARKER, tickCounter, disconnectSupervisionTickout);
-                if (processDisconnectSupervisionAndCheckExceeded()) {
-                    raise(DeviceMonitorProblems.connectionLossOAM);
-                }
-            } else {
-                clear(DeviceMonitorProblems.connectionLossOAM); //Always cleared never raised
-                LOG.debug("{} {} Prepare check", LOGMARKER, tickCounter);
-                ne.prepareCheck();  // Prepare ne check
-                // Mediator check
-                LOG.debug("{} {} Mediator check", LOGMARKER, tickCounter);
-                clearRaiseIfConnected(checkConnectionToMediator, DeviceMonitorProblems.connectionLossMediator);
-
-                // NE check
-                LOG.debug("{} {} Ne check", LOGMARKER, tickCounter);
-                clearRaiseIfConnected(checkConnectionToNe, DeviceMonitorProblems.connectionLossNeOAM);
-            }
-        } catch (Exception e) {
-            //Prevent stopping the task
-            LOG.warn("{} {} (..something..) failed",LOGMARKER, tickCounter, e);
-        }
-        LOG.debug("{} {} END", LOGMARKER, tickCounter++);
-
-    }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/DeviceManagerImpl.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/DeviceManagerImpl.java
deleted file mode 100644 (file)
index fde6a15..0000000
+++ /dev/null
@@ -1,402 +0,0 @@
-/**
- * Copyright (c) 2017 highstreet technologies GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.mwtn.devicemanager.impl;
-
-import java.util.concurrent.ConcurrentHashMap;
-
-import javax.annotation.Nullable;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.MountPoint;
-import org.opendaylight.controller.md.sal.binding.api.MountPointService;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
-import org.opendaylight.controller.sal.binding.api.RpcConsumerRegistry;
-import org.opendaylight.mwtn.aaiConnector.impl.AaiProviderClient;
-import org.opendaylight.mwtn.base.database.HtDatabaseNode;
-import org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementFactory;
-import org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation;
-import org.opendaylight.mwtn.config.impl.AkkaConfig;
-import org.opendaylight.mwtn.config.impl.EsConfig;
-import org.opendaylight.mwtn.config.impl.GeoConfig;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration;
-import org.opendaylight.mwtn.config.impl.PmConfig;
-import org.opendaylight.mwtn.dcaeConnector.impl.DcaeProviderClient;
-import org.opendaylight.mwtn.deviceMonitor.impl.DeviceMonitorImpl;
-import org.opendaylight.mwtn.devicemanager.api.DeviceManagerService;
-import org.opendaylight.mwtn.devicemanager.impl.database.service.HtDatabaseEventsService;
-import org.opendaylight.mwtn.devicemanager.impl.listener.NetconfChangeListener;
-import org.opendaylight.mwtn.devicemanager.impl.listener.ODLEventListener;
-import org.opendaylight.mwtn.devicemanager.impl.xml.WebSocketServiceClient;
-import org.opendaylight.mwtn.devicemanager.impl.xml.XmlMapper;
-import org.opendaylight.mwtn.index.impl.IndexConfigService;
-import org.opendaylight.mwtn.index.impl.IndexMwtnService;
-import org.opendaylight.mwtn.index.impl.IndexUpdateService;
-import org.opendaylight.mwtn.performancemanager.impl.PerformanceManagerImpl;
-import org.opendaylight.mwtn.performancemanager.impl.database.service.MicrowaveHistoricalPerformanceWriterService;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.CreateSubscriptionInput;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.CreateSubscriptionInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.NotificationsService;
-import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.netconf.notification._1._0.rev080714.StreamNameType;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.network.topology.topology.topology.types.TopologyNetconf;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketmanagerService;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Optional;
-
-public class DeviceManagerImpl implements DeviceManagerService, BindingAwareProvider, AutoCloseable {
-
-       private static final Logger LOG = LoggerFactory.getLogger(DeviceManagerImpl.class);
-       private static final String MYDBKEYNAME = "SDN-Controller";
-
-       // http://sendateodl:8181/restconf/operational/network-topology:network-topology/topology/topology-netconf
-       private static final InstanceIdentifier<Topology> NETCONF_TOPO_IID = InstanceIdentifier
-                       .create(NetworkTopology.class)
-                       .child(Topology.class, new TopologyKey(new TopologyId(TopologyNetconf.QNAME.getLocalName())));
-
-       private ProviderContext session;
-       private DataBroker dataBroker;
-
-       private WebSocketServiceClient webSocketService;
-       private HtDatabaseEventsService databaseClientEvents;
-       private ODLEventListener odlEventListener;
-       private NetconfChangeListener netconfChangeListener;
-
-       private final ConcurrentHashMap<String, ONFCoreNetworkElementRepresentation> networkElementRepresentations = new ConcurrentHashMap<>();
-       private @Nullable PerformanceManagerImpl performanceManager = null;
-       private ProviderClient dcaeProviderClient;
-       private @Nullable AaiProviderClient aaiProviderClient;
-       private DeviceMonitorImpl deviceMonitor;
-       private IndexUpdateService updateService;
-       private IndexConfigService configService;
-       private IndexMwtnService mwtnService;
-       private HtDatabaseNode htDatabase;
-       private Boolean initialized = false;
-
-       @Override
-       public void onSessionInitiated(ProviderContext pSession) {
-               LOG.info("Session Initiated start");
-
-               this.session = pSession;
-               this.dataBroker = pSession.getSALService(DataBroker.class);
-
-               // Get configuration
-               HtDevicemanagerConfiguration config = HtDevicemanagerConfiguration.getConfiguration();
-               AkkaConfig akkaConfig = null;
-               try {
-                       akkaConfig = AkkaConfig.load();
-               } catch (Exception e1) {
-                       LOG.warn("error loading akka.conf: " + e1.getMessage());
-               }
-               GeoConfig geoConfig = null;
-               if (akkaConfig != null && akkaConfig.isCluster()) {
-                       if (GeoConfig.fileExists()) {
-                               try {
-                                       LOG.debug("try to load geoconfig");
-                                       geoConfig = GeoConfig.load();
-                               } catch (Exception err) {
-                                       LOG.warn("error loading geoconfig: " + err.getMessage());
-                               }
-                       } else
-                               LOG.debug("no geoconfig file found");
-               }
-               EsConfig dbConfig = config.getEs();
-               LOG.debug("esConfig=" + dbConfig.toString());
-               // Start database
-               htDatabase = HtDatabaseNode.start(dbConfig, akkaConfig,geoConfig);
-
-               // init Database Values only if singleNode or clusterMember=1
-               if (akkaConfig == null || akkaConfig.isSingleNode() || (akkaConfig != null && akkaConfig.isCluster()
-                               && akkaConfig.getClusterConfig().getRoleMemberIndex() == 1)) {
-                       // Create DB index if not existing and if database is running
-                       this.configService = new IndexConfigService(htDatabase);
-                       this.mwtnService = new IndexMwtnService(htDatabase);
-               }
-               // Websockets
-               this.webSocketService = new WebSocketServiceClient(pSession.getRpcService(WebsocketmanagerService.class),
-                               new XmlMapper());
-
-               // DCAE
-               this.dcaeProviderClient = new DcaeProviderClient(config, dbConfig.getCluster(), this);
-
-               this.aaiProviderClient = new AaiProviderClient(config,this);
-               // EM
-               EsConfig emConfig = dbConfig.cloneWithIndex("sdnevents");
-
-               if (emConfig == null) {
-                       LOG.warn("No {} configuration available. Don't start event manager");
-               } else {
-                       this.databaseClientEvents = new HtDatabaseEventsService(htDatabase);
-
-                       String myDbKeyNameExtended=MYDBKEYNAME+"-"+dbConfig.getCluster();
-
-
-                       this.odlEventListener = new ODLEventListener(myDbKeyNameExtended, webSocketService, databaseClientEvents,
-                                       dcaeProviderClient, null);
-               }
-
-               // PM
-               PmConfig configurationPM = config.getPm();
-               LOG.info("Performance manager configuration: {}", configurationPM);
-               if (!configurationPM.isPerformanceManagerEnabled()) {
-
-                       LOG.info("No configuration available. Don't start performance manager");
-               } else {
-                       @Nullable MicrowaveHistoricalPerformanceWriterService databaseClientHistoricalPerformance;
-                       databaseClientHistoricalPerformance = new MicrowaveHistoricalPerformanceWriterService(htDatabase);
-                       this.performanceManager = new PerformanceManagerImpl(60, databaseClientHistoricalPerformance);
-               }
-
-               // DUS (Database update service)
-               LOG.debug("start db update service");
-               this.updateService = new IndexUpdateService(htDatabase, dbConfig.getHost(), dbConfig.getCluster(),
-                               dbConfig.getNode());
-               this.updateService.start();
-
-               // DM
-               // DeviceMonitor has to be available before netconfSubscriptionManager is
-               // configured
-               LOG.debug("start DeviceMonitor Service");
-               this.deviceMonitor = new DeviceMonitorImpl(odlEventListener);
-
-               // netconfSubscriptionManager should be the last one because this is a callback
-               // service
-               LOG.debug("start NetconfSubscriptionManager Service");
-               // this.netconfSubscriptionManager = new
-               // NetconfSubscriptionManagerOfDeviceManager(this, dataBroker);
-               // this.netconfSubscriptionManager.register();
-               this.netconfChangeListener = new NetconfChangeListener(this, dataBroker);
-               this.netconfChangeListener.register();
-
-               synchronized (initialized) {
-                       initialized = true;
-               }
-
-               LOG.info("Session Initiated end");
-       }
-
-       @Override
-       public void close() throws Exception {
-               LOG.info("DeviceManagerImpl closing ...");
-
-               close(performanceManager);
-               close(dcaeProviderClient);
-               close(aaiProviderClient);
-               close(deviceMonitor);
-               close(updateService, configService, mwtnService);
-               close(htDatabase);
-               close(netconfChangeListener);
-
-               LOG.info("DeviceManagerImpl closing done");
-       }
-
-       /**
-        * Used to close all Services, that should support AutoCloseable Pattern
-        *
-        * @param toClose
-        * @throws Exception
-        */
-       private void close(AutoCloseable... toCloseList) throws Exception {
-               for (int t = 0; t < toCloseList.length; t++) {
-                       if (toCloseList[t] != null)
-                               toCloseList[t].close();
-               }
-       }
-
-       /**
-        * For each mounted device a mountpoint is created and this listener is called.
-        */
-       @Override
-       public void startListenerOnNode(NodeId nNodeId, NetconfNode nNode) {
-               synchronized (networkElementRepresentations) {
-
-                       String mountPointNodeName = nNodeId.getValue();
-                       LOG.info("Starting Event listener on Netconf device :: Name : {}", mountPointNodeName);
-
-                       if (networkElementRepresentations.containsKey(mountPointNodeName)) {
-                               LOG.warn("Mountpoint {} already registered. Leave startup procedure.", mountPointNodeName);
-                               return;
-                       }
-                       if (!initialized) {
-                               LOG.warn("Devicemanager initialization still pending. Leave startup procedure. Mountpoint {}", mountPointNodeName);
-                               return;
-                       }
-
-                       MountPointService mountService = session.getSALService(MountPointService.class);
-
-                       InstanceIdentifier<Node> instanceIdentifier = NETCONF_TOPO_IID.child(Node.class,
-                                       new NodeKey(new NodeId(mountPointNodeName)));
-
-                       Optional<MountPoint> optionalMountPoint = null;
-                       int timeout = 10000;
-                       while (!(optionalMountPoint = mountService.getMountPoint(instanceIdentifier)).isPresent() && timeout > 0) {
-
-                               LOG.info("Event listener waiting for mount point for Netconf device :: Name : {}", mountPointNodeName);
-                               try {
-                                       Thread.sleep(1000);
-                                       timeout -= 1000;
-                               } catch (InterruptedException e) {
-                                       LOG.info("Event listener waiting for mount point for Netconf device :: Name : {} Time: {}",
-                                                       mountPointNodeName, timeout);
-                               }
-                       }
-
-                       if (!optionalMountPoint.isPresent()) {
-                               LOG.warn("Event listener timeout while waiting for mount point for Netconf device :: Name : {} ",
-                                               mountPointNodeName);
-                               return;
-                       }
-
-                       // Mountpoint is present for sure
-                       MountPoint mountPoint = optionalMountPoint.get();
-
-                       DataBroker netconfNodeDataBroker = mountPoint.getService(DataBroker.class).orNull();
-                       if (netconfNodeDataBroker == null) {
-                               LOG.info("Mountpoint is slave mountpoint {}", mountPointNodeName);
-                               return;
-                       }
-
-                       LOG.info("Databroker service 1:{} 2:{}", dataBroker.hashCode(), netconfNodeDataBroker.hashCode());
-                       // getNodeInfoTest(dataBroker);
-
-
-                       // Setup microwaveEventListener for Notificationservice
-
-                       // MicrowaveEventListener microwaveEventListener = new
-                       // MicrowaveEventListener(mountPointNodeName, websocketmanagerService,
-                       // xmlMapper, databaseClientEvents);
-                       ONFCoreNetworkElementRepresentation ne = ONFCoreNetworkElementFactory.create(mountPointNodeName, dataBroker,
-                                       webSocketService, databaseClientEvents, instanceIdentifier, netconfNodeDataBroker, dcaeProviderClient,
-                                       null);
-                       networkElementRepresentations.put(mountPointNodeName, ne);
-                       ne.doRegisterMicrowaveEventListener(mountPoint);
-
-                       // Register netconf stream
-                       registerNotificationStream(mountPointNodeName, mountPoint, "NETCONF");
-
-                       // -- Read data from NE
-                       ne.initialReadFromNetworkElement();
-                       ne.initSynchronizationExtension();
-
-                       // Setup Service that monitors registration/ deregistration of session
-                       odlEventListener.registration(mountPointNodeName);
-
-                       if (aaiProviderClient != null) {
-                               aaiProviderClient.onDeviceRegistered(mountPointNodeName);
-                       }
-                       // -- Register NE to performance manager
-                       if (performanceManager != null) {
-                               performanceManager.registration(mountPointNodeName, ne);
-                       }
-
-                       deviceMonitor.deviceConnectIndication(mountPointNodeName, ne);
-
-                       LOG.info("Starting Event listener on Netconf device :: Name : {} finished", mountPointNodeName);
-
-               }
-
-       }
-
-       @Override
-       public void removeListenerOnNode(NodeId nNodeId, NetconfNode nNode) {
-               String mountPointNodeName = nNodeId.getValue();
-               LOG.info("Removing NetworkElementRepresetations for device :: Name : {}", mountPointNodeName);
-
-               ONFCoreNetworkElementRepresentation ne = networkElementRepresentations.remove(mountPointNodeName);
-               if (ne != null) {
-                       int problems = ne.removeAllCurrentProblemsOfNode();
-                       LOG.debug("Removed all {} problems from database at deregistration for {}", problems, mountPointNodeName);
-                       if (odlEventListener != null)
-                               odlEventListener.deRegistration(mountPointNodeName);
-                       if (performanceManager != null) {
-                               performanceManager.deRegistration(mountPointNodeName);
-                       }
-                       if (aaiProviderClient != null) {
-                               aaiProviderClient.onDeviceUnregistered(mountPointNodeName);
-                       }
-               } else {
-                       LOG.info("No related ne object for mountpoint {} to deregister .", mountPointNodeName);
-               }
-               if (deviceMonitor != null)
-                       deviceMonitor.deviceDisconnectIndication(mountPointNodeName);
-
-       }
-
-       @Override
-       public void mountpointNodeCreation(NodeId nNodeId, NetconfNode nNode) {
-               String mountPointNodeName = nNodeId.getValue();
-               LOG.info("mountpointNodeCreation {} {}", nNodeId.getValue(), nNode.getConnectionStatus());
-               deviceMonitor.createMountpointIndication(mountPointNodeName);
-       }
-
-       @Override
-       public void mountpointNodeRemoved(NodeId nNodeId) {
-               String mountPointNodeName = nNodeId.getValue();
-               LOG.info("mountpointNodeRemoved {}", nNodeId.getValue());
-               deviceMonitor.removeMountpointIndication(mountPointNodeName);
-       }
-
-       /**
-        * Do the stream creation for the device.
-        *
-        * @param mountPointNodeName
-        * @param mountPoint
-        */
-       private void registerNotificationStream(String mountPointNodeName, MountPoint mountPoint, String streamName) {
-
-               final Optional<RpcConsumerRegistry> optionalRpcConsumerService = mountPoint
-                               .getService(RpcConsumerRegistry.class);
-               if (optionalRpcConsumerService.isPresent()) {
-                       final RpcConsumerRegistry rpcConsumerRegitry = optionalRpcConsumerService.get();
-                       final NotificationsService rpcService = rpcConsumerRegitry.getRpcService(NotificationsService.class);
-                       if (rpcService == null) {
-                               LOG.warn("rpcService is null for mountpoint {}", mountPointNodeName);
-                       } else {
-                               final CreateSubscriptionInputBuilder createSubscriptionInputBuilder = new CreateSubscriptionInputBuilder();
-                               createSubscriptionInputBuilder.setStream(new StreamNameType(streamName));
-                               LOG.info("Event listener triggering notification stream {} for node {}", streamName, mountPointNodeName);
-                               try {
-                                       CreateSubscriptionInput createSubscriptionInput = createSubscriptionInputBuilder.build();
-                                       if (createSubscriptionInput == null) {
-                                               LOG.warn("createSubscriptionInput is null for mountpoint {}", mountPointNodeName);
-                                       } else {
-                                           rpcService.createSubscription(createSubscriptionInput);
-                                       }
-                               } catch (NullPointerException e) {
-                                       LOG.warn("createSubscription failed");
-                               }
-                       }
-               } else {
-                       LOG.warn("No RpcConsumerRegistry avaialble.");
-               }
-
-       }
-
-       /**
-        * Get NE object
-        * @param mountpoint
-        * @return null or ne specific data
-        */
-       public @Nullable ONFCoreNetworkElementRepresentation getNeByMountpoint( String mountpoint ) {
-
-               return networkElementRepresentations.get(mountpoint);
-
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/ProviderClient.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/ProviderClient.java
deleted file mode 100644 (file)
index 918f78e..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.opendaylight.mwtn.devicemanager.impl;
-
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-
-public interface ProviderClient extends AutoCloseable {
-
-       /**
-        * Send out problem notification, that was created by a device/ or NE
-        * @param mountPointName related
-        * @param notification xml description
-        */
-    public void sendProblemNotification(String mountPointName, ProblemNotificationXml notification);
-
-       /**
-        * Send out problem notification
-        * @param mountPointName related
-        * @param notification xml description
-        * @param neDeviceAlarm  true indicates an NE originated alarm, false an sdncontroller generated alarm
-        */
-       public void sendProblemNotification(String mountPointName, ProblemNotificationXml notification, boolean neDeviceAlarm);
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/service/HtDatabaseEventsService.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/service/HtDatabaseEventsService.java
deleted file mode 100644 (file)
index e3afea7..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/*********************************************************************************
- *  Copyright © 2016, highstreet technologies GmbH
- *  All rights reserved!
- *
- *  http://www.highstreet-technologies.com/
- *
- *  The reproduction, transmission or use of this document or its contents is not
- *  permitted without express written authority. Offenders will be liable for
- *  damages. All rights, including rights created by patent grant or registration
- *  of a utility model or design, are reserved. Technical modifications possible.
- *  Technical specifications and features are binding only insofar as they are
- *  specifically and expressly agreed upon in a written contract.
- *
- *  @author: Herbert Eiselt [herbert.eiselt@highstreet-technologies.com]
- *********************************************************************************/
-
-package org.opendaylight.mwtn.devicemanager.impl.database.service;
-
-import org.opendaylight.mwtn.base.database.HtDataBaseReaderAndWriter;
-import org.opendaylight.mwtn.base.database.HtDatabaseClientAbstract;
-import org.opendaylight.mwtn.base.database.HtDatabaseNode;
-import org.opendaylight.mwtn.base.database.IndexClientBuilder;
-import org.opendaylight.mwtn.devicemanager.impl.database.types.EsEventBase;
-import org.opendaylight.mwtn.devicemanager.impl.database.types.EsFaultCurrent;
-import org.opendaylight.mwtn.devicemanager.impl.database.types.EsFaultLog;
-import org.opendaylight.mwtn.devicemanager.impl.xml.AttributeValueChangedNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.MwtNotificationBase;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ObjectCreationNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ObjectDeletionNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Event service, writing all events into the database into the appropriate index.
- *
- * @author herbert
- */
-public class HtDatabaseEventsService {
-    private static final Logger LOG = LoggerFactory.getLogger(HtDatabaseEventsService.class);
-
-    ///** Filename in the resources with maven initialized version information  */
-    //private static final String RESOURCENAME = "version.properties"; // could also be a constant
-    ///** Index name to be used */
-    private static final String INDEX = "sdnevents";
-    private static final String MAPPING = "/elasticsearch/index/sdnevents/sdneventsMapping.json";
-
-    private HtDatabaseClientAbstract client;
-    private HtDataBaseReaderAndWriter<EsEventBase> eventRWEventLog;
-    private HtDataBaseReaderAndWriter<EsFaultCurrent> eventRWFaultCurrent;
-    private HtDataBaseReaderAndWriter<EsFaultLog> eventRWFaultLog;
-
-
-    // --- Construct and initialize
-
-    public HtDatabaseEventsService(HtDatabaseNode database) {
-
-       LOG.info("Create {} start", HtDatabaseEventsService.class);
-
-       try {
-               // Create control structure
-               IndexClientBuilder clientBuilder = IndexClientBuilder.getBuilder(INDEX).setMappingSettingJsonFileName(MAPPING);
-               client = clientBuilder.create(database);
-
-               eventRWEventLog = new HtDataBaseReaderAndWriter<>(client, EsEventBase.ESDATATYPENAME, EsEventBase.class);
-               eventRWFaultLog = new HtDataBaseReaderAndWriter<>(client, EsFaultLog.ESDATATYPENAME, EsFaultLog.class);
-               eventRWFaultCurrent = new HtDataBaseReaderAndWriter<>(client, EsFaultCurrent.ESDATATYPENAME, EsFaultCurrent.class);
-
-
-       } catch (Exception e) {
-               LOG.error("Can not start database client. Exception: {}", e.getMessage());
-       }
-       LOG.info("Create {} finished. DB Service {} started.", HtDatabaseEventsService.class,  client != null ? "sucessfully" : "not" );
-    }
-
-    // --- Function
-
-    public void writeEventLog(ObjectCreationNotificationXml event) {
-        writeEventGeneric(event);
-    }
-
-    public void writeEventLog(ObjectDeletionNotificationXml event) {
-        writeEventGeneric(event);
-    }
-
-    public void writeEventLog(AttributeValueChangedNotificationXml event) {
-        writeEventGeneric(event);
-    }
-
-    private void writeEventGeneric(MwtNotificationBase event) {
-        if (client == null) {
-            LOG.debug("No DB, can not write: {}",event.toString());
-            return;
-        }
-
-        LOG.debug("Write event: {}",event.toString());
-        EsEventBase eventBase = new EsEventBase();
-        eventBase.setProblem(event);
-        eventRWEventLog.doWrite(eventBase);
-    }
-
-    public void writeFaultLog(ProblemNotificationXml fault) {
-        if (client == null) {
-            LOG.debug("No DB, can not write: {}",fault.toString());
-            return;
-        }
-
-        LOG.debug("Write fault to faultlog: {}",fault.toString());
-        EsFaultLog eventProblem = new EsFaultLog();
-        eventProblem.setProblem(fault);
-        eventRWFaultLog.doWrite(eventProblem);
-    }
-
-    public void updateFaultCurrent(ProblemNotificationXml fault) {
-        if (client == null) {
-            LOG.debug("No DB, can not write: {}",fault.toString());
-            return;
-        }
-
-        EsFaultCurrent eventProblem = new EsFaultCurrent();
-        eventProblem.setProblem(fault);
-
-        if (eventProblem.isNoAlarmIndication()) {
-            LOG.debug("Remove fault from currentlog: {}",fault.toString());
-            eventRWFaultCurrent.doRemove(eventProblem);
-        } else {
-            LOG.debug("Write fault to currentlog: {}",fault.toString());
-            eventRWFaultCurrent.doWrite(eventProblem);
-        }
-    }
-
-    /**
-     * Remove all entries for one node
-     * @param nodeName contains the mountpointname
-     * @return number of deleted entries
-     */
-    public int clearFaultsCurrentOfNode(String nodeName) {
-        if (client == null) {
-            LOG.debug("No DB, can not delete for node: {}", nodeName);
-            return -1;
-        }
-        LOG.debug("Remove from currentlog all faults for node: {}", nodeName);
-        return eventRWFaultCurrent.doRemoveByQuery(EsFaultCurrent.getQueryForOneNode(nodeName));
-        /*
-        List<EsFaultCurrent> faults = eventRWFaultCurrent.doReadAll();
-        for (EsFaultCurrent fault : faults) {
-            if (fault.getProblem().getNodeName().equals(nodeName)) {
-                eventRWFaultCurrent.doRemove(fault);
-            }
-        }
-        return faults.size();
-        */
-    }
-
-    /**
-     * Remove all entries for one node
-     * @param nodeName contains the mountpointname
-     * @param objectId of element to be deleted
-     * @return number of deleted entries
-     */
-    public int clearFaultsCurrentOfNodeWithObjectId(String nodeName, String objectId) {
-        if (client == null) {
-            LOG.debug("No DB, can not delete for node: {}", nodeName);
-            return -1;
-        }
-        LOG.debug("Remove from currentlog all faults for node/objectId: {}/{}", nodeName, objectId);
-        return eventRWFaultCurrent.doRemoveByQuery(EsFaultCurrent.getQueryForOneNodeAndObjectId(nodeName, objectId));
-
-    }
-
-
-    /*private void writeVersionInfo(HtDataBaseReaderAndWriter<EsVersionInfo> pEventRWVersionInfo,
-            String configurationId) {
-
-        ClassLoader loader = Thread.currentThread().getContextClassLoader();
-        Properties props = new Properties();
-
-        InputStream resourceStream = loader.getResourceAsStream(RESOURCENAME);
-        try {
-            props.load(resourceStream);
-
-        } catch (IOException e1) {
-        }
-        finally {
-               try {
-                       if(resourceStream!=null)
-                               resourceStream.close();
-                       } catch (IOException e) {
-                               LOG.debug("failed to close stream");
-                       }
-               }
-
-        EsVersionInfo version = new EsVersionInfo();
-        version.setEsId(configurationId);
-        version.setBundleVersion(FrameworkUtil.getBundle(getClass()).getVersion());
-        version.setVersion(props.getProperty("version", "unknown"));
-        version.setBuild(props.getProperty("build", "unknown"));
-
-        LOG.info("Versioninfo: {}",version );
-
-        pEventRWVersionInfo.doWrite(version);
-    }*/
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsEventBase.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsEventBase.java
deleted file mode 100644 (file)
index 0b8b7d5..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.opendaylight.mwtn.devicemanager.impl.database.types;
-
-import org.opendaylight.mwtn.base.database.EsObject;
-import org.opendaylight.mwtn.devicemanager.impl.xml.MwtNotificationBase;
-
-/**
- *
- * Event from Network to be recorded in the database
- *
- */
-
-public class EsEventBase extends EsObject {
-
-    public static final String ESDATATYPENAME = "eventlog";
-
-    private MwtNotificationBase event;
-
-    public MwtNotificationBase getProblem() {
-        return event;
-    }
-
-    public void setProblem(MwtNotificationBase event) {
-        this.event = event;
-    }
-
-    public static String getEsdatatypename() {
-        return ESDATATYPENAME;
-    }
-
- }
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsFaultCurrent.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsFaultCurrent.java
deleted file mode 100644 (file)
index 625da7b..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-package org.opendaylight.mwtn.devicemanager.impl.database.types;
-
-import org.elasticsearch.index.query.BoolQueryBuilder;
-import org.elasticsearch.index.query.QueryBuilder;
-import org.elasticsearch.index.query.QueryBuilders;
-import org.opendaylight.mwtn.base.database.EsObject;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-
-/**
- * Event from Network to be recorded in the database
- *
- */
-
-public class EsFaultCurrent extends EsObject {
-
-    public static final String ESDATATYPENAME = "faultcurrent";
-    //private static final String NOALARM = "NonAlarmed";
-
-    private ProblemNotificationXml faultCurrent;
-
-    public ProblemNotificationXml getProblem() {
-        return faultCurrent;
-    }
-
-    public void setProblem(ProblemNotificationXml fault) {
-        this.faultCurrent = fault;
-        setEsId(fault.genSpecificEsId());
-    }
-
-    public boolean isNoAlarmIndication() {
-        return faultCurrent.getSeverity().isNoAlarmIndication();
-    }
-
-    public static QueryBuilder getQueryForOneNode( String nodeName) {
-        return QueryBuilders.termQuery("faultCurrent.nodeName", nodeName);
-    }
-
-    public static QueryBuilder getQueryForOneNodeAndObjectId( String nodeName, String objectId) {
-        BoolQueryBuilder bq = QueryBuilders.boolQuery();
-        bq.must(QueryBuilders.termQuery("faultCurrent.nodeName", nodeName));
-        bq.must(QueryBuilders.termQuery("faultCurrent.objectId", objectId));
-        return bq;
-        //return QueryBuilders.termQuery("faultCurrent.objectId", objectId);
-
-    }
-
-    public static String getEsdatatypename() {
-        return ESDATATYPENAME;
-    }
-
- }
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsFaultLog.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsFaultLog.java
deleted file mode 100644 (file)
index 4b7b221..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.opendaylight.mwtn.devicemanager.impl.database.types;
-
-import org.opendaylight.mwtn.base.database.EsObject;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-
-/**
- *
- * Event from Network to be recorded in the database
- *
- */
-
-public class EsFaultLog extends EsObject {
-
-    public static final String ESDATATYPENAME = "faultlog";
-
-    private ProblemNotificationXml fault;
-
-    public ProblemNotificationXml getProblem() {
-        return fault;
-    }
-
-    public void setProblem(ProblemNotificationXml fault) {
-        this.fault = fault;
-    }
-
-    public static String getEsdatatypename() {
-        return ESDATATYPENAME;
-    }
-
- }
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsVersionInfo.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/database/types/EsVersionInfo.java
deleted file mode 100644 (file)
index c670e21..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.opendaylight.mwtn.devicemanager.impl.database.types;
-
-import org.opendaylight.mwtn.base.database.EsObject;
-import org.osgi.framework.Version;
-
-/**
- *
- * Create a VersionInfo Object Network to be recorded in the database
- *
- */
-
-public class EsVersionInfo extends EsObject {
-
-    public static final String ESDATATYPENAME = "versioninfo";
-    private static final String EMPTY = "";
-
-    private Version bundleVersion;
-    private String build = EMPTY;
-    private String version = EMPTY;
-
-    public EsVersionInfo() {
-    }
-
-    public Version getBundleVersion() {
-        return bundleVersion;
-    }
-
-    public void setBundleVersion(Version bundleVersion) {
-        this.bundleVersion = bundleVersion;
-    }
-
-    public String getBuild() {
-        return build;
-    }
-
-    public void setBuild(String build) {
-        this.build = build;
-    }
-
-    public String getVersion() {
-        return version;
-    }
-
-    public void setVersion(String version) {
-        this.version = version;
-    }
-
-    public static String getEsdatatypename() {
-        return ESDATATYPENAME;
-    }
-
-    @Override
-    public String toString() {
-        return "EsVersionInfo [bundleVersion=" + bundleVersion + ", build=" + build + ", version=" + version + "]";
-    }
-
-
- }
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/MicrowaveEventListener.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/MicrowaveEventListener.java
deleted file mode 100644 (file)
index e1c2e60..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.devicemanager.impl.listener;
-
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalDateAndTime;
-import org.opendaylight.mwtn.base.internalTypes.InternalSeverity;
-import org.opendaylight.mwtn.devicemanager.impl.ProviderClient;
-import org.opendaylight.mwtn.devicemanager.impl.database.service.HtDatabaseEventsService;
-import org.opendaylight.mwtn.devicemanager.impl.xml.AttributeValueChangedNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ObjectCreationNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ObjectDeletionNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.WebSocketServiceClient;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.notifications.rev160809.AttributeValueChangedNotification;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.notifications.rev160809.MicrowaveModelNotificationsListener;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.notifications.rev160809.ObjectCreationNotification;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.notifications.rev160809.ObjectDeletionNotification;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.notifications.rev160809.ProblemNotification;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-/**
- * Important: Websocket notificatin must be the last action.
- * @author herbert
- *
- */
-public class MicrowaveEventListener implements MicrowaveModelNotificationsListener {
-
-    private static final Logger LOG = LoggerFactory.getLogger(MicrowaveEventListener.class);
-
-    private final String nodeName;
-    private final WebSocketServiceClient webSocketService;
-    private final HtDatabaseEventsService databaseService;
-    private final ProviderClient dcaeProvider;
-       private final @Nullable ProviderClient aotsmClient;
-
-    public MicrowaveEventListener(String nodeName, WebSocketServiceClient webSocketService,
-            HtDatabaseEventsService databaseService, ProviderClient dcaeProvider,@Nullable ProviderClient aotsmClient) {
-        super();
-        this.nodeName = nodeName;
-        this.webSocketService = webSocketService;
-        this.databaseService = databaseService;
-        this.dcaeProvider = dcaeProvider;
-        this.aotsmClient = aotsmClient;
-
-    }
-
-    @Override
-    public void onAttributeValueChangedNotification(AttributeValueChangedNotification notification) {
-        LOG.debug("Got event of type :: {}", AttributeValueChangedNotification.class.getSimpleName());
-
-        AttributeValueChangedNotificationXml notificationXml = new AttributeValueChangedNotificationXml(nodeName,
-                String.valueOf(notification.getCounter()), InternalDateAndTime.valueOf(notification.getTimeStamp()),
-                notification.getObjectIdRef().getValue(), notification.getAttributeName(), notification.getNewValue());
-
-        /*
-        WebsocketEventInputBuilder builder = new WebsocketEventInputBuilder();
-        builder.setNodeName(nodeName);
-        builder.setEventType(AttributeValueChangedNotification.class.getSimpleName());
-        builder.setXmlEvent(xmlMapper.getXmlString(notificationXml));
-        WebsocketEventInput event= builder.build();
-        websocketmanagerService.websocketEvent(event);
-        */
-        databaseService.writeEventLog(notificationXml);
-        // Last notification to client to make shure that database already changed
-        webSocketService.sendViaWebsockets(nodeName, notificationXml);
-    }
-
-    @Override
-    public void onObjectCreationNotification(ObjectCreationNotification notification) {
-        LOG.debug("Got event of type :: {}", ObjectCreationNotification.class.getSimpleName());
-
-        //ObjectCreationNotificationXml notificationXml = new ObjectCreationNotificationXml(nodeName, notification);
-        ObjectCreationNotificationXml notificationXml = new ObjectCreationNotificationXml( nodeName,
-                        notification.getCounter().toString(),
-                        InternalDateAndTime.valueOf(notification.getTimeStamp()),
-                        notification.getObjectIdRef().getValue());
-        /*public ObjectCreationNotificationXml(String nodeName, org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ObjectCreationNotification notification) {
-            super(nodeName, notification.getCounter().toString(), InternalDateAndTime.valueOf(notification.getTimeStamp()),
-                    notification.getObjectIdRef().getValue());
-        }*/
-        /*
-        WebsocketEventInputBuilder builder = new WebsocketEventInputBuilder();
-        builder.setNodeName(nodeName);
-        builder.setEventType(ObjectCreationNotification.class.getSimpleName());
-        builder.setXmlEvent(xmlMapper.getXmlString(notificationXml));
-        websocketmanagerService.websocketEvent(builder.build());
-        */
-        databaseService.writeEventLog(notificationXml);
-
-        webSocketService.sendViaWebsockets(nodeName, notificationXml);
-
-    }
-
-    @Override
-    public void onObjectDeletionNotification(ObjectDeletionNotification notification) {
-        LOG.debug("Got event of type :: {}", ObjectDeletionNotification.class.getSimpleName());
-
-        //ObjectDeletionNotificationXml notificationXml = new ObjectDeletionNotificationXml(nodeName, notification);
-        ObjectDeletionNotificationXml notificationXml = new ObjectDeletionNotificationXml(nodeName,
-                notification.getCounter().toString(),
-                InternalDateAndTime.valueOf(notification.getTimeStamp()),
-                notification.getObjectIdRef().getValue()
-                );
-        /*
-        WebsocketEventInputBuilder builder = new WebsocketEventInputBuilder();
-        builder.setNodeName(nodeName);
-        builder.setEventType(ObjectDeletionNotification.class.getSimpleName());
-        builder.setXmlEvent(xmlMapper.getXmlString(notificationXml));
-        websocketmanagerService.websocketEvent(builder.build());
-        */
-        databaseService.writeEventLog(notificationXml);
-
-        webSocketService.sendViaWebsockets(nodeName, notificationXml);
-    }
-
-    @Override
-    public void onProblemNotification(ProblemNotification notification) {
-        LOG.debug("Got event of type :: {}", ProblemNotification.class.getSimpleName());
-
-        ProblemNotificationXml notificationXml = new ProblemNotificationXml(nodeName, notification.getObjectIdRef().getValue(),
-                notification.getProblem(), InternalSeverity.valueOf(notification.getSeverity()),
-                notification.getCounter().toString(), InternalDateAndTime.valueOf(notification.getTimeStamp()));
-        /*
-        WebsocketEventInputBuilder wsBuilder = new WebsocketEventInputBuilder();
-        wsBuilder.setNodeName(nodeName);
-        wsBuilder.setEventType(ProblemNotification.class.getSimpleName());
-        wsBuilder.setXmlEvent(xmlMapper.getXmlString(notificationXml));
-        websocketmanagerService.websocketEvent(wsBuilder.build());
-        */
-
-        databaseService.writeFaultLog(notificationXml);
-        databaseService.updateFaultCurrent(notificationXml);
-
-        if (dcaeProvider != null) {
-                       dcaeProvider.sendProblemNotification(nodeName, notificationXml);
-               }
-        if (aotsmClient != null) {
-               aotsmClient.sendProblemNotification(nodeName, notificationXml);
-               }
-
-        webSocketService.sendViaWebsockets(nodeName, notificationXml);
-
-    }
-
-    private void initCurrentProblem(ProblemNotificationXml notificationXml) {
-        databaseService.updateFaultCurrent(notificationXml);
-        if (aotsmClient != null) {
-               aotsmClient.sendProblemNotification(this.nodeName, notificationXml);
-        }
-    }
-
-    /**
-     * Called to initialize with the current status and notify the clients
-     * @param notificationXmlList List with problems
-     */
-    public void initCurrentProblem(List<ProblemNotificationXml> notificationXmlList) {
-
-        for (ProblemNotificationXml notificationXml : notificationXmlList) {
-            initCurrentProblem(notificationXml);
-        }
-
-    }
-
-    /**
-     * Called on exit to remove everything from the current list.
-     * @return Number of deleted objects
-     */
-    public int removeAllCurrentProblemsOfNode() {
-        int deleted = databaseService.clearFaultsCurrentOfNode(nodeName);
-        return deleted;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/MicrowaveEventListener12.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/MicrowaveEventListener12.java
deleted file mode 100644 (file)
index dd31359..0000000
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.devicemanager.impl.listener;
-
-import java.util.List;
-
-import javax.annotation.Nullable;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalDateAndTime;
-import org.opendaylight.mwtn.base.internalTypes.InternalSeverity;
-import org.opendaylight.mwtn.devicemanager.impl.ProviderClient;
-import org.opendaylight.mwtn.devicemanager.impl.database.service.HtDatabaseEventsService;
-import org.opendaylight.mwtn.devicemanager.impl.xml.AttributeValueChangedNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ObjectCreationNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ObjectDeletionNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.WebSocketServiceClient;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.AttributeValueChangedNotification;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MicrowaveModelListener;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ObjectCreationNotification;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ObjectDeletionNotification;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ProblemNotification;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Important: Websocket notification must be the last action.
- * @author herbert
- *
- */
-public class MicrowaveEventListener12 implements MicrowaveModelListener {
-
-    private static final Logger LOG = LoggerFactory.getLogger(MicrowaveEventListener12.class);
-
-    private final String nodeName;
-    private final WebSocketServiceClient webSocketService;
-    //private final WebsocketmanagerService websocketmanagerService;
-    //private final XmlMapper xmlMapper;
-    private final HtDatabaseEventsService databaseService;
-    private final ProviderClient dcaeProvider;
-       private final @Nullable ProviderClient aotsmClient;
-
-    public MicrowaveEventListener12(String nodeName, WebSocketServiceClient webSocketService,
-            HtDatabaseEventsService databaseService, ProviderClient dcaeProvider,@Nullable ProviderClient aotsmClient) {
-        super();
-        this.nodeName = nodeName;
-        //this.websocketmanagerService = websocketmanagerService;
-        //this.xmlMapper = xmlMapper;
-        this.webSocketService = webSocketService;
-        this.databaseService = databaseService;
-        this.dcaeProvider = dcaeProvider;
-        this.aotsmClient = aotsmClient;
-    }
-
-    @Override
-    public void onAttributeValueChangedNotification(AttributeValueChangedNotification notification) {
-        LOG.debug("Got event of type :: {}", AttributeValueChangedNotification.class.getSimpleName());
-
-        AttributeValueChangedNotificationXml notificationXml = new AttributeValueChangedNotificationXml(nodeName,
-                String.valueOf(notification.getCounter()), InternalDateAndTime.valueOf(notification.getTimeStamp()),
-                notification.getObjectIdRef().getValue(), notification.getAttributeName(), notification.getNewValue());
-        /*
-        WebsocketEventInputBuilder builder = new WebsocketEventInputBuilder();
-        builder.setNodeName(nodeName);
-        builder.setEventType(AttributeValueChangedNotification.class.getSimpleName());
-        builder.setXmlEvent(xmlMapper.getXmlString(notificationXml));
-        WebsocketEventInput event= builder.build();
-        websocketmanagerService.websocketEvent(event);
-        */
-        databaseService.writeEventLog(notificationXml);
-
-        webSocketService.sendViaWebsockets(nodeName, notificationXml);
-    }
-
-    @Override
-    public void onObjectCreationNotification(ObjectCreationNotification notification) {
-        LOG.debug("Got event of type :: {}", ObjectCreationNotification.class.getSimpleName());
-
-        //ObjectCreationNotificationXml notificationXml = new ObjectCreationNotificationXml(nodeName, notification);
-        ObjectCreationNotificationXml notificationXml = new ObjectCreationNotificationXml(    nodeName,
-                notification.getCounter().toString(),
-                InternalDateAndTime.valueOf(notification.getTimeStamp()),
-                notification.getObjectIdRef().getValue());
-        /*
-        WebsocketEventInputBuilder builder = new WebsocketEventInputBuilder();
-        builder.setNodeName(nodeName);
-        builder.setEventType(notificationXml.getEventType());
-        builder.setXmlEvent(xmlMapper.getXmlString(notificationXml));
-        websocketmanagerService.websocketEvent(builder.build());
-        */
-        databaseService.writeEventLog(notificationXml);
-
-        webSocketService.sendViaWebsockets(nodeName, notificationXml);
-
-    }
-
-    @Override
-    public void onObjectDeletionNotification(ObjectDeletionNotification notification) {
-        LOG.debug("Got event of type :: {}", ObjectDeletionNotification.class.getSimpleName());
-
-        //ObjectDeletionNotificationXml notificationXml = new ObjectDeletionNotificationXml(nodeName, notification);
-        ObjectDeletionNotificationXml notificationXml = new ObjectDeletionNotificationXml(nodeName,
-                notification.getCounter().toString(),
-                InternalDateAndTime.valueOf(notification.getTimeStamp()),
-                notification.getObjectIdRef().getValue()
-                );
-        /*
-        WebsocketEventInputBuilder builder = new WebsocketEventInputBuilder();
-        builder.setNodeName(nodeName);
-        builder.setEventType(ObjectDeletionNotification.class.getSimpleName());
-        builder.setXmlEvent(xmlMapper.getXmlString(notificationXml));
-        websocketmanagerService.websocketEvent(builder.build());
-        */
-        databaseService.writeEventLog(notificationXml);
-
-        webSocketService.sendViaWebsockets(nodeName, notificationXml);
-    }
-
-    @Override
-    public void onProblemNotification(ProblemNotification notification) {
-        LOG.debug("Got event of type :: {}", ProblemNotification.class.getSimpleName());
-
-        ProblemNotificationXml notificationXml = new ProblemNotificationXml(nodeName, notification.getObjectIdRef().getValue(),
-                notification.getProblem(), InternalSeverity.valueOf(notification.getSeverity()),
-                notification.getCounter().toString(), InternalDateAndTime.valueOf(notification.getTimeStamp()));
-        /*
-        WebsocketEventInputBuilder wsBuilder = new WebsocketEventInputBuilder();
-        wsBuilder.setNodeName(nodeName);
-        wsBuilder.setEventType(ProblemNotification.class.getSimpleName());
-        wsBuilder.setXmlEvent(xmlMapper.getXmlString(notificationXml));
-        websocketmanagerService.websocketEvent(wsBuilder.build());
-        */
-
-        databaseService.writeFaultLog(notificationXml);
-        databaseService.updateFaultCurrent(notificationXml);
-
-        dcaeProvider.sendProblemNotification(nodeName, notificationXml);
-        if(aotsmClient!=null)
-               aotsmClient.sendProblemNotification(nodeName, notificationXml);
-
-        webSocketService.sendViaWebsockets(nodeName, notificationXml);
-
-    }
-
-    private void initCurrentProblem(ProblemNotificationXml notificationXml) {
-        databaseService.updateFaultCurrent(notificationXml);
-        if(aotsmClient!=null)
-               aotsmClient.sendProblemNotification(this.nodeName, notificationXml);
-    }
-
-    /**
-     * Called to initialize with the current status and notify the clients
-     * @param notificationXmlList List with problems
-     */
-    public void initCurrentProblem(List<ProblemNotificationXml> notificationXmlList) {
-
-        for (ProblemNotificationXml notificationXml : notificationXmlList) {
-            initCurrentProblem(notificationXml);
-        }
-
-    }
-
-    /**
-     * Called on exit to remove everything from the current list.
-     * @return Number of deleted objects
-     */
-    public int removeAllCurrentProblemsOfNode() {
-        int deleted = databaseService.clearFaultsCurrentOfNode(nodeName);
-        return deleted;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/NetconfChangeListener.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/NetconfChangeListener.java
deleted file mode 100644 (file)
index 8b57997..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-/**
- * Copyright (c) 2017 highstreet technologies GmbH
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.mwtn.devicemanager.impl.listener;
-
-import java.util.Collection;
-
-import org.opendaylight.controller.md.sal.binding.api.ClusteredDataTreeChangeListener;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.DataObjectModification;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeIdentifier;
-import org.opendaylight.controller.md.sal.binding.api.DataTreeModification;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.mwtn.devicemanager.api.DeviceManagerService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNode;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.NetconfNodeConnectionStatus.ConnectionStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.network.topology.topology.topology.types.TopologyNetconf;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yangtools.concepts.ListenerRegistration;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class NetconfChangeListener implements ClusteredDataTreeChangeListener<Node>, AutoCloseable {
-
-       private static final Logger LOG = LoggerFactory.getLogger(NetconfChangeListener.class);
-
-       private static final InstanceIdentifier<Node> NETCONF_NODE_TOPO_IID = InstanceIdentifier
-                       .create(NetworkTopology.class)
-                       .child(Topology.class, new TopologyKey(new TopologyId(TopologyNetconf.QNAME.getLocalName())))
-                       .child(Node.class);
-
-       // Name of ODL controller NETCONF instance
-       private static final String CONTROLLER = "controller-config";
-
-       private final DeviceManagerService deviceManagerService;
-       private final DataBroker dataBroker;
-       private ListenerRegistration<NetconfChangeListener> dlcReg;
-
-       public NetconfChangeListener(DeviceManagerService deviceManagerService, DataBroker dataBroker) {
-               this.deviceManagerService = deviceManagerService;
-               this.dataBroker = dataBroker;
-       }
-
-       public void register() {
-               DataTreeIdentifier<Node> treeId = new DataTreeIdentifier<Node>(LogicalDatastoreType.OPERATIONAL,
-                               NETCONF_NODE_TOPO_IID);
-               dlcReg = dataBroker.registerDataTreeChangeListener(treeId, this);
-       }
-
-       public void close() {
-               if (dlcReg != null) {
-                       dlcReg.close();
-               }
-       }
-
-       /*---------------------------------------------------------------------------
-        * Listener
-        */
-
-       @Override
-       public void onDataTreeChanged(Collection<DataTreeModification<Node>> changes) {
-               if (LOG.isDebugEnabled()) {
-                       LOG.debug("OnDataChange, TreeChange");
-               } else if (LOG.isTraceEnabled()) {
-                       LOG.trace("OnDataChange, TreeChange {}", changes);
-               }
-               for (final DataTreeModification<Node> change : changes) {
-                       final DataObjectModification<Node> root = change.getRootNode();
-                       switch (root.getModificationType()) {
-                       case SUBTREE_MODIFIED:
-                               // Change of subtree information
-                               update(change);
-                               break;
-                       case WRITE:
-                               // Create or modify top level node
-                               // Treat an overwrite as an update
-                               boolean update = change.getRootNode().getDataBefore() != null;
-                               if (update) {
-                                       update(change);
-                               } else {
-                                       add(change);
-                               }
-                               break;
-                       case DELETE:
-                               // Node removed
-                               remove(change);
-                               break;
-                       default:
-                               break;
-                       }
-               }
-       }
-
-       public void add(DataTreeModification<Node> newDataObject) {
-               Node node = newDataObject.getRootNode().getDataAfter();
-               NodeId nodeId = node.getKey().getNodeId();
-               LOG.info("Node {} added to topology-netconf", nodeId.getValue());
-               NetconfNode netconfAugment = node.getAugmentation(NetconfNode.class);
-               if (nodeId != null) {
-                       if (!nodeId.getValue().equals(CONTROLLER)) {
-                               deviceManagerService.mountpointNodeCreation(nodeId, netconfAugment);
-                       }
-               }
-               doProcessing(nodeId, netconfAugment);
-       }
-
-       public void remove(DataTreeModification<Node> removedDataObject) {
-               Node node = removedDataObject.getRootNode().getDataBefore();
-               NodeId nodeId = node.getKey().getNodeId();
-               LOG.info("Node {} removed from topology-netconf", nodeId.getValue());
-               NetconfNode netconfAugment = node.getAugmentation(NetconfNode.class);
-               if (nodeId != null) {
-                       if (!nodeId.getValue().equals(CONTROLLER)) {
-                               deviceManagerService.mountpointNodeRemoved(nodeId);
-                       }
-               }
-               doProcessingRemove(nodeId, netconfAugment);
-       }
-
-       public void update(DataTreeModification<Node> modifiedDataObject) {
-               // Node node = modifiedDataObject.getRootNode().getDataBefore();
-               Node node = modifiedDataObject.getRootNode().getDataAfter();
-               NodeId nodeId = node.getKey().getNodeId();
-               LOG.info("Node {} modified in topology-netconf", nodeId.getValue());
-               NetconfNode netconfAugment = node.getAugmentation(NetconfNode.class);
-               doProcessing(nodeId, netconfAugment);
-       }
-
-       /**
-        * Process event and forward to clients
-        *
-        * @param nodeId
-        *            Id of node
-        * @param nnode
-        *            Netconf node
-        */
-       private void doProcessing(NodeId nodeId, NetconfNode nnode) {
-
-               if (nodeId == null || nnode == null) {
-                       LOG.warn("Empty node .. stop processing");
-               }
-
-               String nodeIdString = nodeId.getValue();
-
-               if (nodeIdString.equals(CONTROLLER)) {
-                       LOG.debug("Stop processing for [{}]", CONTROLLER);
-                       return;
-               }
-
-               ConnectionStatus csts = nnode.getConnectionStatus();
-               LOG.debug("NETCONF Node handled with status: {}", csts.toString());
-               switch (csts) {
-               case Connected: {
-                       deviceManagerService.startListenerOnNode(nodeId, nnode);
-                       break;
-               }
-               case Connecting: {
-                       deviceManagerService.removeListenerOnNode(nodeId, nnode);
-                       break;
-               }
-               case UnableToConnect: {
-                       deviceManagerService.removeListenerOnNode(nodeId, nnode);
-                       break;
-               }
-               }
-       }
-
-       /**
-        * Remove node
-        *
-        * @param nodeId
-        * @param nnode
-        */
-       private void doProcessingRemove(NodeId nodeId, NetconfNode nnode) {
-
-               if (nodeId == null || nnode == null) {
-                       LOG.warn("Empty node .. stop processing");
-               }
-
-               String nodeIdString = nodeId.getValue();
-
-               if (nodeIdString.equals(CONTROLLER)) {
-                       LOG.debug("Stop processing for [{}]", CONTROLLER);
-                       return;
-               }
-
-               deviceManagerService.removeListenerOnNode(nodeId, nnode);
-
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/ODLEventListener.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/listener/ODLEventListener.java
deleted file mode 100644 (file)
index c17e861..0000000
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
-* Copyright (c) 2017 highstreet technologies GmbH and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.devicemanager.impl.listener;
-
-import javax.annotation.Nullable;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalDateAndTime;
-import org.opendaylight.mwtn.base.internalTypes.InternalSeverity;
-import org.opendaylight.mwtn.base.netconf.NetconfTimeStamp;
-import org.opendaylight.mwtn.devicemanager.impl.ProviderClient;
-import org.opendaylight.mwtn.devicemanager.impl.database.service.HtDatabaseEventsService;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ObjectCreationNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ObjectDeletionNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.ProblemNotificationXml;
-import org.opendaylight.mwtn.devicemanager.impl.xml.WebSocketServiceClient;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ProblemNotification;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Responsible class for documenting changes in the ODL itself. The occurence of
- * such an event is documented in the database and to clients. Specific example
- * here is the registration or deregistration of a netconf device. This service
- * has an own eventcounter to apply to the ONF Coremodel netconf behaviour.
- *
- * Important: Websocket notification must be the last action.
- *
- * @author herbert
- */
-
-public class ODLEventListener {
-
-       private static final Logger LOG = LoggerFactory.getLogger(ODLEventListener.class);
-
-       private final String ownKeyName;
-
-       private final WebSocketServiceClient webSocketService;
-       private final HtDatabaseEventsService databaseService;
-       private final ProviderClient dcaeProvider;
-       private final ProviderClient aotsMProvider;
-       private int eventNumber;
-
-       /*---------------------------------------------------------------
-        * Construct
-        */
-
-       /**
-        * Create a Service to document events to clients and within a database
-        *
-        * @param ownKeyName
-        *            The name of this service, that is used in the database as
-        *            identification key.
-        * @param webSocketService
-        *            service to direct messages to clients
-        * @param databaseService
-        *            service to write to the database
-        * @param dcaeProvider
-        *            to deliver problems to
-        */
-       public ODLEventListener(String ownKeyName, WebSocketServiceClient webSocketService,
-                       HtDatabaseEventsService databaseService, ProviderClient dcaeProvider,
-                       @Nullable ProviderClient aotsMProvider) {
-               super();
-
-               this.ownKeyName = ownKeyName;
-               this.webSocketService = webSocketService;
-
-               this.databaseService = databaseService;
-               this.dcaeProvider = dcaeProvider;
-               this.aotsMProvider = aotsMProvider;
-
-               this.eventNumber = 0;
-
-       }
-
-       /*---------------------------------------------------------------
-        * Functions
-        */
-
-       /**
-        * A registration of a mountpoint occured.
-        *
-        * @param registrationName
-        *            Name of the event that is used as key in the database.
-        */
-
-       public void registration(String registrationName) {
-
-               ObjectCreationNotificationXml cNotificationXml = new ObjectCreationNotificationXml(ownKeyName,
-                               popEvntNumberAsString(), InternalDateAndTime.valueOf(NetconfTimeStamp.getTimeStamp()),
-                               registrationName);
-
-               // Write first to prevent missing entries
-               databaseService.writeEventLog(cNotificationXml);
-
-               webSocketService.sendViaWebsockets(registrationName, cNotificationXml);
-
-       }
-
-       /**
-        * A deregistration of a mountpoint occured.
-        *
-        * @param registrationName
-        *            Name of the event that is used as key in the database.
-        */
-
-       public void deRegistration(String registrationName) {
-
-               ObjectDeletionNotificationXml dNotificationXml = new ObjectDeletionNotificationXml(ownKeyName,
-                               popEvntNumberAsString(), InternalDateAndTime.valueOf(NetconfTimeStamp.getTimeStamp()),
-                               registrationName);
-
-               // Write first to prevent missing entries
-               databaseService.writeEventLog(dNotificationXml);
-
-               webSocketService.sendViaWebsockets(registrationName, dNotificationXml);
-
-       }
-
-       /**
-        * At a mountpoint a problem situation is indicated
-        *
-        * @param registrationName
-        *            indicating object within SDN controller, normally the
-        *            mountpointName
-        * @param problemName
-        *            that changed
-        * @param problemSeverity
-        *            of the problem according to NETCONF/YANG
-        */
-
-       public void onProblemNotification(String registrationName, String problemName, InternalSeverity problemSeverity) {
-               LOG.debug("Got event of type :: {}", ProblemNotification.class.getSimpleName());
-               // notification
-
-               ProblemNotificationXml notificationXml = new ProblemNotificationXml(ownKeyName, registrationName, problemName,
-                               problemSeverity,
-                               // popEvntNumberAsString(), InternalDateAndTime.TESTPATTERN );
-                               popEvntNumberAsString(), InternalDateAndTime.valueOf(NetconfTimeStamp.getTimeStamp()));
-
-               databaseService.writeFaultLog(notificationXml);
-               databaseService.updateFaultCurrent(notificationXml);
-
-               dcaeProvider.sendProblemNotification(ownKeyName, notificationXml);
-               if (aotsMProvider != null)
-                       aotsMProvider.sendProblemNotification(ownKeyName, notificationXml, false);// not a nealarm, its a
-                                                                                                                                                                               // sdncontroller alarm
-
-               webSocketService.sendViaWebsockets(registrationName, notificationXml);
-       }
-
-       /**
-        * Called on exit to remove everything for a node from the current list.
-        *
-        * @param nodeName
-        *            to remove all problems for
-        * @return Number of deleted objects
-        */
-       public int removeAllCurrentProblemsOfNode(String nodeName) {
-               return databaseService.clearFaultsCurrentOfNodeWithObjectId(ownKeyName, nodeName);
-       }
-
-       /*---------------------------------------------------------------
-        * Private
-        */
-
-       private String popEvntNumberAsString() {
-               return String.valueOf(popEvntNumber());
-       }
-
-       private int popEvntNumber() {
-               return eventNumber++;
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/AttributeValueChangedNotificationXml.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/AttributeValueChangedNotificationXml.java
deleted file mode 100644 (file)
index fe3b33c..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.devicemanager.impl.xml;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalDateAndTime;
-
-@XmlRootElement(name = "AttributeValueChangedNotification")
-public class AttributeValueChangedNotificationXml extends MwtNotificationBase implements GetEventType {
-
-    private static String EVENTTYPE =  "AttributeValueChangedNotification";
-
-    @XmlElement(name = "attributeName")
-    private String attributeName;
-
-    @XmlElement(name = "newValue")
-    private String newValue;
-
-    public AttributeValueChangedNotificationXml() {
-
-    }
-
-    /**
-     * Normalized notification
-     * @param nodeName name of mountpoint
-     * @param counter of notification
-     * @param timeStamp from ne
-     * @param objectIdRef from ne
-     * @param attributeName from ne
-     * @param newValue from ne
-     */
-    public AttributeValueChangedNotificationXml(String nodeName, String counter, InternalDateAndTime timeStamp, String objectIdRef,
-            String attributeName, String newValue) {
-        super(nodeName, counter, timeStamp, objectIdRef);
-        this.attributeName = attributeName;
-        this.newValue = newValue;
-    }
-
-    public String getAttributeName() {
-        return attributeName;
-    }
-
-    public String getNewValue() {
-        return newValue;
-    }
-
-    @Override
-    public String getEventType() {
-        return EVENTTYPE;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/GetEventType.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/GetEventType.java
deleted file mode 100644 (file)
index 93b4b2f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.devicemanager.impl.xml;
-
-/**
- * @author herbert
- *
- */
-public interface GetEventType {
-    public String getEventType();
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/MwtNotificationBase.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/MwtNotificationBase.java
deleted file mode 100644 (file)
index c5a16a2..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.devicemanager.impl.xml;
-
-import javax.xml.bind.annotation.XmlElement;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalDateAndTime;
-
-import com.fasterxml.jackson.annotation.JsonProperty;
-
-public class MwtNotificationBase {
-
-    private static String EMPTY = "empty";
-
-    private String nodeName;
-    private String counter;
-    private String timeStamp;
-    private String objectId;
-
-    public MwtNotificationBase() {
-        // For Jaxb
-    }
-
-    public MwtNotificationBase(String nodeName, String counter, InternalDateAndTime timeStamp, String objectId) {
-        this.nodeName = nodeName;
-        this.counter = counter;
-        this.timeStamp = timeStamp.getValue();
-        this.objectId = objectId;
-        if (this.objectId == null) {
-            this.objectId = EMPTY;
-        }
-    }
-
-    @XmlElement(name = "nodeName")
-    public String getNodeName() {
-        return nodeName;
-    }
-
-    @XmlElement(name = "counter")
-    public String getCounter() {
-        return counter;
-    }
-
-    @XmlElement(name = "timeStamp")
-    public String getTimeStamp() {
-        return timeStamp;
-    }
-
-    @XmlElement(name = "objectId")
-    public String getObjectId() {
-        return objectId;
-    }
-
-    /**
-     * Type for the Database to document the the same name that is used in the websockets.
-     * @return String with type name of child class
-     */
-    @JsonProperty("type")
-    public String getType() {
-        return this.getClass().getSimpleName();
-    }
-
-    @Override
-    public String toString() {
-        return "MwtNotificationBase [getType()="+ getType() + ", nodeName=" + nodeName + ", counter=" + counter + ", timeStamp=" + timeStamp
-                + ", objectId=" + objectId + "]";
-    }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/ObjectCreationNotificationXml.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/ObjectCreationNotificationXml.java
deleted file mode 100644 (file)
index 7bee673..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.devicemanager.impl.xml;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalDateAndTime;
-
-@XmlRootElement(name = "ObjectCreationNotification")
-public class ObjectCreationNotificationXml extends MwtNotificationBase implements GetEventType {
-
-    private static String EVENTTYPE =  "ObjectCreationNotification";
-
-    public ObjectCreationNotificationXml() {
-
-    }
-
-    /**
-     * Normalized notification
-     * @param nodeName name of mountpoint or instance that owns the problem
-     * @param counter of notification
-     * @param timeStamp from ne
-     * @param objectIdRef from ne
-     */
-    public ObjectCreationNotificationXml(String nodeName, String counter, InternalDateAndTime timeStamp, String objectIdRef) {
-        super(nodeName, counter, timeStamp,  objectIdRef);
-    }
-
-    /*public ObjectCreationNotificationXml(String nodeName, org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.notifications.rev160809.ObjectCreationNotification notification) {
-        super(nodeName, notification.getCounter().toString(), InternalDateAndTime.valueOf(notification.getTimeStamp()),
-                notification.getObjectIdRef().getValue());
-    }
-
-    public ObjectCreationNotificationXml(String nodeName, org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ObjectCreationNotification notification) {
-        super(nodeName, notification.getCounter().toString(), InternalDateAndTime.valueOf(notification.getTimeStamp()),
-                notification.getObjectIdRef().getValue());
-    }*/
-
-    @Override
-    public String getEventType() {
-        return EVENTTYPE;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/ObjectDeletionNotificationXml.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/ObjectDeletionNotificationXml.java
deleted file mode 100644 (file)
index 7b6082c..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
- terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.devicemanager.impl.xml;
-
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalDateAndTime;
-
-@XmlRootElement(name = "ObjectDeletionNotification")
-public class ObjectDeletionNotificationXml extends MwtNotificationBase implements GetEventType {
-
-    private static String EVENTTYPE =  "ObjectDeletionNotification";
-
-    public ObjectDeletionNotificationXml() {
-
-    }
-
-    /**
-     * Normalized notification
-     * @param nodeName name of mountpoint or instance that owns the problem
-     * @param counter of notification
-     * @param timeStamp from ne
-     * @param objectIdRef from ne
-     */
-    public ObjectDeletionNotificationXml(String nodeName, String counter, InternalDateAndTime timeStamp, String objectIdRef) {
-        super(nodeName, counter, timeStamp,  objectIdRef);
-    }
-
-    /*
-    public ObjectDeletionNotificationXml(String nodeName, ObjectDeletionNotification notification) {
-        super(nodeName, notification.getCounter().toString(), InternalDateAndTime.valueOf(notification.getTimeStamp()),
-//                notification.getObjectId().getValue());
-                notification.getObjectIdRef().getValue());
-    }*/
-/*
-    public ObjectDeletionNotificationXml(String nodeName, org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ObjectDeletionNotification notification) {
-        super(nodeName, notification.getCounter().toString(), InternalDateAndTime.valueOf(notification.getTimeStamp()),
-//                notification.getObjectId().getValue());
-                notification.getObjectIdRef().getValue());
-    }
-*/
-    @Override
-    public String getEventType() {
-        return EVENTTYPE;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/ProblemNotificationXml.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/ProblemNotificationXml.java
deleted file mode 100644 (file)
index 15d8bbf..0000000
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.devicemanager.impl.xml;
-
-import java.time.Instant;
-import java.time.temporal.ChronoUnit;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.xml.bind.annotation.XmlElement;
-import javax.xml.bind.annotation.XmlRootElement;
-
-import org.opendaylight.mwtn.base.internalTypes.InternalDateAndTime;
-import org.opendaylight.mwtn.base.internalTypes.InternalSeverity;
-
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-@XmlRootElement(name = "ProblemNotification")
-public class ProblemNotificationXml extends MwtNotificationBase implements GetEventType {
-
-    private static String EVENTTYPE =  "ProblemNotification";
-    private static final Pattern pattern = Pattern.compile(".*\\[layerProtocol=(.*)\\]");
-
-    @XmlElement(name = "problem")
-    private String problem;
-
-    @XmlElement(name = "severity")
-    private InternalSeverity severity;
-
-    public ProblemNotificationXml() {
-
-    }
-
-    /**
-     * Generic Problem.
-     * All the parameters are of type Strings according to YANG specification.
-     * @param nodeName Name of mountpoint
-     * @param uuId Name of Interface Pac
-     * @param problemNameString Name of the problem
-     * @param problemSeverityString Severitycode of the problem
-     * @param counterString Counter from device
-     * @param internaltimeStampString Timestamp according to internal format.
-     */
-    public ProblemNotificationXml(String nodeName, String uuId, String problemNameString, InternalSeverity problemSeverityString,
-            String counterString, InternalDateAndTime internaltimeStampString) {
-        super(nodeName, counterString, internaltimeStampString, uuId);
-        this.problem = problemNameString;
-        this.severity = problemSeverityString;
-    }
-
-    public String getProblem() {
-        return problem;
-    }
-
-    public InternalSeverity getSeverity() {
-        return severity;
-    }
-
-    /**
-     * Create a specific ES id for the current log.
-     * @param fault is the input.
-     * @return a string with the generated ES Id
-     */
-    @JsonIgnore
-    public String genSpecificEsId() {
-
-        String uuId;
-
-        Matcher matcher = pattern.matcher(getObjectId());
-        if (matcher.matches() && matcher.groupCount() == 1) {
-            uuId = matcher.group(1);
-        } else {
-            uuId = getObjectId();
-        }
-
-        StringBuffer strBuf = new StringBuffer();
-        strBuf.append(getNodeName());
-        strBuf.append("/");
-        strBuf.append(uuId);
-        strBuf.append("/");
-        strBuf.append(getProblem());
-        return strBuf.toString();
-    }
-
-
-    @Override
-    public String toString() {
-        return "ProblemNotificationXml [problem=" + problem + ", severity=" + severity + ", toString()="
-                + super.toString() + "]";
-    }
-
-    @Override
-    public String getEventType() {
-        return EVENTTYPE;
-    }
-
-    @JsonIgnore
-    public String getTimeStampOffset(int off) {
-       Instant instant=Instant.parse(this.getTimeStamp());
-       return instant.truncatedTo(ChronoUnit.SECONDS).plusSeconds(off*60).toString();
-}
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/WebSocketServiceClient.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/WebSocketServiceClient.java
deleted file mode 100644 (file)
index b972bdc..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.devicemanager.impl.xml;
-
-import java.util.concurrent.Future;
-
-import org.opendaylight.mwtn.devicemanager.impl.listener.ODLEventListener;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketmanagerService;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Wrapper for forwarding websocket notifications to the websocket service, that is running as container.
- * @author herbert
- */
-public class WebSocketServiceClient {
-
-    private static final Logger LOG = LoggerFactory.getLogger(ODLEventListener.class);
-
-    private final WebsocketmanagerService websocketmanagerService;
-    private final XmlMapper xmlMapper;
-
-    /**
-     * @param websocketmanagerService object
-     * @param xmlMapper object
-     */
-    public WebSocketServiceClient(WebsocketmanagerService websocketmanagerService,
-            XmlMapper xmlMapper) {
-        super();
-        this.websocketmanagerService = websocketmanagerService;
-        this.xmlMapper = xmlMapper;
-    }
-
-    public <T extends MwtNotificationBase & GetEventType> void sendViaWebsockets(String nodeName, T notificationXml) {
-        LOG.info("Send websocket event {} for mountpoint {}", notificationXml.getClass().getSimpleName(), nodeName);
-
-        try {
-            WebsocketEventInputBuilder wsBuilder = new WebsocketEventInputBuilder();
-            wsBuilder.setNodeName(nodeName);
-            wsBuilder.setEventType(notificationXml.getEventType());
-            wsBuilder.setXmlEvent(xmlMapper.getXmlString(notificationXml));
-            Future<RpcResult<WebsocketEventOutput>> result = websocketmanagerService.websocketEvent(wsBuilder.build());
-            LOG.info("Send websocket result: {}", result.get().getResult().getResponse());
-        } catch (Exception e) {
-            LOG.warn("Can not send websocket event {} for mountpoint {} {}",
-                    notificationXml.getClass().getSimpleName(), nodeName, e.toString());
-        }
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/XmlMapper.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/devicemanager/impl/xml/XmlMapper.java
deleted file mode 100644 (file)
index 3684eb5..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.devicemanager.impl.xml;
-
-import java.io.StringWriter;
-
-import javax.xml.bind.JAXBContext;
-import javax.xml.bind.JAXBException;
-import javax.xml.bind.Marshaller;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class XmlMapper {
-    private static final Logger LOG = LoggerFactory.getLogger(XmlMapper.class);
-
-    public String getXmlString(MwtNotificationBase base) {
-        String xml;
-        JAXBContext jaxbContext;
-        try {
-            jaxbContext = JAXBContext.newInstance(AttributeValueChangedNotificationXml.class,
-                    ObjectCreationNotificationXml.class, ObjectDeletionNotificationXml.class,
-                    ProblemNotificationXml.class);
-            Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
-            jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT, true);
-
-            StringWriter stringWriter = new StringWriter();
-            jaxbMarshaller.marshal(base, stringWriter);
-            xml = stringWriter.toString();
-        } catch (JAXBException e) {
-            LOG.warn("Problem in marshalling xml file {}", e);
-            xml = null;
-        }
-        return xml;
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/index/impl/IndexConfigService.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/index/impl/IndexConfigService.java
deleted file mode 100644 (file)
index 4c3f215..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.opendaylight.mwtn.index.impl;
-
-import org.opendaylight.mwtn.base.database.HtDatabaseClientAbstract;
-import org.opendaylight.mwtn.base.database.HtDatabaseNode;
-import org.opendaylight.mwtn.base.database.IndexClientBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Setup index mwtn in the database
- * @author herbert
- *
- */
-public class IndexConfigService implements AutoCloseable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(IndexConfigService.class);
-
-    /** Index name to be used */
-    private static final String INDEX = "config";
-    /** Location of configuration data **/
-    private static final String MODELDATA = "/elasticsearch/index/config";
-
-    private HtDatabaseClientAbstract client;
-
-    // --- Construct and initialize
-
-    public IndexConfigService(HtDatabaseNode database) {
-       LOG.info("Create {} start", this.getClass().getSimpleName());
-
-       IndexClientBuilder clientBuilder = IndexClientBuilder.getBuilder(INDEX).setModelDataDirectory(MODELDATA);
-       client = clientBuilder.create(database);
-       LOG.info("Create {} finished. DB Service {} started.", this.getClass().getSimpleName(),  client != null ? "sucessfully" : "not" );
-    }
-
-       @Override
-       public void close() throws Exception {
-               client.close();
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/index/impl/IndexMwtnService.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/index/impl/IndexMwtnService.java
deleted file mode 100644 (file)
index 8900fec..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-package org.opendaylight.mwtn.index.impl;
-
-import org.opendaylight.mwtn.base.database.HtDatabaseClientAbstract;
-import org.opendaylight.mwtn.base.database.HtDatabaseNode;
-import org.opendaylight.mwtn.base.database.IndexClientBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Setup index mwtn in the database
- * @author herbert
- *
- */
-public class IndexMwtnService implements AutoCloseable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(IndexMwtnService.class);
-
-    /** Index name to be used */
-    private static final String INDEX = "mwtn";
-    /** Location of mapping data **/
-    private static final String MAPPING = "/elasticsearch/index/mwtn/mwtnMapping.json";
-    /** Location of configuration data **/
-    private static final String MODELDATA = "/elasticsearch/index/mwtn/modelDescription";
-
-    private HtDatabaseClientAbstract client;
-
-    // --- Construct and initialize
-
-    public IndexMwtnService(HtDatabaseNode database) {
-       LOG.info("Create {} start", this.getClass().getSimpleName());
-
-       IndexClientBuilder clientBuilder = IndexClientBuilder.getBuilder(INDEX)
-                       .setMappingSettingJsonFileName(MAPPING)
-                       .setModelDataDirectory(MODELDATA);
-       client = clientBuilder.create(database);
-       LOG.info("Create {} finished. DB Service {} started.", this.getClass().getSimpleName(),  client != null ? "sucessfully" : "not" );
-    }
-
-       @Override
-       public void close() throws Exception {
-               client.close();
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/index/impl/IndexUpdateService.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/index/impl/IndexUpdateService.java
deleted file mode 100644 (file)
index dd8c75e..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-package org.opendaylight.mwtn.index.impl;
-
-import java.io.File;
-import java.io.IOException;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-import org.opendaylight.mwtn.base.database.HtDatabaseNode;
-import org.opendaylight.mwtn.base.database.HtDatabaseUpdateFile;
-import org.opendaylight.mwtn.base.database.HtDatabaseUpdateFile.EsUpdateObject;
-import org.opendaylight.mwtn.base.database.HtDatabaseUpdateFile.FileReadCallback;
-import org.opendaylight.mwtn.base.database.HtDatabaseWebAPIClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class IndexUpdateService implements AutoCloseable {
-
-       private static final Logger LOG = LoggerFactory.getLogger(IndexUpdateService.class);
-
-       protected static final String FILENAME = "etc/elasticsearch_update.zip";
-
-       private final HtDatabaseWebAPIClient webClient;
-
-       private final boolean autoremove=true;
-
-       @SuppressWarnings("unused")
-    private ScheduledFuture<?> taskHandle;
-       private final ScheduledExecutorService scheduler;
-       private final HtDatabaseNode database;
-
-       private final FileReadCallback onReadUpdateFile = new FileReadCallback()
-       {
-               @Override
-               public void read(EsUpdateObject obj,String filename) {
-                       try {
-                               IndexUpdateService.this.webClient.sendRequest(obj.Uri, obj.Method, obj.Body);
-                               LOG.info("run database update file "+filename);
-                       } catch (IOException e) {
-                               LOG.warn("problem for request "+obj.Uri);
-                       }
-               }
-
-               @Override
-               public void onerror(String filename,IOException e) {
-                       LOG.warn("problem reading content file "+filename+ " :"+e.getMessage());
-               }
-
-       };
-       private final Runnable checkForUpdateTask = new Runnable() {
-
-               @Override
-               public void run() {
-                       File f=new File(FILENAME);
-                       if(f.exists())
-                       {
-                               LOG.debug("found update file "+f.getAbsolutePath());
-                               try {
-                                       HtDatabaseUpdateFile updateFile=new HtDatabaseUpdateFile(FILENAME);
-                                       if(updateFile.readFiles(onReadUpdateFile))
-                                       {
-                                               LOG.info("update successful");
-                                       }
-                                       updateFile.close();
-                                       if(IndexUpdateService.this.autoremove)
-                                       {
-                                               LOG.debug("autodelete updatefile");
-                                               f.delete();
-                                       }
-
-                               } catch (IOException e) {
-                                       LOG.warn("problem with update file:"+e.getMessage());
-                               }
-                       }
-               }
-
-       };
-
-
-
-       public IndexUpdateService(HtDatabaseNode database, String esNodeserverName, String esClusterName, String esNodeName) {
-               this.database = database;
-               this.webClient = new HtDatabaseWebAPIClient();
-               this.scheduler = Executors.newSingleThreadScheduledExecutor();
-       }
-       public void start()
-       {
-               this.taskHandle = this.scheduler.scheduleAtFixedRate(checkForUpdateTask, 0, 120, TimeUnit.SECONDS);
-       }
-       public void stop()
-       {
-               this.scheduler.shutdown();
-       }
-       @Override
-       public void close() throws Exception {
-               stop();
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/PerformanceManagerImpl.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/PerformanceManagerImpl.java
deleted file mode 100644 (file)
index ec20b5a..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-package org.opendaylight.mwtn.performancemanager.impl;
-
-import javax.annotation.Nullable;
-
-import org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation;
-import org.opendaylight.mwtn.performancemanager.impl.database.service.MicrowaveHistoricalPerformanceWriterService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class PerformanceManagerImpl implements AutoCloseable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(PerformanceManagerImpl.class);
-
-    private @Nullable PerformanceManagerTask task;
-
-    public PerformanceManagerImpl(long seconds, MicrowaveHistoricalPerformanceWriterService databaseService) {
-
-        LOG.info("Construct begin {} with {} Seconds",PerformanceManagerImpl.class.getSimpleName(), seconds);
-
-        if (MicrowaveHistoricalPerformanceWriterService.isAvailable(databaseService)) {
-
-            LOG.info("Do start of PM task");
-            task = new PerformanceManagerTask(seconds, databaseService);
-            task.start();
-            LOG.info("PM task scheduled");
-
-        } else {
-            LOG.info("Database not available. Do not start PM task");
-        }
-
-        LOG.info("Construct end {}",PerformanceManagerImpl.class.getSimpleName());
-    }
-
-    public void close() {
-        LOG.info("Close {}", PerformanceManagerImpl.class.getSimpleName());
-        if (task != null) {
-            task.stop();
-        }
-    }
-
-    public void registration(String mountPointNodeName, ONFCoreNetworkElementRepresentation ne) {
-        LOG.debug("Register {}",mountPointNodeName);
-        if (task != null)
-               task.registration(mountPointNodeName, ne);
-    }
-
-    public void deRegistration(String mountPointNodeName) {
-        LOG.debug("Deregister {}",mountPointNodeName);
-        if (task != null)
-               task.deRegistration(mountPointNodeName);
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/PerformanceManagerTask.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/PerformanceManagerTask.java
deleted file mode 100644 (file)
index 380bbe5..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-package org.opendaylight.mwtn.performancemanager.impl;
-
-import java.util.Iterator;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledExecutorService;
-import java.util.concurrent.ScheduledFuture;
-import java.util.concurrent.TimeUnit;
-
-import org.opendaylight.mwtn.base.netconf.AllPm;
-import org.opendaylight.mwtn.base.netconf.ONFCoreNetworkElementRepresentation;
-import org.opendaylight.mwtn.performancemanager.impl.database.service.MicrowaveHistoricalPerformanceWriterService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class PerformanceManagerTask implements Runnable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(PerformanceManagerTask.class);
-    private static final String LOGMARKER = "PMTick";
-
-    private int tickCounter = 0;
-
-    private final ConcurrentHashMap<String, ONFCoreNetworkElementRepresentation> queue = new ConcurrentHashMap<>();
-    private final MicrowaveHistoricalPerformanceWriterService databaseService;
-    private final ScheduledExecutorService scheduler;
-    private long seconds;
-
-    private ScheduledFuture<?> taskHandle = null;
-    private Iterator<ONFCoreNetworkElementRepresentation> neIterator = null;
-    private ONFCoreNetworkElementRepresentation actualNE = null;
-
-    /**
-     * Constructor of PM Task
-     * @param seconds seconds to call PM Task
-     * @param databaseService DB Service to load PM data to
-     */
-
-    public PerformanceManagerTask(long seconds, MicrowaveHistoricalPerformanceWriterService databaseService) {
-
-        LOG.debug("Init task {}", PerformanceManagerTask.class.getSimpleName());
-        this.seconds = seconds;
-        this.databaseService = databaseService;
-        this.scheduler = Executors.newSingleThreadScheduledExecutor();
-
-    }
-
-    /**
-     * Start PM Task
-     */
-    public void start() {
-        LOG.info("PM task created");
-        taskHandle = this.scheduler.scheduleAtFixedRate(this, 0, seconds, TimeUnit.SECONDS);
-        LOG.info("PM task scheduled");
-    }
-
-    /**
-     * Stop everything
-     */
-    public void stop() {
-        LOG.info("Stop {}", PerformanceManagerImpl.class.getSimpleName());
-        if (taskHandle != null) {
-            taskHandle.cancel(true);
-            try {
-                scheduler.awaitTermination(10, TimeUnit.SECONDS);
-             } catch (InterruptedException e) {
-                 LOG.warn(e.toString());
-             }
-        }
-    }
-
-    /**
-     * Add NE/Mountpoint to PM Processig
-     * @param mountPointNodeName to be added
-     * @param ne that is connected to the mountpoint
-     */
-    public void registration(String mountPointNodeName, ONFCoreNetworkElementRepresentation ne) {
-       queue.put(mountPointNodeName, ne);
-    }
-
-    /**
-     * Remove mountpoint/NE from PM process
-     * @param mountPointNodeName that has to be removed
-     */
-    public void deRegistration(String mountPointNodeName) {
-        LOG.debug("Deregister {}",mountPointNodeName);
-        ONFCoreNetworkElementRepresentation removedNE = queue.remove(mountPointNodeName);
-
-        if ( removedNE == null) {
-            LOG.warn("Couldn't delete {}",mountPointNodeName);
-        }
-    }
-
-
-    /*--------------------------------------------------------------
-     * Task to read PM data from NE
-     */
-
-    /**
-     * Task runner to read all performance data from Network Elements.
-     * Catch exceptions to make sure, that the Task is not stopped.
-     */
-    @Override
-    public void run() {
-
-        LOG.debug("{} start {} Start with mountpoint {}",LOGMARKER, tickCounter, actualNE == null ? "No NE" : actualNE.getMountPointNodeName());
-
-               //Proceed to next NE/Interface
-               getNextInterface();
-
-               LOG.debug("{} {} Next interface to handle {}", LOGMARKER, tickCounter,
-                       actualNE == null ? "No NE/IF" : actualNE.getMountPointNodeName() + " " + actualNE.pmStatusToString());
-
-               if (actualNE != null) {
-                   try {
-                       LOG.debug("{} Start to read PM from NE ({})", LOGMARKER, tickCounter);
-                       AllPm allPm = actualNE.getHistoricalPM();
-                       LOG.debug("{} {} Got PM list. Start write to DB", LOGMARKER, tickCounter);
-                       databaseService.writePM(allPm);
-                       LOG.debug("{} {} PM List end.", LOGMARKER, tickCounter);
-                   } catch (Exception e) {
-                       LOG.warn("{} {} PM read/write failed. Write log entry {}", LOGMARKER, tickCounter, e);
-                       String msg = e.getMessage();
-                       if (msg == null || msg.isEmpty()) {
-                           if (e.getCause() != null) {
-                               msg = e.getCause().toString();
-                           }
-                           if (msg == null || msg.isEmpty()){
-                               msg = "No message or cause";
-                           }
-                       }
-                       databaseService.writePMLog(actualNE.getMountPointNodeName(), actualNE.pmStatusToString(), msg);
-                   }
-               }
-
-               LOG.debug("{} end {}",LOGMARKER, tickCounter);
-               tickCounter++;
-    }
-
-    /**
-     * Reset queue to start from beginning
-     */
-    private void resetQueue() {
-        actualNE = null;
-        neIterator = null;
-    }
-
-    /**
-     * Get then next interface in the list.
-     * First try to find a next on the actual NE.
-     * If not available search next interface at a NE
-     * Special Situations to handle: Empty queue, NEs, but no interfaces
-     */
-    private void getNextInterface() {
-        boolean started = false;
-        int loopCounter = 0;
-
-        LOG.debug("{} {} getNextInterface enter. Queue size {} ", LOGMARKER, tickCounter, queue.size());
-
-        if ((actualNE != null) && !queue.containsValue(actualNE)) {
-               LOG.debug("{} {} NE Removed duringprocessing A",LOGMARKER, tickCounter);
-               resetQueue();
-        }
-
-        while (true) {
-
-               if (loopCounter++ >= 1000) {
-                       LOG.error("{} {} Problem in PM iteration. endless condition reached", LOGMARKER, tickCounter);
-               resetQueue();
-                       break;
-               }
-
-               LOG.debug("{} {} Loop ne {}:neiterator {}:Interfaceiterator:{} Loop:{}",
-                               LOGMARKER,
-                               tickCounter,
-                               actualNE == null? "null" : actualNE.getMountPointNodeName(),
-                               neIterator == null ? "null" : neIterator.hasNext(),
-                               actualNE == null ? "null" : actualNE.hasNext(),
-                               loopCounter);
-
-               if (actualNE != null && actualNE.hasNext()) {
-                       // Yes, there is an interface, deliver back
-                       LOG.debug("{} {} getNextInterface yes A",LOGMARKER, tickCounter);
-                       actualNE.next();
-                       break;
-
-               } else {
-                       // No element in neInterfaceInterator .. get next NE and try
-                       if (neIterator != null && neIterator.hasNext()) {
-                               // Set a new NE
-                               LOG.debug("{} {} Next NE A",LOGMARKER, tickCounter);
-                               actualNE = neIterator.next();
-                               actualNE.resetPMIterator();
-
-                       } else {
-                               // Goto start condition 1) first entry 2) end of queue reached
-                               LOG.debug("{} {} Reset",LOGMARKER, tickCounter);
-                               resetQueue();
-
-                               if (queue.isEmpty()) {
-                                       LOG.debug("{} {} no nextInterfac. queue empty",LOGMARKER, tickCounter);
-                                       break;
-                               } else if (!started){
-                                       LOG.debug("{} {} getNextInterface start condition. Get interator.",LOGMARKER, tickCounter);
-                                       neIterator = queue.values().iterator();
-                                       started = true;
-                               } else {
-                                       LOG.debug("{} {} no nextInterface",LOGMARKER, tickCounter);
-                                       break;
-                               }
-                       }
-               }
-        } //while
-
-        if ((actualNE != null) && !queue.containsValue(actualNE)) {
-               LOG.debug("{} {} NE Removed duringprocessing B",LOGMARKER, tickCounter);
-               resetQueue();
-        }
-
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/service/MicrowaveHistoricalPerformanceWriterService.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/service/MicrowaveHistoricalPerformanceWriterService.java
deleted file mode 100644 (file)
index daef26d..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-package org.opendaylight.mwtn.performancemanager.impl.database.service;
-
-import org.opendaylight.mwtn.base.database.HtDataBaseReaderAndWriter;
-import org.opendaylight.mwtn.base.database.HtDatabaseClientAbstract;
-import org.opendaylight.mwtn.base.database.HtDatabaseNode;
-import org.opendaylight.mwtn.base.database.IndexClientBuilder;
-import org.opendaylight.mwtn.base.netconf.AllPm;
-import org.opendaylight.mwtn.base.netconf.NetconfTimeStamp;
-import org.opendaylight.mwtn.performancemanager.impl.database.types.EsHistoricalPerformance15Minutes;
-import org.opendaylight.mwtn.performancemanager.impl.database.types.EsHistoricalPerformance24Hours;
-import org.opendaylight.mwtn.performancemanager.impl.database.types.EsHistoricalPerformanceLogEntry;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class MicrowaveHistoricalPerformanceWriterService {
-
-    private static final Logger LOG = LoggerFactory.getLogger(MicrowaveHistoricalPerformanceWriterService.class);
-    private static final String INDEX = "sdnperformance";
-    private static final String MAPPING = "/elasticsearch/index/sdnperformance/sdnperformanceMapping.json";
-
-
-    private HtDatabaseClientAbstract client;
-    private HtDataBaseReaderAndWriter<EsHistoricalPerformance15Minutes> historicalPerformance15mRW;
-    private HtDataBaseReaderAndWriter<EsHistoricalPerformance24Hours> historicalPerformance24hRW;
-    private HtDataBaseReaderAndWriter<EsHistoricalPerformanceLogEntry> historicalPerformanceLogRW;
-
-    public MicrowaveHistoricalPerformanceWriterService(HtDatabaseNode database) {
-
-       LOG.info("Create {} start", MicrowaveHistoricalPerformanceWriterService.class);
-
-       try {
-
-               IndexClientBuilder clientBuilder = IndexClientBuilder.getBuilder(INDEX).setMappingSettingJsonFileName(MAPPING);
-               client = clientBuilder.create(database);
-
-               historicalPerformance15mRW = new HtDataBaseReaderAndWriter<>(client, EsHistoricalPerformance15Minutes.ESDATATYPENAME, EsHistoricalPerformance15Minutes.class);
-               historicalPerformance24hRW = new HtDataBaseReaderAndWriter<>(client, EsHistoricalPerformance24Hours.ESDATATYPENAME, EsHistoricalPerformance24Hours.class);
-               historicalPerformanceLogRW = new HtDataBaseReaderAndWriter<>(client, EsHistoricalPerformanceLogEntry.ESDATATYPENAME, EsHistoricalPerformanceLogEntry.class);
-
-       } catch (Exception e) {
-               client = null;
-               LOG.error("Can not start database client. Exception: {}", e.getMessage());
-       }
-
-       LOG.info("Create {} finished. DB Service {} started.", MicrowaveHistoricalPerformanceWriterService.class,  client != null ? "sucessfully" : "not" );
-    }
-
-
-    public void writePM(AllPm pm) {
-
-        LOG.debug("Write {} pm records", pm.size());
-
-        LOG.debug("Write 15m write to DB");
-        historicalPerformance15mRW.doWrite(pm.getPm15());
-        LOG.debug("Write 15m done, Write 24h write to DB");
-        historicalPerformance24hRW.doWrite(pm.getPm24());
-        LOG.debug("Write 24h done");
-
-    }
-
-    public void writePMLog(String mountpointName, String layerProtocolName, String msg) {
-
-        LOG.debug("Write PM Log: {}", msg);
-        EsHistoricalPerformanceLogEntry logEntry = new EsHistoricalPerformanceLogEntry(mountpointName,layerProtocolName,NetconfTimeStamp.getTimeStamp().getValue() , msg );
-        historicalPerformanceLogRW.doWrite(logEntry);
-        LOG.debug("Write PM Log done");
-
-    }
-
-
-    static public boolean isAvailable(MicrowaveHistoricalPerformanceWriterService s) {
-
-        if (s == null || s.client == null) {
-            return false;
-        }
-        return true;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformance15Minutes.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformance15Minutes.java
deleted file mode 100644 (file)
index 0046a97..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-package org.opendaylight.mwtn.performancemanager.impl.database.types;
-
-import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corenetworkmodule.objectclasses.rev160811.logicalterminationpoint.LpList;
-import org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.object_classes.rev160710.OTNHistoryData;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.logical.termination.point.g.Lp;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.OtnHistoryDataG;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class EsHistoricalPerformance15Minutes extends EsHistoricalPerformanceBase {
-
-    public static final String ESDATATYPENAME = "historicalperformance15min";
-
-    private static final Logger LOG = LoggerFactory.getLogger(EsHistoricalPerformance15Minutes.class);
-
-    public EsHistoricalPerformance15Minutes(String nodeName, LpList lp) {
-        super(nodeName, lp);
-    }
-
-    public EsHistoricalPerformance15Minutes(String nodeName, Lp lp) {
-        super(nodeName, lp);
-    }
-
-    public <T extends OTNHistoryData> EsHistoricalPerformance15Minutes setHistoricalRecord15Minutes(T record) {
-        if (record.getGranularityPeriod() != org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.type_definitions.rev160710.GranularityPeriodType.PERIOD15MIN) {
-            LOG.warn("Granularity mismatch for {} expected {} found {}", getNodeName(),getUuidInterface(), org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.type_definitions.rev160710.GranularityPeriodType.PERIOD15MIN, record.getGranularityPeriod());
-        }
-        set(record);
-        return this;
-    }
-
-    public <T extends OtnHistoryDataG> EsHistoricalPerformance15Minutes setHistoricalRecord15Minutes(OtnHistoryDataG record) {
-        if (record.getGranularityPeriod() != org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.GranularityPeriodType.Period15Min) {
-            LOG.warn("Granularity mismatch for {} expected {} found {}", getNodeName(),getUuidInterface(), org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.GranularityPeriodType.Period15Min, record.getGranularityPeriod());
-        }
-        set(record);
-        return this;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformance24Hours.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformance24Hours.java
deleted file mode 100644 (file)
index cf16063..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-package org.opendaylight.mwtn.performancemanager.impl.database.types;
-
-import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corenetworkmodule.objectclasses.rev160811.logicalterminationpoint.LpList;
-import org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.object_classes.rev160710.OTNHistoryData;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.logical.termination.point.g.Lp;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.OtnHistoryDataG;
-
-public class EsHistoricalPerformance24Hours extends EsHistoricalPerformanceBase {
-
-    public static final String ESDATATYPENAME = "historicalperformance24h";
-
-    public EsHistoricalPerformance24Hours(String nodeName, LpList lp) {
-        super(nodeName, lp);
-    }
-
-    public EsHistoricalPerformance24Hours(String nodeName, Lp lp) {
-        super(nodeName, lp);
-    }
-
-    public <T extends OTNHistoryData> EsHistoricalPerformance24Hours setHistoricalRecord24Hours(T record) {
-        set(record);
-        return this;
-    }
-
-    public <T extends OtnHistoryDataG> EsHistoricalPerformance24Hours setHistoricalRecord24Hours(T record) {
-        set(record);
-        return this;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformanceBase.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformanceBase.java
deleted file mode 100644 (file)
index ea4472e..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-package org.opendaylight.mwtn.performancemanager.impl.database.types;
-
-import org.opendaylight.mwtn.base.database.EsObject;
-import org.opendaylight.mwtn.base.netconf.LinkIdentifyingObject;
-import org.opendaylight.mwtn.base.netconf.NetconfTimeStamp;
-import org.opendaylight.yang.gen.v1.uri.onf.coremodel.corenetworkmodule.objectclasses.rev160811.logicalterminationpoint.LpList;
-import org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.object_classes.rev160710.OTNHistoryData;
-import org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.type_definitions.rev160710.GranularityPeriodType;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.logical.termination.point.g.Lp;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.OtnHistoryDataG;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.annotation.JsonGetter;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-
-public class EsHistoricalPerformanceBase extends EsObject {
-
-    private static final Logger LOG = LoggerFactory.getLogger(EsHistoricalPerformanceBase.class);
-
-    @JsonIgnore private final String nodeName;
-    @JsonIgnore private final String uuidInterface;
-    @JsonIgnore private final String layerProtocolName;
-
-    @JsonIgnore private String radioSignalId = null;  //Meaning of connection Id
-    @JsonIgnore private String timeStamp = null;
-    @JsonIgnore private Boolean suspectIntervalFlag = null;
-    @JsonIgnore private String granularityPeriod = null;  //Representation of GranularityPeriodType
-    @JsonIgnore private String scannerId = null;
-    @JsonIgnore private Object performanceData = null;
-
-
-    public EsHistoricalPerformanceBase(String nodeName, LpList actualInterface) {
-        this.nodeName = nodeName;
-        this.uuidInterface = actualInterface.getUuid().getValue();
-        this.layerProtocolName = actualInterface.getLayerProtocolName().getValue();
-
-    }
-
-    public EsHistoricalPerformanceBase(String nodeName, Lp actualInterface) {
-        this.nodeName = nodeName;
-        this.uuidInterface = actualInterface.getUuid().getValue();
-        this.layerProtocolName = actualInterface.getLayerProtocolName().getValue();
-
-    }
-
-
-    protected <T extends OTNHistoryData> void set(T record) {
-        if (record == null) {
-            LOG.warn("PM Record: null record. Can not handle");
-            return;
-        }
-
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("PM Record: class {} '{}' ", record.getClass().getSimpleName(), record);
-        }
-
-        timeStamp = NetconfTimeStamp.getTimeStampFromNetconf(record.getPeriodEndTime().getValue());
-        suspectIntervalFlag = record.isSuspectIntervalFlag();
-        granularityPeriod = getYangGranularityPeriodString( record.getGranularityPeriod() );
-        scannerId = record.getHistoryDataId();
-
-        if (record instanceof LinkIdentifyingObject) {
-            radioSignalId = ((LinkIdentifyingObject) record).getSignalId();
-        }
-
-        performanceData = new EsPerformanceData10( record );
-        setEsId(genSpecificEsId(record.getPeriodEndTime().getValue()));
-    }
-
-    protected <T extends OtnHistoryDataG> void set(T record) {
-        if (record == null) {
-            LOG.warn("PM Record: null record. Can not handle");
-            return;
-        }
-
-        if (LOG.isTraceEnabled()) {
-            LOG.trace("PM Record: class {} '{}' ", record.getClass().getSimpleName(), record);
-        }
-
-        timeStamp = NetconfTimeStamp.getTimeStampFromNetconf(record.getPeriodEndTime().getValue());
-        suspectIntervalFlag = record.isSuspectIntervalFlag();
-        granularityPeriod = getYangGranularityPeriodString( record.getGranularityPeriod() );
-        scannerId = record.getHistoryDataId();
-
-        if (record instanceof LinkIdentifyingObject) {
-            radioSignalId = ((LinkIdentifyingObject) record).getSignalId();
-        }
-
-        performanceData = new EsPerformanceData12( record );
-        setEsId(genSpecificEsId(record.getPeriodEndTime().getValue()));
-    }
-
-
-    @JsonGetter("node-name")
-    public String getNodeName() {
-        return nodeName;
-    }
-
-    @JsonGetter("uuid-interface")
-    public String getUuidInterface() {
-        return uuidInterface;
-    }
-
-    @JsonGetter("layer-protocol-name")
-    public String getLayerProtocolName() {
-        return layerProtocolName;
-    }
-
-    @JsonGetter("radio-signal-id")
-    public String getRadioSignalId() {
-        return radioSignalId;
-    }
-
-    @JsonGetter("time-stamp")
-    public String getTimeStamp() {
-        return timeStamp;
-    }
-
-    @JsonGetter("suspect-interval-flag")
-    public Boolean getSuspect() {
-        return suspectIntervalFlag;
-    }
-
-    @JsonGetter("granularity-period")
-    public String getGranularityPeriod() {
-        return granularityPeriod;
-    }
-
-    @JsonGetter("scanner-id")
-    public String getScannerId() {
-        return scannerId;
-    }
-
-    @JsonGetter("performance-data")
-    public Object getData() {
-        return performanceData;
-    }
-
-
-
-    //Adapt JSON Text
-    //@JsonGetter("granularityPeriod")
-    private static String getYangGranularityPeriodString(GranularityPeriodType yangGanularityPeriod) {
-        switch(yangGanularityPeriod == null ? GranularityPeriodType.UNKNOWN : yangGanularityPeriod) {
-            case PERIOD15MIN:
-                return "PERIOD_15MIN";
-            case PERIOD24HOURS:
-                return "PERIOD_24HOURS";
-            default:
-                return "PERIOD_UNKOWN";
-        }
-    }
-
-    private static String getYangGranularityPeriodString(org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.GranularityPeriodType yangGanularityPeriod) {
-        switch(yangGanularityPeriod == null ? org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.GranularityPeriodType.Unknown : yangGanularityPeriod) {
-            case Period15Min:
-                return "PERIOD_15MIN";
-            case Period24Hours:
-                return "PERIOD_24HOURS";
-            default:
-                return "PERIOD_UNKOWN";
-        }
-    }
-
-    /**
-     * Create a specific ES id for the current log.
-     * @param time is the input.
-     * @return a string with the generated ES Id
-     */
-    protected String genSpecificEsId(String time) {
-
-        StringBuffer strBuf = new StringBuffer();
-        strBuf.append(nodeName);
-        strBuf.append("/");
-        strBuf.append(uuidInterface);
-        strBuf.append("/");
-        strBuf.append(time == null || time.isEmpty() ? "Empty" : time);
-
-        return strBuf.toString();
-    }
-
-    @Override
-    public String toString() {
-        return "EsHistoricalPerformanceBase [nodeName=" + nodeName + ", uuidInterface=" + uuidInterface
-                + ", layerProtocolName=" + layerProtocolName + ", radioSignalId=" + radioSignalId + ", timeStamp="
-                + timeStamp + ", suspectIntervalFlag=" + suspectIntervalFlag + ", granularityPeriod="
-                + granularityPeriod + ", scannerId=" + scannerId + ", performanceData=" + performanceData + "]";
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformanceLogEntry.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsHistoricalPerformanceLogEntry.java
deleted file mode 100644 (file)
index 50e83a2..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-package org.opendaylight.mwtn.performancemanager.impl.database.types;
-
-import org.opendaylight.mwtn.base.database.EsObject;
-
-/**
- *
- * Event from Network to be recorded in the database
- *
- */
-
-public class EsHistoricalPerformanceLogEntry extends EsObject {
-
-    public static final String ESDATATYPENAME = "performancelog";
-
-    private String mountpoint;
-    private String interfaceIdx;
-    private String timeStamp;
-    private String logText;
-
-    /**
-     * Create Log entry for NE/Interfaceproblems during PM execution
-     * @param mountpoint Name of
-     * @param interfaceIdx Name of
-     * @param timeStamp Time and date of occurence
-     * @param logText to write
-     */
-    public EsHistoricalPerformanceLogEntry(String mountpoint, String interfaceIdx, String timeStamp, String logText) {
-        super();
-        this.mountpoint = mountpoint;
-        this.interfaceIdx = interfaceIdx;
-        this.timeStamp = timeStamp;
-        this.logText = logText;
-    }
-
-    /**
-     * For jackson purpose
-     */
-    EsHistoricalPerformanceLogEntry() {
-    }
-
-    /**
-     * @return the mountpoint
-     */
-    public String getMountpoint() {
-        return mountpoint;
-    }
-
-    /**
-     * @return the interfaceIdx
-     */
-    public String getInterfaceIdx() {
-        return interfaceIdx;
-    }
-
-    /**
-     * @return the timeStamp
-     */
-    public String getTimeStamp() {
-        return timeStamp;
-    }
-
-    /**
-     * @return the logText
-     */
-    public String getLogText() {
-        return logText;
-    }
-
-
-
-    public static String getEsdatatypename() {
-        return ESDATATYPENAME;
-    }
-
- }
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsPerformanceData10.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsPerformanceData10.java
deleted file mode 100644 (file)
index bd4e3bf..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-package org.opendaylight.mwtn.performancemanager.impl.database.types;
-
-import org.opendaylight.mwtn.base.netconf.ExtendedAirInterfaceHistoricalPerformanceType;
-import org.opendaylight.yang.gen.v1.uri.onf.g_874_1_model.object_classes.rev160710.OTNHistoryData;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.AirInterfaceHistoricalPerformanceType;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.AirInterfacePerformanceType;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.ContainerHistoricalPerformanceType;
-import org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.ContainerPerformanceType;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.annotation.JsonGetter;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
-
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class EsPerformanceData10 {
-
-    @JsonIgnore
-    private static final Logger LOG = LoggerFactory.getLogger(EsPerformanceData10.class);
-
-    //@JsonIgnore
-    //private final org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.airinterfacehistoricalperformancetype.PerformanceData dataAirInterface;
-    //@JsonIgnore
-    //private final org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.containerhistoricalperformancetype.PerformanceData dataEthContainer;
-    @JsonIgnore
-    private AirInterfacePerformanceType dataAirInterface;
-    @JsonIgnore
-    private ContainerPerformanceType dataEthContainer;
-    @JsonIgnore
-
-
-    public <T extends OTNHistoryData> EsPerformanceData10(T ff) {
-
-        if (ff instanceof AirInterfaceHistoricalPerformanceType ) {
-            this.dataAirInterface = ((AirInterfaceHistoricalPerformanceType)ff).getPerformanceData();
-            this.dataEthContainer = null;
-            //org.opendaylight.yang.gen.v1.uri.onf.microwavemodel.typedefinitions.rev160902.ContainerHistoricalPerformanceType
-        } else if (ff instanceof ContainerHistoricalPerformanceType) {
-            this.dataAirInterface = null;
-            this.dataEthContainer = ((ContainerHistoricalPerformanceType)ff).getPerformanceData();
-        } else if (ff instanceof ExtendedAirInterfaceHistoricalPerformanceType) {
-            this.dataAirInterface = ((ExtendedAirInterfaceHistoricalPerformanceType)ff).getAirInterfaceHistoricalPerformanceType().getPerformanceData();
-            this.dataEthContainer = null;
-        } else {
-            LOG.warn("Can not assign historical performance type {}", ff.getClass().getName());
-            this.dataAirInterface = null;
-            this.dataEthContainer = null;
-        }
-    }
-
-    @JsonGetter("es")
-    public java.lang.Integer getEs() {
-        return dataAirInterface != null ? dataAirInterface.getEs() : null;
-    }
-
-    @JsonGetter("ses")
-    java.lang.Integer getSes() {
-        return dataAirInterface != null ? dataAirInterface.getSes() : null;
-    }
-
-    @JsonGetter("cses")
-    java.lang.Integer getCses() { return dataAirInterface != null ? dataAirInterface.getCses() : null; }
-
-    @JsonGetter("unavailability")
-    java.lang.Integer getUnavailability(){ return dataAirInterface != null ? dataAirInterface.getUnavailability() : null; }
-
-    @JsonGetter("tx-level-min")
-    java.lang.Byte getTxLevelMin(){ return dataAirInterface != null ? dataAirInterface.getTxLevelMin() : null; }
-
-    @JsonGetter("tx-level-max")
-    java.lang.Byte getTxLevelMax(){ return dataAirInterface != null ? dataAirInterface.getTxLevelMax() : null; }
-
-    @JsonGetter("tx-level-avg")
-    java.lang.Byte getTxLevelAvg(){ return dataAirInterface != null ? dataAirInterface.getTxLevelAvg() : null; }
-
-    @JsonGetter("rx-level-min")
-    java.lang.Byte getRxLevelMin(){ return dataAirInterface != null ? dataAirInterface.getRxLevelMin() : null; }
-
-    @JsonGetter("rx-level-max")
-    java.lang.Byte getRxLevelMax(){ return dataAirInterface != null ? dataAirInterface.getRxLevelMax() : null; }
-
-    @JsonGetter("rx-level-avg")
-    java.lang.Byte getRxLevelAvg(){ return dataAirInterface != null ? dataAirInterface.getRxLevelAvg() : null; }
-
-    @JsonGetter("time2-states")
-    java.lang.Integer getTime2Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime2Symbols() : null; }
-
-    @JsonGetter("time4-states-s")
-    java.lang.Integer getTime4SymbolsS(){ return dataAirInterface != null ? dataAirInterface.getTime4SymbolsS() : null; }
-
-    @JsonGetter("time4-states")
-    java.lang.Integer getTime4Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime4Symbols() : null; }
-
-    @JsonGetter("time8-states")
-    java.lang.Integer getTime8Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime8Symbols() : null; }
-
-    @JsonGetter("time16-states-s")
-    java.lang.Integer getTime16SymbolsS(){ return dataAirInterface != null ? dataAirInterface.getTime16SymbolsS() : null; }
-
-    @JsonGetter("time16-states")
-    java.lang.Integer getTime16Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime16Symbols() : null; }
-
-    @JsonGetter("time32-states")
-    java.lang.Integer getTime32Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime32Symbols() : null; }
-
-    @JsonGetter("time64-states")
-    java.lang.Integer getTime64Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime64Symbols() : null; }
-
-    @JsonGetter("time128-states")
-    java.lang.Integer getTime128Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime128Symbols() : null; }
-
-    @JsonGetter("time256-states")
-    java.lang.Integer getTime256Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime256Symbols() : null; }
-
-    @JsonGetter("time512-states")
-    java.lang.Integer getTime512Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime512Symbols() : null; }
-
-    @JsonGetter("time512-states-l")
-    java.lang.Integer getTime512SymbolsL(){ return dataAirInterface != null ? dataAirInterface.getTime512SymbolsL() : null; }
-
-    @JsonGetter("time1024-states")
-    java.lang.Integer getTime1024Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime1024Symbols() : null; }
-
-    @JsonGetter("time1024-states-l")
-    java.lang.Integer getTime1024SymbolsL(){ return dataAirInterface != null ? dataAirInterface.getTime1024SymbolsL() : null; }
-
-    @JsonGetter("time2048-states")
-    java.lang.Integer getTime2048Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime2048Symbols() : null; }
-
-    @JsonGetter("time2048-states-l")
-    java.lang.Integer getTime2048SymbolsL(){ return dataAirInterface != null ? dataAirInterface.getTime2048SymbolsL() : null; }
-
-    @JsonGetter("time4096-states")
-    java.lang.Integer getTime4096Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime4096Symbols() : null; }
-
-    @JsonGetter("time4096-states-l")
-    java.lang.Integer getTime4096SymbolsL(){ return dataAirInterface != null ? dataAirInterface.getTime4096SymbolsL() : null; }
-
-    @JsonGetter("time8192-states")
-    java.lang.Integer getTime8192Symbols(){ return dataAirInterface != null ? dataAirInterface.getTime8192Symbols() : null; }
-
-    @JsonGetter("time8192-states-l")
-    java.lang.Integer getTime8192SymbolsL(){ return dataAirInterface != null ? dataAirInterface.getTime8192SymbolsL() : null; }
-
-    @JsonGetter("snir-min")
-    java.lang.Byte getSnirMin(){ return dataAirInterface != null ? dataAirInterface.getSnirMin() : null; }
-
-    @JsonGetter("snir-max")
-    java.lang.Byte getSnirMax(){ return dataAirInterface != null ? dataAirInterface.getSnirMax() : null; }
-
-    @JsonGetter("snir-avg")
-    java.lang.Byte getSnirAvg(){ return dataAirInterface != null ? dataAirInterface.getSnirAvg() : null; }
-
-    @JsonGetter("xpd-min")
-    java.lang.Byte getXpdMin(){ return dataAirInterface != null ? dataAirInterface.getXpdMin() : null; }
-
-    @JsonGetter("xpd-max")
-    java.lang.Byte getXpdMax(){ return dataAirInterface != null ? dataAirInterface.getXpdMax() : null; }
-
-    @JsonGetter("xpd-avg")
-    java.lang.Byte getXpdAvg(){ return dataAirInterface != null ? dataAirInterface.getXpdAvg() : null; }
-
-    @JsonGetter("rf-temp-min")
-    java.lang.Byte getRfTempMin(){ return dataAirInterface != null ? dataAirInterface.getRfTempMin() : null; }
-
-    @JsonGetter("rf-temp-max")
-    java.lang.Byte getRfTempMax(){ return dataAirInterface != null ? dataAirInterface.getRfTempMax() : null; }
-
-    @JsonGetter("rf-temp-avg")
-    java.lang.Byte getRfTempAvg(){ return dataAirInterface != null ? dataAirInterface.getRfTempAvg() : null; }
-
-    @JsonGetter("defect-blocks-sum")
-    java.lang.Short getDefectBlocksSum(){ return dataAirInterface != null ? dataAirInterface.getDefectBlocksSum() : null; }
-
-    @JsonGetter("time-period")
-    java.lang.Integer getTimePeriod(){ return dataAirInterface != null ? dataAirInterface.getTimePeriod() : dataEthContainer != null ? dataEthContainer.getTimePeriod() : null ; }
-
-    @JsonGetter("tx-ethernet-bytes-max-s")
-    java.lang.Integer getTxEthernetBytesMaxS() {
-        return dataEthContainer != null ? dataEthContainer.getTxEthernetBytesMaxS() : null;
-    }
-
-    @JsonGetter("tx-ethernet-bytes-max-m")
-    java.lang.Long getTxEthernetBytesMaxM() {
-        return dataEthContainer != null ? dataEthContainer.getTxEthernetBytesMaxM() : null;
-    }
-
-    @JsonGetter("tx-ethernet-bytes-sum")
-    java.lang.Long getTxEthernetBytesSum() {
-        return dataEthContainer != null ? dataEthContainer.getTxEthernetBytesSum() : null;
-    }
-
-    @Override
-    public String toString() {
-        return "EsPerformanceData [getEs()=" + getEs() + ", getSes()=" + getSes() + ", getCses()=" + getCses()
-                + ", getUnavailability()=" + getUnavailability() + ", getTxLevelMin()=" + getTxLevelMin()
-                + ", getTxLevelMax()=" + getTxLevelMax() + ", getTxLevelAvg()=" + getTxLevelAvg() + ", getRxLevelMin()="
-                + getRxLevelMin() + ", getRxLevelMax()=" + getRxLevelMax() + ", getRxLevelAvg()=" + getRxLevelAvg()
-                + ", getTime2Symbols()=" + getTime2Symbols() + ", getTime4SymbolsS()=" + getTime4SymbolsS()
-                + ", getTime4Symbols()=" + getTime4Symbols() + ", getTime8Symbols()=" + getTime8Symbols()
-                + ", getTime16SymbolsS()=" + getTime16SymbolsS() + ", getTime16Symbols()=" + getTime16Symbols()
-                + ", getTime32Symbols()=" + getTime32Symbols() + ", getTime64Symbols()=" + getTime64Symbols()
-                + ", getTime128Symbols()=" + getTime128Symbols() + ", getTime256Symbols()=" + getTime256Symbols()
-                + ", getTime512Symbols()=" + getTime512Symbols() + ", getTime512SymbolsL()=" + getTime512SymbolsL()
-                + ", getTime1024Symbols()=" + getTime1024Symbols() + ", getTime1024SymbolsL()=" + getTime1024SymbolsL()
-                + ", getTime2048Symbols()=" + getTime2048Symbols() + ", getTime2048SymbolsL()=" + getTime2048SymbolsL()
-                + ", getTime4096Symbols()=" + getTime4096Symbols() + ", getTime4096SymbolsL()=" + getTime4096SymbolsL()
-                + ", getTime8192Symbols()=" + getTime8192Symbols() + ", getTime8192SymbolsL()=" + getTime8192SymbolsL()
-                + ", getSnirMin()=" + getSnirMin() + ", getSnirMax()=" + getSnirMax() + ", getSnirAvg()=" + getSnirAvg()
-                + ", getXpdMin()=" + getXpdMin() + ", getXpdMax()=" + getXpdMax() + ", getXpdAvg()=" + getXpdAvg()
-                + ", getRfTempMin()=" + getRfTempMin() + ", getRfTempMax()=" + getRfTempMax() + ", getRfTempAvg()="
-                + getRfTempAvg() + ", getDefectBlocksSum()=" + getDefectBlocksSum() + ", getTimePeriod()="
-                + getTimePeriod() + ", getTxEthernetBytesMaxS()=" + getTxEthernetBytesMaxS()
-                + ", getTxEthernetBytesMaxM()=" + getTxEthernetBytesMaxM() + ", getTxEthernetBytesSum()="
-                + getTxEthernetBytesSum() + "]";
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsPerformanceData12.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/performancemanager/impl/database/types/EsPerformanceData12.java
deleted file mode 100644 (file)
index 1411c02..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-package org.opendaylight.mwtn.performancemanager.impl.database.types;
-
-import org.opendaylight.mwtn.base.netconf.ExtendedAirInterfaceHistoricalPerformanceType12;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.g._874._1.model.rev170320.OtnHistoryDataG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.AirInterfaceHistoricalPerformanceTypeG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.AirInterfacePerformanceTypeG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ContainerHistoricalPerformanceTypeG;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.ContainerPerformanceTypeG;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.fasterxml.jackson.annotation.JsonGetter;
-import com.fasterxml.jackson.annotation.JsonIgnore;
-import com.fasterxml.jackson.annotation.JsonInclude;
-
-@JsonInclude(JsonInclude.Include.NON_NULL)
-public class EsPerformanceData12 {
-
-    @JsonIgnore
-    private static final Logger LOG = LoggerFactory.getLogger(EsPerformanceData12.class);
-
-    @JsonIgnore
-    private AirInterfacePerformanceTypeG dataAirInterface;
-    @JsonIgnore
-    private ContainerPerformanceTypeG dataEthContainer;
-
-    public <T extends OtnHistoryDataG> EsPerformanceData12(T ff) {
-
-        dataAirInterface = null;
-        dataEthContainer = null;
-
-        if (ff instanceof AirInterfaceHistoricalPerformanceTypeG ) {
-            this.dataAirInterface = ((AirInterfaceHistoricalPerformanceTypeG)ff).getPerformanceData();
-        } else if (ff instanceof ContainerHistoricalPerformanceTypeG) {
-            this.dataEthContainer = ((ContainerHistoricalPerformanceTypeG)ff).getPerformanceData();
-        } else if (ff instanceof ExtendedAirInterfaceHistoricalPerformanceType12) {
-            this.dataAirInterface = ((ExtendedAirInterfaceHistoricalPerformanceType12)ff).getAirInterfaceHistoricalPerformanceType().getPerformanceData();
-        } else {
-            LOG.warn("Can not assign historical performance type {}", ff.getClass().getName());
-        }
-    }
-
-    @JsonGetter("es")
-    public java.lang.Integer getEs() {
-        return dataAirInterface != null ? dataAirInterface.getEs() : null;
-    }
-
-    @JsonGetter("ses")
-    java.lang.Integer getSes() {
-        return dataAirInterface != null ? dataAirInterface.getSes() : null;
-    }
-
-    @JsonGetter("cses")
-    java.lang.Integer getCses() { return dataAirInterface != null ? dataAirInterface.getCses() : null; }
-
-    @JsonGetter("unavailability")
-    java.lang.Integer getUnavailability(){ return dataAirInterface != null ? dataAirInterface.getUnavailability() : null; }
-
-    @JsonGetter("tx-level-min")
-    java.lang.Byte getTxLevelMin(){ return dataAirInterface != null ? dataAirInterface.getTxLevelMin() : null; }
-
-    @JsonGetter("tx-level-max")
-    java.lang.Byte getTxLevelMax(){ return dataAirInterface != null ? dataAirInterface.getTxLevelMax() : null; }
-
-    @JsonGetter("tx-level-avg")
-    java.lang.Byte getTxLevelAvg(){ return dataAirInterface != null ? dataAirInterface.getTxLevelAvg() : null; }
-
-    @JsonGetter("rx-level-min")
-    java.lang.Byte getRxLevelMin(){ return dataAirInterface != null ? dataAirInterface.getRxLevelMin() : null; }
-
-    @JsonGetter("rx-level-max")
-    java.lang.Byte getRxLevelMax(){ return dataAirInterface != null ? dataAirInterface.getRxLevelMax() : null; }
-
-    @JsonGetter("rx-level-avg")
-    java.lang.Byte getRxLevelAvg(){ return dataAirInterface != null ? dataAirInterface.getRxLevelAvg() : null; }
-
-    @JsonGetter("time2-states")
-    java.lang.Integer getTime2States(){ return dataAirInterface != null ? dataAirInterface.getTime2States() : null; }
-
-    @JsonGetter("time4-states-s")
-    java.lang.Integer getTime4StatesS(){ return dataAirInterface != null ? dataAirInterface.getTime4StatesS() : null; }
-
-    @JsonGetter("time4-states")
-    java.lang.Integer getTime4States(){ return dataAirInterface != null ? dataAirInterface.getTime4States() : null; }
-
-    @JsonGetter("time8-states")
-    java.lang.Integer getTime8States(){ return dataAirInterface != null ? dataAirInterface.getTime8States() : null; }
-
-    @JsonGetter("time16-states-s")
-    java.lang.Integer getTime16StatesS(){ return dataAirInterface != null ? dataAirInterface.getTime16StatesS() : null; }
-
-    @JsonGetter("time16-states")
-    java.lang.Integer getTime16States(){ return dataAirInterface != null ? dataAirInterface.getTime16States() : null; }
-
-    @JsonGetter("time32-states")
-    java.lang.Integer getTime32States(){ return dataAirInterface != null ? dataAirInterface.getTime32States() : null; }
-
-    @JsonGetter("time64-states")
-    java.lang.Integer getTime64States(){ return dataAirInterface != null ? dataAirInterface.getTime64States() : null; }
-
-    @JsonGetter("time128-states")
-    java.lang.Integer getTime128States(){ return dataAirInterface != null ? dataAirInterface.getTime128States() : null; }
-
-    @JsonGetter("time256-states")
-    java.lang.Integer getTime256States(){ return dataAirInterface != null ? dataAirInterface.getTime256States() : null; }
-
-    @JsonGetter("time512-states")
-    java.lang.Integer getTime512States(){ return dataAirInterface != null ? dataAirInterface.getTime512States() : null; }
-
-    @JsonGetter("time512-states-l")
-    java.lang.Integer getTime512StatesL(){ return dataAirInterface != null ? dataAirInterface.getTime512StatesL() : null; }
-
-    @JsonGetter("time1024-states")
-    java.lang.Integer getTime1024States(){ return dataAirInterface != null ? dataAirInterface.getTime1024States() : null; }
-
-    @JsonGetter("time1024-states-l")
-    java.lang.Integer getTime1024StatesL(){ return dataAirInterface != null ? dataAirInterface.getTime1024StatesL() : null; }
-
-    @JsonGetter("time2048-states")
-    java.lang.Integer getTime2048States(){ return dataAirInterface != null ? dataAirInterface.getTime2048States() : null; }
-
-    @JsonGetter("time2048-states-l")
-    java.lang.Integer getTime2048StatesL(){ return dataAirInterface != null ? dataAirInterface.getTime2048StatesL() : null; }
-
-    @JsonGetter("time4096-states")
-    java.lang.Integer getTime4096States(){ return dataAirInterface != null ? dataAirInterface.getTime4096States() : null; }
-
-    @JsonGetter("time4096-states-l")
-    java.lang.Integer getTime4096StatesL(){ return dataAirInterface != null ? dataAirInterface.getTime4096StatesL() : null; }
-
-    @JsonGetter("time8192-states")
-    java.lang.Integer getTime8192States(){ return dataAirInterface != null ? dataAirInterface.getTime8192States() : null; }
-
-    @JsonGetter("time8192-states-l")
-    java.lang.Integer getTime8192StatesL(){ return dataAirInterface != null ? dataAirInterface.getTime8192StatesL() : null; }
-
-    @JsonGetter("snir-min")
-    java.lang.Byte getSnirMin(){ return dataAirInterface != null ? dataAirInterface.getSnirMin() : null; }
-
-    @JsonGetter("snir-max")
-    java.lang.Byte getSnirMax(){ return dataAirInterface != null ? dataAirInterface.getSnirMax() : null; }
-
-    @JsonGetter("snir-avg")
-    java.lang.Byte getSnirAvg(){ return dataAirInterface != null ? dataAirInterface.getSnirAvg() : null; }
-
-    @JsonGetter("xpd-min")
-    java.lang.Byte getXpdMin(){ return dataAirInterface != null ? dataAirInterface.getXpdMin() : null; }
-
-    @JsonGetter("xpd-max")
-    java.lang.Byte getXpdMax(){ return dataAirInterface != null ? dataAirInterface.getXpdMax() : null; }
-
-    @JsonGetter("xpd-avg")
-    java.lang.Byte getXpdAvg(){ return dataAirInterface != null ? dataAirInterface.getXpdAvg() : null; }
-
-    @JsonGetter("rf-temp-min")
-    java.lang.Byte getRfTempMin(){ return dataAirInterface != null ? dataAirInterface.getRfTempMin() : null; }
-
-    @JsonGetter("rf-temp-max")
-    java.lang.Byte getRfTempMax(){ return dataAirInterface != null ? dataAirInterface.getRfTempMax() : null; }
-
-    @JsonGetter("rf-temp-avg")
-    java.lang.Byte getRfTempAvg(){ return dataAirInterface != null ? dataAirInterface.getRfTempAvg() : null; }
-
-    @JsonGetter("defect-blocks-sum")
-    java.lang.Short getDefectBlocksSum(){ return dataAirInterface != null ? dataAirInterface.getDefectBlocksSum() : null; }
-
-    @JsonGetter("time-period")
-    java.lang.Integer getTimePeriod(){ return dataAirInterface != null ? dataAirInterface.getTimePeriod() : dataEthContainer != null ? dataEthContainer.getTimePeriod() : null ; }
-
-    @JsonGetter("tx-ethernet-bytes-max-s")
-    java.lang.Integer getTxEthernetBytesMaxS() {
-        return dataEthContainer != null ? dataEthContainer.getTxEthernetBytesMaxS() : null;
-    }
-
-    @JsonGetter("tx-ethernet-bytes-max-m")
-    java.lang.Long getTxEthernetBytesMaxM() {
-        return dataEthContainer != null ? dataEthContainer.getTxEthernetBytesMaxM() : null;
-    }
-
-    @JsonGetter("tx-ethernet-bytes-sum")
-    java.lang.Long getTxEthernetBytesSum() {
-        return dataEthContainer != null ? dataEthContainer.getTxEthernetBytesSum() : null;
-    }
-
-    @Override
-    public String toString() {
-        return "EsPerformanceData [getEs()=" + getEs() + ", getSes()=" + getSes() + ", getCses()=" + getCses()
-                + ", getUnavailability()=" + getUnavailability() + ", getTxLevelMin()=" + getTxLevelMin()
-                + ", getTxLevelMax()=" + getTxLevelMax() + ", getTxLevelAvg()=" + getTxLevelAvg() + ", getRxLevelMin()="
-                + getRxLevelMin() + ", getRxLevelMax()=" + getRxLevelMax() + ", getRxLevelAvg()=" + getRxLevelAvg()
-                + ", getTime2States()=" + getTime2States() + ", getTime4StatesS()=" + getTime4StatesS()
-                + ", getTime4States()=" + getTime4States() + ", getTime8States()=" + getTime8States()
-                + ", getTime16StatesS()=" + getTime16StatesS() + ", getTime16States()=" + getTime16States()
-                + ", getTime32States()=" + getTime32States() + ", getTime64States()=" + getTime64States()
-                + ", getTime128States()=" + getTime128States() + ", getTime256States()=" + getTime256States()
-                + ", getTime512States()=" + getTime512States() + ", getTime512StatesL()=" + getTime512StatesL()
-                + ", getTime1024States()=" + getTime1024States() + ", getTime1024StatesL()=" + getTime1024StatesL()
-                + ", getTime2048States()=" + getTime2048States() + ", getTime2048StatesL()=" + getTime2048StatesL()
-                + ", getTime4096States()=" + getTime4096States() + ", getTime4096StatesL()=" + getTime4096StatesL()
-                + ", getTime8192States()=" + getTime8192States() + ", getTime8192StatesL()=" + getTime8192StatesL()
-                + ", getSnirMin()=" + getSnirMin() + ", getSnirMax()=" + getSnirMax() + ", getSnirAvg()=" + getSnirAvg()
-                + ", getXpdMin()=" + getXpdMin() + ", getXpdMax()=" + getXpdMax() + ", getXpdAvg()=" + getXpdAvg()
-                + ", getRfTempMin()=" + getRfTempMin() + ", getRfTempMax()=" + getRfTempMax() + ", getRfTempAvg()="
-                + getRfTempAvg() + ", getDefectBlocksSum()=" + getDefectBlocksSum() + ", getTimePeriod()="
-                + getTimePeriod() + ", getTxEthernetBytesMaxS()=" + getTxEthernetBytesMaxS()
-                + ", getTxEthernetBytesMaxM()=" + getTxEthernetBytesMaxM() + ", getTxEthernetBytesSum()="
-                + getTxEthernetBytesSum() + "]";
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/GeoLocation.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/GeoLocation.java
deleted file mode 100644 (file)
index aac3f58..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.ptp.impl;
-
-/**
- * Path list with logical-termination-point list
- "path" : [{
-  "path-id": "4d778388-41c8-11e7-a919-92ebcb67fe33",
-  "path-name": "NE-10-ClockIdentity",
-  "layer-protocol-name": "PTP",
-  "directionality": "unidirectional",
-  "logical-termination-point": [{
-    "ltp-reference":"yep",
-    "physical-port-reference": "shelf:1-slot:1-Card-port:5",
-    "node-reference":"NE-10",
-    "site-reference": "site-a",
-    "site-name": "GUI-Label",
-    "geo-location": {
-       "longitude": "54.123456",
-       "latitude": "13.123456"
-    }]
-  }]
-
- * @author herbert
- */
-
-public class GeoLocation {
-    String longitude;
-    String latitude;
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/LogicalTerminationPoint.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/LogicalTerminationPoint.java
deleted file mode 100644 (file)
index 0af0869..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.ptp.impl;
-
-/**
- * Path list with logical-termination-point list
- "path" : [{
-  "path-id": "4d778388-41c8-11e7-a919-92ebcb67fe33",
-  "path-name": "NE-10-ClockIdentity",
-  "layer-protocol-name": "PTP",
-  "directionality": "unidirectional",
-  "logical-termination-point": [{
-    "ltp-reference":"yep",
-    "physical-port-reference": "shelf:1-slot:1-Card-port:5",
-    "node-reference":"NE-10",
-    "site-reference": "site-a",
-    "site-name": "GUI-Label",
-    "geo-location": {
-       "longitude": "54.123456",
-       "latitude": "13.123456"
-    }]
-  }]
-
-
- * @author herbert
- *
- */
-public class LogicalTerminationPoint {
-
-    String ltpReference;
-    String physicalPortReference;
-    String nodeReference;
-    String siteReference;
-    String siteName;
-    GeoLocation geoLocation;
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/Path.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/Path.java
deleted file mode 100644 (file)
index 22c5053..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- *
- */
-package org.opendaylight.mwtn.ptp.impl;
-
-import java.util.List;
-
-/**
- * Path list with logical-termination-point list
- "path" : [{
-  "path-id": "4d778388-41c8-11e7-a919-92ebcb67fe33",
-  "path-name": "NE-10-ClockIdentity",
-  "layer-protocol-name": "PTP",
-  "directionality": "unidirectional",
-  "logical-termination-point": [{
-    "ltp-reference":"yep",
-    "physical-port-reference": "shelf:1-slot:1-Card-port:5",
-    "node-reference":"NE-10",
-    "site-reference": "site-a",
-    "site-name": "GUI-Label",
-    "geo-location": {
-       "longitude": "54.123456",
-       "latitude": "13.123456"
-    }]
-  }]
- * @author herbert
- *
- */
-public class Path {
-
-    String pathId;
-    String pathName;
-    String layperProtocolName;
-    String directionality;
-    List<LogicalTerminationPoint> logicalTerminationPoints;
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/PtpManagerImpl.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/mwtn/ptp/impl/PtpManagerImpl.java
deleted file mode 100644 (file)
index 4bb3bb6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- * 
- */
-package org.opendaylight.mwtn.ptp.impl;
-
-/**
- * @author herbert
- *
- */
-public class PtpManagerImpl {
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/devicemanager/impl/rev170317/DeviceManagerImplModule.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/devicemanager/impl/rev170317/DeviceManagerImplModule.java
deleted file mode 100644 (file)
index e84072d..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.impl.rev170317;
-
-import org.opendaylight.mwtn.devicemanager.impl.DeviceManagerImpl;
-
-public class DeviceManagerImplModule extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.impl.rev170317.AbstractDeviceManagerImplModule {
-    public DeviceManagerImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-        super(identifier, dependencyResolver);
-    }
-
-    public DeviceManagerImplModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier, org.opendaylight.controller.config.api.DependencyResolver dependencyResolver, org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.impl.rev170317.DeviceManagerImplModule oldModule, java.lang.AutoCloseable oldInstance) {
-        super(identifier, dependencyResolver, oldModule, oldInstance);
-    }
-
-    @Override
-    public void customValidation() {
-        // add custom validation form module attributes here.
-    }
-
-    @Override
-    public java.lang.AutoCloseable createInstance() {
-        DeviceManagerImpl deviceManagerImpl = new DeviceManagerImpl();
-        getBrokerDependency().registerProvider(deviceManagerImpl);
-        return deviceManagerImpl;
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/devicemanager/impl/rev170317/DeviceManagerImplModuleFactory.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/devicemanager/impl/rev170317/DeviceManagerImplModuleFactory.java
deleted file mode 100644 (file)
index 2bb91c6..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
-* Generated file
-*
-* Generated from: yang module name: devicemanager-impl yang module local name: devicemanager-impl
-* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
-* Generated at: Fri Mar 17 09:38:37 CET 2017
-*
-* Do not modify this file unless it is present under src/main directory
-*/
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.impl.rev170317;
-public class DeviceManagerImplModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.devicemanager.impl.rev170317.AbstractDeviceManagerImplModuleFactory {
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/aots/addreq.tmpl.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/aots/addreq.tmpl.xml
deleted file mode 100644 (file)
index 11addd9..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<soapenv:Envelope 
-xmlns:q1="http://csi.att.com/CSI/Namespaces/ATTOneTicketingSystem/Types/Public/CommonDataModel.xsd" 
-xmlns:q0="http://csi.cingular.com/CSI/Namespaces/Container/Public/AddMobilityTicketRequest.xsd" 
-xmlns:mh="http://csi.cingular.com/CSI/Namespaces/sdnr/InfrastructureCommon/Types/Public/MessageHeader.xsd" 
-xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
-xmlns:cdm="http://csi.att.com/CSI/Namespaces/sdnr/Types/Public/CommonDataModel.xsd" 
-xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
-       <soapenv:Header>
-               <mh:MessageHeader>
-                       <mh:TrackingMessageHeader>
-                               <mh:infrastructureVersion>86</mh:infrastructureVersion>
-                               <mh:applicationName>sdnr</mh:applicationName>
-                               <mh:version>209</mh:version>
-                               <mh:messageId>sdnr:37-1508173894848</mh:messageId>
-                               <mh:timeToLive>30000</mh:timeToLive>
-                               <mh:dateTimeStamp>{notificationTimestamp}</mh:dateTimeStamp>
-                       </mh:TrackingMessageHeader>
-                       <mh:SecurityMessageHeader>
-                               <mh:userName>{aotsUsername}</mh:userName>
-                               <mh:userPassword>{aotsUserpassword}</mh:userPassword>
-                       </mh:SecurityMessageHeader>
-                       <mh:SequenceMessageHeader>
-                               <mh:sequenceNumber>1</mh:sequenceNumber>
-                               <mh:totalInSequence>1</mh:totalInSequence>
-                       </mh:SequenceMessageHeader>
-               </mh:MessageHeader>
-       </soapenv:Header>
-       <soapenv:Body>
-               <q0:AddMobilityTicketRequest>
-                       <q0:TicketCoreDetails>
-                               <q1:entryType>2</q1:entryType>
-                               <q1:ticketSeverity>{aotsSeverity}</q1:ticketSeverity>
-                               <q1:shortDescription>{notficationAlarm}</q1:shortDescription>
-                               <q1:customerImpact>{aotsCustomerImpact}</q1:customerImpact>
-                       </q0:TicketCoreDetails>
-                       <q0:ProblemDetails>
-                               <q1:problemCategory>Fault Management</q1:problemCategory>
-                               <q1:problemSubCategory>SDN-R</q1:problemSubCategory>
-                               <q1:problemDetail>{notficationAlarm}({notificationComponent})@{notificationNodename}</q1:problemDetail>
-                       </q0:ProblemDetails>
-                       <q0:EquipmentDetails>
-                               <q1:equipmentId>{notificationEqId}</q1:equipmentId>
-                       </q0:EquipmentDetails>
-                       <q0:assignedTo>{aotsAssignedTo}</q0:assignedTo>
-                       <q0:systemUser>{aotsSystemUser}</q0:systemUser>
-                       <q0:workDone>done</q0:workDone>
-                       <q0:callOrigin>TECH OPS</q0:callOrigin>
-                       <q0:externalTicketNumber>{aotsExternalTicketNumber}</q0:externalTicketNumber>
-                       <q0:plannedRestoralTime>{aotsPRT}</q0:plannedRestoralTime>
-                       <q0:serviceImpactLevel>5</q0:serviceImpactLevel>
-               </q0:AddMobilityTicketRequest>
-       </soapenv:Body>
-</soapenv:Envelope>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/aots/inqreq.tmpl.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/aots/inqreq.tmpl.xml
deleted file mode 100644 (file)
index a753c68..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-<soapenv:Envelope 
-xmlns:q1="http://csi.att.com/CSI/Namespaces/ATTOneTicketingSystem/Types/Public/CommonDataModel.xsd" 
-xmlns:q0="http://csi.cingular.com/CSI/Namespaces/Container/Public/InquireMobilityTicketListRequest.xsd" 
-xmlns:mh="http://csi.cingular.com/CSI/Namespaces/Types/Public/MessageHeader.xsd" 
-xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
-xmlns:cdm="http://csi.cingular.com/CSI/Namespaces/Types/Public/CingularDataModel.xsd" 
-xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
-       <soapenv:Header>
-               <mh:MessageHeader>
-                       <mh:TrackingMessageHeader>
-                               <cdm:version>209</cdm:version>
-                               <cdm:messageId>sdnr:36-1504101836417</cdm:messageId>
-                               <cdm:timeToLive>30000</cdm:timeToLive>
-                               <cdm:dateTimeStamp>{systemTimestamp}</cdm:dateTimeStamp>
-                       </mh:TrackingMessageHeader>
-                       <mh:SecurityMessageHeader>
-                               <cdm:userName>{aotsUsername}</cdm:userName>
-                               <cdm:userPassword>{aotsUserpassword}</cdm:userPassword>
-                       </mh:SecurityMessageHeader>
-                       <mh:SequenceMessageHeader>
-                               <cdm:sequenceNumber>1</cdm:sequenceNumber>
-                               <cdm:totalInSequence>1</cdm:totalInSequence>
-                       </mh:SequenceMessageHeader>
-               </mh:MessageHeader>
-       </soapenv:Header>
-       <soapenv:Body>
-               <q0:InquireMobilityTicketListRequest>
-                       <q0:MobilityCoreTicketDetails>
-                               <q1:ticketSeverity>{aotsSeverity}</q1:ticketSeverity>
-                               <q1:submittedBy>{aotsSystemUser}</q1:submittedBy>
-                       </q0:MobilityCoreTicketDetails>
-                       <q0:externalTicketNumber>{aotsExternalTicketNumber}</q0:externalTicketNumber>
-               </q0:InquireMobilityTicketListRequest>
-       </soapenv:Body>
-</soapenv:Envelope>
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/elasticsearch.yml b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/elasticsearch.yml
deleted file mode 100644 (file)
index 896d516..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-# ======================== Elasticsearch Configuration =========================
-#
-# NOTE: Elasticsearch comes with reasonable defaults for most settings.
-#       Before you set out to tweak and tune the configuration, make sure you
-#       understand what are you trying to accomplish and the consequences.
-#
-# The primary way of configuring a node is via this file. This template lists
-# the most important settings you may want to configure for a production cluster.
-#
-# Please see the documentation for further information on configuration options:
-# <http://www.elastic.co/guide/en/elasticsearch/reference/current/setup-configuration.html>
-#
-# ---------------------------------- Cluster -----------------------------------
-#
-# Use a descriptive name for your cluster:
-#
-cluster.name: $clustername
-#
-# ------------------------------------ Node ------------------------------------
-#
-# Use a descriptive name for the node:
-#
-node.name: $nodename
-#
-# Add custom attributes to the node:
-#
-# node.rack: r1
-#
-# ----------------------------------- Paths ------------------------------------
-#
-# Path to directory where to store the data (separate multiple locations by comma):
-#
-# path.data: /path/to/data
-path.data: etc
-path.home: data
-path.plugins: etc/elasticsearch-plugins
-#
-# Path to log files:
-#
-# path.logs: /path/to/logs
-#
-# ----------------------------------- Memory -----------------------------------
-#
-# Lock the memory on startup:
-#
-# bootstrap.mlockall: true
-#
-# Make sure that the `ES_HEAP_SIZE` environment variable is set to about half the memory
-# available on the system and that the owner of the process is allowed to use this limit.
-#
-# Elasticsearch performs poorly when the system is swapping the memory.
-#
-# ---------------------------------- Network -----------------------------------
-#
-# Set the bind address to a specific IP (IPv4 or IPv6):
-#
-# network.host: 192.168.0.1
-network.bind_host: 0.0.0.0
-network.publish_host: $hostname
-#
-# Set a custom port for HTTP:
-#
-# http.port: 9200
-#
-# For more information, see the documentation at:
-# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-network.html>
-#
-# --------------------------------- Discovery ----------------------------------
-#
-# Pass an initial list of hosts to perform discovery when new node is started:
-# The default list of hosts is ["127.0.0.1", "[::1]"]
-#
-# discovery.zen.ping.unicast.hosts: ["host1", "host2"]
-#
-# Prevent the "split brain" by configuring the majority of nodes (total number of nodes / 2 + 1):
-#
-# discovery.zen.minimum_master_nodes: 3
-#
-# For more information, see the documentation at:
-# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-discovery.html>
-#
-# ---------------------------------- Gateway -----------------------------------
-#
-# Block initial recovery after a full cluster restart until N nodes are started:
-#
-# gateway.recover_after_nodes: 3
-#
-# For more information, see the documentation at:
-# <http://www.elastic.co/guide/en/elasticsearch/reference/current/modules-gateway.html>
-#
-# ---------------------------------- Various -----------------------------------
-#
-# Disable starting multiple nodes on a single system:
-#
-# node.max_local_storage_nodes: 1
-#
-# Require explicit names when deleting indices:
-#
-# action.destructive_requires_name: true
-
-# Required for Kibana 4.x support
-index.max_result_window: 2147483647
-#transport.tcp.port: 9301
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/config/opendaylight.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/config/opendaylight.json
deleted file mode 100644 (file)
index 2c93d86..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-{
-       "sdn-controller" : {
-               "dlux" : {
-            "ip-version" : "ipv4",
-                       "host" : "localhost",
-            "port" : 8181,
-            "transport-protocol" : "http",
-            "username" : "admin",
-            "password" : "admin"
-               },
-               "main" : {
-            "ip-version" : "ipv4",
-                       "host" : "localhost",
-            "port" : 8181,
-            "transport-protocol" : "http",
-            "username" : "admin",
-            "password" : "admin"
-               }
-       }
-}
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/CoreModel-ForMicrowave.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/CoreModel-ForMicrowave.json
deleted file mode 100644 (file)
index 596584e..0000000
+++ /dev/null
@@ -1,751 +0,0 @@
-{
-       "schema-information": {
-               "ForwardingDomain": {
-                       "id": "ForwardingDomain",
-                       "uml-id": "_oGql-FLNEeO75dO39GbF8Q",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "The ForwardingDomain (FD) object class models the topological component which represents the opportunity to enable forwarding (of specific transport characteristic information at one or more protocol layers) between points represented by the LTP in the model. The FD object provides the context for instructing the formation, adjustment and removal of FCs and hence offers the potential to enable forwarding. The LTPs available are those defined at the boundary of the FD. At a lowere level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs) and the FD representing the switch matrix can be further partitioned."
-                       ]
-               },
-               "layerProtocolNameList": {
-                       "id": "layerProtocolNameList",
-                       "uml-id": "_oGqmAlLNEeO75dO39GbF8Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "_P-Hp8MD4EeSoNOrYOfaryg",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "One or more protocol layers at which the FD represents the opportunity to enable forwarding between LTP that bound it."
-                       ]
-               },
-               "_lowerLevelFdRefList": {
-                       "id": "_lowerLevelFdRefList",
-                       "uml-id": "_oGqmBVLNEeO75dO39GbF8Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "_oGql-FLNEeO75dO39GbF8Q",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "The FD object class supports a recursive aggregation relationship (HigherLevelFdEncompassesLowerLevelFds) such that the internal construction of an FD can be exposed as multiple lower level FDs and associated Links (partitioning). The aggregated FDs and Links form an interconnected topology that provides and describes the capability of the aggregating FD. Note that the model actually represents aggregation of lower level FDs into higher level FDs as views rather than FD partition, and supports multiple views. Aggregation allow reallocation of capacity from lower level FDs to different higher level FDs as if the network is reorganized (as the association is aggregation not composition)."
-                       ]
-               },
-               "_fcRefList": {
-                       "id": "_fcRefList",
-                       "uml-id": "_oGql_1LNEeO75dO39GbF8Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "_oGqmC1LNEeO75dO39GbF8Q",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "description": [
-                               "An FD contains one or more FCs. A contained FC connects LTPs that bound the FD."
-                       ]
-               },
-               "ForwardingConstruct": {
-                       "id": "ForwardingConstruct",
-                       "uml-id": "_oGqmC1LNEeO75dO39GbF8Q",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs at a particular specific layerProtocol. Like the LTP the FC supports any transport protocol including all circuit and packet forms. It is used to effect forwarding of transport characteristic (layer protocol) information. An FC can be in only one FD. The ForwardingConstruct is a Forwarding entity. At a low level of the recursion, a FC represents a cross-connection within an NE. It may also represent a fragment of a cross-connection under certain circumstances. The FC object can be used to represent many different structures including point-to-point (P2P), point-to-multipoint (P2MP), rooted-multipoint (RMP) and multipoint-to-multipoint (MP2MP) bridge and selector structure for linear, ring or mesh protection schemes."
-                       ]
-               },
-               "_lowerLevelFcRefList": {
-                       "id": "_lowerLevelFcRefList",
-                       "uml-id": "_i7UzkFYfEeOVGaP4lO41SQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_oGqmC1LNEeO75dO39GbF8Q",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "An FC object supports a recursive aggregation relationship such that the internal construction of an FC can be exposed as multiple lower level FC objects (partitioning). Aggregation is used as for the FD to allow changes in hierarchy."
-                       ]
-               },
-               "_fcPortList": {
-                       "id": "_fcPortList",
-                       "uml-id": "_gqUk0FYgEeOVGaP4lO41SQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_b_lUAFYgEeOVGaP4lO41SQ",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "description": [
-                               "The association of the FC to LTPs is made via FcPorts (essentially the ports of the FC)."
-                       ]
-               },
-               "_fcSwitchList": {
-                       "id": "_fcSwitchList",
-                       "uml-id": "_d_droFYhEeOVGaP4lO41SQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_a97NQFYhEeOVGaP4lO41SQ",
-                       "order-number": 4,
-                       "is-read-only": false,
-                       "description": [
-                               "If an FC exposes protection (having two FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects. The arrangement of switches for a particular instance is described by a referenced FcSpec"
-                       ]
-               },
-               "forwardingDirection": {
-                       "id": "forwardingDirection",
-                       "uml-id": "_9_yMUEDAEeWQeOKbNUpP9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "_dV67AEC8EeWxhL2B6Peg6A",
-                       "order-number": 5,
-                       "is-read-only": false,
-                       "description": [
-                               "The directionality of the ForwardingConstruct. Is applicable to simple ForwardingConstructs where all FcPorts are BIDIRECTIONAL (the ForwardingConstruct will be BIDIRECTIONAL) or UNIDIRECTIONAL (the ForwardingConstruct will be UNIDIRECTIONAL). Is not present in more complex cases."
-                       ]
-               },
-               "NetworkElement": {
-                       "id": "NetworkElement",
-                       "uml-id": "_oGqnr1LNEeO75dO39GbF8Q",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "The Network Element (NE) object class represents a network element (traditional NE) in the data plane. A data plane network element is essentially a consolidation of capabilities that can be viewed and controlled through a  single  management-control port. In the direct interface from an SDN controller to a network element in the data plane, the NetworkElement object defines the scope of control for the resources within the network element For example internal transfer of user information between the external terminations (ports of the NE), encapsulation, multiplexing/demultiplexing, and OAM functions, etc. The NetworkElement provides the scope of the naming space for identifying objects representing the resources within the data plane network element. NE is really a product bundling or some view of management scope, management access, session. The NE is not directly part of topology but brings meaning to the FD context and the LTP context (and hence the links)."
-                       ]
-               },
-               "_fdRefList": {
-                       "id": "_fdRefList",
-                       "uml-id": "_oGqnslLNEeO75dO39GbF8Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "_oGql-FLNEeO75dO39GbF8Q",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "Represents the FD that is completely within the boundary of the NE. At a low level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs) and the FD representing the switch matrix can be further partitioned. Where an FD is referenced by the NeEncompassesFd association, any FDs that it encompasses (i.e., that are associated with it by HigherLevelFdEncompassesLowerLevelFds), must also be encompassed by the NE and hence must have the NeEncompassesFd association."
-                       ]
-               },
-               "FcPort": {
-                       "id": "FcPort",
-                       "uml-id": "_b_lUAFYgEeOVGaP4lO41SQ",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "The association of the FC to LTPs is made via FcPorts. The FcPort object class models the access to the FC function. The traffic forwarding between the associated FcPorts of the FC depends upon the type of FC and may be associated with FcSwitch object instances. In cases where there is resilience the FcPort may convey the resilience role of the access to the FC. It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point. The FcPort replaces the Protection Unit of a traditional protection model. The ForwadingConstruct can be considered as a component and the FcPort as a Port on that component"
-                       ]
-               },
-               "role": {
-                       "id": "role",
-                       "uml-id": "_Ykm6QFeGEeOVGaP4lO41SQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_DUU_sGZ_EeWrX_JIGzXlSg",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "Each FcPort of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root) in the context of the FC with respect to the FC function."
-                       ]
-               },
-               "fcPortDirection": {
-                       "id": "fcPortDirection",
-                       "uml-id": "_1HbEgEDAEeWQeOKbNUpP9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "_2WpC8EC7EeWxhL2B6Peg6A",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "description": [
-                               "The orientation of defined flow at the FcPort."
-                       ]
-               },
-               "LayerProtocol": {
-                       "id": "LayerProtocol",
-                       "uml-id": "_gROecFYXEeOVGaP4lO41SQ",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Each transport layer is represented by a LayerProtocol (LP) instance. The LayerProtocol instances it can be used for controlling termination and monitoring functionality. It can also be used for controlling the adaptation (i.e. encapsulation and/or multiplexing of client signal), tandem connection monitoring, traffic conditioning and/or shaping functionality at an intermediate point along a connection. Where the client - server relationship is fixed 1:1 and immutable, the layers can be encapsulated in a single LTP instance. Where the is a n:1 relationship between client and server, the layers must be split over two separate instances of LTP."
-                       ]
-               },
-               "configuredClientCapacity": {
-                       "id": "configuredClientCapacity",
-                       "uml-id": "_CUJD4BicEeSh8KVgZCMyDw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "Provides a summarized view of the client capacity that is configurable for use. Note the cleint LTP association should provide all necessary detail hence this attribute is questionable."
-                       ]
-               },
-               "lpDirection": {
-                       "id": "lpDirection",
-                       "uml-id": "_GuuSYEDBEeWQeOKbNUpP9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "_RWILYEDAEeWQeOKbNUpP9A",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "description": [
-                               "The overall directionality of the LP. - A BIDIRECTIONAL LP will have some SINK and/or SOURCE flowss. - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows - A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows"
-                       ]
-               },
-               "terminationState": {
-                       "id": "terminationState",
-                       "uml-id": "_p2YfoGeEEeWmgIwAIZlYKQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 4,
-                       "is-read-only": false,
-                       "description": [
-                               "Indicates whether the layer is terminated and if so how."
-                       ]
-               },
-               "LogicalTerminationPoint": {
-                       "id": "LogicalTerminationPoint",
-                       "uml-id": "_eEpDMFX4EeOVGaP4lO41SQ",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers. The structure of LTP supports all transport protocols including circuit and packet forms."
-                       ]
-               },
-               "_serverLtpRefList": {
-                       "id": "_serverLtpRefList",
-                       "uml-id": "_D4N9IFX5EeOVGaP4lO41SQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "References contained LTPs representing servers of this LTP in an inverse multiplexing configuration (e.g. VCAT)."
-                       ]
-               },
-               "_clientLtpRefList": {
-                       "id": "_clientLtpRefList",
-                       "uml-id": "_3Y4zAFYWEeOVGaP4lO41SQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "References contained LTPs representing client traffic of this LTP for normal cases of multiplexing."
-                       ]
-               },
-               "_lpList": {
-                       "id": "_lpList",
-                       "uml-id": "_lvFOQFYXEeOVGaP4lO41SQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_gROecFYXEeOVGaP4lO41SQ",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "description": [
-                               "Ordered list of LayerProtocols that this LTP is comprised of where the first entry in the list is the lowest server layer (e.g. physical)"
-                       ]
-               },
-               "_connectedLtpRef": {
-                       "id": "_connectedLtpRef",
-                       "uml-id": "_CHM6YFYYEeOVGaP4lO41SQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-                       "order-number": 4,
-                       "is-read-only": false,
-                       "description": [
-                               "Applicable in a simple context where two LTPs are associated via a non-adjustable enabled forwarding. Reduces clutter removing the need for two additional LTPs and an FC with a pair of FcPorts."
-                       ]
-               },
-               "_peerLtpRef": {
-                       "id": "_peerLtpRef",
-                       "uml-id": "_TkuhMFYYEeOVGaP4lO41SQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-                       "order-number": 5,
-                       "is-read-only": false,
-                       "description": [
-                               "References contained LTPs representing the reversal of orientation of flow where two LTPs are associated via a non-adjustable enabled forwarding and where the referenced LTP is fully dependent on the this LTP."
-                       ]
-               },
-               "physicalPortReference": {
-                       "id": "physicalPortReference",
-                       "uml-id": "_RLDi4BieEeSh8KVgZCMyDw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 6,
-                       "is-read-only": false,
-                       "description": [
-                               "One or more text labels for the unmodelled physical port associated with the LTP. In many cases there is no associated physical port"
-                       ]
-               },
-               "_ltpRefList": {
-                       "id": "_ltpRefList",
-                       "uml-id": "_vq1NIBigEeSh8KVgZCMyDw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-                       "order-number": 7,
-                       "is-read-only": false,
-                       "description": [
-                               "References one or more LTPs in other views that represent this LTP. The referencing LTP is the rovider of capability."
-                       ]
-               },
-               "ltpDirection": {
-                       "id": "ltpDirection",
-                       "uml-id": "_S811EEDBEeWQeOKbNUpP9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "_RWILYEDAEeWQeOKbNUpP9A",
-                       "order-number": 8,
-                       "is-read-only": false,
-                       "description": [
-                               "The overall directionality of the LTP. - A BIDIRECTIONAL LTP must have at least some LPs that are BIDIRECTIONAL but may also have some SINK and/or SOURCE LPs. - A SINK LTP can only contain SINK LPs - A SOURCE LTP can only contain SOURCE LPs"
-                       ]
-               },
-               "FcSwitch": {
-                       "id": "FcSwitch",
-                       "uml-id": "_a97NQFYhEeOVGaP4lO41SQ",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "The FcSwitch object class models the switched forwarding of traffic (traffic flow) between FcPorts and is present where there is protection functionality in the FC. If an FC exposes protection (having two FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC. The FC switch represents and defines a protection switch structure encapsulated in the FC. Essentially performs the functoion of the Protection Group in a traditional model. Associates to 2 or more FcPorts each playing the role of a Protection Unit. One or more protection FcPorts (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) FcPorts where eith protection or working can feed one or more protected FcPort. May be used in revertive or non-revertive (symmetric) mode. When in revertive mode may define waitToRestore time. May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 ane 1:1).. May be lockout (prevented from switching), force switched or manual switched. Will indicate switch state and change of state."
-                       ]
-               },
-               "holdOffTime": {
-                       "id": "holdOffTime",
-                       "uml-id": "_oGqn6FLNEeO75dO39GbF8Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "This attribute indicates the time, in seconds, between declaration of unacceptable quality of signal on the currently selected FcPort, and the initialization of the protection switching algorithm."
-                       ]
-               },
-               "waitToRestoreTime": {
-                       "id": "waitToRestoreTime",
-                       "uml-id": "_oGqn5lLNEeO75dO39GbF8Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "If the protection system is revertive, this attribute specifies the amount of time, in seconds, to wait after the preferred FcPort returns to an acceptable state of operaion (e.g a fault has cleared) before restoring traffic to that preferred FcPort."
-                       ]
-               },
-               "protType": {
-                       "id": "protType",
-                       "uml-id": "_oGqn6lLNEeO75dO39GbF8Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "_c3Hu8Gb3EeWrX_JIGzXlSg",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "description": [
-                               "Indicates the protection scheme that is used for the ProtectionGroup."
-                       ]
-               },
-               "operType": {
-                       "id": "operType",
-                       "uml-id": "_oGqn41LNEeO75dO39GbF8Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "_oGqjf1LNEeO75dO39GbF8Q",
-                       "order-number": 4,
-                       "is-read-only": false,
-                       "description": [
-                               "This attribute whether or not the protection scheme is revertive or non-revertive."
-                       ]
-               },
-               "_selectedFcPortRefList": {
-                       "id": "_selectedFcPortRefList",
-                       "uml-id": "_2PdiYI8lEeOw_ste-s6RrA",
-                       "uml-type": "ownedAttribute",
-                       "type": "_b_lUAFYgEeOVGaP4lO41SQ",
-                       "order-number": 5,
-                       "is-read-only": false,
-                       "description": [
-                               "Indicates which points are selected by the switch."
-                       ]
-               },
-               "Name": {
-                       "id": "Name",
-                       "uml-id": "_BUcVEI2tEeO38ZmbECnvbg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Name: A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity."
-                       ]
-               },
-               "nameList": {
-                       "id": "nameList",
-                       "uml-id": "_ajjMYI2uEeO38ZmbECnvbg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_y7oy8I3tEeO38ZmbECnvbg",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "is-key": 1,
-                       "description": [
-                               "List of names."
-                       ]
-               },
-               "GlobalClass": {
-                       "id": "GlobalClass",
-                       "uml-id": "_iVJ1kI2wEeO38ZmbECnvbg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Represents a type of thing (an Entity) that has instances which can exist in their own right (independently of any others). Entity: Has identity, defined boundary, properties, functionality and lifecycle in a global context. (consider in the context of an Object Class: (usage) The representation of a thing that may be an entity or an inseparable Entity Feature)"
-                       ]
-               },
-               "LocalClass": {
-                       "id": "LocalClass",
-                       "uml-id": "_k5nWYI2wEeO38ZmbECnvbg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "A LocalClass represents a Feature of an Entity. It is inseparable from a GlobalClass but is a distinct feature of that GlobalClass such that the instances of LocalClass are able to have associations to other instances.. Feature of an Entity: An inseparable, externally distinguishable part of an entity. The mandatory LocalId of the LocalClass instance is unique in the context of the GlobalClass from which it is inseparable. (consider in the context of an Object Class: (usage) The representation of a thing that may be an entity or an inseparable feature of an entity)"
-                       ]
-               },
-               "localIdList": {
-                       "id": "localIdList",
-                       "uml-id": "_RMJegI22EeO38ZmbECnvbg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_y7oy8I3tEeO38ZmbECnvbg",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "An identifier that is unique in the context of some scope that is less than the global scope. (consider in the context of Identifier: A property of an entity/role with a value that is unique within an identifier space, where the identifier space is itself unique, and immutable. The identifier therefore represents the identity of the entity/role. An identifier carries no semantics with respect to the purpose of the entity.)"
-                       ]
-               },
-               "Label": {
-                       "id": "Label",
-                       "uml-id": "_u0HQoI2wEeO38ZmbECnvbg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "A property of an entity with a value that is not expected to be unique and is allowed to change. A label carries no semantics with respect to the purpose of the entity and has no effect on the entity behavior or state."
-                       ]
-               },
-               "labelList": {
-                       "id": "labelList",
-                       "uml-id": "_olrqYI2uEeO38ZmbECnvbg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_y7oy8I3tEeO38ZmbECnvbg",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "List of labels."
-                       ]
-               },
-               "Extension": {
-                       "id": "Extension",
-                       "uml-id": "_bCi74I22EeO38ZmbECnvbg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Extension provides an opportunity to define properties not declared in the class that extend the class enabling a realization with simple ad-hoc extension of standard classes to be conformant."
-                       ]
-               },
-               "extensionList": {
-                       "id": "extensionList",
-                       "uml-id": "_uQqu4I28EeO38ZmbECnvbg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_y7oy8I3tEeO38ZmbECnvbg",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "List of simple name-value extentions"
-                       ]
-               },
-               "UniversalIdAuthority": {
-                       "id": "UniversalIdAuthority",
-                       "uml-id": "_StA-4I23EeO38ZmbECnvbg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Represents the authority that controls the allocation of UUIDs."
-                       ]
-               },
-               "NameAndValueAuthority": {
-                       "id": "NameAndValueAuthority",
-                       "uml-id": "_ulDtsI3AEeO38ZmbECnvbg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Represents the authority that controls the legal valuse for the names and values of a name/value attribute."
-                       ]
-               },
-               "uuid": {
-                       "id": "uuid",
-                       "uml-id": "_U1tnkI31EeO38ZmbECnvbg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_SU3Q4I30EeO38ZmbECnvbg",
-                       "order-number": 0,
-                       "is-read-only": false,
-                       "description": [
-                               "The UUID for the NameValueAuthority."
-                       ]
-               },
-               "ConditionalPackage": {
-                       "id": "ConditionalPackage",
-                       "uml-id": "_-ZWVQJP0EeOqfpp-ZJSmaA",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "The base class for conditional packages."
-                       ]
-               },
-               "State_Pac": {
-                       "id": "State_Pac",
-                       "uml-id": "_RG6VILEtEeSZUdYfPSdgew",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Provides general state attributes."
-                       ]
-               },
-               "operationalState": {
-                       "id": "operationalState",
-                       "uml-id": "_dO6owLEtEeSZUdYfPSdgew",
-                       "uml-type": "ownedAttribute",
-                       "type": "_lNclkLEtEeSZUdYfPSdgew",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "description": [
-                               "The operational state is used to indicate whether or not the resource is installed and working"
-                       ]
-               },
-               "administrativeControl": {
-                       "id": "administrativeControl",
-                       "uml-id": "_7gqwALEtEeSZUdYfPSdgew",
-                       "uml-type": "ownedAttribute",
-                       "type": "_-xPeALEvEeSZUdYfPSdgew",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "The administrativeControl state provides control of the availability of specific resources without modification to the provisioning of those resources. The value is the current control target. The actual administrativeState may or may not be at target."
-                       ]
-               },
-               "administrativeState": {
-                       "id": "administrativeState",
-                       "uml-id": "_AjGvILEuEeSZUdYfPSdgew",
-                       "uml-type": "ownedAttribute",
-                       "type": "_KSKOYLEuEeSZUdYfPSdgew",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "description": [
-                               "Shows whether or not the client has permission to use or has a prohibition against using the resource. The administrative state expresses usage permissions for specific resources without modification to the provisioning of those resources."
-                       ]
-               },
-               "lifecycleState": {
-                       "id": "lifecycleState",
-                       "uml-id": "_PzqZ0GgiEeWmgIwAIZlYKQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_YSsboGgiEeWmgIwAIZlYKQ",
-                       "order-number": 4,
-                       "is-read-only": false,
-                       "description": [
-                               "Used to track the planned deployment, allocation to clients and withdrawal of resources."
-                       ]
-               },
-               "LayerProtocolName": {
-                       "id": "LayerProtocolName",
-                       "uml-id": "_P-Hp8MD4EeSoNOrYOfaryg",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Provides a controlled list of layer protocol names and indicates the naming authority. Note that it is expected that attributes will be added to this structure to convey the naming authority name, the name of the layer protocol using a human readable string and any particular standard reference. Layer protocol names include: - Layer 1 (L1): OTU, ODU - Layer 2 (L2): Carrier Grade Ethernet (ETY, ETH), MPLS-TP (MT)"
-                       ]
-               },
-               "PortRole": {
-                       "id": "PortRole",
-                       "uml-id": "_DUU_sGZ_EeWrX_JIGzXlSg",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "The role of a port in the context of the function of the forwarding entity that it bounds"
-                       ]
-               },
-               "ProtectionType": {
-                       "id": "ProtectionType",
-                       "uml-id": "_c3Hu8Gb3EeWrX_JIGzXlSg",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Identifies the type of rotection of an FcSwitch."
-                       ]
-               },
-               "DateAndTime": {
-                       "id": "DateAndTime",
-                       "uml-id": "_oGqi1lLNEeO75dO39GbF8Q",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "This primitive type defines the date and time according to the following structure:  yyyyMMddhhmmss.s[Z|{+|-}HHMm]  where: yyyy  0000 .. 9999  year MM  01 .. 12  month dd  01 .. 31  day hh  00 .. 23  hour mm  00 .. 59  minute ss  00 .. 59  second s  .0 .. .9  tenth of second (set to  .0  if EMS or NE cannot support this granularity) Z  Z  indicates UTC (rather than local time) {+|-}  +  or  -  delta from UTC HH  00 .. 23  time zone difference in hours Mm  00 .. 59  time zone difference in minutes."
-                       ]
-               },
-               "NameAndValue": {
-                       "id": "NameAndValue",
-                       "uml-id": "_y7oy8I3tEeO38ZmbECnvbg",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "A scoped name-value pair"
-                       ]
-               },
-               "valueName": {
-                       "id": "valueName",
-                       "uml-id": "_77PyQI3tEeO38ZmbECnvbg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "is-key": 1,
-                       "description": [
-                               "The name of the value. The value need not have a name."
-                       ]
-               },
-               "UniversalId": {
-                       "id": "UniversalId",
-                       "uml-id": "_SU3Q4I30EeO38ZmbECnvbg",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "The univeral ID value where the mechanism for generation is defned by some authority not directly referenced in the structure."
-                       ]
-               },
-               "value": {
-                       "id": "value",
-                       "uml-id": "_cbx2gI30EeO38ZmbECnvbg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "The specific value of the universal id"
-                       ]
-               },
-               "_oGqjf1LNEeO75dO39GbF8Q": {
-                       "id": "OperType",
-                       "uml-id": "_oGqjf1LNEeO75dO39GbF8Q",
-                       "enum": [
-                               "REVERTIVE",
-                               "NON-REVERTIVE"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The operation type associated with the protection mechanism (either non-revertive or revertive)."
-                       ]
-               },
-               "_2WpC8EC7EeWxhL2B6Peg6A": {
-                       "id": "PortDirection",
-                       "uml-id": "_2WpC8EC7EeWxhL2B6Peg6A",
-                       "enum": [
-                               "BIDIRECTIONAL",
-                               "INPUT",
-                               "OUTPUT",
-                               "UNIDENTIFIED_OR_UNKNOWN"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The orientation of flow at the Port of a Forwarding entity"
-                       ]
-               },
-               "_dV67AEC8EeWxhL2B6Peg6A": {
-                       "id": "ForwardingDirection",
-                       "uml-id": "_dV67AEC8EeWxhL2B6Peg6A",
-                       "enum": [
-                               "BIDIRECTIONAL",
-                               "UNIDIRECTIONAL",
-                               "UNDEFINED_OR_UNKNOWN"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The directionality of a Forwarding entity."
-                       ]
-               },
-               "_RWILYEDAEeWQeOKbNUpP9A": {
-                       "id": "TerminationDirection",
-                       "uml-id": "_RWILYEDAEeWQeOKbNUpP9A",
-                       "enum": [
-                               "BIDIRECTIONAL",
-                               "SINK",
-                               "SOURCE",
-                               "UNDEFINED_OR_UNKNOWN"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The directionality of a termination entity"
-                       ]
-               },
-               "_T5GykEDNEeWQeOKbNUpP9A": {
-                       "id": "ExtendedTerminationDirection",
-                       "uml-id": "_T5GykEDNEeWQeOKbNUpP9A",
-                       "enum": [
-                               "CONTRA_DIRECTION_SINK",
-                               "CONTRA_DIRECTION_SOURCE"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "Extended to include contra-direction considerations. Only applies to LP and elements of LP not to LTP??"
-                       ]
-               },
-               "_6anG8GeEEeWmgIwAIZlYKQ": {
-                       "id": "TerminationState",
-                       "uml-id": "_6anG8GeEEeWmgIwAIZlYKQ",
-                       "enum": [
-                               "LP_CAN_NEVER_TERMINATE",
-                               "LT_NOT_TERMINATED",
-                               "TERMINATED_SERVER_TO_CLIENT_FLOW",
-                               "TERMINATED_CLIENT_TO_SERVER_FLOW",
-                               "TERMINATED_BIDIRECTIONAL",
-                               "LT_PERMENANTLY_TERMINATED",
-                               "TERMINATION_STATE_UNKNOWN"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "Provides support for the range of behaviours and specific states that an LP can take with respect to termination of the signal. Indicates to what degree the LayerTermination is terminated."
-                       ]
-               },
-               "_lNclkLEtEeSZUdYfPSdgew": {
-                       "id": "OperationalState",
-                       "uml-id": "_lNclkLEtEeSZUdYfPSdgew",
-                       "enum": [
-                               "DISABLED",
-                               "ENABLED"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The possible values of the operationalState."
-                       ]
-               },
-               "_KSKOYLEuEeSZUdYfPSdgew": {
-                       "id": "AdministrativeState",
-                       "uml-id": "_KSKOYLEuEeSZUdYfPSdgew",
-                       "enum": [
-                               "LOCKED",
-                               "UNLOCKED"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The possible values of the administrativeState."
-                       ]
-               },
-               "_-xPeALEvEeSZUdYfPSdgew": {
-                       "id": "AdministrativeControl",
-                       "uml-id": "_-xPeALEvEeSZUdYfPSdgew",
-                       "enum": [
-                               "UNLOCK",
-                               "LOCK_PASSIVE",
-                               "LOCK_ACTIVE",
-                               "LOCK_IMMEDIATE"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The possible values of the current target administrative state."
-                       ]
-               },
-               "_McyhcGgeEeWmgIwAIZlYKQ": {
-                       "id": "ExtendedAdminState",
-                       "uml-id": "_McyhcGgeEeWmgIwAIZlYKQ",
-                       "enum": [
-                               "SHUTTING_DOWN_ACTIVE",
-                               "SHUTTING_DOWN_PASSIVE"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "Possible extentions to AdministrativeState"
-                       ]
-               },
-               "_YSsboGgiEeWmgIwAIZlYKQ": {
-                       "id": "LifecycleState",
-                       "uml-id": "_YSsboGgiEeWmgIwAIZlYKQ",
-                       "enum": [
-                               "PLANNED",
-                               "POTENTIAL",
-                               "INSTALLED",
-                               "PENDING_REMOVAL"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The possible values of the lifecycleState."
-                       ]
-               }
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/G.874.1-ForMicrowave.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/G.874.1-ForMicrowave.json
deleted file mode 100644 (file)
index 5c5daa7..0000000
+++ /dev/null
@@ -1,546 +0,0 @@
-{
-       "schema-information": {
-               "OTN_CurrentData": {
-                       "id": "OTN_CurrentData",
-                       "uml-id": "_OxyHAOGJEeGhaeLtr7IxXg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "This object class is an abstract class from which the OTN layer-specific CurrentData object classes are inherited. This object class is a subclass of the Q.822 CurrentData object class, which in turn is a subclass of X.739 Scanner object class. It inherits the following attributes: scannerId, operationalState, granularityPeriod, administrativeState, suspectIntervalFlag, elapsedTime, observedObjectClass, and observedObjectInstance."
-                       ]
-               },
-               "timestamp": {
-                       "id": "timestamp",
-                       "uml-id": "_bGwfoOGJEeGhaeLtr7IxXg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_X-HZUNwbEeGoneTbGt8X0A",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "The timestamp associated with when the current data was collected."
-                       ]
-               },
-               "OTN_HistoryData": {
-                       "id": "OTN_HistoryData",
-                       "uml-id": "_dQ2mYOGOEeGhaeLtr7IxXg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "This object class is an abstract class from which the OTN layer-specific HistoryData object classes are inherited."
-                       ]
-               },
-               "«Q.822»-CurrentData": {
-                       "id": "«Q.822»-CurrentData",
-                       "uml-id": "_M8IDMceIEeSfd5vyUJsimg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "suspectIntervalFlag": {
-                       "id": "suspectIntervalFlag",
-                       "uml-id": "_M8IDNceIEeSfd5vyUJsimg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "This attribute is used to indicate that the performance data for the current period may not be reliable. Some reasons for this to occur are:- Suspect data were detected by the actual resource doing data collection.- Transition of the administrativeState attribute to/from the 'lock' state.- Transition of the operationalState to/from the 'disabled' state.- Scheduler setting that inhibits the collection function.- The performance counters were reset during the interval.- The currentData (or subclass) object instance was created during the monitoring period."
-                       ]
-               },
-               "elapsedTime": {
-                       "id": "elapsedTime",
-                       "uml-id": "_M8IDOMeIEeSfd5vyUJsimg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 2,
-                       "is-read-only": false
-               },
-               "«Q.822»-HistoryData": {
-                       "id": "«Q.822»-HistoryData",
-                       "uml-id": "_M8IDVMeIEeSfd5vyUJsimg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "historyDataId": {
-                       "id": "historyDataId",
-                       "uml-id": "_M8IDWMeIEeSfd5vyUJsimg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "is-key": 1
-               },
-               "periodEndTime": {
-                       "id": "periodEndTime",
-                       "uml-id": "_M8IDWceIEeSfd5vyUJsimg",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_oGqi1lLNEeO75dO39GbF8Q",
-                       "order-number": 2,
-                       "is-read-only": false
-               },
-               "«X.739»-Scanner": {
-                       "id": "«X.739»-Scanner",
-                       "uml-id": "_7wb90ceIEeSfd5vyUJsimg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "scannerId": {
-                       "id": "scannerId",
-                       "uml-id": "_7wb91ceIEeSfd5vyUJsimg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "is-key": 1
-               },
-               "granularityPeriod": {
-                       "id": "granularityPeriod",
-                       "uml-id": "_M8IDWseIEeSfd5vyUJsimg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_Y6WUEEamEeabNPX3o7rjtw",
-                       "order-number": 2,
-                       "is-read-only": false
-               },
-               "administrativeState": {
-                       "id": "administrativeState",
-                       "uml-id": "_7wb92seIEeSfd5vyUJsimg",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_KSKOYLEuEeSZUdYfPSdgew",
-                       "order-number": 3,
-                       "is-read-only": false
-               },
-               "«X.721»-Top": {
-                       "id": "«X.721»-Top",
-                       "uml-id": "_BMJ0EceTEeS6-cawxfHpnA",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "This is the top level of managed object class hierarchy and every other managed object class is a specialization of either this generic class (top) or a specialization of subclass of top. The parameter miscellaneousError is to be used when a processing failure has occurred and the error condition encountered does not match any of object's defined specific error types."
-                       ]
-               },
-               "objectClass": {
-                       "id": "objectClass",
-                       "uml-id": "_BMJ0FceTEeS6-cawxfHpnA",
-                       "uml-type": "ownedAttribute",
-                       "type": "_ltGzFMeUEeS6-cawxfHpnA",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "ObjectClass ::= CHOICE{ globalForm [0] OBJECT IDENTIFIER, localForm [1] INTEGER}"
-                       ]
-               },
-               "nameBinding": {
-                       "id": "nameBinding",
-                       "uml-id": "_BMJ0F8eTEeS6-cawxfHpnA",
-                       "uml-type": "ownedAttribute",
-                       "type": "_ltGzFMeUEeS6-cawxfHpnA",
-                       "order-number": 2,
-                       "is-read-only": false
-               },
-               "DateAndTime": {
-                       "id": "DateAndTime",
-                       "uml-id": "_X-HZUNwbEeGoneTbGt8X0A",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "This primitive type defines the date and time according to the following structure:  yyyyMMddhhmmss.s[Z|{+|-}HHMm]  where: yyyy  0000 .. 9999  year MM  01 .. 12  month dd  01 .. 31  day hh  00 .. 23  hour mm  00 .. 59  minute ss  00 .. 59  second s  .0 .. .9  tenth of second (set to  .0  if EMS or NE cannot support this granularity) Z  Z  indicates UTC (rather than local time) {+|-}  +  or  -  delta from UTC HH  00 .. 23  time zone difference in hours Mm  00 .. 59  time zone difference in minutes."
-                       ]
-               },
-               "_5G6YQOo-EeCjNNLZCc6mew": {
-                       "id": "Directionality",
-                       "uml-id": "_5G6YQOo-EeCjNNLZCc6mew",
-                       "enum": [
-                               "SINK",
-                               "SOURCE",
-                               "BIDIRECTIONAL"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The enumeration with the options for directionality of the termination point."
-                       ]
-               },
-               "_rU8aMOpfEeCjNNLZCc6mew": {
-                       "id": "GccAccess",
-                       "uml-id": "_rU8aMOpfEeCjNNLZCc6mew",
-                       "enum": [
-                               "GCC1",
-                               "GCC2",
-                               "GCC1_AND_GCC2"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "This enumeration indicates the GCC access represented by the entity."
-                       ]
-               },
-               "_W7-1oOpiEeCjNNLZCc6mew": {
-                       "id": "OperationalState",
-                       "uml-id": "_W7-1oOpiEeCjNNLZCc6mew",
-                       "enum": [
-                               "ENABLED",
-                               "DISABLED"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The list of valid operational states for the connection."
-                       ]
-               },
-               "_g0zCsOsDEeCjNNLZCc6mew": {
-                       "id": "OperType",
-                       "uml-id": "_g0zCsOsDEeCjNNLZCc6mew",
-                       "enum": [
-                               "REVERTIVE",
-                               "NON-REVERTIVE"
-                       ],
-                       "is-read-only": [
-                               "The operation type associated with the protection mechanism (either non-revertive or revertive)."
-                       ]
-               },
-               "_Jl09gOsKEeCjNNLZCc6mew": {
-                       "id": "ExtCmdOperation",
-                       "uml-id": "_Jl09gOsKEeCjNNLZCc6mew",
-                       "enum": [
-                               "EXERCISE",
-                               "MANUAL_SWITCH",
-                               "FORCED_SWITCH",
-                               "LOCKOUT",
-                               "RELEASE_OF_MANUAL_SWITCH",
-                               "RELEASE_OF_FORCED_SWITCH",
-                               "RELEASE_OF_LOCKOUT"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "This enumeration contains the options for the actions that instruct the protection system for performing specific protection switching operations."
-                       ]
-               },
-               "_bwxBQOw5EeCjNNLZCc6mew": {
-                       "id": "AdministrativeState",
-                       "uml-id": "_bwxBQOw5EeCjNNLZCc6mew",
-                       "enum": [
-                               "UNLOCKED",
-                               "LOCKED",
-                               "SHUTTING_DOWN"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "For more information on Administrative State, See ITU-T Recs. X.731 and M.3100."
-                       ]
-               },
-               "_ChQ5oOw-EeCjNNLZCc6mew": {
-                       "id": "OCTk_NimKBitRate",
-                       "uml-id": "_ChQ5oOw-EeCjNNLZCc6mew",
-                       "enum": [
-                               "2.5_G",
-                               "10_G",
-                               "40_G",
-                               "100_G"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "Provides an enumeration with the meaning of each  k  value."
-                       ]
-               },
-               "_ZBtyUOw_EeCjNNLZCc6mew": {
-                       "id": "TimDetMo",
-                       "uml-id": "_ZBtyUOw_EeCjNNLZCc6mew",
-                       "enum": [
-                               "DAPI",
-                               "SAPI",
-                               "BOTH"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "List of modes for trace identifier mismatch detection."
-                       ]
-               },
-               "_HF864OxAEeCjNNLZCc6mew": {
-                       "id": "OCTk_NimProblemList",
-                       "uml-id": "_HF864OxAEeCjNNLZCc6mew",
-                       "enum": [
-                               "LOS_P",
-                               "OCI",
-                               "SSF_P",
-                               "SSF_O",
-                               "SSF",
-                               "TIM",
-                               "DEG",
-                               "BDI"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The valid list of problems for the entity."
-                       ]
-               },
-               "_WPoNoO3eEeCjNNLZCc6mew": {
-                       "id": "TcmMonitoring",
-                       "uml-id": "_WPoNoO3eEeCjNNLZCc6mew",
-                       "enum": [
-                               "INTRUSIVE",
-                               "NON-INTRUSIVE"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "Monitoring types for the tandem connection monitoring function."
-                       ]
-               },
-               "_OI-7wO6QEeCjNNLZCc6mew": {
-                       "id": "TcmMode",
-                       "uml-id": "_OI-7wO6QEeCjNNLZCc6mew",
-                       "enum": [
-                               "OPERATIONAL",
-                               "TRANSPARENT",
-                               "MONITOR"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "List of value modes for the sink side of the tandem connection monitoring function."
-                       ]
-               },
-               "_ZnM8cO6ZEeCjNNLZCc6mew": {
-                       "id": "OPSMnk_TtpKBitRate",
-                       "uml-id": "_ZnM8cO6ZEeCjNNLZCc6mew",
-                       "enum": [
-                               "40_G",
-                               "100_G"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "Provides an enumeration with the meaning of each  k  value."
-                       ]
-               },
-               "_pV-F8O6aEeCjNNLZCc6mew": {
-                       "id": "OPSMnk_TtpProblemList",
-                       "uml-id": "_pV-F8O6aEeCjNNLZCc6mew",
-                       "enum": [
-                               "LOS",
-                               "LOL"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The valid list of problems for the entity."
-                       ]
-               },
-               "_QW1SYO6bEeCjNNLZCc6mew": {
-                       "id": "OPSn_TtpProblemList",
-                       "uml-id": "_QW1SYO6bEeCjNNLZCc6mew",
-                       "enum": [
-                               "LOS"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The valid list of problems for the entity."
-                       ]
-               },
-               "_o-oukO6bEeCjNNLZCc6mew": {
-                       "id": "OTM-n_KBitRates",
-                       "uml-id": "_o-oukO6bEeCjNNLZCc6mew",
-                       "enum": [
-                               "2.5_G",
-                               "10_G",
-                               "40_G",
-                               "2.5_10_G",
-                               "10_40_G",
-                               "2.5_10_40_G"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "Provides an enumeration with the meaning of each  k  value."
-                       ]
-               },
-               "_KRCG4O6dEeCjNNLZCc6mew": {
-                       "id": "DomainInterface",
-                       "uml-id": "_KRCG4O6dEeCjNNLZCc6mew",
-                       "enum": [
-                               "INTRA_DOMAIN",
-                               "INTER_DOMAIN"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "This enumeration provides the options for the interface associated with OTMn."
-                       ]
-               },
-               "_EOPyIO6qEeCjNNLZCc6mew": {
-                       "id": "OTM-n_OpticalReach",
-                       "uml-id": "_EOPyIO6qEeCjNNLZCc6mew",
-                       "enum": [
-                               "INTRA_OFFICE",
-                               "SHORTHAUL",
-                               "LONGHAUL"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The valid options for reach of the optical cable."
-                       ]
-               },
-               "_6Bt3QO6qEeCjNNLZCc6mew": {
-                       "id": "AprStatus",
-                       "uml-id": "_6Bt3QO6qEeCjNNLZCc6mew",
-                       "enum": [
-                               "ON",
-                               "OFF"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The enumeration of the options for the Automatic Power Reduction Status."
-                       ]
-               },
-               "_FLzNQO6vEeCjNNLZCc6mew": {
-                       "id": "OTSn_TtpProblemList",
-                       "uml-id": "_FLzNQO6vEeCjNNLZCc6mew",
-                       "enum": [
-                               "BDI_P",
-                               "BDI_O",
-                               "BDI",
-                               "TIM",
-                               "LOS_P",
-                               "LOS_O",
-                               "LOS"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The valid list of problems for the entity."
-                       ]
-               },
-               "_NAElYO6wEeCjNNLZCc6mew": {
-                       "id": "OTUk_CtpAdaptation",
-                       "uml-id": "_NAElYO6wEeCjNNLZCc6mew",
-                       "enum": [
-                               "REGULAR",
-                               "NONE",
-                               "VENDOR_SPECIFIC",
-                               "FUNCTIONALLY_STANDARDIZED"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The adaptation options for OTUk_ConnectionTermationPoints."
-                       ]
-               },
-               "_wgRHcO6wEeCjNNLZCc6mew": {
-                       "id": "OTUk_CtpKBitRate",
-                       "uml-id": "_wgRHcO6wEeCjNNLZCc6mew",
-                       "enum": [
-                               "2.5_G",
-                               "10_G",
-                               "40_G",
-                               "100_G"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "Provides an enumeration with the meaning of each  k  value."
-                       ]
-               },
-               "_6Y_gEO6wEeCjNNLZCc6mew": {
-                       "id": "OTUk_CtpProblemList",
-                       "uml-id": "_6Y_gEO6wEeCjNNLZCc6mew",
-                       "enum": [
-                               "LOF",
-                               "AIS",
-                               "LOM"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The valid list of problems for the entity."
-                       ]
-               },
-               "_xHNWMO6xEeCjNNLZCc6mew": {
-                       "id": "OTUk_TtpProblemList",
-                       "uml-id": "_xHNWMO6xEeCjNNLZCc6mew",
-                       "enum": [
-                               "TIM",
-                               "DEG",
-                               "BDI",
-                               "SSF"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The valid list of problems for the entity."
-                       ]
-               },
-               "_KRQ3MK8KEeG_zYhfU3oMYg": {
-                       "id": "MonitoredDirection",
-                       "uml-id": "_KRQ3MK8KEeG_zYhfU3oMYg",
-                       "enum": [
-                               "SINK",
-                               "SOURCE"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The enumeration with the options for directionality for nonintrusive monitoring."
-                       ]
-               },
-               "_qBme4LuYEeGeqZLpdvU3BA": {
-                       "id": "DegThrType",
-                       "uml-id": "_qBme4LuYEeGeqZLpdvU3BA",
-                       "enum": [
-                               "PERCENTAGE",
-                               "NUMBER_ERRORED_BLOCKS"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "<p>The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.</p>"
-                       ]
-               },
-               "_Parz8NwAEeGoneTbGt8X0A": {
-                       "id": "LinkType",
-                       "uml-id": "_Parz8NwAEeGoneTbGt8X0A",
-                       "enum": [
-                               "DWDM",
-                               "CWDM",
-                               "NO_WDM"
-                       ],
-                       "is-read-only": false
-               },
-               "_V1TuANwAEeGoneTbGt8X0A": {
-                       "id": "ApplicationIdentifierType",
-                       "uml-id": "_V1TuANwAEeGoneTbGt8X0A",
-                       "enum": [
-                               "STANDARD",
-                               "PROPRIETARY"
-                       ],
-                       "is-read-only": false
-               },
-               "_yt7S4PzgEeG3u-aQKIiCtg": {
-                       "id": "ApsChannel",
-                       "uml-id": "_yt7S4PzgEeG3u-aQKIiCtg",
-                       "enum": [
-                               "PATH",
-                               "TCM1",
-                               "TCM2",
-                               "TCM3",
-                               "TCM4",
-                               "TCM5",
-                               "TCM6",
-                               "SECTION"
-                       ],
-                       "is-read-only": false
-               },
-               "_LG3yQOVVEeKyU85eduW_rA": {
-                       "id": "DelayMeasurementRole",
-                       "uml-id": "_LG3yQOVVEeKyU85eduW_rA",
-                       "enum": [
-                               "CONTROLLER",
-                               "RESPONDER"
-                       ],
-                       "is-read-only": false
-               },
-               "_7fy9sJSCEeOLxKCUIYtzCg": {
-                       "id": "ResizeOperationType",
-                       "uml-id": "_7fy9sJSCEeOLxKCUIYtzCg",
-                       "enum": [
-                               "INCREASE_BW",
-                               "DECREASE_BW"
-                       ],
-                       "is-read-only": false
-               },
-               "_Y6WUEEamEeabNPX3o7rjtw": {
-                       "id": "GranularityPeriodType",
-                       "uml-id": "_Y6WUEEamEeabNPX3o7rjtw",
-                       "enum": [
-                               "UNKNOWN",
-                               "PERIOD_15MIN",
-                               "PERIOD_24HOURS"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "The enumeration with the options for granularity period of the performance data."
-                       ]
-               }
-       }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel-ObjectClasses-AirInterface.yin.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel-ObjectClasses-AirInterface.yin.json
deleted file mode 100755 (executable)
index 2aeb80f..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-{\r
-       "module": {\r
-               "name": "MicrowaveModel-ObjectClasses-AirInterface",\r
-               "MicrowaveModel-ObjectClasses-AirInterface": {\r
-                       "MW_AirInterface_Pac": {\r
-                               "type": "list",\r
-                               "key": "layerProtocol",\r
-                               "airInterfaceCapability": {\r
-                                       "name": "airInterfaceCapability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "airInterfaceConfiguration": {\r
-                                       "name": "airInterfaceConfiguration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "airInterfaceStatus": {\r
-                                       "name": "airInterfaceStatus",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "airInterfaceCurrentProblems": {\r
-                                       "name": "airInterfaceCurrentProblems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "airInterfaceCurrentPerformance": {\r
-                                       "name": "airInterfaceCurrentPerformance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "airInterfaceHistoricalPerformances": {\r
-                                       "name": "airInterfaceHistoricalPerformances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       },\r
-                       "CoChannelGroup": {\r
-                               "type": "list",\r
-                               "key": "coChannelGroupId"\r
-                       }\r
-               }\r
-       }\r
-}\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel-ObjectClasses-EthernetContainer.yin.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel-ObjectClasses-EthernetContainer.yin.json
deleted file mode 100755 (executable)
index 2af4d50..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-{\r
-       "module": {\r
-               "name": "MicrowaveModel-ObjectClasses-EthernetContainer",\r
-               "MicrowaveModel-ObjectClasses-EthernetContainer": {\r
-                       "MW_EthernetContainer_Pac": {\r
-                               "type": "list",\r
-                               "key": "layerProtocol",\r
-                               "ethernetContainerCapability": {\r
-                                       "name": "ethernetContainerCapability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernetContainerConfiguration": {\r
-                                       "name": "ethernetContainerConfiguration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernetContainerStatus": {\r
-                                       "name": "ethernetContainerStatus",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernetContainerCurrentProblems": {\r
-                                       "name": "ethernetContainerCurrentProblems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernetContainerCurrentPerformance": {\r
-                                       "name": "ethernetContainerCurrentPerformance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernetContainerHistoricalPerformances": {\r
-                                       "name": "ethernetContainerHistoricalPerformances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel-ObjectClasses-PureEthernetStructure.yin.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel-ObjectClasses-PureEthernetStructure.yin.json
deleted file mode 100755 (executable)
index 20726f8..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-{\r
-       "module": {\r
-               "name": "MicrowaveModel-ObjectClasses-PureEthernetStructure",\r
-               "MicrowaveModel-ObjectClasses-PureEthernetStructure": {\r
-                       "MW_PureEthernetStructure_Pac": {\r
-                               "type": "list",\r
-                               "key": "layerProtocol",\r
-                               "pureEthernetStructureCapability": {\r
-                                       "name": "pureEthernetStructureCapability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "pureEthernetStructureConfiguration": {\r
-                                       "name": "pureEthernetStructureConfiguration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "pureEthernetStructureStatus": {\r
-                                       "name": "pureEthernetStructureStatus",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "pureEthernetStructureCurrentProblems": {\r
-                                       "name": "pureEthernetStructureCurrentProblems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "pureEthernetStructureCurrentPerformance": {\r
-                                       "name": "pureEthernetStructureCurrentPerformance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "pureEthernetStructureHistoricalPerformances": {\r
-                                       "name": "pureEthernetStructureHistoricalPerformances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/MicrowaveModel.json
deleted file mode 100644 (file)
index 34d0503..0000000
+++ /dev/null
@@ -1,2940 +0,0 @@
-{
-       "schema-information": {
-               "MW_AirInterface_Pac": {
-                       "id": "MW_AirInterface_Pac",
-                       "uml-id": "__1kQ0Hf4EeW-M8kopGJqEA",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "LTP(MWPS-TTP)"
-                       ]
-               },
-               "airInterfaceCapability": {
-                       "id": "airInterfaceCapability",
-                       "uml-id": "_Dr1uMIekEeWaZYk7gpuOtw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_-LlKoIejEeWaZYk7gpuOtw",
-                       "order-number": 2,
-                       "is-read-only": true
-               },
-               "airInterfaceConfiguration": {
-                       "id": "airInterfaceConfiguration",
-                       "uml-id": "_AEmSAIe1EeWnUdmvl3PBkw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_KOcsUIe0EeWnUdmvl3PBkw",
-                       "order-number": 3,
-                       "is-read-only": false
-               },
-               "airInterfaceStatus": {
-                       "id": "airInterfaceStatus",
-                       "uml-id": "_Vp35cnmgEeWsUsDOj_Trdg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_iCTioHmIEeWRAfnL3fvovg",
-                       "order-number": 4,
-                       "is-read-only": true
-               },
-               "airInterfaceCurrentProblems": {
-                       "id": "airInterfaceCurrentProblems",
-                       "uml-id": "_ZeRYInmgEeWsUsDOj_Trdg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_UF8VcHmIEeWRAfnL3fvovg",
-                       "order-number": 5,
-                       "is-read-only": true
-               },
-               "airInterfaceCurrentPerformance": {
-                       "id": "airInterfaceCurrentPerformance",
-                       "uml-id": "_65_4M6S6EeWyu_jasKgNwA",
-                       "uml-type": "ownedAttribute",
-                       "type": "_CX-iIKS6EeWyu_jasKgNwA",
-                       "order-number": 6,
-                       "is-read-only": true
-               },
-               "airInterfaceHistoricalPerformances": {
-                       "id": "airInterfaceHistoricalPerformances",
-                       "uml-id": "__8icYJHfEeWKxoYCXp1XkQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_fChNMHmHEeWRAfnL3fvovg",
-                       "order-number": 7,
-                       "is-read-only": true
-               },
-               "AirInterfaceCapability": {
-                       "id": "AirInterfaceCapability",
-                       "uml-id": "_-LlKoIejEeWaZYk7gpuOtw",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Describes the 'analog' capabilities of modem and transmitter of the microwave device. Value ranges of attributes are not independently (e.g. min. and max. transmit power depends on modulation). Legal combinations of values are expressed in transmissionModeTypes."
-                       ]
-               },
-               "typeOfEquipment": {
-                       "id": "typeOfEquipment",
-                       "uml-id": "_gK4jMJUBEeWIaZzoaYJ6_A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "description": [
-                               "This parameter indicates the equipment type. Instead of uploading the complete set of capabilities, capabilities of the same equipment type could be reused. Should be unique for a combination of modem, radio and their respective firmware."
-                       ]
-               },
-               "txFrequencyMin": {
-                       "id": "txFrequencyMin",
-                       "uml-id": "_90Xe0HfcEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "unit": "kHz",
-                       "description": [
-                               "Value of the minimum transmit frequency tunable at the air interface."
-                       ]
-               },
-               "txFrequencyMax": {
-                       "id": "txFrequencyMax",
-                       "uml-id": "_-1ztsHfcEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "unit": "kHz",
-                       "description": [
-                               "Value of the maximum transmit frequency tunable at the air interface."
-                       ]
-               },
-               "rxFrequencyMin": {
-                       "id": "rxFrequencyMin",
-                       "uml-id": "_BLqx0HfdEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 4,
-                       "is-read-only": true,
-                       "unit": "kHz",
-                       "description": [
-                               "Value of the minimum receive frequency tunable at the air interface."
-                       ]
-               },
-               "rxFrequencyMax": {
-                       "id": "rxFrequencyMax",
-                       "uml-id": "_CSBV4HfdEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 5,
-                       "is-read-only": true,
-                       "unit": "kHz",
-                       "description": [
-                               "Value of the maximum receive frequency tunable at the air interface."
-                       ]
-               },
-               "adaptiveModulationIsAvail": {
-                       "id": "adaptiveModulationIsAvail",
-                       "uml-id": "_ClmuUHffEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 6,
-                       "is-read-only": true,
-                       "description": [
-                               "In case the device is capable of adaptive modulation, this field shall contain a 'true'."
-                       ]
-               },
-               "mimoIsAvail": {
-                       "id": "mimoIsAvail",
-                       "uml-id": "_qXBrkH2eEeWaPP5xsIT8pQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 7,
-                       "is-read-only": true,
-                       "description": [
-                               "In case the device is capable of MIMO, this field shall contain a 'true'."
-                       ]
-               },
-               "mimoChannels": {
-                       "id": "mimoChannels",
-                       "uml-id": "_qysT4H2eEeWaPP5xsIT8pQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 8,
-                       "is-read-only": true,
-                       "unit": "channels",
-                       "description": [
-                               "Maximum number (n) of spatial multiplexing streams that can be conveyed by an n x n MIMO configuration."
-                       ]
-               },
-               "alicIsAvail": {
-                       "id": "alicIsAvail",
-                       "uml-id": "_a3HgMIL9EeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 9,
-                       "is-read-only": true,
-                       "description": [
-                               "In case the microwave radio is capable of Adjacent Link Interference Cancelation (canceling of interference cause by transmitters located at the same site), this field shall contain a 'true'."
-                       ]
-               },
-               "atpcIsAvail": {
-                       "id": "atpcIsAvail",
-                       "uml-id": "_iRRtgHftEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 10,
-                       "is-read-only": true,
-                       "description": [
-                               "In case the microwave radio is capable of ATPC, this field shall contain a 'true'."
-                       ]
-               },
-               "atpcRange": {
-                       "id": "atpcRange",
-                       "uml-id": "_ErwNYHfdEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 11,
-                       "is-read-only": true,
-                       "unit": "dB",
-                       "description": [
-                               "Extent of the ATPC range."
-                       ]
-               },
-               "loopBackIsAvail": {
-                       "id": "loopBackIsAvail",
-                       "uml-id": "_UxjEkIMHEeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 13,
-                       "is-read-only": true,
-                       "description": [
-                               "In case the radio is capable of looping back header information of the air interface, this field shall contain a 'true'."
-                       ]
-               },
-               "maintenanceTimerRange": {
-                       "id": "maintenanceTimerRange",
-                       "uml-id": "_I1FYsMWZEeW3xsRKtpCLuA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 14,
-                       "is-read-only": true,
-                       "unit": "s",
-                       "description": [
-                               "Available time periods for maintenance configurations (e.g. the loop back of microwave header information) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360')."
-                       ]
-               },
-               "supportedChannelPlanList": {
-                       "id": "supportedChannelPlanList",
-                       "uml-id": "_zUKUgPXVEeW9zIqh2WHHww",
-                       "uml-type": "ownedAttribute",
-                       "type": "_oQf6IPXSEeW9zIqh2WHHww",
-                       "order-number": 16,
-                       "is-read-only": true,
-                       "description": [
-                               "List of channel spacing that are supported by the device."
-                       ]
-               },
-               "AirInterfaceConfiguration": {
-                       "id": "AirInterfaceConfiguration",
-                       "uml-id": "_KOcsUIe0EeWnUdmvl3PBkw",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Configuration of the radio link."
-                       ]
-               },
-               "airInterfaceName": {
-                       "id": "airInterfaceName",
-                       "uml-id": "_XMDggIL5EeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "Operator specific microwave link ID (often used for coding area, type of element and sequential number)."
-                       ]
-               },
-               "radioSignalID": {
-                       "id": "radioSignalID",
-                       "uml-id": "_QY9KoHf5EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "The value zero might be used to make the microwave to disable the link ID check."
-                       ]
-               },
-               "txFrequency": {
-                       "id": "txFrequency",
-                       "uml-id": "_UNE8gHf5EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "unit": "kHz",
-                       "description": [
-                               "Center frequency of the transmit channel. The values to be configured have to exactly match the values listed in the international agreement referenced in channelPlanID. In case of automated selection of the transmit frequency this field shall describe the lowest center frequency selectable."
-                       ]
-               },
-               "rxFrequency": {
-                       "id": "rxFrequency",
-                       "uml-id": "_W7ayEHf5EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 4,
-                       "is-read-only": false,
-                       "unit": "kHz",
-                       "description": [
-                               "Center frequency of the receive channel."
-                       ]
-               },
-               "txChannelBandwidth": {
-                       "id": "txChannelBandwidth",
-                       "uml-id": "_bhAdIHf5EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 5,
-                       "is-read-only": false,
-                       "unit": "kHz",
-                       "description": [
-                               "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;"
-                       ]
-               },
-               "rxChannelBandwidth": {
-                       "id": "rxChannelBandwidth",
-                       "uml-id": "_eKIbgHf5EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 6,
-                       "is-read-only": false,
-                       "unit": "kHz",
-                       "description": [
-                               "Bandwidth of the receive channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;"
-                       ]
-               },
-               "polarization": {
-                       "id": "polarization",
-                       "uml-id": "_bVebEI99EeWFluv9KLLl5A",
-                       "uml-type": "ownedAttribute",
-                       "type": "_e85NsI99EeWFluv9KLLl5A",
-                       "order-number": 7,
-                       "is-read-only": false,
-                       "description": [
-                               "Allows documenting the polarization of the air interface."
-                       ]
-               },
-               "powerIsOn": {
-                       "id": "powerIsOn",
-                       "uml-id": "_p4eR8Hf5EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 8,
-                       "is-read-only": false,
-                       "description": [
-                               "Power ON. Activation of the entire radio in a split mount configuration shall be expressed as a 'true'."
-                       ]
-               },
-               "transmitterIsOn": {
-                       "id": "transmitterIsOn",
-                       "uml-id": "_uYVvgHf5EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 9,
-                       "is-read-only": false,
-                       "description": [
-                               "Activation of the transmitter inside the radio shall be expressed as a 'true'."
-                       ]
-               },
-               "receiverIsOn": {
-                       "id": "receiverIsOn",
-                       "uml-id": "_q_XcwEgnEeathrAE0htMiA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 10,
-                       "is-read-only": false,
-                       "description": [
-                               "Maintenance Feature"
-                       ]
-               },
-               "txPower": {
-                       "id": "txPower",
-                       "uml-id": "_ZEXmIHf6EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 11,
-                       "is-read-only": false,
-                       "unit": "dBm",
-                       "description": [
-                               "Transmit power to be configured on the microwave link. Signed Byte is required. The actually operated transmit power might be lower depending on adaptive modulation and ATPC."
-                       ]
-               },
-               "adaptiveModulationIsOn": {
-                       "id": "adaptiveModulationIsOn",
-                       "uml-id": "_0jhfYHf5EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 12,
-                       "is-read-only": false,
-                       "description": [
-                               "Adaptive Modulation. Activation of adaptive modulation shall be expressed as a 'true'."
-                       ]
-               },
-               "modulationMin": {
-                       "id": "modulationMin",
-                       "uml-id": "_dM_BUHf6EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 13,
-                       "is-read-only": false,
-                       "unit": "symbols",
-                       "description": [
-                               "Minimum modulation to be configured (in case adaptive modulation is not used, this value represents also the fixed modulation). The modulation scheme shall be described by the number of symbols (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme."
-                       ]
-               },
-               "modulationMax": {
-                       "id": "modulationMax",
-                       "uml-id": "_gAHQQHf6EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 14,
-                       "is-read-only": false,
-                       "unit": "symbols",
-                       "description": [
-                               "Maximum modulation to be configured. The value of this field is only relevant, if Adaptive Modulation has been activated. The modulation scheme shall be described by the number of symbols (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme."
-                       ]
-               },
-               "xpicIsOn": {
-                       "id": "xpicIsOn",
-                       "uml-id": "_4hi0IHf5EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 15,
-                       "is-read-only": false,
-                       "description": [
-                               "Activation of Cross Polarization Interference Cancelation shall be expressed as a 'true'. In case XPIC is not available for the current combination of channel bandwidth and modulation or the hardware in general, this parameter shall always be set to 'false'."
-                       ]
-               },
-               "mimoIsOn": {
-                       "id": "mimoIsOn",
-                       "uml-id": "_7t4fIH2dEeWaPP5xsIT8pQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 16,
-                       "is-read-only": false,
-                       "description": [
-                               "Activation of Multiple Input Multiple Output (MIMO) shall be expressed as a 'true'."
-                       ]
-               },
-               "alicIsOn": {
-                       "id": "alicIsOn",
-                       "uml-id": "_FmWHMHf6EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 17,
-                       "is-read-only": false,
-                       "description": [
-                               "Activation of Adjacent Link Interference Cancelation (ALIC) shall be expressed as a 'true'."
-                       ]
-               },
-               "atpcIsOn": {
-                       "id": "atpcIsOn",
-                       "uml-id": "_9Hz0oHf5EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 18,
-                       "is-read-only": false,
-                       "description": [
-                               "ATPC. Activation of Automated Transmit Power Control shall be expressed as a 'true'."
-                       ]
-               },
-               "atpcThreshUpper": {
-                       "id": "atpcThreshUpper",
-                       "uml-id": "_pR7yMHgAEeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 19,
-                       "is-read-only": false,
-                       "unit": "dBm",
-                       "description": [
-                               "If the receive level is higher than the upper threshold value, the transmitter is notified to decrease transmit power."
-                       ]
-               },
-               "atpcThreshLower": {
-                       "id": "atpcThreshLower",
-                       "uml-id": "_sIlPMHgAEeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 20,
-                       "is-read-only": false,
-                       "unit": "dBm",
-                       "description": [
-                               "If the receive level is lower than the lower threshold value, the transmitter is notified to increase transmit power."
-                       ]
-               },
-               "autoFreqSelectIsOn": {
-                       "id": "autoFreqSelectIsOn",
-                       "uml-id": "_dG5VAIL-EeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 21,
-                       "is-read-only": false,
-                       "description": [
-                               "Activation of automatically selecting the transmit frequency in unlicensed bands shall be expressed as a 'true'."
-                       ]
-               },
-               "autoFreqSelectRange": {
-                       "id": "autoFreqSelectRange",
-                       "uml-id": "_yH9XMIMCEeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 22,
-                       "is-read-only": false,
-                       "unit": "channels",
-                       "description": [
-                               "Number of transmit channels (starting at the center frequency defined in txFrequency and with channel bandwidth according to txChannelBandwidth) that define the range within the transmit frequency can automatically been chosen."
-                       ]
-               },
-               "modulationIsOn": {
-                       "id": "modulationIsOn",
-                       "uml-id": "_kxXzwIMGEeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 23,
-                       "is-read-only": false,
-                       "description": [
-                               "Maintenance Feature"
-                       ]
-               },
-               "loopBackIsOn": {
-                       "id": "loopBackIsOn",
-                       "uml-id": "_PyRvsHf6EeW-M8kopGJqEA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 26,
-                       "is-read-only": false,
-                       "description": [
-                               "Maintenance Feature"
-                       ]
-               },
-               "maintenanceTimer": {
-                       "id": "maintenanceTimer",
-                       "uml-id": "_7-oTwCd5EeaJA6AVLNrv_w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 27,
-                       "is-read-only": false,
-                       "unit": "s",
-                       "description": [
-                               "Time of existence of any maintenance configuration (e.g. the loop back of microwave header information). Valid values are defined in AirInterface::AirInterfaceCapability::maintenanceTimerRange."
-                       ]
-               },
-               "AirInterfaceStatus": {
-                       "id": "AirInterfaceStatus",
-                       "uml-id": "_iCTioHmIEeWRAfnL3fvovg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Measurements of current values on the air interface and operational status of the device."
-                       ]
-               },
-               "txFrequencyCur": {
-                       "id": "txFrequencyCur",
-                       "uml-id": "_YZq7gK4tEeWXs6m-9H3KvA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "unit": "kHz",
-                       "description": [
-                               "Center frequency of the currently operated transmit channel."
-                       ]
-               },
-               "rxFrequencyCur": {
-                       "id": "rxFrequencyCur",
-                       "uml-id": "_33IdUIL-EeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "unit": "kHz",
-                       "description": [
-                               "Center frequency of the currently operated receive channel."
-                       ]
-               },
-               "txLevelCur": {
-                       "id": "txLevelCur",
-                       "uml-id": "_L3B5wHgIEeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Current transmit level."
-                       ]
-               },
-               "rxLevelCur": {
-                       "id": "rxLevelCur",
-                       "uml-id": "_OHN9AHizEeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 4,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Current receive level."
-                       ]
-               },
-               "modulationCur": {
-                       "id": "modulationCur",
-                       "uml-id": "_RBMa0HizEeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 5,
-                       "is-read-only": true,
-                       "unit": "symbols",
-                       "description": [
-                               "Currently operated modulation on transmit path. The modulation scheme shall be described by the number of symbols (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme."
-                       ]
-               },
-               "informationRateCur": {
-                       "id": "informationRateCur",
-                       "uml-id": "_UYyBsHizEeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 6,
-                       "is-read-only": true,
-                       "unit": "%",
-                       "description": [
-                               "Information rate of the currently operated coding scheme."
-                       ]
-               },
-               "xpdCur": {
-                       "id": "xpdCur",
-                       "uml-id": "_Z7NvgHizEeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 8,
-                       "is-read-only": true,
-                       "unit": "dB",
-                       "description": [
-                               "Currently measured cross polarization discrimination."
-                       ]
-               },
-               "rfTempCur": {
-                       "id": "rfTempCur",
-                       "uml-id": "_d6wuQHizEeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 9,
-                       "is-read-only": true,
-                       "unit": "Celsius",
-                       "description": [
-                               "Current temperature (in degree Celsius) of the radio module inside the outdoor unit."
-                       ]
-               },
-               "radioPowerIsUp": {
-                       "id": "radioPowerIsUp",
-                       "uml-id": "_sFKXcHizEeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 11,
-                       "is-read-only": true,
-                       "description": [
-                               "If the radio unit has power and is switched on, this shall be expressed as a 'true'."
-                       ]
-               },
-               "linkIsUp": {
-                       "id": "linkIsUp",
-                       "uml-id": "_5JBPUHizEeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 12,
-                       "is-read-only": true,
-                       "description": [
-                               "If connection is established to the remote site with the same linkID, this shall be expressed as a 'true'."
-                       ]
-               },
-               "xpicIsUp": {
-                       "id": "xpicIsUp",
-                       "uml-id": "_ESRbsHi0EeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 13,
-                       "is-read-only": true,
-                       "description": [
-                               "If XPIC is currently actually working (not just configured), this shall be expressed as a 'true'."
-                       ]
-               },
-               "mimoIsUp": {
-                       "id": "mimoIsUp",
-                       "uml-id": "_DVaQwIL6EeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 14,
-                       "is-read-only": true,
-                       "description": [
-                               "If MIMO is currently actually working (not just configured), this shall be expressed as a 'true'."
-                       ]
-               },
-               "alicIsUp": {
-                       "id": "alicIsUp",
-                       "uml-id": "_Hte-UHi0EeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 15,
-                       "is-read-only": true,
-                       "description": [
-                               "If Adjacent Link Interference Cancelation (ALIC) is currently actually working (not just configured), this shall be expressed as a 'true'."
-                       ]
-               },
-               "atpcIsUp": {
-                       "id": "atpcIsUp",
-                       "uml-id": "_VimCgMjNEeWYRsWW_rqpgw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 16,
-                       "is-read-only": true,
-                       "description": [
-                               "If ATPC is currently actually working (not just configured), this shall be expressed as a 'true'."
-                       ]
-               },
-               "autoFreqSelectIsUp": {
-                       "id": "autoFreqSelectIsUp",
-                       "uml-id": "_-PXKsIL-EeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 17,
-                       "is-read-only": true,
-                       "description": [
-                               "If automated frequency selection is currently actually working (not just configured), this shall be expressed as a 'true'."
-                       ]
-               },
-               "loopBackIsUp": {
-                       "id": "loopBackIsUp",
-                       "uml-id": "_S9prAHi0EeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 18,
-                       "is-read-only": true,
-                       "description": [
-                               "If loop back of the air interface header is currently active (not just configured), this shall be expressed as a 'true'."
-                       ]
-               },
-               "localEndPointId": {
-                       "id": "localEndPointId",
-                       "uml-id": "_pEsgcFQHEeaCXY7nSBqs6w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 19,
-                       "is-read-only": true,
-                       "description": [
-                               "The value of the localEndPointId is a vendor specific identifier of the air interface, used by the node to discover a microwave radio link."
-                       ]
-               },
-               "remoteEndPointId": {
-                       "id": "remoteEndPointId",
-                       "uml-id": "_r3cU4FQHEeaCXY7nSBqs6w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 20,
-                       "is-read-only": true,
-                       "description": [
-                               "The value of the remoteEndPointId is a vendor specific identifier or the airinterface at the remote side, used to by the node to discover a microwave radio link."
-                       ]
-               },
-               "AirInterfaceCurrentProblems": {
-                       "id": "AirInterfaceCurrentProblems",
-                       "uml-id": "_UF8VcHmIEeWRAfnL3fvovg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "AirInterfaceCurrentPerformance": {
-                       "id": "AirInterfaceCurrentPerformance",
-                       "uml-id": "_CX-iIKS6EeWyu_jasKgNwA",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the air interface at a particular moment."
-                       ]
-               },
-               "AirInterfaceHistoricalPerformances": {
-                       "id": "AirInterfaceHistoricalPerformances",
-                       "uml-id": "_fChNMHmHEeWRAfnL3fvovg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the air interface for a pre-defined measurement interval."
-                       ]
-               },
-               "CoChannelGroup": {
-                       "id": "CoChannelGroup",
-                       "uml-id": "_XBs2YJQrEeWOu_cDl8dd7w",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Required for configuring XPIC, MIMO and ALIC."
-                       ]
-               },
-               "coChannelGroupId": {
-                       "id": "coChannelGroupId",
-                       "uml-id": "_pIjBgEy7EeaRytIQfQ43Wg",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_SU3Q4I30EeO38ZmbECnvbg",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "is-key": 1
-               },
-               "airInterfaceList": {
-                       "id": "airInterfaceList",
-                       "uml-id": "_tIadUCJeEeaCUo1MUtSuEg",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_eEpDMFX4EeOVGaP4lO41SQ",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "List of air interfaces, which are part of the co-channel (XPIC, MIMO, ALIC) group."
-                       ]
-               },
-               "sortOfCoChannelGroup": {
-                       "id": "sortOfCoChannelGroup",
-                       "uml-id": "_ZrjZcJRrEeWIaZzoaYJ6_A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "description": [
-                               "Type of group of air interfaces with the same transmit and receive frequency. The values shall be chosen from the following _list:'XPIC', 'MIMO', 'ALIC';"
-                       ]
-               },
-               "MW_AirInterfaceHsbEndPoint_Pac": {
-                       "id": "MW_AirInterfaceHsbEndPoint_Pac",
-                       "uml-id": "_CXKgMJRbEeWMYJZn43K_Aw",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "The EndPoint (EP) object class models the access to the FC function. Each EndPoint instance has a role (e.g., working, protection, protected, hub, spoke, leaf, root, etc.) with respect to the FC function. The association of the FC to LTPs is made via EndPoints (essentially the ports of the FC) where each EndPoint (EP) of the FC has a role in the context of the FC. The traffic forwarding between the associated End PointsEPs of the FC depends upon the type of FC and may be associated with FCSwitch object instances. In cases where there is protection conveys the protecting role of the access to the FC. The EP replaces the Protection Unit of a traditional protection model. It represents a protected (resilient/reliable) point or a protecting (unreliable working or protection) point."
-                       ]
-               },
-               "role": {
-                       "id": "role",
-                       "uml-id": "_CXKgNpRbEeWMYJZn43K_Aw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_01_dYJReEeWxIPEwZQ_gmw",
-                       "order-number": 1,
-                       "is-read-only": false
-               },
-               "endpoint": {
-                       "id": "endpoint",
-                       "uml-id": "_dglVQLYgEeWOio-Gg6Q2sw",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_b_lUAFYgEeOVGaP4lO41SQ",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "is-key": 1
-               },
-               "MW_AirInterfaceHsbFcSwitch_Pac": {
-                       "id": "MW_AirInterfaceHsbFcSwitch_Pac",
-                       "uml-id": "_CXNjgJRbEeWMYJZn43K_Aw",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Represents and defines a protection switch structure encapsulated in the forwarding construct. Essentially performs the function of Protection Group. Associates to 2 or more Endpoints each playing the role of a Protection Unit. One or more protection EndPoints (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) Endpoints where either protection or working can feed one or more protected Endpoint. May be used in revertive or non-revertive (symmetric) mode. When in revertive mode may define waitToRestore time. May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 ane 1:1). May be lockout (prevented from switching), force switched or manual switched. Will indicate switch state and change of state."
-                       ]
-               },
-               "protType": {
-                       "id": "protType",
-                       "uml-id": "_CXNjiJRbEeWMYJZn43K_Aw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_DaB5IJRgEeWxIPEwZQ_gmw",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "Indicates the protection scheme that is used for the ProtectionGroup."
-                       ]
-               },
-               "airInterfaceHsbConfigurationIsFaultySeverity": {
-                       "id": "airInterfaceHsbConfigurationIsFaultySeverity",
-                       "uml-id": "_80BlAJ2gEeWSuvrh9KcclQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_eIml0JH1EeWUdbnmmNiTAA",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "The level of severity of an airInterfaceHsbConfigurationIsFaulty alarm shall be chosen from an enumeration."
-                       ]
-               },
-               "airInterfaceHsbIsPartlyDownSeverity": {
-                       "id": "airInterfaceHsbIsPartlyDownSeverity",
-                       "uml-id": "_r382sJ2mEeWSuvrh9KcclQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_eIml0JH1EeWUdbnmmNiTAA",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "description": [
-                               "The level of severity for one link out of the HSB configuration being down shall be chosen from an enumeration."
-                       ]
-               },
-               "airInterfaceHsbIsDownSeverity": {
-                       "id": "airInterfaceHsbIsDownSeverity",
-                       "uml-id": "_sRGWgJ2mEeWSuvrh9KcclQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_eIml0JH1EeWUdbnmmNiTAA",
-                       "order-number": 4,
-                       "is-read-only": false,
-                       "description": [
-                               "The level of severity of the total HSB configuration being down shall be chosen from an enumeration."
-                       ]
-               },
-               "fcswitch": {
-                       "id": "fcswitch",
-                       "uml-id": "_FS83ILYhEeWOio-Gg6Q2sw",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_a97NQFYhEeOVGaP4lO41SQ",
-                       "order-number": 5,
-                       "is-read-only": false,
-                       "is-key": 1
-               },
-               "MW_AirInterfaceDiversity_Pac": {
-                       "id": "MW_AirInterfaceDiversity_Pac",
-                       "uml-id": "_WbgFcHgFEeWfutScSwFT9A",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "LTP(MWS-CTP-xD)"
-                       ]
-               },
-               "airInterfaceDiversityCapability": {
-                       "id": "airInterfaceDiversityCapability",
-                       "uml-id": "_mQ_9YJICEeWUdbnmmNiTAA",
-                       "uml-type": "ownedAttribute",
-                       "type": "_vxH2wIekEeWaZYk7gpuOtw",
-                       "order-number": 2,
-                       "is-read-only": true
-               },
-               "airInterfaceDiversityConfiguration": {
-                       "id": "airInterfaceDiversityConfiguration",
-                       "uml-id": "_wXazw5ICEeWUdbnmmNiTAA",
-                       "uml-type": "ownedAttribute",
-                       "type": "_43RTMIe1EeWnUdmvl3PBkw",
-                       "order-number": 3,
-                       "is-read-only": false
-               },
-               "airInterfaceDiversityCurrentProblems": {
-                       "id": "airInterfaceDiversityCurrentProblems",
-                       "uml-id": "_zA4JU5ICEeWUdbnmmNiTAA",
-                       "uml-type": "ownedAttribute",
-                       "type": "_CAvhEHvtEeWzooKF5kx0aw",
-                       "order-number": 5,
-                       "is-read-only": true
-               },
-               "airInterfaceDiversityCurrentPerformance": {
-                       "id": "airInterfaceDiversityCurrentPerformance",
-                       "uml-id": "_XpGjA6jDEeWlgMiFXLmCIQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "_GIsAQKjDEeWlgMiFXLmCIQ",
-                       "order-number": 6,
-                       "is-read-only": true
-               },
-               "airInterfaceDiversityHistoricalPerformances": {
-                       "id": "airInterfaceDiversityHistoricalPerformances",
-                       "uml-id": "_z8F0Y5ICEeWUdbnmmNiTAA",
-                       "uml-type": "ownedAttribute",
-                       "type": "_8IIu8HvsEeWzooKF5kx0aw",
-                       "order-number": 7,
-                       "is-read-only": true
-               },
-               "AirInterfaceDiversityCapability": {
-                       "id": "AirInterfaceDiversityCapability",
-                       "uml-id": "_vxH2wIekEeWaZYk7gpuOtw",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Describes the capabilities in implementing different types of air interface diversity."
-                       ]
-               },
-               "availableKindsOfDiversity": {
-                       "id": "availableKindsOfDiversity",
-                       "uml-id": "_luAGENyVEeW-SfXlFFFI0Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "_pTliINyUEeW-SfXlFFFI0Q",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "description": [
-                               "Available types of diversity to be listed."
-                       ]
-               },
-               "AirInterfaceDiversityConfiguration": {
-                       "id": "AirInterfaceDiversityConfiguration",
-                       "uml-id": "_43RTMIe1EeWnUdmvl3PBkw",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "airInterfaceDiversity": {
-                       "id": "airInterfaceDiversity",
-                       "uml-id": "_hynTIHi_EeWfutScSwFT9A",
-                       "uml-type": "ownedAttribute",
-                       "type": "_pTliINyUEeW-SfXlFFFI0Q",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "Type of air interface diversity configured at the link."
-                       ]
-               },
-               "airInterfaceLtpList": {
-                       "id": "airInterfaceLtpList",
-                       "uml-id": "_xRMKgNyXEeW-SfXlFFFI0Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_eEpDMFX4EeOVGaP4lO41SQ",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "_multiplicity:2-ThisAirInterfaceDiversity::AirInterfaceDiversityConfiguration::airInterfaceDiversity::diversityType::numberOfAirInterfacesMax"
-                       ]
-               },
-               "AirInterfaceDiversityStatus": {
-                       "id": "AirInterfaceDiversityStatus",
-                       "uml-id": "_-O9RgHvsEeWzooKF5kx0aw",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "snirCur": {
-                       "id": "snirCur",
-                       "uml-id": "_B7G0AEzvEeaRytIQfQ43Wg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "unit": "dB",
-                       "description": [
-                               "Currently measured signal to (noise+interference) ratio of the combined signals."
-                       ]
-               },
-               "airInterfaceDiversityStatus": {
-                       "id": "airInterfaceDiversityStatus",
-                       "uml-id": "_EKZYcJOXEeWz-6sqLzUedw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_DUJs8JOXEeWz-6sqLzUedw",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "description": [
-                               "Status of the air interface bundle."
-                       ]
-               },
-               "AirInterfaceDiversityCurrentProblems": {
-                       "id": "AirInterfaceDiversityCurrentProblems",
-                       "uml-id": "_CAvhEHvtEeWzooKF5kx0aw",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "AirInterfaceDiversityCurrentPerformance": {
-                       "id": "AirInterfaceDiversityCurrentPerformance",
-                       "uml-id": "_GIsAQKjDEeWlgMiFXLmCIQ",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the air interface diversity configuration at a particular moment."
-                       ]
-               },
-               "AirInterfaceDiversityHistoricalPerformances": {
-                       "id": "AirInterfaceDiversityHistoricalPerformances",
-                       "uml-id": "_8IIu8HvsEeWzooKF5kx0aw",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the air interface diversity configuration for a pre-defined measurement interval."
-                       ]
-               },
-               "MW_PureEthernetStructure_Pac": {
-                       "id": "MW_PureEthernetStructure_Pac",
-                       "uml-id": "__OTQ0UaeEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "The pureEthernetStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting Ethernet traffic only."
-                       ]
-               },
-               "pureEthernetStructureCapability": {
-                       "id": "pureEthernetStructureCapability",
-                       "uml-id": "_dJcm0VAfEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "__OTQ4EaeEeas2eqI3oKNtg",
-                       "order-number": 2,
-                       "is-read-only": true
-               },
-               "pureEthernetStructureConfiguration": {
-                       "id": "pureEthernetStructureConfiguration",
-                       "uml-id": "_kHaeglAfEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "__OTQ8UaeEeas2eqI3oKNtg",
-                       "order-number": 3,
-                       "is-read-only": false
-               },
-               "pureEthernetStructureStatus": {
-                       "id": "pureEthernetStructureStatus",
-                       "uml-id": "_lsNSEFAfEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "__OTQ_UaeEeas2eqI3oKNtg",
-                       "order-number": 4,
-                       "is-read-only": true
-               },
-               "pureEthernetStructureCurrentProblems": {
-                       "id": "pureEthernetStructureCurrentProblems",
-                       "uml-id": "_nCtK8lAfEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "__OTRCUaeEeas2eqI3oKNtg",
-                       "order-number": 5,
-                       "is-read-only": true
-               },
-               "pureEthernetStructureCurrentPerformance": {
-                       "id": "pureEthernetStructureCurrentPerformance",
-                       "uml-id": "_ocuR4VAfEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "__OTRD0aeEeas2eqI3oKNtg",
-                       "order-number": 6,
-                       "is-read-only": true
-               },
-               "pureEthernetStructureHistoricalPerformances": {
-                       "id": "pureEthernetStructureHistoricalPerformances",
-                       "uml-id": "_Xb6U4FAiEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "__OTRE0aeEeas2eqI3oKNtg",
-                       "order-number": 7,
-                       "is-read-only": true
-               },
-               "PureEthernetStructureCapability": {
-                       "id": "PureEthernetStructureCapability",
-                       "uml-id": "__OTQ4EaeEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "No TDM transport."
-                       ]
-               },
-               "PureEthernetStructureConfiguration": {
-                       "id": "PureEthernetStructureConfiguration",
-                       "uml-id": "__OTQ8UaeEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "PureEthernetStructureStatus": {
-                       "id": "PureEthernetStructureStatus",
-                       "uml-id": "__OTQ_UaeEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "PureEthernetStructureCurrentProblems": {
-                       "id": "PureEthernetStructureCurrentProblems",
-                       "uml-id": "__OTRCUaeEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "PureEthernetStructureCurrentPerformance": {
-                       "id": "PureEthernetStructureCurrentPerformance",
-                       "uml-id": "__OTRD0aeEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the structure of an pure Ethernet microwave at a particular moment."
-                       ]
-               },
-               "PureEthernetStructureHistoricalPerformances": {
-                       "id": "PureEthernetStructureHistoricalPerformances",
-                       "uml-id": "__OTRE0aeEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the structure of an pure Ethernet microwave for a pre-defined measurement interval."
-                       ]
-               },
-               "MW_HybridMwStructure_Pac": {
-                       "id": "MW_HybridMwStructure_Pac",
-                       "uml-id": "_Bzxo0UagEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "The HybridMwStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM and Ethernet traffic."
-                       ]
-               },
-               "hybridMwStructureCapability": {
-                       "id": "hybridMwStructureCapability",
-                       "uml-id": "_2nQhIFAjEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_Bzxo4EagEeas2eqI3oKNtg",
-                       "order-number": 2,
-                       "is-read-only": true
-               },
-               "hybridMwStructureConfiguration": {
-                       "id": "hybridMwStructureConfiguration",
-                       "uml-id": "_3-63oVAjEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_Bzxo8UagEeas2eqI3oKNtg",
-                       "order-number": 3,
-                       "is-read-only": false
-               },
-               "hybridMwStructureStatus": {
-                       "id": "hybridMwStructureStatus",
-                       "uml-id": "_5fWvolAjEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_Bzxo_UagEeas2eqI3oKNtg",
-                       "order-number": 4,
-                       "is-read-only": true
-               },
-               "hybridMwStructureCurrentProblems": {
-                       "id": "hybridMwStructureCurrentProblems",
-                       "uml-id": "_6ZbLMlAjEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_BzxpCUagEeas2eqI3oKNtg",
-                       "order-number": 5,
-                       "is-read-only": true
-               },
-               "hybridMwStructureCurrentPerformance": {
-                       "id": "hybridMwStructureCurrentPerformance",
-                       "uml-id": "_7FMFAFAjEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_BzxpD0agEeas2eqI3oKNtg",
-                       "order-number": 6,
-                       "is-read-only": true
-               },
-               "hybridMwStructureHistoricalPerformances": {
-                       "id": "hybridMwStructureHistoricalPerformances",
-                       "uml-id": "_8CWQ0VAjEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_BzxpE0agEeas2eqI3oKNtg",
-                       "order-number": 7,
-                       "is-read-only": true
-               },
-               "HybridMwStructureCapability": {
-                       "id": "HybridMwStructureCapability",
-                       "uml-id": "_Bzxo4EagEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "TDM transport is available."
-                       ]
-               },
-               "structureId": {
-                       "id": "structureId",
-                       "uml-id": "_Bzxo5EagEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_SU3Q4I30EeO38ZmbECnvbg",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "is-key": 1,
-                       "description": [
-                               "Identifies the Structure for bundling and container."
-                       ]
-               },
-               "supportedTdmStructureTypesList": {
-                       "id": "supportedTdmStructureTypesList",
-                       "uml-id": "_tA-uQEduEeax2rWez10Siw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_jRAQsEdoEeax2rWez10Siw",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "description": [
-                               "Lists the TDM frame types that are supported."
-                       ]
-               },
-               "HybridMwStructureConfiguration": {
-                       "id": "HybridMwStructureConfiguration",
-                       "uml-id": "_Bzxo8UagEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "structureType": {
-                       "id": "structureType",
-                       "uml-id": "_cduh4EdvEeax2rWez10Siw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_jRAQsEdoEeax2rWez10Siw",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "TDM frame to be applied."
-                       ]
-               },
-               "numberOfTdmSegmentsToBeReserved": {
-                       "id": "numberOfTdmSegmentsToBeReserved",
-                       "uml-id": "_Bzxo9EagEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "Allows to configure the number of segments reserved for TDM frames of the type specified in HybridMwStructure::HybridMwStructureConfiguration::structureType"
-                       ]
-               },
-               "HybridMwStructureStatus": {
-                       "id": "HybridMwStructureStatus",
-                       "uml-id": "_Bzxo_UagEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "segmentStatusList": {
-                       "id": "segmentStatusList",
-                       "uml-id": "_BzxpAEagEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_KwZVcMUCEeW3xsRKtpCLuA",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "description": [
-                               "Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1"
-                       ]
-               },
-               "HybridMwStructureCurrentProblems": {
-                       "id": "HybridMwStructureCurrentProblems",
-                       "uml-id": "_BzxpCUagEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "HybridMwStructureCurrentPerformance": {
-                       "id": "HybridMwStructureCurrentPerformance",
-                       "uml-id": "_BzxpD0agEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the structure of a hybrid microwave at a particular moment."
-                       ]
-               },
-               "HybridMwStructureHistoricalPerformances": {
-                       "id": "HybridMwStructureHistoricalPerformances",
-                       "uml-id": "_BzxpE0agEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the structure of a hybrid microwave for a pre-defined measurement interval."
-                       ]
-               },
-               "MW_EthernetContainer_Pac": {
-                       "id": "MW_EthernetContainer_Pac",
-                       "uml-id": "_4uEBgUafEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "LTP(Client)"
-                       ]
-               },
-               "ethernetContainerCapability": {
-                       "id": "ethernetContainerCapability",
-                       "uml-id": "_vWwdEVAlEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_4uEBmEafEeas2eqI3oKNtg",
-                       "order-number": 2,
-                       "is-read-only": true
-               },
-               "ethernetContainerConfiguration": {
-                       "id": "ethernetContainerConfiguration",
-                       "uml-id": "_v8JCEFAlEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_4uEBwUafEeas2eqI3oKNtg",
-                       "order-number": 3,
-                       "is-read-only": false
-               },
-               "ethernetContainerStatus": {
-                       "id": "ethernetContainerStatus",
-                       "uml-id": "_wvtNAVAlEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_4uECAUafEeas2eqI3oKNtg",
-                       "order-number": 4,
-                       "is-read-only": true
-               },
-               "ethernetContainerCurrentProblems": {
-                       "id": "ethernetContainerCurrentProblems",
-                       "uml-id": "_xUWyMlAlEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_4uECDUafEeas2eqI3oKNtg",
-                       "order-number": 5,
-                       "is-read-only": true
-               },
-               "ethernetContainerCurrentPerformance": {
-                       "id": "ethernetContainerCurrentPerformance",
-                       "uml-id": "_x7K6kFAlEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_4uECE0afEeas2eqI3oKNtg",
-                       "order-number": 6,
-                       "is-read-only": true
-               },
-               "ethernetContainerHistoricalPerformances": {
-                       "id": "ethernetContainerHistoricalPerformances",
-                       "uml-id": "_ynDJIFAlEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_4uECF0afEeas2eqI3oKNtg",
-                       "order-number": 7,
-                       "is-read-only": true
-               },
-               "EthernetContainerCapability": {
-                       "id": "EthernetContainerCapability",
-                       "uml-id": "_4uEBmEafEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "bundlingIsAvail": {
-                       "id": "bundlingIsAvail",
-                       "uml-id": "_96g-oEanEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "description": [
-                               "This attribute has to be set on 'true', if the device allows combining resources from several air interfaces for transporting this Ethernet container."
-                       ]
-               },
-               "packetCompressionIsAvail": {
-                       "id": "packetCompressionIsAvail",
-                       "uml-id": "_4uEBp0afEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "description": [
-                               "In case packet compression can be activated, but not configured to a certain type, packetCompressionAvail shall be set on 'true', but none of the compression level specific booleans."
-                       ]
-               },
-               "layer2CompressionIsAvail": {
-                       "id": "layer2CompressionIsAvail",
-                       "uml-id": "_4uEBqkafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "description": [
-                               "Packet compression on layer 2 available at the device."
-                       ]
-               },
-               "vlanCompressionIsAvail": {
-                       "id": "vlanCompressionIsAvail",
-                       "uml-id": "_4uEBrUafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 4,
-                       "is-read-only": true,
-                       "description": [
-                               "Packet compression on VLAN layer available at the device."
-                       ]
-               },
-               "qInQCompressionIsAvail": {
-                       "id": "qInQCompressionIsAvail",
-                       "uml-id": "_4uEBsEafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 5,
-                       "is-read-only": true,
-                       "description": [
-                               "Packet compression on layer of a second VLAN available at the device."
-                       ]
-               },
-               "mplsCompressionIsAvail": {
-                       "id": "mplsCompressionIsAvail",
-                       "uml-id": "_4uEBs0afEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 6,
-                       "is-read-only": true,
-                       "description": [
-                               "Packet compression on mpls layer available at the device."
-                       ]
-               },
-               "ipv4CompressionIsAvail": {
-                       "id": "ipv4CompressionIsAvail",
-                       "uml-id": "_4uEBtkafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 7,
-                       "is-read-only": true,
-                       "description": [
-                               "Packet compression on layer 3 for IPv4 available at the device."
-                       ]
-               },
-               "ipv6CompressionIsAvail": {
-                       "id": "ipv6CompressionIsAvail",
-                       "uml-id": "_4uEBuUafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 8,
-                       "is-read-only": true,
-                       "description": [
-                               "Packet compression on layer 3 for IPv6 available at the device."
-                       ]
-               },
-               "layer4CompressionIsAvail": {
-                       "id": "layer4CompressionIsAvail",
-                       "uml-id": "_4uEBvEafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 9,
-                       "is-read-only": true,
-                       "description": [
-                               "Packet compression on layer 4 (TCP and UDP header) available at the device."
-                       ]
-               },
-               "encryptionIsAvail": {
-                       "id": "encryptionIsAvail",
-                       "uml-id": "_4uPM8E58EeaCk6G-lyG1OQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 10,
-                       "is-read-only": true,
-                       "description": [
-                               "Shall be marked 'true', if Ethernet payload encryption is available."
-                       ]
-               },
-               "EthernetContainerConfiguration": {
-                       "id": "EthernetContainerConfiguration",
-                       "uml-id": "_4uEBwUafEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "segmentsIDList": {
-                       "id": "segmentsIDList",
-                       "uml-id": "_4uEBy0afEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_Nd1F4MKuEeWwLJhHQlOGSQ",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list."
-                       ]
-               },
-               "packetCompressionIsOn": {
-                       "id": "packetCompressionIsOn",
-                       "uml-id": "_4uEB1UafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "description": [
-                               "In case packet compression is activated, but no type is activated, it is assumed that the device chooses the optimum."
-                       ]
-               },
-               "layer2CompressionIsOn": {
-                       "id": "layer2CompressionIsOn",
-                       "uml-id": "_4uEB2kafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 4,
-                       "is-read-only": false,
-                       "description": [
-                               "Packet compression on layer 2 configured at the device."
-                       ]
-               },
-               "vlanCompressionIsOn": {
-                       "id": "vlanCompressionIsOn",
-                       "uml-id": "_4uEB30afEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 5,
-                       "is-read-only": false,
-                       "description": [
-                               "Packet compression on VLAN layer configured at the device."
-                       ]
-               },
-               "qInQCompressionIsOn": {
-                       "id": "qInQCompressionIsOn",
-                       "uml-id": "_4uEB5EafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 6,
-                       "is-read-only": false,
-                       "description": [
-                               "Packet compression on layer of a second VLAN configured at the device."
-                       ]
-               },
-               "mplsCompressionIsOn": {
-                       "id": "mplsCompressionIsOn",
-                       "uml-id": "_4uEB6UafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 7,
-                       "is-read-only": false,
-                       "description": [
-                               "Packet compression on MPLS layer configured at the device."
-                       ]
-               },
-               "ipv4CompressionIsOn": {
-                       "id": "ipv4CompressionIsOn",
-                       "uml-id": "_4uEB7kafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 8,
-                       "is-read-only": false,
-                       "description": [
-                               "Packet compression on layer 3 for IPv4 configured at the device."
-                       ]
-               },
-               "ipv6CompressionIsOn": {
-                       "id": "ipv6CompressionIsOn",
-                       "uml-id": "_4uEB80afEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 9,
-                       "is-read-only": false,
-                       "description": [
-                               "Packet compression on layer 3 for IPv6 configured at the device."
-                       ]
-               },
-               "layer4CompressionIsOn": {
-                       "id": "layer4CompressionIsOn",
-                       "uml-id": "_4uEB-EafEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 10,
-                       "is-read-only": false,
-                       "description": [
-                               "Packet compression on layer 4 (TCP and UDP header) configured at the device."
-                       ]
-               },
-               "encryptionIsOn": {
-                       "id": "encryptionIsOn",
-                       "uml-id": "_uI7bIE58EeaCk6G-lyG1OQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 11,
-                       "is-read-only": false,
-                       "description": [
-                               "Activates encryption of the Ethernet payload."
-                       ]
-               },
-               "cryptographicKey": {
-                       "id": "cryptographicKey",
-                       "uml-id": "_psRpoE58EeaCk6G-lyG1OQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 12,
-                       "is-read-only": false,
-                       "description": [
-                               "Key for transforming plaintext into cipher text data."
-                       ]
-               },
-               "EthernetContainerStatus": {
-                       "id": "EthernetContainerStatus",
-                       "uml-id": "_4uECAUafEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "EthernetContainerCurrentProblems": {
-                       "id": "EthernetContainerCurrentProblems",
-                       "uml-id": "_4uECDUafEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "EthernetContainerCurrentPerformance": {
-                       "id": "EthernetContainerCurrentPerformance",
-                       "uml-id": "_4uECE0afEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the Ethernet container at a particular moment."
-                       ]
-               },
-               "EthernetContainerHistoricalPerformances": {
-                       "id": "EthernetContainerHistoricalPerformances",
-                       "uml-id": "_4uECF0afEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the Ethernet container for a pre-defined measurement interval."
-                       ]
-               },
-               "MW_TdmContainer_Pac": {
-                       "id": "MW_TdmContainer_Pac",
-                       "uml-id": "_ecCeMUaqEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "LTP(Client)"
-                       ]
-               },
-               "layerProtocol": {
-                       "id": "layerProtocol",
-                       "uml-id": "_m_QIglpKEeax66gMnmfzpQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_gROecFYXEeOVGaP4lO41SQ",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "is-key": 1,
-                       "description": [
-                               "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid"
-                       ]
-               },
-               "tdmContainerCapability": {
-                       "id": "tdmContainerCapability",
-                       "uml-id": "_-bytElAmEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_ecCeSEaqEeas2eqI3oKNtg",
-                       "order-number": 2,
-                       "is-read-only": true
-               },
-               "tdmContainerConfiguration": {
-                       "id": "tdmContainerConfiguration",
-                       "uml-id": "__LKUglAmEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_ecCecUaqEeas2eqI3oKNtg",
-                       "order-number": 3,
-                       "is-read-only": false
-               },
-               "tdmContainerStatus": {
-                       "id": "tdmContainerStatus",
-                       "uml-id": "__vOq4lAmEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_ecCesUaqEeas2eqI3oKNtg",
-                       "order-number": 4,
-                       "is-read-only": true
-               },
-               "tdmContainerCurrentProblems": {
-                       "id": "tdmContainerCurrentProblems",
-                       "uml-id": "_AWdqAlAnEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_ecCevUaqEeas2eqI3oKNtg",
-                       "order-number": 5,
-                       "is-read-only": true
-               },
-               "tdmContainerCurrentPerformance": {
-                       "id": "tdmContainerCurrentPerformance",
-                       "uml-id": "_AzXoclAnEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_ecCew0aqEeas2eqI3oKNtg",
-                       "order-number": 6,
-                       "is-read-only": true
-               },
-               "tdmContainerHistoricalPerformances": {
-                       "id": "tdmContainerHistoricalPerformances",
-                       "uml-id": "_BXIc0lAnEea9Wek8ROfqag",
-                       "uml-type": "ownedAttribute",
-                       "type": "_ecCex0aqEeas2eqI3oKNtg",
-                       "order-number": 7,
-                       "is-read-only": true
-               },
-               "TdmContainerCapability": {
-                       "id": "TdmContainerCapability",
-                       "uml-id": "_ecCeSEaqEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Bundling is not available."
-                       ]
-               },
-               "supportedTdmContainerTypesList": {
-                       "id": "supportedTdmContainerTypesList",
-                       "uml-id": "_R5hG0EdwEeax2rWez10Siw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_rgbigEdjEeax2rWez10Siw",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "description": [
-                               "Lists the TDM containers that are supported."
-                       ]
-               },
-               "supportedAlarms": {
-                       "id": "supportedAlarms",
-                       "uml-id": "_ecCeb0aqEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 92,
-                       "is-read-only": true,
-                       "description": [
-                               "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device."
-                       ]
-               },
-               "TdmContainerConfiguration": {
-                       "id": "TdmContainerConfiguration",
-                       "uml-id": "_ecCecUaqEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "containerID": {
-                       "id": "containerID",
-                       "uml-id": "_ecCeS0aqEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "description": [
-                               "ContainterID in Netconf must be the same as EthernetPortID in OpenFlow so a connection can be made between the two items, which separately exist in the controller."
-                       ]
-               },
-               "containerType": {
-                       "id": "containerType",
-                       "uml-id": "_o_-2oEdxEeax2rWez10Siw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_rgbigEdjEeax2rWez10Siw",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "Type of TDM container."
-                       ]
-               },
-               "segmentID": {
-                       "id": "segmentID",
-                       "uml-id": "_ecCee0aqEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_Nd1F4MKuEeWwLJhHQlOGSQ",
-                       "order-number": 3,
-                       "is-read-only": false,
-                       "description": [
-                               "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;"
-                       ]
-               },
-               "problemKindSeverityList": {
-                       "id": "problemKindSeverityList",
-                       "uml-id": "_ecCerUaqEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_OMPgwGz0Eeaf-__BRLM84g",
-                       "order-number": 94,
-                       "is-read-only": false,
-                       "description": [
-                               "Severity of the problem to be configured."
-                       ]
-               },
-               "TdmContainerStatus": {
-                       "id": "TdmContainerStatus",
-                       "uml-id": "_ecCesUaqEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "lastStatusChange": {
-                       "id": "lastStatusChange",
-                       "uml-id": "_ecCetEaqEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_oGqi1lLNEeO75dO39GbF8Q",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "description": [
-                               "_format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes."
-                       ]
-               },
-               "TdmContainerCurrentProblems": {
-                       "id": "TdmContainerCurrentProblems",
-                       "uml-id": "_ecCevUaqEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false
-               },
-               "currentProblemList": {
-                       "id": "currentProblemList",
-                       "uml-id": "_ecCewEaqEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "__h1n4MXpEeWJ6KZuc0h_vw",
-                       "order-number": 1,
-                       "is-read-only": true
-               },
-               "TdmContainerCurrentPerformance": {
-                       "id": "TdmContainerCurrentPerformance",
-                       "uml-id": "_ecCew0aqEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the TDM container at a particular moment."
-                       ]
-               },
-               "currentPerformanceDataList": {
-                       "id": "currentPerformanceDataList",
-                       "uml-id": "_ecCexkaqEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_pA5AQGz6Eeaf-__BRLM84g",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "description": [
-                               "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too."
-                       ]
-               },
-               "TdmContainerHistoricalPerformances": {
-                       "id": "TdmContainerHistoricalPerformances",
-                       "uml-id": "_ecCex0aqEeas2eqI3oKNtg",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "Aggregated performance information of the TDM container for a pre-defined measurement interval."
-                       ]
-               },
-               "historicalPerformanceDataList": {
-                       "id": "historicalPerformanceDataList",
-                       "uml-id": "_ecCeykaqEeas2eqI3oKNtg",
-                       "uml-type": "ownedAttribute",
-                       "type": "_pTaToGz6Eeaf-__BRLM84g",
-                       "order-number": 1,
-                       "is-read-only": true
-               },
-               "MwCurrentProblem": {
-                       "id": "MwCurrentProblem",
-                       "uml-id": "_LKRM4JNQEeWuAeXkr703BA",
-                       "uml-type": "uml:Class",
-                       "is-read-only": false,
-                       "description": [
-                               "According to ITU-T G.874.1?"
-                       ]
-               },
-               "sequenceNumber": {
-                       "id": "sequenceNumber",
-                       "uml-id": "_YadH4CJbEeaHpPYk5sscIg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "is-key": 1,
-                       "description": [
-                               "Unique sequence number of the current problem object."
-                       ]
-               },
-               "timeStamp": {
-                       "id": "timeStamp",
-                       "uml-id": "_lB4EQJN1EeWuAeXkr703BA",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_oGqi1lLNEeO75dO39GbF8Q",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "description": [
-                               "_format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes."
-                       ]
-               },
-               "channelPlanType": {
-                       "id": "channelPlanType",
-                       "uml-id": "_oQf6IPXSEeW9zIqh2WHHww",
-                       "uml-type": "uml:DataType"
-               },
-               "supportedChannelPlan": {
-                       "id": "supportedChannelPlan",
-                       "uml-id": "_8gpNIHfcEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "is-key": 1,
-                       "description": [
-                               "Unique name (e.g. CEPT/ERC/REC (01) 04 Annex 5) of an international agreement that describe allocations of frequency channels, to which this air interface complies. Corresponding channel plans to be delivered by the hardware vendor and to be stored by the operator in the controller/application attached database."
-                       ]
-               },
-               "duplexDistanceIsVariable": {
-                       "id": "duplexDistanceIsVariable",
-                       "uml-id": "_OPxkQK42EeWxIavXll_b0A",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "description": [
-                               "To be set on 'true', if the distance between transmitted and received frequency is variable."
-                       ]
-               },
-               "duplexDistance": {
-                       "id": "duplexDistance",
-                       "uml-id": "_BEr_wIMEEeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "unit": "kHz",
-                       "description": [
-                               "Distance between transmitted and received frequency."
-                       ]
-               },
-               "autoFreqSelectIsAvail": {
-                       "id": "autoFreqSelectIsAvail",
-                       "uml-id": "_te6XMIL8EeWMcJAvkeTn2w",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 4,
-                       "is-read-only": true,
-                       "description": [
-                               "In case the microwave radio is capable of automatically selecting the transmit frequency in unlicensed bands, this field shall contain a 'true'."
-                       ]
-               },
-               "transmissionModeList": {
-                       "id": "transmissionModeList",
-                       "uml-id": "_nwbvcPXREeW9zIqh2WHHww",
-                       "uml-type": "ownedAttribute",
-                       "type": "_zG34sPXQEeW9zIqh2WHHww",
-                       "order-number": 5,
-                       "is-read-only": true
-               },
-               "transmissionModeType": {
-                       "id": "transmissionModeType",
-                       "uml-id": "_zG34sPXQEeW9zIqh2WHHww",
-                       "uml-type": "uml:DataType"
-               },
-               "transmissionModeId": {
-                       "id": "transmissionModeId",
-                       "uml-id": "_afdYoNumEeWHIeLurhMv0A",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_SU3Q4I30EeO38ZmbECnvbg",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "is-key": 1,
-                       "description": [
-                               "Indentifies the transmissionMode for internal reference."
-                       ]
-               },
-               "channelBandwidth": {
-                       "id": "channelBandwidth",
-                       "uml-id": "_FteJEHfdEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "unit": "kHz",
-                       "description": [
-                               "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;"
-                       ]
-               },
-               "modulationScheme": {
-                       "id": "modulationScheme",
-                       "uml-id": "_G4H-UHfdEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "unit": "symbols",
-                       "description": [
-                               "Modulation scheme, which is base to the other characteristics described in the same transmissionModeType data type. The modulation scheme shall be described by the number of symbols (e.g. BPSK->'2' or 256QAM->'256')."
-                       ]
-               },
-               "informationRate": {
-                       "id": "informationRate",
-                       "uml-id": "_jE7-EHf4EeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 4,
-                       "is-read-only": true,
-                       "unit": "%",
-                       "description": [
-                               "Information rate of the coding scheme in %."
-                       ]
-               },
-               "txPowerMin": {
-                       "id": "txPowerMin",
-                       "uml-id": "_I3nJ0HfdEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 5,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Value of the minimum transmit power the modem can operate in dBm."
-                       ]
-               },
-               "txPowerMax": {
-                       "id": "txPowerMax",
-                       "uml-id": "_KB7A0HfdEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 6,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Value of the maximum transmit power the modem can operate in dBm."
-                       ]
-               },
-               "rxThreshold": {
-                       "id": "rxThreshold",
-                       "uml-id": "_LCr6QHfdEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 7,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Value of the receive level required to decode the received signal with a Bit Error Rate of 1e-6 or less."
-                       ]
-               },
-               "amUpshiftLevel": {
-                       "id": "amUpshiftLevel",
-                       "uml-id": "_MGguwHfdEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 8,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Value of the receive level that has to be exceeded to shift into a higher modulation scheme."
-                       ]
-               },
-               "amDownshiftLevel": {
-                       "id": "amDownshiftLevel",
-                       "uml-id": "_NIvAwHfdEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 9,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Value of the receive level that has to be exceeded for not shifting into a lower modulation scheme."
-                       ]
-               },
-               "xpicIsAvail": {
-                       "id": "xpicIsAvail",
-                       "uml-id": "_QHd9kHfvEeW-h9gN8LYm4Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 10,
-                       "is-read-only": true,
-                       "description": [
-                               "In case the Air Interface Port is capable of XPIC, this field shall contain a 'true'."
-                       ]
-               },
-               "airInterfaceProblemSeverityType": {
-                       "id": "airInterfaceProblemSeverityType",
-                       "uml-id": "_ZKdWgGnuEeaZwMagYjVCHQ",
-                       "uml-type": "uml:DataType"
-               },
-               "airInterfaceCurrentProblemType": {
-                       "id": "airInterfaceCurrentProblemType",
-                       "uml-id": "_umuZUMXjEeW3xsRKtpCLuA",
-                       "uml-type": "uml:DataType"
-               },
-               "airInterfacePerformanceType": {
-                       "id": "airInterfacePerformanceType",
-                       "uml-id": "_OvFYwEQbEea3g-FxAUaYRg",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Consolidated performance information of the air interface."
-                       ]
-               },
-               "es": {
-                       "id": "es",
-                       "uml-id": "_DbVzpUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "unit": "s",
-                       "description": [
-                               "Number of errored seconds."
-                       ]
-               },
-               "ses": {
-                       "id": "ses",
-                       "uml-id": "_DbVzqUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "unit": "s",
-                       "description": [
-                               "Number of severely errored seconds."
-                       ]
-               },
-               "cses": {
-                       "id": "cses",
-                       "uml-id": "_DbVzrUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "unit": "s",
-                       "description": [
-                               "Number of consecutive severely errored seconds."
-                       ]
-               },
-               "unavailability": {
-                       "id": "unavailability",
-                       "uml-id": "_DbVzsUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 4,
-                       "is-read-only": true,
-                       "unit": "s",
-                       "description": [
-                               "Total time of unavailability in seconds."
-                       ]
-               },
-               "txLevelMin": {
-                       "id": "txLevelMin",
-                       "uml-id": "_DbVztUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 5,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Minimum transmit power. Signed integers are required."
-                       ]
-               },
-               "txLevelMax": {
-                       "id": "txLevelMax",
-                       "uml-id": "_DbVzuUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 6,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Maximum transmit power. Signed integers are required."
-                       ]
-               },
-               "txLevelAvg": {
-                       "id": "txLevelAvg",
-                       "uml-id": "_DbVzvUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 7,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Averaged transmit power. Signed integers are required."
-                       ]
-               },
-               "rxLevelMin": {
-                       "id": "rxLevelMin",
-                       "uml-id": "_DbVzwUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 8,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Minimum receive level. Signed integers are required."
-                       ]
-               },
-               "rxLevelMax": {
-                       "id": "rxLevelMax",
-                       "uml-id": "_DbVzxUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 9,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Maximum receive level. Signed integers are required."
-                       ]
-               },
-               "rxLevelAvg": {
-                       "id": "rxLevelAvg",
-                       "uml-id": "_DbVzyUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 10,
-                       "is-read-only": true,
-                       "unit": "dBm",
-                       "description": [
-                               "Averaged receive level. Signed integers are required."
-                       ]
-               },
-               "time2Symbols": {
-                       "id": "time2Symbols",
-                       "uml-id": "_DbVzzUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 11,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time4SymbolsS": {
-                       "id": "time4SymbolsS",
-                       "uml-id": "_DbVz0kQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 12,
-                       "is-read-only": true,
-                       "unit": "s",
-                       "description": [
-                               "Sum of all seconds the transmitter operated in e.g. 4QAM strong."
-                       ]
-               },
-               "time4Symbols": {
-                       "id": "time4Symbols",
-                       "uml-id": "_DbVz2EQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 13,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time8Symbols": {
-                       "id": "time8Symbols",
-                       "uml-id": "_DbVz3UQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 14,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time16SymbolsS": {
-                       "id": "time16SymbolsS",
-                       "uml-id": "_DbVz4kQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 15,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time16Symbols": {
-                       "id": "time16Symbols",
-                       "uml-id": "_DbVz50QbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 16,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time32Symbols": {
-                       "id": "time32Symbols",
-                       "uml-id": "_DbVz7EQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 17,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time64Symbols": {
-                       "id": "time64Symbols",
-                       "uml-id": "_DbVz8UQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 18,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time128Symbols": {
-                       "id": "time128Symbols",
-                       "uml-id": "_DbVz9kQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 19,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time256Symbols": {
-                       "id": "time256Symbols",
-                       "uml-id": "_DbVz-0QbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 20,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time512Symbols": {
-                       "id": "time512Symbols",
-                       "uml-id": "_DbV0AEQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 21,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time512SymbolsL": {
-                       "id": "time512SymbolsL",
-                       "uml-id": "_DbV0BUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 22,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time1024Symbols": {
-                       "id": "time1024Symbols",
-                       "uml-id": "_DbV0CkQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 23,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time1024SymbolsL": {
-                       "id": "time1024SymbolsL",
-                       "uml-id": "_DbV0D0QbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 24,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time2048Symbols": {
-                       "id": "time2048Symbols",
-                       "uml-id": "_DbV0FEQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 25,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time2048SymbolsL": {
-                       "id": "time2048SymbolsL",
-                       "uml-id": "_DbV0GUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 26,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time4096Symbols": {
-                       "id": "time4096Symbols",
-                       "uml-id": "_DbV0HkQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 27,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time4096SymbolsL": {
-                       "id": "time4096SymbolsL",
-                       "uml-id": "_DbV0I0QbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 28,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time8192Symbols": {
-                       "id": "time8192Symbols",
-                       "uml-id": "_DbV0KEQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 29,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "time8192SymbolsL": {
-                       "id": "time8192SymbolsL",
-                       "uml-id": "_DbV0LUQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 30,
-                       "is-read-only": true,
-                       "unit": "s"
-               },
-               "xpdMin": {
-                       "id": "xpdMin",
-                       "uml-id": "_DbV0PkQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 34,
-                       "is-read-only": true,
-                       "unit": "dB",
-                       "description": [
-                               "Minimum cross polarization discrimination."
-                       ]
-               },
-               "xpdMax": {
-                       "id": "xpdMax",
-                       "uml-id": "_DbV0QkQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 35,
-                       "is-read-only": true,
-                       "unit": "dB",
-                       "description": [
-                               "Maximum cross polarization discrimination."
-                       ]
-               },
-               "xpdAvg": {
-                       "id": "xpdAvg",
-                       "uml-id": "_DbV0RkQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 36,
-                       "is-read-only": true,
-                       "unit": "dB",
-                       "description": [
-                               "Averaged cross polarization discrimination."
-                       ]
-               },
-               "rfTempMin": {
-                       "id": "rfTempMin",
-                       "uml-id": "_DbV0SkQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 37,
-                       "is-read-only": true,
-                       "unit": "C",
-                       "description": [
-                               "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit."
-                       ]
-               },
-               "rfTempMax": {
-                       "id": "rfTempMax",
-                       "uml-id": "_DbV0TkQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 38,
-                       "is-read-only": true,
-                       "unit": "C",
-                       "description": [
-                               "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit."
-                       ]
-               },
-               "rfTempAvg": {
-                       "id": "rfTempAvg",
-                       "uml-id": "_DbV0UkQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 39,
-                       "is-read-only": true,
-                       "unit": "C",
-                       "description": [
-                               "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit."
-                       ]
-               },
-               "defectBlocksSum": {
-                       "id": "defectBlocksSum",
-                       "uml-id": "_DbV0VkQbEea3g-FxAUaYRg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 40,
-                       "is-read-only": true,
-                       "unit": "blocks",
-                       "description": [
-                               "Total number of blocks that were defect after receiving and could not be corrected by the FEC."
-                       ]
-               },
-               "airInterfaceCurrentPerformanceType": {
-                       "id": "airInterfaceCurrentPerformanceType",
-                       "uml-id": "_pQ_y4GoHEeaZwMagYjVCHQ",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Turns performance information into current performance information by inheriting from OTN_CurrentData."
-                       ]
-               },
-               "airInterfaceHistoricalPerformanceType": {
-                       "id": "airInterfaceHistoricalPerformanceType",
-                       "uml-id": "_t18kwGoHEeaZwMagYjVCHQ",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Turns performance information into historical performance information by inheriting from OTN_HistoryData."
-                       ]
-               },
-               "diversityType": {
-                       "id": "diversityType",
-                       "uml-id": "_pTliINyUEeW-SfXlFFFI0Q",
-                       "uml-type": "uml:DataType"
-               },
-               "diversityName": {
-                       "id": "diversityName",
-                       "uml-id": "_uYhboNyUEeW-SfXlFFFI0Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "is-key": 1,
-                       "description": [
-                               "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'"
-                       ]
-               },
-               "numberOfAirInterfacesMax": {
-                       "id": "numberOfAirInterfacesMax",
-                       "uml-id": "_wKDDoNyUEeW-SfXlFFFI0Q",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "unit": "air interfaces",
-                       "description": [
-                               "Maximum number of air interfaces that could be part of this kind of diversity."
-                       ]
-               },
-               "airInterfaceDiversityProblemSeverityType": {
-                       "id": "airInterfaceDiversityProblemSeverityType",
-                       "uml-id": "_2kMRYGzzEeaf-__BRLM84g",
-                       "uml-type": "uml:DataType"
-               },
-               "airInterfaceDiversityCurrentProblemType": {
-                       "id": "airInterfaceDiversityCurrentProblemType",
-                       "uml-id": "_z1XWgMXlEeWJ6KZuc0h_vw",
-                       "uml-type": "uml:DataType"
-               },
-               "airInterfaceDiversityPerformanceType": {
-                       "id": "airInterfaceDiversityPerformanceType",
-                       "uml-id": "_EH3QgEQdEea3g-FxAUaYRg",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Consolidated performance information of the air interface diversity group."
-                       ]
-               },
-               "snirMin": {
-                       "id": "snirMin",
-                       "uml-id": "_nG-NsEzvEeaRytIQfQ43Wg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "unit": "dB",
-                       "description": [
-                               "Minimum signal to (noise+interference) ratio of the combined signals."
-                       ]
-               },
-               "snirMax": {
-                       "id": "snirMax",
-                       "uml-id": "_n_OEUEzvEeaRytIQfQ43Wg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "unit": "dB",
-                       "description": [
-                               "Maximum signal to (noise+interference) ratio of the combined signals."
-                       ]
-               },
-               "snirAvg": {
-                       "id": "snirAvg",
-                       "uml-id": "_oU3kMEzvEeaRytIQfQ43Wg",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "unit": "dB",
-                       "description": [
-                               "Average signal to (noise+interference) ratio of the combined signals."
-                       ]
-               },
-               "airInterfaceDiversityCurrentPerformanceType": {
-                       "id": "airInterfaceDiversityCurrentPerformanceType",
-                       "uml-id": "_n4wTgGz6Eeaf-__BRLM84g",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Turns performance information into current performance information by inheriting from OTN_CurrentData."
-                       ]
-               },
-               "airInterfaceDiversityHistoricalPerformanceType": {
-                       "id": "airInterfaceDiversityHistoricalPerformanceType",
-                       "uml-id": "_pG0pIGz6Eeaf-__BRLM84g",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Turns performance information into historical performance information by inheriting from OTN_HistoryData."
-                       ]
-               },
-               "tdmStructureType": {
-                       "id": "tdmStructureType",
-                       "uml-id": "_jRAQsEdoEeax2rWez10Siw",
-                       "uml-type": "uml:DataType"
-               },
-               "tdmStructureName": {
-                       "id": "tdmStructureName",
-                       "uml-id": "_1bJF4EdoEeax2rWez10Siw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "is-key": 1,
-                       "description": [
-                               "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'"
-                       ]
-               },
-               "tdmSegmentSize": {
-                       "id": "tdmSegmentSize",
-                       "uml-id": "_hPq1oEdpEeax2rWez10Siw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "unit": "kbit/s",
-                       "description": [
-                               "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;"
-                       ]
-               },
-               "maxNumberOfSegmentsReservable": {
-                       "id": "maxNumberOfSegmentsReservable",
-                       "uml-id": "_EJnsgEdpEeax2rWez10Siw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EByte",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "unit": "segments",
-                       "description": [
-                               "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface."
-                       ]
-               },
-               "structureProblemSeverityType": {
-                       "id": "structureProblemSeverityType",
-                       "uml-id": "_LPgp4Gz0Eeaf-__BRLM84g",
-                       "uml-type": "uml:DataType"
-               },
-               "structureCurrentProblemType": {
-                       "id": "structureCurrentProblemType",
-                       "uml-id": "_UC0gAMXnEeWJ6KZuc0h_vw",
-                       "uml-type": "uml:DataType"
-               },
-               "structurePerformanceType": {
-                       "id": "structurePerformanceType",
-                       "uml-id": "_kzEicEQdEea3g-FxAUaYRg",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Consolidated performance information of the Structure."
-                       ]
-               },
-               "structureCurrentPerformanceType": {
-                       "id": "structureCurrentPerformanceType",
-                       "uml-id": "_o7jNQGz6Eeaf-__BRLM84g",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Turns performance information into current performance information by inheriting from OTN_CurrentData."
-                       ]
-               },
-               "structureHistoricalPerformanceType": {
-                       "id": "structureHistoricalPerformanceType",
-                       "uml-id": "_pNAJoGz6Eeaf-__BRLM84g",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Turns performance information into historical performance information by inheriting from OTN_HistoryData."
-                       ]
-               },
-               "tdmContainerType": {
-                       "id": "tdmContainerType",
-                       "uml-id": "_rgbigEdjEeax2rWez10Siw",
-                       "uml-type": "uml:DataType"
-               },
-               "tdmContainerName": {
-                       "id": "tdmContainerName",
-                       "uml-id": "_rgbigkdjEeax2rWez10Siw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "is-key": 1,
-                       "description": [
-                               "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'"
-                       ]
-               },
-               "tdmContainerSize": {
-                       "id": "tdmContainerSize",
-                       "uml-id": "_rgbihEdjEeax2rWez10Siw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "unit": "kbit/s",
-                       "description": [
-                               "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;"
-                       ]
-               },
-               "segmentIDType": {
-                       "id": "segmentIDType",
-                       "uml-id": "_Nd1F4MKuEeWwLJhHQlOGSQ",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once."
-                       ]
-               },
-               "structureIdRef": {
-                       "id": "structureIdRef",
-                       "uml-id": "_N4GKkMKvEeWwLJhHQlOGSQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_SU3Q4I30EeO38ZmbECnvbg",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "is-key": 1
-               },
-               "segmentIdRef": {
-                       "id": "segmentIdRef",
-                       "uml-id": "_nVubgMKvEeWwLJhHQlOGSQ",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "is-key": 2
-               },
-               "segmentStatusType": {
-                       "id": "segmentStatusType",
-                       "uml-id": "_KwZVcMUCEeW3xsRKtpCLuA",
-                       "uml-type": "uml:DataType"
-               },
-               "segmentStatusTypeId": {
-                       "id": "segmentStatusTypeId",
-                       "uml-id": "_7JBAYOLbEeWM2vUDE3Xqhw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#EShort",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "is-key": 1
-               },
-               "segmentIsReservedForTdm": {
-                       "id": "segmentIsReservedForTdm",
-                       "uml-id": "__1DMwMUCEeW3xsRKtpCLuA",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "description": [
-                               "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm."
-                       ]
-               },
-               "operationalStatus": {
-                       "id": "operationalStatus",
-                       "uml-id": "_ZA94EMUCEeW3xsRKtpCLuA",
-                       "uml-type": "ownedAttribute",
-                       "type": "../OnfModel-CoreModel/CoreModel.uml#_lNclkLEtEeSZUdYfPSdgew",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "description": [
-                               "Current operational status of each segment."
-                       ]
-               },
-               "containerProblemSeverityType": {
-                       "id": "containerProblemSeverityType",
-                       "uml-id": "_OMPgwGz0Eeaf-__BRLM84g",
-                       "uml-type": "uml:DataType"
-               },
-               "problemKindName": {
-                       "id": "problemKindName",
-                       "uml-id": "_OMQH0Gz0Eeaf-__BRLM84g",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": false,
-                       "is-key": 1,
-                       "description": [
-                               "Name of the alarm according to Container::ContainerCapability::supportedAlarms"
-                       ]
-               },
-               "problemKindSeverity": {
-                       "id": "problemKindSeverity",
-                       "uml-id": "_OMQH02z0Eeaf-__BRLM84g",
-                       "uml-type": "ownedAttribute",
-                       "type": "_eIml0JH1EeWUdbnmmNiTAA",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "Severity of this type of alarm."
-                       ]
-               },
-               "containerCurrentProblemType": {
-                       "id": "containerCurrentProblemType",
-                       "uml-id": "__h1n4MXpEeWJ6KZuc0h_vw",
-                       "uml-type": "uml:DataType"
-               },
-               "problemName": {
-                       "id": "problemName",
-                       "uml-id": "__h1n4cXpEeWJ6KZuc0h_vw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "description": [
-                               "Name of the alarm according to Container::ContainerCapability::supportedAlarms"
-                       ]
-               },
-               "problemSeverity": {
-                       "id": "problemSeverity",
-                       "uml-id": "__h1n48XpEeWJ6KZuc0h_vw",
-                       "uml-type": "ownedAttribute",
-                       "type": "_eIml0JH1EeWUdbnmmNiTAA",
-                       "order-number": 2,
-                       "is-read-only": false,
-                       "description": [
-                               "Severity of the alarm."
-                       ]
-               },
-               "containerPerformanceType": {
-                       "id": "containerPerformanceType",
-                       "uml-id": "_U9tW0EQeEea3g-FxAUaYRg",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Consolidated performance information of the Container."
-                       ]
-               },
-               "txEthernetBytesMaxS": {
-                       "id": "txEthernetBytesMaxS",
-                       "uml-id": "_MaHB8H1IEeWHjMaYlqnBcw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 1,
-                       "is-read-only": true,
-                       "unit": "Bytes/s",
-                       "description": [
-                               "Required data volume = 31bit"
-                       ]
-               },
-               "txEthernetBytesMaxM": {
-                       "id": "txEthernetBytesMaxM",
-                       "uml-id": "_M3NNoH1IEeWHjMaYlqnBcw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#ELong",
-                       "order-number": 2,
-                       "is-read-only": true,
-                       "unit": "Bytes/min",
-                       "description": [
-                               "Required data volume = 37bit"
-                       ]
-               },
-               "txEthernetBytesSum": {
-                       "id": "txEthernetBytesSum",
-                       "uml-id": "_NWtNEH1IEeWHjMaYlqnBcw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/EcorePrimitiveTypes.library.uml#ELong",
-                       "order-number": 3,
-                       "is-read-only": true,
-                       "unit": "Bytes",
-                       "description": [
-                               "Required data volume = 47bit"
-                       ]
-               },
-               "timePeriod": {
-                       "id": "timePeriod",
-                       "uml-id": "_Nyme4H1IEeWHjMaYlqnBcw",
-                       "uml-type": "ownedAttribute",
-                       "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-                       "order-number": 4,
-                       "is-read-only": true,
-                       "unit": "s",
-                       "description": [
-                               "Required data volume = 17bit"
-                       ]
-               },
-               "containerCurrentPerformanceType": {
-                       "id": "containerCurrentPerformanceType",
-                       "uml-id": "_pA5AQGz6Eeaf-__BRLM84g",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Turns performance information into current performance information by inheriting from OTN_CurrentData."
-                       ]
-               },
-               "containerHistoricalPerformanceType": {
-                       "id": "containerHistoricalPerformanceType",
-                       "uml-id": "_pTaToGz6Eeaf-__BRLM84g",
-                       "uml-type": "uml:DataType",
-                       "description": [
-                               "Turns performance information into historical performance information by inheriting from OTN_HistoryData."
-                       ]
-               },
-               "performanceData": {
-                       "id": "performanceData",
-                       "uml-id": "_i5STYGz7Eeaf-__BRLM84g",
-                       "uml-type": "ownedAttribute",
-                       "type": "_U9tW0EQeEea3g-FxAUaYRg",
-                       "order-number": 1,
-                       "is-read-only": true
-               },
-               "_eIml0JH1EeWUdbnmmNiTAA": {
-                       "id": "severityType",
-                       "uml-id": "_eIml0JH1EeWUdbnmmNiTAA",
-                       "enum": [
-                               "non-alarmed",
-                               "warning",
-                               "minor",
-                               "major",
-                               "critical"
-                       ],
-                       "is-read-only": false,
-                       "description": [
-                               "According to ITU-T M.3160"
-                       ]
-               },
-               "_e85NsI99EeWFluv9KLLl5A": {
-                       "id": "polarizationType",
-                       "uml-id": "_e85NsI99EeWFluv9KLLl5A",
-                       "enum": [
-                               "not-specified",
-                               "horizontal",
-                               "vertical"
-                       ],
-                       "is-read-only": false
-               },
-               "_DaB5IJRgEeWxIPEwZQ_gmw": {
-                       "id": "protectionType",
-                       "uml-id": "_DaB5IJRgEeWxIPEwZQ_gmw",
-                       "enum": [
-                               "hsb"
-                       ],
-                       "is-read-only": false
-               },
-               "_01_dYJReEeWxIPEwZQ_gmw": {
-                       "id": "roleType",
-                       "uml-id": "_01_dYJReEeWxIPEwZQ_gmw",
-                       "enum": [
-                               "working",
-                               "protection",
-                               "protected"
-                       ],
-                       "is-read-only": false
-               },
-               "_DUJs8JOXEeWz-6sqLzUedw": {
-                       "id": "airInterfaceDiversityStatusType",
-                       "uml-id": "_DUJs8JOXEeWz-6sqLzUedw",
-                       "enum": [
-                               "groupDown",
-                               "notAllAiActive",
-                               "allAiActive"
-                       ],
-                       "is-read-only": false
-               }
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/core-model.schema-information.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/core-model.schema-information.json
deleted file mode 100644 (file)
index fd957f3..0000000
+++ /dev/null
@@ -1,2296 +0,0 @@
-{
- "schema-information": {
-  "forwarding-domain": {
-   "id": "forwarding-domain",
-   "uml-id": "_oGql-FLNEeO75dO39GbF8Q",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The ForwardingDomain (FD) class models the topological component that represents the opportunity to enable forwarding (of specific transport characteristic information at one or more protocol layers) between points represented by the LTP in the model. The FD object provides the context for and constrains the formation, adjustment and removal of FCs and hence offers the potential to enable forwarding. The LTPs available are those defined at the boundary of the FD. At a lower level of recursion an FD could represent a fabric (switch matrix) in a Network Element (NE). An NE can encompass more than one switch matrix and hence more than one FD. The FD representing a switch matrix can be further partitioned. The FD corresponds to a subnetwork [ITU-T G.800], FlowDomain [TMF 612] and a MultiLayerSubNetwork (MLSN) [TMF 612]. As in the TMF concept of MLSN and unlike the ITU-T concet of subnetwork model the FD can support more than one layer-protocol."
-   ],
-   "uml-name": "ForwardingDomain"
-  },
-  "layer-protocol-name": {
-   "id": "layer-protocol-name",
-   "uml-id": "_P-Hp8MD4EeSoNOrYOfaryg",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Provides a controlled list of layer protocol names and indicates the naming authority. Note that it is expected that attributes will be added to this structure to convey the naming authority name, the name of the layer protocol using a human readable string and any particular standard reference. Layer protocol names include: - Layer 1 (L1): OTU, ODU - Layer 2 (L2): Carrier Grade Ethernet (ETY, ETH), MPLS-TP (MT)"
-   ],
-   "uml-name": "LayerProtocolName"
-  },
-  "lower-level-fd": {
-   "id": "lower-level-fd",
-   "uml-id": "_oGqmBVLNEeO75dO39GbF8Q",
-   "uml-type": "ownedAttribute",
-   "type": "_oGql-FLNEeO75dO39GbF8Q",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "The FD class supports a recursive aggregation relationship (HigherLevelFdEncompassesLowerLevelFds) such that the internal construction of an FD can be exposed as multiple lower level FDs and associated Links (partitioning). The aggregated FDs and Links form an interconnected topology that provides and describes the capability of the aggregating FD. Note that the model actually represents aggregation of lower level FDs into higher level FDs as views rather than FD partition, and supports multiple views. Aggregation allow reallocation of capacity from lower level FDs to different higher level FDs as if the network is reorganized (as the association is aggregation not composition)."
-   ],
-   "uml-name": "_lowerLevelFd"
-  },
-  "fc": {
-   "id": "fc",
-   "uml-id": "_oGql_1LNEeO75dO39GbF8Q",
-   "uml-type": "ownedAttribute",
-   "type": "_oGqmC1LNEeO75dO39GbF8Q",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "An FD aggregares one or more FCs. A aggregated FC connects LTPs that bound the FD."
-   ],
-   "uml-name": "_fc"
-  },
-  "ltp": {
-   "id": "ltp",
-   "uml-id": "_8SXNrD-HEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "_ltp"
-  },
-  "lower-level-link": {
-   "id": "lower-level-link",
-   "uml-id": "_dm_ngBiQEeSh8KVgZCMyDw",
-   "uml-type": "ownedAttribute",
-   "type": "_oGqnjVLNEeO75dO39GbF8Q",
-   "order-number": 5,
-   "is-read-only": false,
-   "description": [
-    "The FD encompasses Links that interconnect lower level FDs and collect links that are wholly within the bounds of the FD. See also _lowerLevelFd."
-   ],
-   "uml-name": "_lowerLevelLink"
-  },
-  "forwarding-construct": {
-   "id": "forwarding-construct",
-   "uml-id": "_oGqmC1LNEeO75dO39GbF8Q",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The ForwardingConstruct (FC) class models enabled constrained potential for forwarding between two or more LTPs at a particular specific layerProtocol. Like the LTP, the FC supports any transport protocol including all circuit and packet forms. It is used to effect forwarding of transport characteristic (layer protocol) information. An FC can be in only one FD. The ForwardingConstruct is a Forwarding entity. At a low level of the recursion, a FC represents a cross-connection within an NE. It may also represent a fragment of a cross-connection under certain circumstances. The FC object can be used to represent many different structures including point-to-point (P2P), point-to-multipoint (P2MP), rooted-multipoint (RMP) and multipoint-to-multipoint (MP2MP) bridge and selector structures for linear, ring or mesh protection schemes."
-   ],
-   "uml-name": "ForwardingConstruct"
-  },
-  "lower-level-fc": {
-   "id": "lower-level-fc",
-   "uml-id": "_i7UzkFYfEeOVGaP4lO41SQ",
-   "uml-type": "ownedAttribute",
-   "type": "_oGqmC1LNEeO75dO39GbF8Q",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "An FC object supports a recursive aggregation relationship such that the internal construction of an FC can be exposed as multiple lower level FC objects (partitioning). Aggregation is used as for the FD to allow changes in hierarchy. FC aggregation reflects FD aggregation. The FC represents a Cross-Connection in an NE. The Cross-Connection in an NE is not necessarily the lowest level of FC partitioning."
-   ],
-   "uml-name": "_lowerLevelFc"
-  },
-  "fc-route": {
-   "id": "fc-route",
-   "uml-id": "_A8SFwFYgEeOVGaP4lO41SQ",
-   "uml-type": "ownedAttribute",
-   "type": "_9UVusFYfEeOVGaP4lO41SQ",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "An FC object can have zero or more routes, each of which is defined as a list of lower level FC objects describing the flow across the network."
-   ],
-   "uml-name": "_fcRoute"
-  },
-  "fc-port": {
-   "id": "fc-port",
-   "uml-id": "_b_lUAFYgEeOVGaP4lO41SQ",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The association of the FC to LTPs is made via FcPorts. The FcPort class models the access to the FC function. The traffic forwarding between the associated FcPorts of the FC depends upon the type of FC and may be associated with FcSwitch object instances. In cases where there is resilience, the FcPort may convey the resilience role of the access to the FC. It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point. The FcPort replaces the Protection Unit of a traditional protection model. The ForwardingConstruct can be considered as a component and the FcPort as a Port on that component."
-   ],
-   "uml-name": "FcPort"
-  },
-  "fc-switch": {
-   "id": "fc-switch",
-   "uml-id": "_a97NQFYhEeOVGaP4lO41SQ",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The FcSwitch class models the switched forwarding of traffic (traffic flow) between FcPorts and is present where there is protection functionality in the FC. If an FC exposes protection (having two or more FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC. The FC switch represents and defines a protection switch structure encapsulated in the FC. Essentially performs one of the functions of the Protection Group in a traditional model. It associates to 2 or more FcPorts each playing the role of a Protection Unit. One or more protection, i.e. standby/backup, FcPorts provide protection for one or more working (i.e. regular/main/preferred) FcPorts where either protection or working can feed one or more protected FcPort. The switch may be used in revertive or non-revertive (symmetric) mode. When in revertive mode it may define a waitToRestore time. It may be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 and 1:1). It may be locked out (prevented from switching), force switched or manual switched. It will indicate switch state and change of state. The switch can be switched away from all sources such that it becomes open and hence two coordinated switches can both feed the same LTP so long as at least one of the two is switched away from all sources (is  open ). The ability for a Switch to be  high impedance  allows bidirectional ForwardingConstructs to be overlaid on the same bidirectional LTP where the appropriate control is enabled to prevent signal conflict. This ability allows multiple alternate routes to be present that otherwise would be in conflict."
-   ],
-   "uml-name": "FcSwitch"
-  },
-  "forwarding-direction": {
-   "id": "forwarding-direction",
-   "uml-id": "_9_yMUEDAEeWQeOKbNUpP9A",
-   "uml-type": "ownedAttribute",
-   "type": "_dV67AEC8EeWxhL2B6Peg6A",
-   "order-number": 6,
-   "is-read-only": false,
-   "description": [
-    "The directionality of the ForwardingConstruct. Is applicable to simple ForwardingConstructs where all FcPorts are BIDIRECTIONAL (the ForwardingConstruct will be BIDIRECTIONAL) or UNIDIRECTIONAL (the ForwardingConstruct will be UNIDIRECTIONAL). Is not present in more complex cases."
-   ],
-   "uml-name": "forwardingDirection",
-   "controlType": [
-    "bidirectional",
-    "unidirectional",
-    "undefined-or-unknown"
-   ]
-  },
-  "is-protection-lock-out": {
-   "id": "is-protection-lock-out",
-   "uml-id": "_ls-wcMN9EeWwZ527PhfFSA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 6,
-   "is-read-only": false,
-   "description": [
-    "The resource is configured to temporarily not be available for use in the protection scheme(s) it is part of. This overrides all other protection control states including forced. If the item is locked out then it cannot be used under any circumstances. Note: Only relevant when part of a protection scheme."
-   ],
-   "uml-name": "isProtectionLockOut",
-   "controlType": "checkbox"
-  },
-  "service-priority": {
-   "id": "service-priority",
-   "uml-id": "_3co20MOCEeWwZ527PhfFSA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 8,
-   "is-read-only": false,
-   "description": [
-    "Relevant where  service  FCs are competing for server resources. Used to determine which signal FC is allocated resource. The priority of the  service  with respect to other  services . Lower numeric value means higher priority. Covers cases such as preemptable."
-   ],
-   "uml-name": "servicePriority",
-   "controlType": "number"
-  },
-  "supported-link": {
-   "id": "supported-link",
-   "uml-id": "_0172EFHnEeaDuo8VlVeg_g",
-   "uml-type": "ownedAttribute",
-   "type": "_oGqnjVLNEeO75dO39GbF8Q",
-   "order-number": 9,
-   "is-read-only": false,
-   "description": [
-    "An FC that spans between LTPs that terminate the LayerProtocol usually supports one or more links in the client layer."
-   ],
-   "uml-name": "_supportedLink"
-  },
-  "network-element": {
-   "id": "network-element",
-   "uml-id": "_oGqnr1LNEeO75dO39GbF8Q",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The Network Element (NE) class represents a network element (traditional NE) in the data plane. A data plane network element is essentially a consolidation of capabilities that can be viewed and controlled through a  single  management-control port. In the direct interface from an SDN controller to a network element in the data plane, the NetworkElement object defines the scope of control for the resources within the network element For example internal transfer of user information between the external terminations (ports of the NE), encapsulation, multiplexing/demultiplexing, and OAM functions, etc. The NetworkElement provides the scope of the naming space for identifying objects representing the resources within the data plane network element. NE is really a product bundling or some view of management scope, management access, session. The NE is not directly part of topology but brings meaning to the FD context and the LTP context (and hence the links)."
-   ],
-   "uml-name": "NetworkElement"
-  },
-  "fd": {
-   "id": "fd",
-   "uml-id": "_oGqnslLNEeO75dO39GbF8Q",
-   "uml-type": "ownedAttribute",
-   "type": "_oGql-FLNEeO75dO39GbF8Q",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "Represents the FD that is completely within the boundary of the NE. At a low level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). Note that an NE can encompass multiple switch matrices (FDs) and the FD representing the switch matrix can be further partitioned. Where an FD is referenced by the NeEncompassesFd association, any FDs that it encompasses (i.e., that are associated with it by HigherLevelFdEncompassesLowerLevelFds), must also be encompassed by the NE and hence must have the NeEncompassesFd association."
-   ],
-   "uml-name": "_fd"
-  },
-  "role": {
-   "id": "role",
-   "uml-id": "_Ykm6QFeGEeOVGaP4lO41SQ",
-   "uml-type": "ownedAttribute",
-   "type": "_DUU_sGZ_EeWrX_JIGzXlSg",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "Each FcPort of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root) in the context of the FC with respect to the FC function."
-   ],
-   "uml-name": "role"
-  },
-  "fc-port-direction": {
-   "id": "fc-port-direction",
-   "uml-id": "_1HbEgEDAEeWQeOKbNUpP9A",
-   "uml-type": "ownedAttribute",
-   "type": "_2WpC8EC7EeWxhL2B6Peg6A",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "The orientation of defined flow at the FcPort."
-   ],
-   "uml-name": "fcPortDirection",
-   "controlType": [
-    "bidirectional",
-    "input",
-    "output",
-    "unidentified-or-unknown"
-   ]
-  },
-  "selection-priority": {
-   "id": "selection-priority",
-   "uml-id": "_02awkMOEEeWwZ527PhfFSA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 5,
-   "is-read-only": false,
-   "description": [
-    "The preference priority of the resource in the protection scheme for a particular FC. The lower the value the higher the priority. A lower value of selection priority is preferred If two resources have the same value they are of equal priory. There is no preference between equal priorities. If a resource with the lowest value selection priority fails then the next lowest value available (may be the same value) is picked. Hence on failure of the current resource the next best available will be selected. If there are several equal values the choice is essentially arbitrary). If the scheme is revertive then when a resource of higher priority than the currently selected resource recovers it will be selected. This is equivalent to working/protection but allows for all static scheme types with n:m capability. In simple schemes 0 = working and 1 = protecting."
-   ],
-   "uml-name": "selectionPriority",
-   "controlType": "number"
-  },
-  "is-internal-port": {
-   "id": "is-internal-port",
-   "uml-id": "_CSlIwNViEeWhfIeymCGl5Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 6,
-   "is-read-only": true,
-   "description": [
-    "The FcPort is not exposed and cannot have associated LTPs. This form of FcPort is used to enable chaining of FcSwitches or FcRoutes in complex network protection scenarios."
-   ],
-   "uml-name": "isInternalPort",
-   "controlType": "checkbox"
-  },
-  "fc-route-feeds-fc-port-egress": {
-   "id": "fc-route-feeds-fc-port-egress",
-   "uml-id": "_xbsp8TLREea40e5DA9KE3w",
-   "uml-type": "ownedAttribute",
-   "type": "_9UVusFYfEeOVGaP4lO41SQ",
-   "order-number": 7,
-   "is-read-only": false,
-   "description": [
-    "Identifies which route(s) currently actively forward to the FcPort to exit the FC to an LTP (or for an internal FcPort to propagate to the next internal switch/route)."
-   ],
-   "uml-name": "_fcRouteFeedsFcPortEgress"
-  },
-  "layer-protocol": {
-   "id": "layer-protocol",
-   "uml-id": "_gROecFYXEeOVGaP4lO41SQ",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The projection of an LTP into each transport layer is represented by a LayerProtocol (LP) instance. A LayerProtocol instances can be used for controlling termination and monitoring functionality. It can also be used for controlling the adaptation (i.e. encapsulation and/or multiplexing of client signal), tandem connection monitoring, traffic conditioning and/or shaping functionality at an intermediate point along a connection. Where the client - server relationship is fixed 1:1 and immutable, the layers can be encapsulated in a single LTP instance. Where there is a n:1 relationship between client and server, the layers must be split over two separate instances of LTP."
-   ],
-   "uml-name": "LayerProtocol"
-  },
-  "configured-client-capacity": {
-   "id": "configured-client-capacity",
-   "uml-id": "_CUJD4BicEeSh8KVgZCMyDw",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2swpathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 2,
-   "is-read-only": false,
-   "visible": false,
-   "description": [
-    "Provides a summarized view of the client capacity that is configurable for use. Note the client LTP association should provide all necessary detail hence this attribute is questionable."
-   ],
-   "uml-name": "configuredClientCapacity"
-  },
-  "lp-direction": {
-   "id": "lp-direction",
-   "uml-id": "_GuuSYEDBEeWQeOKbNUpP9A",
-   "uml-type": "ownedAttribute",
-   "type": "_RWILYEDAEeWQeOKbNUpP9A",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "The overall directionality of the LP. - A BIDIRECTIONAL LP will have some SINK and/or SOURCE flows. - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows - A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows"
-   ],
-   "uml-name": "lpDirection",
-   "controlType": [
-    "bidirectional",
-    "sink",
-    "source",
-    "undefined-or-unknown"
-   ]
-  },
-  "termination-state": {
-   "id": "termination-state",
-   "uml-id": "_p2YfoGeEEeWmgIwAIZlYKQ",
-   "uml-type": "ownedAttribute",
-   "type": "_6anG8GeEEeWmgIwAIZlYKQpathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 4,
-   "is-read-only": false,
-   "description": [
-    "Indicates whether the layer is terminated and if so how."
-   ],
-   "uml-name": "terminationState"
-  },
-  "config-and-switch-controller": {
-   "id": "config-and-switch-controller",
-   "uml-id": "_d6vwsMQhEeWlWIVxswb46A",
-   "uml-type": "ownedAttribute",
-   "type": "_k1gHQJo5EeOyHKqw-cQ_eg",
-   "order-number": 5,
-   "is-read-only": false,
-   "description": [
-    "A switch controller external to the LayerProtocol. The controller will coordinate one or more switches in one or more FCs related to the LayerProtocol"
-   ],
-   "uml-name": "_configAndSwitchController"
-  },
-  "fc-blocks-signal-to-lp": {
-   "id": "fc-blocks-signal-to-lp",
-   "uml-id": "_OW-PsMjVEeWSlYzRfsq8lQ",
-   "uml-type": "ownedAttribute",
-   "type": "_zMwrsMjVEeWSlYzRfsq8lQ",
-   "order-number": 7,
-   "is-read-only": false,
-   "visible":false,
-   "uml-name": "fcBlocksSignalToLp"
-  },
-  "logical-termination-point": {
-   "id": "logical-termination-point",
-   "uml-id": "_eEpDMFX4EeOVGaP4lO41SQ",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The LogicalTerminationPoint (LTP) class encapsulates the termination and adaptation functions of one or more transport layers represented by instances of LayerProtocol. The encapsulated transport layers have a simple fixed 1:1 client-server relationship defined by association end ordering. The structure of LTP supports all transport protocols including circuit and packet forms."
-   ],
-   "uml-name": "LogicalTerminationPoint"
-  },
-  "server-ltp": {
-   "id": "server-ltp",
-   "uml-id": "_D4N9IFX5EeOVGaP4lO41SQ",
-   "uml-type": "ownedAttribute",
-   "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "References contained LTPs representing servers of this LTP in an inverse multiplexing configuration (e.g. VCAT)."
-   ],
-   "uml-name": "_serverLtp"
-  },
-  "client-ltp": {
-   "id": "client-ltp",
-   "uml-id": "_3Y4zAFYWEeOVGaP4lO41SQ",
-   "uml-type": "ownedAttribute",
-   "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "References contained LTPs representing client traffic of this LTP for normal cases of multiplexing."
-   ],
-   "uml-name": "_clientLtp"
-  },
-  "lp": {
-   "id": "lp",
-   "uml-id": "_lvFOQFYXEeOVGaP4lO41SQ",
-   "uml-type": "ownedAttribute",
-   "type": "_gROecFYXEeOVGaP4lO41SQ",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "Ordered list of LayerProtocols that this LTP is comprised of where the first entry in the list is the lowest server layer (e.g. physical)."
-   ],
-   "uml-name": "_lp"
-  },
-  "connected-ltp": {
-   "id": "connected-ltp",
-   "uml-id": "_CHM6YFYYEeOVGaP4lO41SQ",
-   "uml-type": "ownedAttribute",
-   "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-   "order-number": 4,
-   "is-read-only": false,
-   "description": [
-    "Applicable in a simple context where two LTPs are associated via a non-adjustable enabled forwarding. Reduces clutter removing the need for two additional LTPs and an FC with a pair of FcPorts."
-   ],
-   "uml-name": "_connectedLtp"
-  },
-  "peer-ltp": {
-   "id": "peer-ltp",
-   "uml-id": "_TkuhMFYYEeOVGaP4lO41SQ",
-   "uml-type": "ownedAttribute",
-   "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-   "order-number": 5,
-   "is-read-only": false,
-   "description": [
-    "References contained LTPs representing the reversal of orientation of flow where two LTPs are associated via a non-adjustable enabled forwarding and where the referenced LTP is fully dependent on the this LTP."
-   ],
-   "uml-name": "_peerLtp"
-  },
-  "physical-port-reference": {
-   "id": "physical-port-reference",
-   "uml-id": "_RLDi4BieEeSh8KVgZCMyDw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 6,
-   "is-read-only": false,
-   "description": [
-    "One or more text labels for the unmodelled physical port associated with the LTP. In many cases there is no associated physical port."
-   ],
-   "uml-name": "physicalPortReference",
-   "controlType": "text"
-  },
-  "ltp-in-other-view": {
-   "id": "ltp-in-other-view",
-   "uml-id": "_vq1NIBigEeSh8KVgZCMyDw",
-   "uml-type": "ownedAttribute",
-   "type": "_eEpDMFX4EeOVGaP4lO41SQ",
-   "order-number": 7,
-   "is-read-only": false,
-   "description": [
-    "References one or more LTPs in other views that represent this LTP. The referencing LTP is the provider of capability."
-   ],
-   "uml-name": "_ltpInOtherView"
-  },
-  "ltp-direction": {
-   "id": "ltp-direction",
-   "uml-id": "_S811EEDBEeWQeOKbNUpP9A",
-   "uml-type": "ownedAttribute",
-   "type": "_RWILYEDAEeWQeOKbNUpP9A",
-   "order-number": 8,
-   "is-read-only": false,
-   "description": [
-    "The overall directionality of the LTP. - A BIDIRECTIONAL LTP must have at least some LPs that are BIDIRECTIONAL but may also have some SINK and/or SOURCE LPs. - A SINK LTP can only contain SINK LPs - A SOURCE LTP can only contain SOURCE LPs"
-   ],
-   "uml-name": "ltpDirection",
-   "controlType": [
-    "bidirectional",
-    "sink",
-    "source",
-    "undefined-or-unknown"
-   ]
-  },
-  "configuration-and-switch-controller": {
-   "id": "configuration-and-switch-controller",
-   "uml-id": "_k1gHQJo5EeOyHKqw-cQ_eg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents the capability to control and coordinate switches, to add/delete/modify FCs and to add/delete/modify LTPs/LPs so as to realize a protection scheme."
-   ],
-   "uml-name": "ConfigurationAndSwitchController"
-  },
-  "switch-rule": {
-   "id": "switch-rule",
-   "uml-id": "_oxb_EJo-EeOyHKqw-cQ_eg",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "A sketch of the presence of complex rules governing the switch behavior."
-   ],
-   "uml-name": "switchRule"
-  },
-  "control-parameters": {
-   "id": "control-parameters",
-   "uml-id": "_k40wIVJKEeaDuo8VlVeg_g",
-   "uml-type": "ownedAttribute",
-   "type": "_T5-osJ4HEeOO3om500DFKg",
-   "order-number": 10,
-   "is-read-only": false,
-   "uml-name": "_controlParameters"
-  },
-  "profile-proxy": {
-   "id": "profile-proxy",
-   "uml-id": "_DEWvsJozEeOyHKqw-cQ_eg",
-   "uml-type": "ownedAttribute",
-   "type": "_rgdnkJoyEeOyHKqw-cQ_eg",
-   "order-number": 5,
-   "is-read-only": false,
-   "description": [
-    "Provides a set of predefined values for switch control in place of the direct values available via the FcSwitch or via _configurationAndSwitchControl."
-   ],
-   "uml-name": "_profileProxy"
-  },
-  "local-pac": {
-   "id": "local-pac",
-   "uml-id": "_JOA30MOxEeWwZ527PhfFSA",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Provides the properties of a LocalClass via composition."
-   ],
-   "uml-name": "Local_Pac"
-  },
-  "global-pac": {
-   "id": "global-pac",
-   "uml-id": "_iBsM0MOxEeWwZ527PhfFSA",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Provides the properties of a GlobalClass via composition."
-   ],
-   "uml-name": "Global_Pac"
-  },
-  "is-frozen": {
-   "id": "is-frozen",
-   "uml-id": "_Xt2wEMOyEeWwZ527PhfFSA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 7,
-   "is-read-only": false,
-   "description": [
-    "Temporarily prevents any switch action to be taken and, as such, freezes the current state. Until the freeze is cleared, additional near-end external commands are rejected and fault condition changes and received APS messages are ignored. All administrative controls of any aspect of protection are rejected."
-   ],
-   "uml-name": "isFrozen",
-   "controlType": "checkbox"
-  },
-  "is-coordinated-switching-both-ends": {
-   "id": "is-coordinated-switching-both-ends",
-   "uml-id": "_QuZt0MO2EeWwZ527PhfFSA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 8,
-   "is-read-only": false,
-   "description": [
-    "The C&SC is operating such that switching at both ends of each flow acorss the FC is coordinated at both ingress and egress ends."
-   ],
-   "uml-name": "isCoordinatedSwitchingBothEnds",
-   "controlType": "checkbox"
-  },
-  "subordinate-controller": {
-   "id": "subordinate-controller",
-   "uml-id": "_OjA04MQlEeWlWIVxswb46A",
-   "uml-type": "ownedAttribute",
-   "type": "_k1gHQJo5EeOyHKqw-cQ_eg",
-   "order-number": 9,
-   "is-read-only": false,
-   "description": [
-    "A C&SC that is fully or partially subordinate this C&SC. A peer is considered as partially subordinate in that the peer will respond to requests for action from this C&SC but will also make requests for action to be carried out by this C&SC. Where there is a peer relationship each controller in the peering will see the other controller as subordinate."
-   ],
-   "uml-name": "_subordinateController"
-  },
-  "control-parameters-pac": {
-   "id": "control-parameters-pac",
-   "uml-id": "_T5-osJ4HEeOO3om500DFKg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "A list of control parameters to apply to a switch."
-   ],
-   "uml-name": "ControlParameters_Pac"
-  },
-  "reversion-mode": {
-   "id": "reversion-mode",
-   "uml-id": "_oGqn41LNEeO75dO39GbF8Q",
-   "uml-type": "ownedAttribute",
-   "type": "_oGqjf1LNEeO75dO39GbF8Q",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "Moved to ControlParameter_Pac... This attribute whether or not the protection scheme is revertive or non-revertive."
-   ],
-   "uml-name": "reversionMode",
-   "controlType": [
-    "revertive",
-    "non-revertive"
-   ]
-  },
-  "wait-to-revert-time": {
-   "id": "wait-to-revert-time",
-   "uml-id": "_eSxzEJ4IEeOO3om500DFKg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "If the protection system is revertive, this attribute specifies the time, in minutes, to wait after a fault clears on a higher priority (preferred) resource before reverting to the preferred resource."
-   ],
-   "uml-name": "waitToRevertTime",
-   "controlType": "number"
-  },
-  "prot-type": {
-   "id": "prot-type",
-   "uml-id": "_oGqn6lLNEeO75dO39GbF8Q",
-   "uml-type": "ownedAttribute",
-   "type": "_c3Hu8Gb3EeWrX_JIGzXlSg",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "Indicates the protection scheme that is used for the ProtectionGroup."
-   ],
-   "uml-name": "protType"
-  },
-  "hold-off-time": {
-   "id": "hold-off-time",
-   "uml-id": "_oGqn6FLNEeO75dO39GbF8Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "Moved to ControlParameter_Pac... This attribute indicates the time, in seconds, between declaration of unacceptable quality of signal on the currently selected FcPort, and the initialization of the protection switching algorithm."
-   ],
-   "uml-name": "holdOffTime",
-   "controlType": "number"
-  },
-  "network-scheme-specification": {
-   "id": "network-scheme-specification",
-   "uml-id": "_doxoIDLIEea40e5DA9KE3w",
-   "uml-type": "ownedAttribute",
-   "type": "_w-HB8DLEEea40e5DA9KE3w",
-   "order-number": 5,
-   "is-read-only": false,
-   "uml-name": "_networkSchemeSpecification"
-  },
-  "selected-fc-port": {
-   "id": "selected-fc-port",
-   "uml-id": "_2PdiYI8lEeOw_ste-s6RrA",
-   "uml-type": "ownedAttribute",
-   "type": "_b_lUAFYgEeOVGaP4lO41SQ",
-   "order-number": 4,
-   "is-read-only": false,
-   "description": [
-    "Indicates which points are selected by the switch. Depending on the switch spec (via Fcspec) - more than one FcPort can be selected at any one time (e.g. egress switch, ingress packet switch) - zero FcPorts can be selected. For an ingress switch this indicates that the switch common (egress) is  high impedance  ."
-   ],
-   "uml-name": "_selectedFcPort"
-  },
-  "internal-configuration-and-switch-control": {
-   "id": "internal-configuration-and-switch-control",
-   "uml-id": "_tbetAJ4HEeOO3om500DFKg",
-   "uml-type": "ownedAttribute",
-   "type": "_k1gHQJo5EeOyHKqw-cQ_eg",
-   "order-number": 6,
-   "is-read-only": false,
-   "description": [
-    "A switch controller encapsulated in the FcSwitch."
-   ],
-   "uml-name": "_internalConfigurationAndSwitchControl"
-  },
-  "switch-control": {
-   "id": "switch-control",
-   "uml-id": "_LSnbYMOGEeWwZ527PhfFSA",
-   "uml-type": "ownedAttribute",
-   "type": "_e-7DYMOFEeWwZ527PhfFSA",
-   "order-number": 7,
-   "is-read-only": false,
-   "description": [
-    "Degree of administrative control applied to the switch selection."
-   ],
-   "uml-name": "switchControl",
-   "controlType": [
-    "normal",
-    "manual",
-    "forced"
-   ]
-  },
-  "switch-selects-ports": {
-   "id": "switch-selects-ports",
-   "uml-id": "_FBaoAMQTEeWlWIVxswb46A",
-   "uml-type": "ownedAttribute",
-   "type": "_2WpC8EC7EeWxhL2B6Peg6A",
-   "order-number": 8,
-   "is-read-only": false,
-   "description": [
-    "Indicates whether the switch selects from ingress to the FC or to egress of the FC, or both."
-   ],
-   "uml-name": "switchSelectsPorts",
-   "controlType": [
-    "bidirectional",
-    "input",
-    "output",
-    "unidentified-or-unknown"
-   ]
-  },
-  "switch-selection-reason": {
-   "id": "switch-selection-reason",
-   "uml-id": "_XjsGkCi_EeaGGvAxxSe1uA",
-   "uml-type": "ownedAttribute",
-   "type": "_zRKlICi9EeaGGvAxxSe1uA",
-   "order-number": 9,
-   "is-read-only": true,
-   "description": [
-    "The reason for the current switch selection."
-   ],
-   "uml-name": "switchSelectionReason",
-   "controlType": []
-  },
-  "wait-to-restore-time": {
-   "id": "wait-to-restore-time",
-   "uml-id": "_oGqn5lLNEeO75dO39GbF8Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 11,
-   "is-read-only": false,
-   "description": [
-    "Moved to ControlParameter_Pac and changed to waitToRevert... If the protection system is revertive, this attribute specifies the amount of time, in seconds, to wait after the preferred FcPort returns to an acceptable state of operation (e.g. a fault has cleared) before restoring traffic to that preferred FcPort."
-   ],
-   "uml-name": "waitToRestoreTime",
-   "controlType": "number"
-  },
-  "name": {
-   "id": "name",
-   "uml-id": "_YCL8kMDZEeWbqPZwR-Ot6A",
-   "uml-type": "ownedAttribute",
-   "type": "_XUarEMDuEeWbqPZwR-Ot6A",
-   "order-number": 4,
-   "is-read-only": false,
-   "description": [
-    "If the element is a name."
-   ],
-   "uml-name": "name"
-  },
-  "global-class": {
-   "id": "global-class",
-   "uml-id": "_iVJ1kI2wEeO38ZmbECnvbg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents a type of thing (an Entity) that has instances which can exist in their own right (independently of any others). Entity: Has identity, defined boundary, properties, functionality and lifecycle in a global context. (consider in the context of a Class: (usage) The representation of a thing that may be an entity or an inseparable Entity Feature)."
-   ],
-   "uml-name": "GlobalClass"
-  },
-  "local-id": {
-   "id": "local-id",
-   "uml-id": "_cq2mQMDYEeWbqPZwR-Ot6A",
-   "uml-type": "ownedAttribute",
-   "type": "_dCdzAMDuEeWbqPZwR-Ot6A",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "If the element is a localId (where the element above in the hierarchy must be the context in which the specific localId is relevant)."
-   ],
-   "uml-name": "localId"
-  },
-  "uuid": {
-   "id": "uuid",
-   "uml-id": "_KeLlAMDZEeWbqPZwR-Ot6A",
-   "uml-type": "ownedAttribute",
-   "type": "_SU3Q4I30EeO38ZmbECnvbg",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "If the element is a uuid (where this element could be the top of a hierarchy but may also be at some level in the hierarchy where address navigation is considered necessary to assist in location of the UUID)."
-   ],
-   "uml-name": "uuid"
-  },
-  "local-class": {
-   "id": "local-class",
-   "uml-id": "_k5nWYI2wEeO38ZmbECnvbg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "A LocalClass represents a Feature of an Entity. It is inseparable from a GlobalClass but is a distinct feature of that GlobalClass such that the instances of LocalClass are able to have associations to other instances.. Feature of an Entity: An inseparable, externally distinguishable part of an entity. The mandatory LocalId of the LocalClass instance is unique in the context of the GlobalClass from which it is inseparable. (consider in the context of a Class: (usage) The representation of a thing that may be an entity or an inseparable feature of an entity)"
-   ],
-   "uml-name": "LocalClass"
-  },
-  "label": {
-   "id": "label",
-   "uml-id": "_olrqYI2uEeO38ZmbECnvbg",
-   "uml-type": "ownedAttribute",
-   "type": "_y7oy8I3tEeO38ZmbECnvbg",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "List of labels."
-   ],
-   "uml-name": "label"
-  },
-  "extension": {
-   "id": "extension",
-   "uml-id": "_uQqu4I28EeO38ZmbECnvbg",
-   "uml-type": "ownedAttribute",
-   "type": "_y7oy8I3tEeO38ZmbECnvbg",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "List of simple name-value extensions."
-   ],
-   "uml-name": "extension"
-  },
-  "universal-id-authority": {
-   "id": "universal-id-authority",
-   "uml-id": "_StA-4I23EeO38ZmbECnvbg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents the authority that controls the allocation of UUIDs."
-   ],
-   "uml-name": "UniversalIdAuthority"
-  },
-  "name-and-value-authority": {
-   "id": "name-and-value-authority",
-   "uml-id": "_ulDtsI3AEeO38ZmbECnvbg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents the authority that controls the legal values for the names and values of a name/value attribute."
-   ],
-   "uml-name": "NameAndValueAuthority"
-  },
-  "conditional-package": {
-   "id": "conditional-package",
-   "uml-id": "_-ZWVQJP0EeOqfpp-ZJSmaA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The base class for conditional packages."
-   ],
-   "uml-name": "ConditionalPackage"
-  },
-  "state-pac": {
-   "id": "state-pac",
-   "uml-id": "_RG6VILEtEeSZUdYfPSdgew",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Provides general state attributes."
-   ],
-   "uml-name": "State_Pac"
-  },
-  "operational-state": {
-   "id": "operational-state",
-   "uml-id": "_dO6owLEtEeSZUdYfPSdgew",
-   "uml-type": "ownedAttribute",
-   "type": "_lNclkLEtEeSZUdYfPSdgew",
-   "order-number": 1,
-   "is-read-only": true,
-   "description": [
-    "The operational state is used to indicate whether or not the resource is installed and working."
-   ],
-   "uml-name": "operationalState",
-   "controlType": [
-    "disabled",
-    "enabled"
-   ]
-  },
-  "administrative-control": {
-   "id": "administrative-control",
-   "uml-id": "_7gqwALEtEeSZUdYfPSdgew",
-   "uml-type": "ownedAttribute",
-   "type": "_-xPeALEvEeSZUdYfPSdgew",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "The administrativeControl state provides control of the availability of specific resources without modification to the provisioning of those resources. The value is the current control target. The actual administrativeState may or may not be at target."
-   ],
-   "uml-name": "administrativeControl",
-   "controlType": [
-    "unlock",
-    "lock-passive",
-    "lock-active",
-    "lock-immediate"
-   ]
-  },
-  "adminisatratve-state": {
-   "id": "adminisatratve-state",
-   "uml-id": "_AjGvILEuEeSZUdYfPSdgew",
-   "uml-type": "ownedAttribute",
-   "type": "_KSKOYLEuEeSZUdYfPSdgew",
-   "order-number": 3,
-   "is-read-only": true,
-   "description": [
-    "Shows whether or not the client has permission to use or has a prohibition against using the resource. The administrative state expresses usage permissions for specific resources without modification to the provisioning of those resources."
-   ],
-   "uml-name": "adminisatratveState",
-   "controlType": [
-    "locked",
-    "unlocked"
-   ]
-  },
-  "lifecycle-state": {
-   "id": "lifecycle-state",
-   "uml-id": "_PzqZ0GgiEeWmgIwAIZlYKQ",
-   "uml-type": "ownedAttribute",
-   "type": "_YSsboGgiEeWmgIwAIZlYKQ",
-   "order-number": 4,
-   "is-read-only": false,
-   "description": [
-    "Used to track the planned deployment, allocation to clients and withdrawal of resources."
-   ],
-   "uml-name": "lifecycleState",
-   "controlType": [
-    "planned",
-    "potential",
-    "installed",
-    "pending-removal"
-   ]
-  },
-  "general-directives": {
-   "id": "general-directives",
-   "uml-id": "_9hyUwD0TEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "GeneralDirectives"
-  },
-  "necessary-initial-condition-constraints": {
-   "id": "necessary-initial-condition-constraints",
-   "uml-id": "_J_v_YD0WEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "NecessaryInitialConditionConstraints"
-  },
-  "is-not": {
-   "id": "is-not",
-   "uml-id": "_pzNRQD3XEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "IsNot",
-   "controlType": "checkbox"
-  },
-  "operation-details": {
-   "id": "operation-details",
-   "uml-id": "_J5Hc0T0fEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_g1SeoD0UEeaRI-H69PghuA",
-   "order-number": 7,
-   "is-read-only": false,
-   "uml-name": "_operationDetails"
-  },
-  "action-verb": {
-   "id": "action-verb",
-   "uml-id": "_93jegD0VEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_ljUl4D3WEeaRI-H69PghuA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "actionVerb",
-   "controlType": [
-    "create-post-add",
-    "set-update-put-modify-write-add",
-    "get-read",
-    "delete-remove"
-   ]
-  },
-  "necessary-initialcondition-constraints": {
-   "id": "necessary-initialcondition-constraints",
-   "uml-id": "_Kc7UgD0fEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_J_v_YD0WEeaRI-H69PghuA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "_necessaryInitialconditionConstraints"
-  },
-  "operation-envelope": {
-   "id": "operation-envelope",
-   "uml-id": "_52IiYD0TEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "OperationEnvelope"
-  },
-  "operation-set": {
-   "id": "operation-set",
-   "uml-id": "_c9yBkD0UEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "OperationSet"
-  },
-  "generaldirectives": {
-   "id": "generaldirectives",
-   "uml-id": "_Ios90j0fEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_9hyUwD0TEeaRI-H69PghuA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "generaldirectives"
-  },
-  "operationidentifiers": {
-   "id": "operationidentifiers",
-   "uml-id": "_JQNpwT0fEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_AZx1kD0UEeaRI-H69PghuA",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "operationidentifiers"
-  },
-  "operation-identifiers": {
-   "id": "operation-identifiers",
-   "uml-id": "_AZx1kD0UEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "OperationIdentifiers"
-  },
-  "after-operation-set": {
-   "id": "after-operation-set",
-   "uml-id": "_olu8ID0UEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_c9yBkD0UEeaRI-H69PghuA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "_afterOperationSet"
-  },
-  "before-operation-set": {
-   "id": "before-operation-set",
-   "uml-id": "_xIFXsj0UEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_c9yBkD0UEeaRI-H69PghuA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "_beforeOperationSet"
-  },
-  "effort-and-action": {
-   "id": "effort-and-action",
-   "uml-id": "_GWLtID0VEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_L4Y9QE2DEeaGxdXEiNf4tA",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "effortAndAction",
-   "controlType": [
-    "best-effort",
-    "exact-match"
-   ]
-  },
-  "pause-resume-rule": {
-   "id": "pause-resume-rule",
-   "uml-id": "_ObfAUD0VEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_ndXVME2DEeaGxdXEiNf4tA",
-   "order-number": 4,
-   "is-read-only": false,
-   "uml-name": "pauseResumeRule",
-   "controlType": [
-    "no-pause-possible"
-   ]
-  },
-  "operationset": {
-   "id": "operationset",
-   "uml-id": "_hsSioj0VEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_c9yBkD0UEeaRI-H69PghuA",
-   "order-number": 5,
-   "is-read-only": false,
-   "uml-name": "operationset"
-  },
-  "is-short-lived": {
-   "id": "is-short-lived",
-   "uml-id": "_mdwtkD0VEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 6,
-   "is-read-only": false,
-   "uml-name": "isShortLived",
-   "controlType": "checkbox"
-  },
-  "conector-in-holder": {
-   "id": "conector-in-holder",
-   "uml-id": "_-zMBkkO-EeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_o366YEONEeasL6dcjI1vEA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "conectorInHolder"
-  },
-  "connector-on-equipment-for-holder": {
-   "id": "connector-on-equipment-for-holder",
-   "uml-id": "_s5FpwEONEeasL6dcjI1vEA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "A rule class (an abstract specialization of Connector) that represents a connector on an equipment that is intended to mate with a connector in a holder."
-   ],
-   "uml-name": "ConnectorOnEquipmentForHolder"
-  },
-  "connector-cable-end": {
-   "id": "connector-cable-end",
-   "uml-id": "_KCS_IkOPEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_6hyUEEONEeasL6dcjI1vEA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "connectorCableEnd"
-  },
-  "connector-on-equipment-for-cable": {
-   "id": "connector-on-equipment-for-cable",
-   "uml-id": "_1OKeUEONEeasL6dcjI1vEA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "A rule class (an abstract specialization of Connector) that represents a connector exposed on an equipment such that a cable may be plugged in."
-   ],
-   "uml-name": "ConnectorOnEquipmentForCable"
-  },
-  "function-enablers": {
-   "id": "function-enablers",
-   "uml-id": "_1vzsYERJEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_N-qJ8EQyEeasL6dcjI1vEA",
-   "order-number": 8,
-   "is-read-only": false,
-   "uml-name": "_functionEnablers"
-  },
-  "power-state": {
-   "id": "power-state",
-   "uml-id": "_Q9fSkEQyEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "powerState"
-  },
-  "mechanical-functions": {
-   "id": "mechanical-functions",
-   "uml-id": "_KxkFYEQ-EeasL6dcjI1vEA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents the dynamic aspects of the mechanical functions of the equipment."
-   ],
-   "uml-name": "MechanicalFunctions"
-  },
-  "rotation-speed": {
-   "id": "rotation-speed",
-   "uml-id": "_M1XJIEQ-EeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "rotationSpeed"
-  },
-  "physical-properties": {
-   "id": "physical-properties",
-   "uml-id": "_t0pzs0RJEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_QloVwEQ-EeasL6dcjI1vEA",
-   "order-number": 7,
-   "is-read-only": false,
-   "uml-name": "_physicalProperties"
-  },
-  "temperature": {
-   "id": "temperature",
-   "uml-id": "_Vlnd0EQ-EeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "temperature"
-  },
-  "holder-monitors": {
-   "id": "holder-monitors",
-   "uml-id": "_6K62skRSEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_5vdx8EQfEeasL6dcjI1vEA",
-   "order-number": 4,
-   "is-read-only": false,
-   "uml-name": "_holderMonitors"
-  },
-  "is-active": {
-   "id": "is-active",
-   "uml-id": "_KFzmEERTEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "isActive",
-   "controlType": "checkbox"
-  },
-  "is-actual-mismatch-with-expected": {
-   "id": "is-actual-mismatch-with-expected",
-   "uml-id": "_XRKNEERTEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "isActualMismatchWithExpected",
-   "controlType": "checkbox"
-  },
-  "aggregate-function": {
-   "id": "aggregate-function",
-   "uml-id": "_VHOWskglEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_8SXNZT-HEeaRI-H69PghuA",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "_aggregateFunction"
-  },
-  "location": {
-   "id": "location",
-   "uml-id": "_lNf7kHpKEeaVjtpstJMDXA",
-   "uml-type": "ownedAttribute",
-   "type": "_bh_VAHpJEeaVjtpstJMDXA",
-   "order-number": 18,
-   "is-read-only": false,
-   "uml-name": "_location"
-  },
-  "equipment-location": {
-   "id": "equipment-location",
-   "uml-id": "_RUXMYEQwEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_A15msMDaEeWbqPZwR-Ot6A",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "equipmentLocation"
-  },
-  "geographical-location": {
-   "id": "geographical-location",
-   "uml-id": "_XOQ_AEQwEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_A15msMDaEeWbqPZwR-Ot6A",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "geographicalLocation"
-  },
-  "category": {
-   "id": "category",
-   "uml-id": "_jbGZ8Ec-EeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_WCZv8Ec9EeasL6dcjI1vEA",
-   "order-number": 12,
-   "is-read-only": false,
-   "uml-name": "_category"
-  },
-  "equipment-instance": {
-   "id": "equipment-instance",
-   "uml-id": "_CE4sUkRCEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_UB7QwEQuEeasL6dcjI1vEA",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "_equipmentInstance"
-  },
-  "manufacture-date": {
-   "id": "manufacture-date",
-   "uml-id": "_YrPlQEQuEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "manufactureDate"
-  },
-  "serial-number": {
-   "id": "serial-number",
-   "uml-id": "_cpqioEQuEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "serialNumber"
-  },
-  "asset-instance-identifier": {
-   "id": "asset-instance-identifier",
-   "uml-id": "_yWCIcEQuEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "assetInstanceIdentifier"
-  },
-  "equipment-type": {
-   "id": "equipment-type",
-   "uml-id": "_1KggkERBEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_BP8YcEQuEeasL6dcjI1vEA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "_equipmentType"
-  },
-  "description": {
-   "id": "description",
-   "uml-id": "_-5svQEQsEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "description"
-  },
-  "model-identifier": {
-   "id": "model-identifier",
-   "uml-id": "_oUmxsEQsEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "modelIdentifier"
-  },
-  "part-type-identifier": {
-   "id": "part-type-identifier",
-   "uml-id": "_3ypNAEQsEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "partTypeIdentifier"
-  },
-  "type-name": {
-   "id": "type-name",
-   "uml-id": "_j105QEQsEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 4,
-   "is-read-only": false,
-   "uml-name": "typeName"
-  },
-  "version": {
-   "id": "version",
-   "uml-id": "_mig3EEQuEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 5,
-   "is-read-only": false,
-   "uml-name": "version"
-  },
-  "holder-structure": {
-   "id": "holder-structure",
-   "uml-id": "_U93mQEc8EeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_0U3TwEc7EeasL6dcjI1vEA",
-   "order-number": 7,
-   "is-read-only": false,
-   "uml-name": "_holderStructure"
-  },
-  "holder-category": {
-   "id": "holder-category",
-   "uml-id": "_r240kERLEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_0K-KoERLEeasL6dcjI1vEA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "holderCategory",
-   "controlType": [
-    "slot"
-   ]
-  },
-  "is-captive": {
-   "id": "is-captive",
-   "uml-id": "_4XbukERMEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "isCaptive",
-   "controlType": "checkbox"
-  },
-  "is-guided": {
-   "id": "is-guided",
-   "uml-id": "_-1CEIERMEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "isGuided",
-   "controlType": "checkbox"
-  },
-  "is-quantised-space": {
-   "id": "is-quantised-space",
-   "uml-id": "_Lj7_sERNEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 4,
-   "is-read-only": false,
-   "uml-name": "isQuantisedSpace",
-   "controlType": "checkbox"
-  },
-  "manufactured-thing": {
-   "id": "manufactured-thing",
-   "uml-id": "_XtDuokRCEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_GgBQUERBEeasL6dcjI1vEA",
-   "order-number": 4,
-   "is-read-only": false,
-   "uml-name": "_manufacturedThing"
-  },
-  "manufacturer-properties": {
-   "id": "manufacturer-properties",
-   "uml-id": "_gdoY8EQtEeasL6dcjI1vEA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents the properties of the manufacturer."
-   ],
-   "uml-name": "ManufacturerProperties"
-  },
-  "operator-augmented-equipment-type": {
-   "id": "operator-augmented-equipment-type",
-   "uml-id": "_Yw99EEc_EeasL6dcjI1vEA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents the invariant properties of the equipment asset allocated by the operator that define and characterise the type."
-   ],
-   "uml-name": "OperatorAugmentedEquipmentType"
-  },
-  "manufacturer-identifier": {
-   "id": "manufacturer-identifier",
-   "uml-id": "_VTQLMEQtEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "manufacturerIdentifier"
-  },
-  "manufacturer-name": {
-   "id": "manufacturer-name",
-   "uml-id": "_cC-A8EQsEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "manufacturerName"
-  },
-  "mechanical-features": {
-   "id": "mechanical-features",
-   "uml-id": "_X1TkUkRFEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_qZGr8EQfEeasL6dcjI1vEA",
-   "order-number": 6,
-   "is-read-only": false,
-   "uml-name": "_mechanicalFeatures"
-  },
-  "asset-type-identifier": {
-   "id": "asset-type-identifier",
-   "uml-id": "_uHNXkEQuEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_G1gboD4AEeaRI-H69PghuA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "assetTypeIdentifier"
-  },
-  "physical-characteristics": {
-   "id": "physical-characteristics",
-   "uml-id": "_Kiw98URKEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_TsDsQEQfEeasL6dcjI1vEA",
-   "order-number": 10,
-   "is-read-only": false,
-   "uml-name": "_physicalCharacteristics"
-  },
-  "weight-characeristics": {
-   "id": "weight-characeristics",
-   "uml-id": "_87dRMEQ9EeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "weightCharaceristics"
-  },
-  "fire-characteristics": {
-   "id": "fire-characteristics",
-   "uml-id": "__oPnkEQ9EeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "fireCharacteristics"
-  },
-  "materials": {
-   "id": "materials",
-   "uml-id": "_BoTa0EQ-EeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "materials"
-  },
-  "physical-rating": {
-   "id": "physical-rating",
-   "uml-id": "_EjPzoUdMEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_SRtkMEdLEeasL6dcjI1vEA",
-   "order-number": 8,
-   "is-read-only": false,
-   "uml-name": "_physicalRating"
-  },
-  "thermal-rating": {
-   "id": "thermal-rating",
-   "uml-id": "_fDkGEEdLEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "thermalRating"
-  },
-  "power-rating": {
-   "id": "power-rating",
-   "uml-id": "_i-N9wEdLEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "powerRating"
-  },
-  "position": {
-   "id": "position",
-   "uml-id": "_4DkhskddEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_FWDLAERWEeasL6dcjI1vEA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "_position"
-  },
-  "relative-position": {
-   "id": "relative-position",
-   "uml-id": "_U_6mYERXEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "relativePosition"
-  },
-  "spatial-properties-of-type": {
-   "id": "spatial-properties-of-type",
-   "uml-id": "_bAAS0kRSEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_LAvh8EQfEeasL6dcjI1vEA",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "_spatialPropertiesOfType"
-  },
-  "height": {
-   "id": "height",
-   "uml-id": "_k_CVUEQyEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "height"
-  },
-  "width": {
-   "id": "width",
-   "uml-id": "_n6nVoEQyEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "width"
-  },
-  "length": {
-   "id": "length",
-   "uml-id": "_uIPVgEQyEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "length"
-  },
-  "swapability": {
-   "id": "swapability",
-   "uml-id": "_wwGXEUc8EeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_kr_E8Ec8EeasL6dcjI1vEA",
-   "order-number": 11,
-   "is-read-only": false,
-   "uml-name": "_swapability"
-  },
-  "is-hot-swappable": {
-   "id": "is-hot-swappable",
-   "uml-id": "_yb3zEEQgEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "isHotSwappable",
-   "controlType": "checkbox"
-  },
-  "cable": {
-   "id": "cable",
-   "uml-id": "_8SXNbD-HEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Basic model representing a cable with connectors fitted where the cable is  short  (e.g. patch cord, in-station cabling). This is intentionally a very basic representation of a cable. In a more sophisticated representation cable ends might be represented that then associate to the attached connector. At this point it is assumed that the basic model is sufficient."
-   ],
-   "uml-name": "Cable"
-  },
-  "connector": {
-   "id": "connector",
-   "uml-id": "_8SXNcD-HEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents a connector that may be fully exposed (e.g. to plug in a cable or on the end of a cable) or partially exposed (e.g. backplane to plug in another piece of equipment such as a module)."
-   ],
-   "uml-name": "Connector"
-  },
-  "pin": {
-   "id": "pin",
-   "uml-id": "_8SXNnT-HEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "An individual physical connection point (male or female). May be capable of carrying electrical or optical signals. A pin may have more than one wire/fiber attached but is such that all attached things get exactly the same signal set."
-   ],
-   "uml-name": "Pin"
-  },
-  "orientation": {
-   "id": "orientation",
-   "uml-id": "_DKSfwGpCEeaBUOurxzA2sw",
-   "uml-type": "ownedAttribute",
-   "type": "_y2WM8EQ-EeasL6dcjI1vEA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "orientation",
-   "controlType": [
-    "male",
-    "female",
-    "symmetric-neutral"
-   ]
-  },
-  "pin-layout": {
-   "id": "pin-layout",
-   "uml-id": "_Fzd-QEQ_EeasL6dcjI1vEA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The structuring of pins in a connector."
-   ],
-   "uml-name": "PinLayout"
-  },
-  "connector-type": {
-   "id": "connector-type",
-   "uml-id": "_NBXLMEgXEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_aL8EoGnNEeaBUOurxzA2sw",
-   "order-number": 8,
-   "is-read-only": false,
-   "uml-name": "connectorType"
-  },
-  "equipment": {
-   "id": "equipment",
-   "uml-id": "_8SXNej-HEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents any relevant physical thing. Can be either field replaceable or not field replaceable. Note: The model is currently constrained to inside plant."
-   ],
-   "uml-name": "Equipment"
-  },
-  "contained-holder": {
-   "id": "contained-holder",
-   "uml-id": "_ayDQMj-NEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_8SXNjj-HEeaRI-H69PghuA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "_containedHolder"
-  },
-  "exposed-cable": {
-   "id": "exposed-cable",
-   "uml-id": "_Fy4CYj-fEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_8SXNbD-HEeaRI-H69PghuA",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "_exposedCable"
-  },
-  "mechanicall-functions": {
-   "id": "mechanicall-functions",
-   "uml-id": "_-Ci-o0RJEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_KxkFYEQ-EeasL6dcjI1vEA",
-   "order-number": 9,
-   "is-read-only": false,
-   "uml-name": "_mechanicallFunctions"
-  },
-  "is-field-replaceable": {
-   "id": "is-field-replaceable",
-   "uml-id": "_f1p94D-WEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 14,
-   "is-read-only": true,
-   "description": [
-    "Indicates whether or not the equipment can be removed and replaced  in the field  (i.e. in a deployment) by normal operations personnel."
-   ],
-   "uml-name": "isFieldReplaceable",
-   "controlType": "checkbox"
-  },
-  "function-block": {
-   "id": "function-block",
-   "uml-id": "_8SXNfj-HEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_8SXNiz-HEeaRI-H69PghuA",
-   "order-number": 15,
-   "is-read-only": false,
-   "uml-name": "_functionBlock"
-  },
-  "expected-equipment": {
-   "id": "expected-equipment",
-   "uml-id": "_8SXNfz-HEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "A definition of the restrictions on the equipment that is expected to be present in the physical network at a particular  place . The expected equipment will state the type and may constrain any other invariant properties. It may also provide desired ranges for dynami properties."
-   ],
-   "uml-name": "ExpectedEquipment"
-  },
-  "actual-equipment": {
-   "id": "actual-equipment",
-   "uml-id": "_8SXNZD-HEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The equipment that is actually present in the physical network. It will expose all dynamic properties and some critical static properties."
-   ],
-   "uml-name": "ActualEquipment"
-  },
-  "holder": {
-   "id": "holder",
-   "uml-id": "_8SXNjj-HEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents a space in an equipment in which another equipment can be fitted in the field."
-   ],
-   "uml-name": "Holder"
-  },
-  "occupying-fru": {
-   "id": "occupying-fru",
-   "uml-id": "_X1q3Qj-QEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_8SXNej-HEeaRI-H69PghuA",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "The FRU that is occupying the holder. A holder may be unoccupied. An FRU may occupy more hat one holder (using or blocking are intentionally not distinguished here)."
-   ],
-   "uml-name": "_occupyingFru"
-  },
-  "holder-location": {
-   "id": "holder-location",
-   "uml-id": "_l6LE4ERTEeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_A15msMDaEeWbqPZwR-Ot6A",
-   "order-number": 5,
-   "is-read-only": false,
-   "uml-name": "holderLocation"
-  },
-  "supported-equipment": {
-   "id": "supported-equipment",
-   "uml-id": "_RKzmokg0EeasL6dcjI1vEA",
-   "uml-type": "ownedAttribute",
-   "type": "_Ghvk8EguEeasL6dcjI1vEA",
-   "order-number": 9,
-   "is-read-only": false,
-   "uml-name": "_supportedEquipment"
-  },
-  "expected-holder": {
-   "id": "expected-holder",
-   "uml-id": "_MEUpIEmhEeaDccCv6BIgdg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "A definition of a holder expected in the ActualEquipment (i.e. an ActualHolder) as part of the constraints provided by the ExpectedEquipment."
-   ],
-   "uml-name": "ExpectedHolder"
-  },
-  "actual-holder": {
-   "id": "actual-holder",
-   "uml-id": "_NwJ40EmhEeaDccCv6BIgdg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "A holder in the ActualEquipment."
-   ],
-   "uml-name": "ActualHolder"
-  },
-  "pin-group": {
-   "id": "pin-group",
-   "uml-id": "_8SXNrj-HEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_8SXNnj-HEeaRI-H69PghuA",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "_pinGroup"
-  },
-  "port": {
-   "id": "port",
-   "uml-id": "_8SXNpD-HEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "A conceptual access point for a group of signals (where that group of signals cannot be separated)."
-   ],
-   "uml-name": "Port"
-  },
-  "signal-ref-pt": {
-   "id": "signal-ref-pt",
-   "uml-id": "_8SXNrz-HEeaRI-H69PghuA",
-   "uml-type": "ownedAttribute",
-   "type": "_8SXNqz-HEeaRI-H69PghuA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "_signalRefPt"
-  },
-  "elemental-signals": {
-   "id": "elemental-signals",
-   "uml-id": "_B4oXwEddEeasL6dcjI1vEA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The elemental (sub-atomic) parts of an  indivisible  signal where processing in the LTP is required to extract the elemental signals."
-   ],
-   "uml-name": "ElementalSignals"
-  },
-  "signal-ref-pt-group": {
-   "id": "signal-ref-pt-group",
-   "uml-id": "_8SXNrT-HEeaRI-H69PghuA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "A physical indivisible group of signals."
-   ],
-   "uml-name": "SignalRefPtGroup"
-  },
-  "group-of-pins": {
-   "id": "group-of-pins",
-   "uml-id": "_uMSwAEdcEeasL6dcjI1vEA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "A group of pins from one or more connectors relevant for some purpose."
-   ],
-   "uml-name": "GroupOfPins"
-  },
-  "port-role": {
-   "id": "port-role",
-   "uml-id": "_DUU_sGZ_EeWrX_JIGzXlSg",
-   "uml-type": "uml:DataType",
-   "description": [
-    "The role of a port in the context of the function of the forwarding entity that it bounds."
-   ],
-   "uml-name": "PortRole"
-  },
-  "protection-type": {
-   "id": "protection-type",
-   "uml-id": "_c3Hu8Gb3EeWrX_JIGzXlSg",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Identifies the type of protection of an FcSwitch."
-   ],
-   "uml-name": "ProtectionType"
-  },
-  "date-and-time": {
-   "id": "date-and-time",
-   "uml-id": "_oGqi1lLNEeO75dO39GbF8Q",
-   "uml-type": "uml:DataType",
-   "description": [
-    "This primitive type defines the date and time according to the following structure:  yyyyMMddhhmmss.s[Z|{+|-}HHMm]  where: yyyy  0000 .. 9999  year MM  01 .. 12  month dd  01 .. 31  day hh  00 .. 23  hour mm  00 .. 59  minute ss  00 .. 59  second s  .0 .. .9  tenth of second (set to  .0  if EMS or NE cannot support this granularity) Z  Z  indicates UTC (rather than local time) {+|-}  +  or  -  delta from UTC HH  00 .. 23  time zone difference in hours Mm  00 .. 59  time zone difference in minutes."
-   ],
-   "uml-name": "DateAndTime"
-  },
-  "to-be-defined": {
-   "id": "to-be-defined",
-   "uml-id": "_aL8EoGnNEeaBUOurxzA2sw",
-   "uml-type": "uml:DataType",
-   "description": [
-    "This type is used when the actual type of the attrbute is expected to be complex but where the type has not yet been developed. This type should only be used for attributes that are experimental."
-   ],
-   "uml-name": "ToBeDefined"
-  },
-  "name-and-value": {
-   "id": "name-and-value",
-   "uml-id": "_y7oy8I3tEeO38ZmbECnvbg",
-   "uml-type": "uml:DataType",
-   "description": [
-    "A scoped name-value pair."
-   ],
-   "uml-name": "NameAndValue"
-  },
-  "value-name": {
-   "id": "value-name",
-   "uml-id": "_77PyQI3tEeO38ZmbECnvbg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "The name of the value. The value need not have a name."
-   ],
-   "uml-name": "valueName",
-   "controlType": "text"
-  },
-  "value": {
-   "id": "value",
-   "uml-id": "_cbx2gI30EeO38ZmbECnvbg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "The specific value of the universal id."
-   ],
-   "uml-name": "value",
-   "controlType": "text"
-  },
-  "universal-id": {
-   "id": "universal-id",
-   "uml-id": "_SU3Q4I30EeO38ZmbECnvbg",
-   "uml-type": "uml:DataType",
-   "description": [
-    "The universal ID value where the mechanism for generation is defined by some authority not directly referenced in the structure. A example structure is [IETF RFC4122]."
-   ],
-   "uml-name": "UniversalId"
-  },
-  "address": {
-   "id": "address",
-   "uml-id": "_A15msMDaEeWbqPZwR-Ot6A",
-   "uml-type": "uml:DataType",
-   "description": [
-    "A description of location via a hierarchy of narrowing contexts."
-   ],
-   "uml-name": "Address"
-  },
-  "address-name": {
-   "id": "address-name",
-   "uml-id": "_W76bkMDaEeWbqPZwR-Ot6A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "The name of the address (to allow the specific hierarchy to be distinguished from others for the same entity)."
-   ],
-   "uml-name": "addressName",
-   "controlType": "text"
-  },
-  "address-element": {
-   "id": "address-element",
-   "uml-id": "_M_WWsMDYEeWbqPZwR-Ot6A",
-   "uml-type": "uml:DataType",
-   "description": [
-    "One element of a hierarchy of elements. Note that the element must have one and only one value chosen from a list of potential value types."
-   ],
-   "uml-name": "AddressElement"
-  },
-  "local-id-and-class": {
-   "id": "local-id-and-class",
-   "uml-id": "_dCdzAMDuEeWbqPZwR-Ot6A",
-   "uml-type": "uml:DataType",
-   "description": [
-    "The localId and the class of entity that it identifies."
-   ],
-   "uml-name": "LocalIdAndClass"
-  },
-  "class-of-instance": {
-   "id": "class-of-instance",
-   "uml-id": "_NBaUwMDvEeWbqPZwR-Ot6A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "The class to which the name refers."
-   ],
-   "uml-name": "classOfInstance",
-   "controlType": "text"
-  },
-  "name-and-class": {
-   "id": "name-and-class",
-   "uml-id": "_XUarEMDuEeWbqPZwR-Ot6A",
-   "uml-type": "uml:DataType",
-   "description": [
-    "The name and the class of entity that it names."
-   ],
-   "uml-name": "NameAndClass"
-  },
-  "address-element-name": {
-   "id": "address-element-name",
-   "uml-id": "_3mdl0MpUEeWSlYzRfsq8lQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "The name of the address element (e.g.  shelf  as an element of a shelf/slot/port addressing scheme). The remainder of the structure has the reference for the shelf."
-   ],
-   "uml-name": "addressElementName",
-   "controlType": "text"
-  },
-  "arbitrary-element": {
-   "id": "arbitrary-element",
-   "uml-id": "_nPsCsMDzEeWbqPZwR-Ot6A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 5,
-   "is-read-only": false,
-   "description": [
-    "Where the element is from some external model that is not formally represented in this model."
-   ],
-   "uml-name": "arbitraryElement",
-   "controlType": "text"
-  },
-  "2-wp-c8-ec7-ee-wxh-l2-b6-peg6-a": {
-   "id": "2-wp-c8-ec7-ee-wxh-l2-b6-peg6-a",
-   "uml-id": "_2WpC8EC7EeWxhL2B6Peg6A",
-   "enum": [
-    "BIDIRECTIONAL",
-    "INPUT",
-    "OUTPUT",
-    "UNIDENTIFIED_OR_UNKNOWN"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The orientation of flow at the Port of a Forwarding entity"
-   ],
-   "uml-name": "_2WpC8EC7EeWxhL2B6Peg6A"
-  },
-  "d-v67-aec8-ee-wxh-l2-b6-peg6-a": {
-   "id": "d-v67-aec8-ee-wxh-l2-b6-peg6-a",
-   "uml-id": "_dV67AEC8EeWxhL2B6Peg6A",
-   "enum": [
-    "BIDIRECTIONAL",
-    "UNIDIRECTIONAL",
-    "UNDEFINED_OR_UNKNOWN"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The directionality of a Forwarding entity."
-   ],
-   "uml-name": "_dV67AEC8EeWxhL2B6Peg6A"
-  },
-  "rwilyeda-ee-w-qe-o-kb-n-up-p9-a": {
-   "id": "rwilyeda-ee-w-qe-o-kb-n-up-p9-a",
-   "uml-id": "_RWILYEDAEeWQeOKbNUpP9A",
-   "enum": [
-    "BIDIRECTIONAL",
-    "SINK",
-    "SOURCE",
-    "UNDEFINED_OR_UNKNOWN"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The directionality of a termination entity."
-   ],
-   "uml-name": "_RWILYEDAEeWQeOKbNUpP9A"
-  },
-  "t5-gyk-edn-ee-w-qe-o-kb-n-up-p9-a": {
-   "id": "t5-gyk-edn-ee-w-qe-o-kb-n-up-p9-a",
-   "uml-id": "_T5GykEDNEeWQeOKbNUpP9A",
-   "enum": [
-    "CONTRA_DIRECTION_SINK",
-    "CONTRA_DIRECTION_SOURCE"
-   ],
-   "is-read-only": false,
-   "description": [
-    "Extended to include contra-direction considerations. Only applies to LP and elements of LP not to LTP."
-   ],
-   "uml-name": "_T5GykEDNEeWQeOKbNUpP9A"
-  },
-  "6-an-g8-ge-e-ee-wmg-iw-ai-zl-ykq": {
-   "id": "6-an-g8-ge-e-ee-wmg-iw-ai-zl-ykq",
-   "uml-id": "_6anG8GeEEeWmgIwAIZlYKQ",
-   "enum": [
-    "LP_CAN_NEVER_TERMINATE",
-    "LT_NOT_TERMINATED",
-    "TERMINATED_SERVER_TO_CLIENT_FLOW",
-    "TERMINATED_CLIENT_TO_SERVER_FLOW",
-    "TERMINATED_BIDIRECTIONAL",
-    "LT_PERMENANTLY_TERMINATED",
-    "TERMINATION_STATE_UNKNOWN"
-   ],
-   "is-read-only": false,
-   "description": [
-    "Provides support for the range of behaviours and specific states that an LP can take with respect to termination of the signal. Indicates to what degree the LayerTermination is terminated."
-   ],
-   "uml-name": "_6anG8GeEEeWmgIwAIZlYKQ"
-  },
-  "sthcg-ci-eea-g-gv-axx-se1-u-a": {
-   "id": "sthcg-ci-eea-g-gv-axx-se1-u-a",
-   "uml-id": "_sthcgCi-EeaGGvAxxSe1uA",
-   "enum": [
-    "WAIT_TO_REVERT",
-    "SIGNAL_DEGRADE",
-    "SIGNAL_FAIL"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The cause of the current protection state."
-   ],
-   "uml-name": "_sthcgCi-EeaGGvAxxSe1uA"
-  },
-  "y-i-kvs-mog-ee-ww-z527-phf-fsa": {
-   "id": "y-i-kvs-mog-ee-ww-z527-phf-fsa",
-   "uml-id": "_yIKvsMOGEeWwZ527PhfFSA",
-   "enum": [
-    "LOCK_OUT"
-   ],
-   "is-read-only": false,
-   "description": [
-    "Possible degrees of administrative control applied to the Route selection."
-   ],
-   "uml-name": "_yIKvsMOGEeWwZ527PhfFSA"
-  },
-  "csw-hk-ci-eea-g-gv-axx-se1-u-a": {
-   "id": "csw-hk-ci-eea-g-gv-axx-se1-u-a",
-   "uml-id": "_cswHkCi-EeaGGvAxxSe1uA",
-   "enum": [],
-   "is-read-only": false,
-   "description": [
-    "The cause of the current route selection."
-   ],
-   "uml-name": "_cswHkCi-EeaGGvAxxSe1uA"
-  },
-  "e-7-dymof-ee-ww-z527-phf-fsa": {
-   "id": "e-7-dymof-ee-ww-z527-phf-fsa",
-   "uml-id": "_e-7DYMOFEeWwZ527PhfFSA",
-   "enum": [
-    "NORMAL",
-    "MANUAL",
-    "FORCED"
-   ],
-   "is-read-only": false,
-   "uml-name": "_e-7DYMOFEeWwZ527PhfFSA"
-  },
-  "z-r-kl-i-ci9-eea-g-gv-axx-se1-u-a": {
-   "id": "z-r-kl-i-ci9-eea-g-gv-axx-se1-u-a",
-   "uml-id": "_zRKlICi9EeaGGvAxxSe1uA",
-   "enum": [],
-   "is-read-only": false,
-   "description": [
-    "Explains the reason for the current switch state."
-   ],
-   "uml-name": "_zRKlICi9EeaGGvAxxSe1uA"
-  },
-  "o-gqjf1-ln-ee-o75-d-o39-gb-f8-q": {
-   "id": "o-gqjf1-ln-ee-o75-d-o39-gb-f8-q",
-   "uml-id": "_oGqjf1LNEeO75dO39GbF8Q",
-   "enum": [
-    "REVERTIVE",
-    "NON-REVERTIVE"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The reversion mode associated with protection."
-   ],
-   "uml-name": "_oGqjf1LNEeO75dO39GbF8Q"
-  },
-  "l-nclk-l-et-ee-sz-ud-yf-p-sdgew": {
-   "id": "l-nclk-l-et-ee-sz-ud-yf-p-sdgew",
-   "uml-id": "_lNclkLEtEeSZUdYfPSdgew",
-   "enum": [
-    "DISABLED",
-    "ENABLED"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The possible values of the operationalState."
-   ],
-   "uml-name": "_lNclkLEtEeSZUdYfPSdgew"
-  },
-  "kskoyl-eu-ee-sz-ud-yf-p-sdgew": {
-   "id": "kskoyl-eu-ee-sz-ud-yf-p-sdgew",
-   "uml-id": "_KSKOYLEuEeSZUdYfPSdgew",
-   "enum": [
-    "LOCKED",
-    "UNLOCKED"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The possible values of the administrativeState."
-   ],
-   "uml-name": "_KSKOYLEuEeSZUdYfPSdgew"
-  },
-  "-x-pe-al-ev-ee-sz-ud-yf-p-sdgew": {
-   "id": "-x-pe-al-ev-ee-sz-ud-yf-p-sdgew",
-   "uml-id": "_-xPeALEvEeSZUdYfPSdgew",
-   "enum": [
-    "UNLOCK",
-    "LOCK_PASSIVE",
-    "LOCK_ACTIVE",
-    "LOCK_IMMEDIATE"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The possible values of the current target administrative state.",
-    "Reflects the current control action when the entity is not in the desired state."
-   ],
-   "uml-name": "_-xPeALEvEeSZUdYfPSdgew"
-  },
-  "mcyhc-gge-ee-wmg-iw-ai-zl-ykq": {
-   "id": "mcyhc-gge-ee-wmg-iw-ai-zl-ykq",
-   "uml-id": "_McyhcGgeEeWmgIwAIZlYKQ",
-   "enum": [
-    "SHUTTING_DOWN_ACTIVE",
-    "SHUTTING_DOWN_PASSIVE"
-   ],
-   "is-read-only": false,
-   "description": [
-    "Possible extensions to AdministrativeState."
-   ],
-   "uml-name": "_McyhcGgeEeWmgIwAIZlYKQ"
-  },
-  "y-ssbo-ggi-ee-wmg-iw-ai-zl-ykq": {
-   "id": "y-ssbo-ggi-ee-wmg-iw-ai-zl-ykq",
-   "uml-id": "_YSsboGgiEeWmgIwAIZlYKQ",
-   "enum": [
-    "PLANNED",
-    "POTENTIAL",
-    "INSTALLED",
-    "PENDING_REMOVAL"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The possible values of the lifecycleState."
-   ],
-   "uml-name": "_YSsboGgiEeWmgIwAIZlYKQ"
-  },
-  "lj-ul4-d3-w-eea-ri-h69-pghu-a": {
-   "id": "lj-ul4-d3-w-eea-ri-h69-pghu-a",
-   "uml-id": "_ljUl4D3WEeaRI-H69PghuA",
-   "enum": [
-    "CREATE_POST_ADD",
-    "SET_UPDATE_PUT_MODIFY_WRITE_ADD",
-    "GET_READ",
-    "DELETE_REMOVE"
-   ],
-   "is-read-only": false,
-   "uml-name": "_ljUl4D3WEeaRI-H69PghuA"
-  },
-  "iyt74-d3-k-eea-ri-h69-pghu-a": {
-   "id": "iyt74-d3-k-eea-ri-h69-pghu-a",
-   "uml-id": "_IYT74D3kEeaRI-H69PghuA",
-   "enum": [
-    "STRUCTURE_IS_NOT",
-    "NEW_STRUCTURE_AND_VALUES",
-    "INCREMENTAL_STRUCTURE_AND_VALUES",
-    "ONLY_VALUES_IN_EXISTING_STRUCTURE",
-    "DEFINED_BY_VERB"
-   ],
-   "is-read-only": false,
-   "uml-name": "_IYT74D3kEeaRI-H69PghuA"
-  },
-  "l4-y9-qe2-d-eea-gxd-x-ei-nf4-t-a": {
-   "id": "l4-y9-qe2-d-eea-gxd-x-ei-nf4-t-a",
-   "uml-id": "_L4Y9QE2DEeaGxdXEiNf4tA",
-   "enum": [
-    "BEST_EFFORT",
-    "EXACT_MATCH"
-   ],
-   "is-read-only": false,
-   "uml-name": "_L4Y9QE2DEeaGxdXEiNf4tA"
-  },
-  "nd-xvme2-d-eea-gxd-x-ei-nf4-t-a": {
-   "id": "nd-xvme2-d-eea-gxd-x-ei-nf4-t-a",
-   "uml-id": "_ndXVME2DEeaGxdXEiNf4tA",
-   "enum": [
-    "NO_PAUSE_POSSIBLE"
-   ],
-   "is-read-only": false,
-   "uml-name": "_ndXVME2DEeaGxdXEiNf4tA"
-  },
-  "y2-wm8-eq-eeas-l6-dcj-i1-v-ea": {
-   "id": "y2-wm8-eq-eeas-l6-dcj-i1-v-ea",
-   "uml-id": "_y2WM8EQ-EeasL6dcjI1vEA",
-   "enum": [
-    "MALE",
-    "FEMALE",
-    "SYMMETRIC_NEUTRAL"
-   ],
-   "is-read-only": false,
-   "description": [
-    "Most connector schems are asymmetric such that there are two orientations of the connector where a mating is only possible between two connectors of different orientations. A multi-pin connector may have a mix of pin orientations. In this case it is expected that the dominant orientation of pin is chosen for the connector orientation."
-   ],
-   "uml-name": "_y2WM8EQ-EeasL6dcjI1vEA"
-  },
-  "m-mo-bg-e-qv-eeas-l6-dcj-i1-v-ea": {
-   "id": "m-mo-bg-e-qv-eeas-l6-dcj-i1-v-ea",
-   "uml-id": "_mMOBgEQvEeasL6dcjI1vEA",
-   "enum": [
-    "SUBRACK",
-    "CIRCUIT_PACK",
-    "SMALL_FORMFACTOR_PLUGGABLE",
-    "STAND_ALONE_UNIT",
-    "RACK"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The form of equipment."
-   ],
-   "uml-name": "_mMOBgEQvEeasL6dcjI1vEA"
-  },
-  "0-k-ko-erl-eeas-l6-dcj-i1-v-ea": {
-   "id": "0-k-ko-erl-eeas-l6-dcj-i1-v-ea",
-   "uml-id": "_0K-KoERLEeasL6dcjI1vEA",
-   "enum": [
-    "SLOT"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The form of holder."
-   ],
-   "uml-name": "_0K-KoERLEeasL6dcjI1vEA"
-  }
- }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/g.874.1-model.schema-information.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/g.874.1-model.schema-information.json
deleted file mode 100644 (file)
index b8e4d4a..0000000
+++ /dev/null
@@ -1,602 +0,0 @@
-{
- "schema-information": {
-  "otn-current-data": {
-   "id": "otn-current-data",
-   "uml-id": "_OxyHAOGJEeGhaeLtr7IxXg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "This object class is an abstract class from which the OTN layer-specific CurrentData object classes are inherited. This object class is a subclass of the Q.822 CurrentData object class, which in turn is a subclass of X.739 Scanner object class. It inherits the following attributes: scannerId, operationalState, granularityPeriod, administrativeState, suspectIntervalFlag, elapsedTime, observedObjectClass, and observedObjectInstance."
-   ],
-   "uml-name": "OTN_CurrentData"
-  },
-  "timestamp": {
-   "id": "timestamp",
-   "uml-id": "_bGwfoOGJEeGhaeLtr7IxXg",
-   "uml-type": "ownedAttribute",
-   "type": "_X-HZUNwbEeGoneTbGt8X0A",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "The timestamp associated with when the current data was collected."
-   ],
-   "uml-name": "timestamp"
-  },
-  "otn-history-data": {
-   "id": "otn-history-data",
-   "uml-id": "_dQ2mYOGOEeGhaeLtr7IxXg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "This object class is an abstract class from which the OTN layer-specific HistoryData object classes are inherited."
-   ],
-   "uml-name": "OTN_HistoryData"
-  },
-  "suspect-interval-flag": {
-   "id": "suspect-interval-flag",
-   "uml-id": "_M8IDNceIEeSfd5vyUJsimg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "This attribute is used to indicate that the performance data for the current period may not be reliable. Some reasons for this to occur are:- Suspect data were detected by the actual resource doing data collection.- Transition of the administrativeState attribute to/from the 'lock' state.- Transition of the operationalState to/from the 'disabled' state.- Scheduler setting that inhibits the collection function.- The performance counters were reset during the interval.- The currentData (or subclass) object instance was created during the monitoring period."
-   ],
-   "uml-name": "suspectIntervalFlag",
-   "controlType": "checkbox"
-  },
-  "«q.822»-current-data": {
-   "id": "«q.822»-current-data",
-   "uml-id": "_M8IDMceIEeSfd5vyUJsimg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "«Q.822»-CurrentData"
-  },
-  "elapsed-time": {
-   "id": "elapsed-time",
-   "uml-id": "_M8IDOMeIEeSfd5vyUJsimg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "elapsedTime",
-   "controlType": "number"
-  },
-  "«q.822»-history-data": {
-   "id": "«q.822»-history-data",
-   "uml-id": "_M8IDVMeIEeSfd5vyUJsimg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "«Q.822»-HistoryData"
-  },
-  "history-data-id": {
-   "id": "history-data-id",
-   "uml-id": "_M8IDWMeIEeSfd5vyUJsimg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "historyDataId",
-   "controlType": "text"
-  },
-  "period-end-time": {
-   "id": "period-end-time",
-   "uml-id": "_M8IDWceIEeSfd5vyUJsimg",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_oGqi1lLNEeO75dO39GbF8Q",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "periodEndTime"
-  },
-  "granularity-period": {
-   "id": "granularity-period",
-   "uml-id": "_M8IDWseIEeSfd5vyUJsimg",
-   "uml-type": "ownedAttribute",
-   "type": "_Y6WUEEamEeabNPX3o7rjtw",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "granularityPeriod",
-   "controlType": [
-    "unknown",
-    "period-15-min",
-    "period-24-hours"
-   ]
-  },
-  "«x.739»-scanner": {
-   "id": "«x.739»-scanner",
-   "uml-id": "_7wb90ceIEeSfd5vyUJsimg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "«X.739»-Scanner"
-  },
-  "scanner-id": {
-   "id": "scanner-id",
-   "uml-id": "_7wb91ceIEeSfd5vyUJsimg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "scannerId",
-   "controlType": "text"
-  },
-  "administrative-state": {
-   "id": "administrative-state",
-   "uml-id": "_7wb92seIEeSfd5vyUJsimg",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_KSKOYLEuEeSZUdYfPSdgew",
-   "order-number": 3,
-   "is-read-only": false,
-   "uml-name": "administrativeState"
-  },
-  "«x.721»-top": {
-   "id": "«x.721»-top",
-   "uml-id": "_BMJ0EceTEeS6-cawxfHpnA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "This is the top level of managed object class hierarchy and every other managed object class is a specialization of either this generic class (top) or a specialization of subclass of top. The parameter miscellaneousError is to be used when a processing failure has occurred and the error condition encountered does not match any of object's defined specific error types."
-   ],
-   "uml-name": "«X.721»-Top"
-  },
-  "object-class": {
-   "id": "object-class",
-   "uml-id": "_BMJ0FceTEeS6-cawxfHpnA",
-   "uml-type": "ownedAttribute",
-   "type": "_ltGzFMeUEeS6-cawxfHpnA",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "ObjectClass ::= CHOICE{ globalForm [0] OBJECT IDENTIFIER, localForm [1] INTEGER}"
-   ],
-   "uml-name": "objectClass"
-  },
-  "name-binding": {
-   "id": "name-binding",
-   "uml-id": "_BMJ0F8eTEeS6-cawxfHpnA",
-   "uml-type": "ownedAttribute",
-   "type": "_ltGzFMeUEeS6-cawxfHpnA",
-   "order-number": 2,
-   "is-read-only": false,
-   "uml-name": "nameBinding"
-  },
-  "date-and-time": {
-   "id": "date-and-time",
-   "uml-id": "_X-HZUNwbEeGoneTbGt8X0A",
-   "uml-type": "uml:DataType",
-   "description": [
-    "This primitive type defines the date and time according to the following structure:  yyyyMMddhhmmss.s[Z|{+|-}HHMm]  where: yyyy  0000 .. 9999  year MM  01 .. 12  month dd  01 .. 31  day hh  00 .. 23  hour mm  00 .. 59  minute ss  00 .. 59  second s  .0 .. .9  tenth of second (set to  .0  if EMS or NE cannot support this granularity) Z  Z  indicates UTC (rather than local time) {+|-}  +  or  -  delta from UTC HH  00 .. 23  time zone difference in hours Mm  00 .. 59  time zone difference in minutes."
-   ],
-   "uml-name": "DateAndTime"
-  },
-  "5-g6-yq-oo-ee-cj-nnlz-cc6-mew": {
-   "id": "5-g6-yq-oo-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_5G6YQOo-EeCjNNLZCc6mew",
-   "enum": [
-    "SINK",
-    "SOURCE",
-    "BIDIRECTIONAL"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The enumeration with the options for directionality of the termination point."
-   ],
-   "uml-name": "_5G6YQOo-EeCjNNLZCc6mew"
-  },
-  "r-u8-a-m-opf-ee-cj-nnlz-cc6-mew": {
-   "id": "r-u8-a-m-opf-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_rU8aMOpfEeCjNNLZCc6mew",
-   "enum": [
-    "GCC1",
-    "GCC2",
-    "GCC1_AND_GCC2"
-   ],
-   "is-read-only": false,
-   "description": [
-    "This enumeration indicates the GCC access represented by the entity."
-   ],
-   "uml-name": "_rU8aMOpfEeCjNNLZCc6mew"
-  },
-  "w7-1-o-opi-ee-cj-nnlz-cc6-mew": {
-   "id": "w7-1-o-opi-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_W7-1oOpiEeCjNNLZCc6mew",
-   "enum": [
-    "ENABLED",
-    "DISABLED"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The list of valid operational states for the connection."
-   ],
-   "uml-name": "_W7-1oOpiEeCjNNLZCc6mew"
-  },
-  "g0-z-cs-os-d-ee-cj-nnlz-cc6-mew": {
-   "id": "g0-z-cs-os-d-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_g0zCsOsDEeCjNNLZCc6mew",
-   "enum": [
-    "REVERTIVE",
-    "NON-REVERTIVE"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The operation type associated with the protection mechanism (either non-revertive or revertive)."
-   ],
-   "uml-name": "_g0zCsOsDEeCjNNLZCc6mew"
-  },
-  "jl09-g-os-k-ee-cj-nnlz-cc6-mew": {
-   "id": "jl09-g-os-k-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_Jl09gOsKEeCjNNLZCc6mew",
-   "enum": [
-    "EXERCISE",
-    "MANUAL_SWITCH",
-    "FORCED_SWITCH",
-    "LOCKOUT",
-    "RELEASE_OF_MANUAL_SWITCH",
-    "RELEASE_OF_FORCED_SWITCH",
-    "RELEASE_OF_LOCKOUT"
-   ],
-   "is-read-only": false,
-   "description": [
-    "This enumeration contains the options for the actions that instruct the protection system for performing specific protection switching operations."
-   ],
-   "uml-name": "_Jl09gOsKEeCjNNLZCc6mew"
-  },
-  "bwx-bq-ow5-ee-cj-nnlz-cc6-mew": {
-   "id": "bwx-bq-ow5-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_bwxBQOw5EeCjNNLZCc6mew",
-   "enum": [
-    "UNLOCKED",
-    "LOCKED",
-    "SHUTTING_DOWN"
-   ],
-   "is-read-only": false,
-   "description": [
-    "For more information on Administrative State, See ITU-T Recs. X.731 and M.3100."
-   ],
-   "uml-name": "_bwxBQOw5EeCjNNLZCc6mew"
-  },
-  "ch-q5-o-ow-ee-cj-nnlz-cc6-mew": {
-   "id": "ch-q5-o-ow-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_ChQ5oOw-EeCjNNLZCc6mew",
-   "enum": [
-    "2.5_G",
-    "10_G",
-    "40_G",
-    "100_G"
-   ],
-   "is-read-only": false,
-   "description": [
-    "Provides an enumeration with the meaning of each  k  value."
-   ],
-   "uml-name": "_ChQ5oOw-EeCjNNLZCc6mew"
-  },
-  "z-bty-u-ow-ee-cj-nnlz-cc6-mew": {
-   "id": "z-bty-u-ow-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_ZBtyUOw_EeCjNNLZCc6mew",
-   "enum": [
-    "DAPI",
-    "SAPI",
-    "BOTH"
-   ],
-   "is-read-only": false,
-   "description": [
-    "List of modes for trace identifier mismatch detection."
-   ],
-   "uml-name": "_ZBtyUOw_EeCjNNLZCc6mew"
-  },
-  "hf864-ox-a-ee-cj-nnlz-cc6-mew": {
-   "id": "hf864-ox-a-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_HF864OxAEeCjNNLZCc6mew",
-   "enum": [
-    "LOS_P",
-    "OCI",
-    "SSF_P",
-    "SSF_O",
-    "SSF",
-    "TIM",
-    "DEG",
-    "BDI"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The valid list of problems for the entity."
-   ],
-   "uml-name": "_HF864OxAEeCjNNLZCc6mew"
-  },
-  "w-po-no-o3-e-ee-cj-nnlz-cc6-mew": {
-   "id": "w-po-no-o3-e-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_WPoNoO3eEeCjNNLZCc6mew",
-   "enum": [
-    "INTRUSIVE",
-    "NON-INTRUSIVE"
-   ],
-   "is-read-only": false,
-   "description": [
-    "Monitoring types for the tandem connection monitoring function."
-   ],
-   "uml-name": "_WPoNoO3eEeCjNNLZCc6mew"
-  },
-  "oi-7-w-o6-q-ee-cj-nnlz-cc6-mew": {
-   "id": "oi-7-w-o6-q-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_OI-7wO6QEeCjNNLZCc6mew",
-   "enum": [
-    "OPERATIONAL",
-    "TRANSPARENT",
-    "MONITOR"
-   ],
-   "is-read-only": false,
-   "description": [
-    "List of value modes for the sink side of the tandem connection monitoring function."
-   ],
-   "uml-name": "_OI-7wO6QEeCjNNLZCc6mew"
-  },
-  "zn-m8-c-o6-z-ee-cj-nnlz-cc6-mew": {
-   "id": "zn-m8-c-o6-z-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_ZnM8cO6ZEeCjNNLZCc6mew",
-   "enum": [
-    "40_G",
-    "100_G"
-   ],
-   "is-read-only": false,
-   "description": [
-    "Provides an enumeration with the meaning of each  k  value."
-   ],
-   "uml-name": "_ZnM8cO6ZEeCjNNLZCc6mew"
-  },
-  "p-v-f8-o6-a-ee-cj-nnlz-cc6-mew": {
-   "id": "p-v-f8-o6-a-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_pV-F8O6aEeCjNNLZCc6mew",
-   "enum": [
-    "LOS",
-    "LOL"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The valid list of problems for the entity."
-   ],
-   "uml-name": "_pV-F8O6aEeCjNNLZCc6mew"
-  },
-  "qw1-syo6-b-ee-cj-nnlz-cc6-mew": {
-   "id": "qw1-syo6-b-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_QW1SYO6bEeCjNNLZCc6mew",
-   "enum": [
-    "LOS"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The valid list of problems for the entity."
-   ],
-   "uml-name": "_QW1SYO6bEeCjNNLZCc6mew"
-  },
-  "o-ouk-o6-b-ee-cj-nnlz-cc6-mew": {
-   "id": "o-ouk-o6-b-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_o-oukO6bEeCjNNLZCc6mew",
-   "enum": [
-    "2.5_G",
-    "10_G",
-    "40_G",
-    "2.5_10_G",
-    "10_40_G",
-    "2.5_10_40_G"
-   ],
-   "is-read-only": false,
-   "description": [
-    "Provides an enumeration with the meaning of each  k  value."
-   ],
-   "uml-name": "_o-oukO6bEeCjNNLZCc6mew"
-  },
-  "krcg4-o6-d-ee-cj-nnlz-cc6-mew": {
-   "id": "krcg4-o6-d-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_KRCG4O6dEeCjNNLZCc6mew",
-   "enum": [
-    "INTRA_DOMAIN",
-    "INTER_DOMAIN"
-   ],
-   "is-read-only": false,
-   "description": [
-    "This enumeration provides the options for the interface associated with OTMn."
-   ],
-   "uml-name": "_KRCG4O6dEeCjNNLZCc6mew"
-  },
-  "eo-py-io6-q-ee-cj-nnlz-cc6-mew": {
-   "id": "eo-py-io6-q-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_EOPyIO6qEeCjNNLZCc6mew",
-   "enum": [
-    "INTRA_OFFICE",
-    "SHORTHAUL",
-    "LONGHAUL"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The valid options for reach of the optical cable."
-   ],
-   "uml-name": "_EOPyIO6qEeCjNNLZCc6mew"
-  },
-  "6-bt3-qo6-q-ee-cj-nnlz-cc6-mew": {
-   "id": "6-bt3-qo6-q-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_6Bt3QO6qEeCjNNLZCc6mew",
-   "enum": [
-    "ON",
-    "OFF"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The enumeration of the options for the Automatic Power Reduction Status."
-   ],
-   "uml-name": "_6Bt3QO6qEeCjNNLZCc6mew"
-  },
-  "f-lz-nqo6-v-ee-cj-nnlz-cc6-mew": {
-   "id": "f-lz-nqo6-v-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_FLzNQO6vEeCjNNLZCc6mew",
-   "enum": [
-    "BDI_P",
-    "BDI_O",
-    "BDI",
-    "TIM",
-    "LOS_P",
-    "LOS_O",
-    "LOS"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The valid list of problems for the entity."
-   ],
-   "uml-name": "_FLzNQO6vEeCjNNLZCc6mew"
-  },
-  "na-el-yo6-w-ee-cj-nnlz-cc6-mew": {
-   "id": "na-el-yo6-w-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_NAElYO6wEeCjNNLZCc6mew",
-   "enum": [
-    "REGULAR",
-    "NONE",
-    "VENDOR_SPECIFIC",
-    "FUNCTIONALLY_STANDARDIZED"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The adaptation options for OTUk_ConnectionTermationPoints."
-   ],
-   "uml-name": "_NAElYO6wEeCjNNLZCc6mew"
-  },
-  "wg-r-hc-o6-w-ee-cj-nnlz-cc6-mew": {
-   "id": "wg-r-hc-o6-w-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_wgRHcO6wEeCjNNLZCc6mew",
-   "enum": [
-    "2.5_G",
-    "10_G",
-    "40_G",
-    "100_G"
-   ],
-   "is-read-only": false,
-   "description": [
-    "Provides an enumeration with the meaning of each  k  value."
-   ],
-   "uml-name": "_wgRHcO6wEeCjNNLZCc6mew"
-  },
-  "6-y-g-eo6-w-ee-cj-nnlz-cc6-mew": {
-   "id": "6-y-g-eo6-w-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_6Y_gEO6wEeCjNNLZCc6mew",
-   "enum": [
-    "LOF",
-    "AIS",
-    "LOM"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The valid list of problems for the entity."
-   ],
-   "uml-name": "_6Y_gEO6wEeCjNNLZCc6mew"
-  },
-  "x-hnwmo6-x-ee-cj-nnlz-cc6-mew": {
-   "id": "x-hnwmo6-x-ee-cj-nnlz-cc6-mew",
-   "uml-id": "_xHNWMO6xEeCjNNLZCc6mew",
-   "enum": [
-    "TIM",
-    "DEG",
-    "BDI",
-    "SSF"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The valid list of problems for the entity."
-   ],
-   "uml-name": "_xHNWMO6xEeCjNNLZCc6mew"
-  },
-  "krq3-mk8-k-ee-g-z-yhf-u3-o-m-yg": {
-   "id": "krq3-mk8-k-ee-g-z-yhf-u3-o-m-yg",
-   "uml-id": "_KRQ3MK8KEeG_zYhfU3oMYg",
-   "enum": [
-    "SINK",
-    "SOURCE"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The enumeration with the options for directionality for nonintrusive monitoring."
-   ],
-   "uml-name": "_KRQ3MK8KEeG_zYhfU3oMYg"
-  },
-  "q-bme4-lu-y-ee-geq-z-lpdv-u3-ba": {
-   "id": "q-bme4-lu-y-ee-geq-z-lpdv-u3-ba",
-   "uml-id": "_qBme4LuYEeGeqZLpdvU3BA",
-   "enum": [
-    "PERCENTAGE",
-    "NUMBER_ERRORED_BLOCKS"
-   ],
-   "is-read-only": false,
-   "description": [
-    "<p>The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.</p>"
-   ],
-   "uml-name": "_qBme4LuYEeGeqZLpdvU3BA"
-  },
-  "parz8-nw-a-ee-gone-tb-gt8-x0-a": {
-   "id": "parz8-nw-a-ee-gone-tb-gt8-x0-a",
-   "uml-id": "_Parz8NwAEeGoneTbGt8X0A",
-   "enum": [
-    "DWDM",
-    "CWDM",
-    "NO_WDM"
-   ],
-   "is-read-only": false,
-   "uml-name": "_Parz8NwAEeGoneTbGt8X0A"
-  },
-  "v1-tu-a-nw-a-ee-gone-tb-gt8-x0-a": {
-   "id": "v1-tu-a-nw-a-ee-gone-tb-gt8-x0-a",
-   "uml-id": "_V1TuANwAEeGoneTbGt8X0A",
-   "enum": [
-    "STANDARD",
-    "PROPRIETARY"
-   ],
-   "is-read-only": false,
-   "uml-name": "_V1TuANwAEeGoneTbGt8X0A"
-  },
-  "yt7-s4-pzg-ee-g3-u-a-qk-ii-ctg": {
-   "id": "yt7-s4-pzg-ee-g3-u-a-qk-ii-ctg",
-   "uml-id": "_yt7S4PzgEeG3u-aQKIiCtg",
-   "enum": [
-    "PATH",
-    "TCM1",
-    "TCM2",
-    "TCM3",
-    "TCM4",
-    "TCM5",
-    "TCM6",
-    "SECTION"
-   ],
-   "is-read-only": false,
-   "uml-name": "_yt7S4PzgEeG3u-aQKIiCtg"
-  },
-  "lg3-y-qovv-ee-ky-u85-edu-w-r-a": {
-   "id": "lg3-y-qovv-ee-ky-u85-edu-w-r-a",
-   "uml-id": "_LG3yQOVVEeKyU85eduW_rA",
-   "enum": [
-    "CONTROLLER",
-    "RESPONDER"
-   ],
-   "is-read-only": false,
-   "uml-name": "_LG3yQOVVEeKyU85eduW_rA"
-  },
-  "7-fy9-s-jsc-ee-o-lx-kcui-ytz-cg": {
-   "id": "7-fy9-s-jsc-ee-o-lx-kcui-ytz-cg",
-   "uml-id": "_7fy9sJSCEeOLxKCUIYtzCg",
-   "enum": [
-    "INCREASE_BW",
-    "DECREASE_BW"
-   ],
-   "is-read-only": false,
-   "uml-name": "_7fy9sJSCEeOLxKCUIYtzCg"
-  },
-  "y6-wue-eam-eeab-npx3-o7-rjtw": {
-   "id": "y6-wue-eam-eeab-npx3-o7-rjtw",
-   "uml-id": "_Y6WUEEamEeabNPX3o7rjtw",
-   "enum": [
-    "UNKNOWN",
-    "PERIOD_15MIN",
-    "PERIOD_24HOURS"
-   ],
-   "is-read-only": false,
-   "description": [
-    "The enumeration with the options for granularity period of the performance data."
-   ],
-   "uml-name": "_Y6WUEEamEeabNPX3o7rjtw"
-  }
- }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/microwave-model.schema-information.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/microwave-model.schema-information.json
deleted file mode 100644 (file)
index 6568634..0000000
+++ /dev/null
@@ -1,3161 +0,0 @@
-{
- "schema-information": {
-  "mw-air-interface-pac": {
-   "id": "mw-air-interface-pac",
-   "uml-id": "__1kQ0Hf4EeW-M8kopGJqEA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "MW_AirInterface_Pac"
-  },
-  "layer-protocol": {
-   "id": "layer-protocol",
-   "uml-id": "_m_QIglpKEeax66gMnmfzpQ",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_gROecFYXEeOVGaP4lO41SQ",
-   "order-number": 1,
-   "is-read-only": false,
-   "is-key": 1,
-   "description": [
-    "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid"
-   ],
-   "uml-name": "_layerProtocol"
-  },
-  "air-interface-capability-list": {
-   "id": "air-interface-capability-list",
-   "uml-id": "_-LlKoIejEeWaZYk7gpuOtw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Describes the 'analog' capabilities of modem and transmitter of the microwave device. Value ranges of attributes are not independently (e.g. min. and max. transmit power depends on modulation). Legal combinations of values are expressed in transmissionModeTypes."
-   ],
-   "uml-name": "AirInterfaceCapability"
-  },
-  "air-interface-configuration": {
-   "id": "air-interface-configuration",
-   "uml-id": "_KOcsUIe0EeWnUdmvl3PBkw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Configuration of the radio link."
-   ],
-   "uml-name": "AirInterfaceConfiguration"
-  },
-  "air-interface-status": {
-   "id": "air-interface-status",
-   "uml-id": "_iCTioHmIEeWRAfnL3fvovg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Measurements of current values on the air interface and operational status of the device."
-   ],
-   "uml-name": "AirInterfaceStatus"
-  },
-  "air-interface-current-problems": {
-   "id": "air-interface-current-problems",
-   "uml-id": "_UF8VcHmIEeWRAfnL3fvovg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "AirInterfaceCurrentProblems"
-  },
-  "air-interface-current-performance": {
-   "id": "air-interface-current-performance",
-   "uml-id": "_CX-iIKS6EeWyu_jasKgNwA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the air interface at a particular moment."
-   ],
-   "uml-name": "AirInterfaceCurrentPerformance"
-  },
-  "air-interface-historical-performances": {
-   "id": "air-interface-historical-performances",
-   "uml-id": "_fChNMHmHEeWRAfnL3fvovg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the air interface for a pre-defined measurement interval."
-   ],
-   "uml-name": "AirInterfaceHistoricalPerformances"
-  },
-  "type-of-equipment": {
-   "id": "type-of-equipment",
-   "uml-id": "_gK4jMJUBEeWIaZzoaYJ6_A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": true,
-   "description": [
-    "This parameter indicates the equipment type. Instead of uploading the complete set of capabilities, capabilities of the same equipment type could be reused. Should be unique for a combination of modem, radio and their respective firmware."
-   ],
-   "uml-name": "typeOfEquipment",
-   "controlType": "text"
-  },
-  "tx-frequency-min": {
-   "id": "tx-frequency-min",
-   "uml-id": "_90Xe0HfcEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": true,
-   "unit": "kHz",
-   "description": [
-    "Value of the minimum transmit frequency tunable at the air interface."
-   ],
-   "uml-name": "txFrequencyMin",
-   "controlType": "number"
-  },
-  "tx-frequency-max": {
-   "id": "tx-frequency-max",
-   "uml-id": "_-1ztsHfcEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 3,
-   "is-read-only": true,
-   "unit": "kHz",
-   "description": [
-    "Value of the maximum transmit frequency tunable at the air interface."
-   ],
-   "uml-name": "txFrequencyMax",
-   "controlType": "number"
-  },
-  "rx-frequency-min": {
-   "id": "rx-frequency-min",
-   "uml-id": "_BLqx0HfdEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 4,
-   "is-read-only": true,
-   "unit": "kHz",
-   "description": [
-    "Value of the minimum receive frequency tunable at the air interface."
-   ],
-   "uml-name": "rxFrequencyMin",
-   "controlType": "number"
-  },
-  "rx-frequency-max": {
-   "id": "rx-frequency-max",
-   "uml-id": "_CSBV4HfdEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 5,
-   "is-read-only": true,
-   "unit": "kHz",
-   "description": [
-    "Value of the maximum receive frequency tunable at the air interface."
-   ],
-   "uml-name": "rxFrequencyMax",
-   "controlType": "number"
-  },
-  "adaptive-modulation-is-avail": {
-   "id": "adaptive-modulation-is-avail",
-   "uml-id": "_ClmuUHffEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 6,
-   "is-read-only": true,
-   "description": [
-    "In case the device is capable of adaptive modulation, this field shall contain a 'true'."
-   ],
-   "uml-name": "adaptiveModulationIsAvail",
-   "controlType": "checkbox"
-  },
-  "mimo-is-avail": {
-   "id": "mimo-is-avail",
-   "uml-id": "_qXBrkH2eEeWaPP5xsIT8pQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 7,
-   "is-read-only": true,
-   "description": [
-    "In case the device is capable of MIMO, this field shall contain a 'true'."
-   ],
-   "uml-name": "mimoIsAvail",
-   "controlType": "checkbox"
-  },
-  "mimo-channels": {
-   "id": "mimo-channels",
-   "uml-id": "_qysT4H2eEeWaPP5xsIT8pQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 8,
-   "is-read-only": true,
-   "unit": "channels",
-   "description": [
-    "Maximum number (n) of spatial multiplexing streams that can be conveyed by an n x n MIMO configuration."
-   ],
-   "uml-name": "mimoChannels",
-   "controlType": "number"
-  },
-  "alic-is-avail": {
-   "id": "alic-is-avail",
-   "uml-id": "_a3HgMIL9EeWMcJAvkeTn2w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 9,
-   "is-read-only": true,
-   "description": [
-    "In case the microwave radio is capable of Adjacent Link Interference Cancelation (canceling of interference cause by transmitters located at the same site), this field shall contain a 'true'."
-   ],
-   "uml-name": "alicIsAvail",
-   "controlType": "checkbox"
-  },
-  "atpc-is-avail": {
-   "id": "atpc-is-avail",
-   "uml-id": "_iRRtgHftEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 10,
-   "is-read-only": true,
-   "description": [
-    "In case the microwave radio is capable of ATPC, this field shall contain a 'true'."
-   ],
-   "uml-name": "atpcIsAvail",
-   "controlType": "checkbox"
-  },
-  "atpc-range": {
-   "id": "atpc-range",
-   "uml-id": "_ErwNYHfdEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 11,
-   "is-read-only": true,
-   "unit": "dB",
-   "description": [
-    "Extent of the ATPC range."
-   ],
-   "uml-name": "atpcRange",
-   "controlType": "number"
-  },
-  "encryption-is-avail": {
-   "id": "encryption-is-avail",
-   "uml-id": "_4uPM8E58EeaCk6G-lyG1OQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 10,
-   "is-read-only": true,
-   "description": [
-    "Shall be marked 'true', if Ethernet payload encryption is available."
-   ],
-   "uml-name": "encryptionIsAvail",
-   "controlType": "checkbox"
-  },
-  "transmission-mode-list": {
-   "id": "transmission-mode-list",
-   "uml-id": "_nwbvcPXREeW9zIqh2WHHww",
-   "uml-type": "ownedAttribute",
-   "type": "_zG34sPXQEeW9zIqh2WHHww",
-   "order-number": 5,
-   "is-read-only": true,
-   "uml-name": "transmissionModeList"
-  },
-  "maintenance-timer-range": {
-   "id": "maintenance-timer-range",
-   "uml-id": "_I1FYsMWZEeW3xsRKtpCLuA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 14,
-   "is-read-only": true,
-   "unit": "s",
-   "description": [
-    "Available time periods for maintenance configurations (e.g. the loop back of microwave header information) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360')."
-   ],
-   "uml-name": "maintenanceTimerRange",
-   "controlType": "text"
-  },
-  "supported-alarms": {
-   "id": "supported-alarms",
-   "uml-id": "_ecCeb0aqEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 2,
-   "is-read-only": true,
-   "description": [
-    "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device."
-   ],
-   "uml-name": "supportedAlarms",
-   "controlType": "text"
-  },
-  "supported-channel-plan-list": {
-   "id": "supported-channel-plan-list",
-   "uml-id": "_8gpNIHfcEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": true,
-   "is-key": 1,
-   "description": [
-    "Unique name (e.g. ECC/REC/(01)04_Annex 5) of a document, which describes a frequency grid that can be adjusted at the air interface. Corresponding channel plans to be delivered by the hardware vendor and to be stored by the operator in an controller/application attached database."
-   ],
-   "uml-name": "supportedChannelPlan",
-   "controlType": "text"
-  },
-  "air-interface-name": {
-   "id": "air-interface-name",
-   "uml-id": "_XMDggIL5EeWMcJAvkeTn2w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "Operator specific microwave link ID (often used for coding area, type of element and sequential number)."
-   ],
-   "uml-name": "airInterfaceName",
-   "controlType": "text"
-  },
-  "radio-signal-id": {
-   "id": "radio-signal-id",
-   "uml-id": "_QY9KoHf5EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "The radioSignalId is transmitted on the air interface so the remote site of the link synchronizes on the correct transmitter. The local radio MUST NOT synchronize on a radio signal with a different radioSignalId. The link ID is neither an ID necessary to span the model nor an ID referencing external data. It is just some sort of name of the link transmitted so the correct remote site can be identified in an interference situation. The value zero might be used to make the microwave to disable the link ID check."
-   ],
-   "uml-name": "radioSignalID",
-   "controlType": "text"
-  },
-  "tx-frequency": {
-   "id": "tx-frequency",
-   "uml-id": "_UNE8gHf5EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 3,
-   "is-read-only": false,
-   "unit": "kHz",
-   "description": [
-    "Center frequency of the transmit channel. The values to be configured have to exactly match the values listed in the international agreement referenced in channelPlanID. In case of automated selection of the transmit frequency this field shall describe the lowest center frequency selectable."
-   ],
-   "uml-name": "txFrequency",
-   "controlType": "number"
-  },
-  "rx-frequency": {
-   "id": "rx-frequency",
-   "uml-id": "_W7ayEHf5EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 4,
-   "is-read-only": false,
-   "unit": "kHz",
-   "description": [
-    "Center frequency of the receive channel."
-   ],
-   "uml-name": "rxFrequency",
-   "controlType": "number"
-  },
-  "tx-channel-bandwidth": {
-   "id": "tx-channel-bandwidth",
-   "uml-id": "_bhAdIHf5EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 5,
-   "is-read-only": false,
-   "unit": "kHz",
-   "description": [
-    "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;"
-   ],
-   "uml-name": "txChannelBandwidth",
-   "controlType": "number"
-  },
-  "rx-channel-bandwidth": {
-   "id": "rx-channel-bandwidth",
-   "uml-id": "_eKIbgHf5EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 6,
-   "is-read-only": false,
-   "unit": "kHz",
-   "description": [
-    "Bandwidth of the receive channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;"
-   ],
-   "uml-name": "rxChannelBandwidth",
-   "controlType": "number"
-  },
-  "polarization": {
-   "id": "polarization",
-   "uml-id": "_bVebEI99EeWFluv9KLLl5A",
-   "uml-type": "ownedAttribute",
-   "type": "_e85NsI99EeWFluv9KLLl5A",
-   "order-number": 7,
-   "is-read-only": false,
-   "description": [
-    "Allows documenting the polarization of the air interface."
-   ],
-   "uml-name": "polarization",
-   "controlType": [
-    "not-specified",
-    "horizontal",
-    "vertical"
-   ]
-  },
-  "power-is-on": {
-   "id": "power-is-on",
-   "uml-id": "_p4eR8Hf5EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 8,
-   "is-read-only": false,
-   "description": [
-    "Power ON. Activation of the entire radio in a split mount configuration shall be expressed as a 'true'."
-   ],
-   "uml-name": "powerIsOn",
-   "controlType": "checkbox"
-  },
-  "transmitter-is-on": {
-   "id": "transmitter-is-on",
-   "uml-id": "_uYVvgHf5EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 9,
-   "is-read-only": false,
-   "description": [
-    "Activation of the transmitter inside the radio shall be expressed as a 'true'."
-   ],
-   "uml-name": "transmitterIsOn",
-   "controlType": "checkbox"
-  },
-  "receiver-is-on": {
-   "id": "receiver-is-on",
-   "uml-id": "_q_XcwEgnEeathrAE0htMiA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 10,
-   "is-read-only": false,
-   "description": [
-    "Maintenance Feature. Activation of the receiver inside the radio shall be expressed as a 'true'. Attribute shall also be used for RX main and RX diversity squelches in case of diversity configurations."
-   ],
-   "uml-name": "receiverIsOn",
-   "controlType": "checkbox"
-  },
-  "tx-power": {
-   "id": "tx-power",
-   "uml-id": "_ZEXmIHf6EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 11,
-   "is-read-only": false,
-   "unit": "dBm",
-   "description": [
-    "Transmit power to be configured on the microwave link. Signed Byte is required. The actually operated transmit power might be lower depending on adaptive modulation and ATPC."
-   ],
-   "uml-name": "txPower",
-   "controlType": "number"
-  },
-  "adaptive-modulation-is-on": {
-   "id": "adaptive-modulation-is-on",
-   "uml-id": "_0jhfYHf5EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 12,
-   "is-read-only": false,
-   "description": [
-    "Adaptive Modulation. Activation of adaptive modulation shall be expressed as a 'true'."
-   ],
-   "uml-name": "adaptiveModulationIsOn",
-   "controlType": "checkbox"
-  },
-  "modulation-min": {
-   "id": "modulation-min",
-   "uml-id": "_dM_BUHf6EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 13,
-   "is-read-only": false,
-   "unit": "symbols",
-   "description": [
-    "Minimum modulation to be configured (in case adaptive modulation is not used, this value represents also the fixed modulation). The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme."
-   ],
-   "uml-name": "modulationMin",
-   "controlType": "number"
-  },
-  "modulation-max": {
-   "id": "modulation-max",
-   "uml-id": "_gAHQQHf6EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 14,
-   "is-read-only": false,
-   "unit": "symbols",
-   "description": [
-    "Maximum modulation to be configured. The value of this field is only relevant, if Adaptive Modulation has been activated. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme."
-   ],
-   "uml-name": "modulationMax",
-   "controlType": "number"
-  },
-  "xpic-is-on": {
-   "id": "xpic-is-on",
-   "uml-id": "_4hi0IHf5EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 15,
-   "is-read-only": false,
-   "description": [
-    "Activation of Cross Polarization Interference Cancelation shall be expressed as a 'true'. In case XPIC is not available for the current combination of channel bandwidth and modulation or the hardware in general, this parameter shall always be set to 'false'."
-   ],
-   "uml-name": "xpicIsOn",
-   "controlType": "checkbox"
-  },
-  "mimo-is-on": {
-   "id": "mimo-is-on",
-   "uml-id": "_7t4fIH2dEeWaPP5xsIT8pQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 16,
-   "is-read-only": false,
-   "description": [
-    "Activation of Multiple Input Multiple Output (MIMO) shall be expressed as a 'true'."
-   ],
-   "uml-name": "mimoIsOn",
-   "controlType": "checkbox"
-  },
-  "alic-is-on": {
-   "id": "alic-is-on",
-   "uml-id": "_FmWHMHf6EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 17,
-   "is-read-only": false,
-   "description": [
-    "Activation of Adjacent Link Interference Cancelation (ALIC) shall be expressed as a 'true'."
-   ],
-   "uml-name": "alicIsOn",
-   "controlType": "checkbox"
-  },
-  "atpc-is-on": {
-   "id": "atpc-is-on",
-   "uml-id": "_9Hz0oHf5EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 18,
-   "is-read-only": false,
-   "description": [
-    "ATPC. Activation of Automated Transmit Power Control shall be expressed as a 'true'."
-   ],
-   "uml-name": "atpcIsOn",
-   "controlType": "checkbox"
-  },
-  "atpc-thresh-upper": {
-   "id": "atpc-thresh-upper",
-   "uml-id": "_pR7yMHgAEeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 19,
-   "is-read-only": false,
-   "unit": "dBm",
-   "description": [
-    "If the receive level is higher than the upper threshold value, the transmitter is notified to decrease transmit power."
-   ],
-   "uml-name": "atpcThreshUpper",
-   "controlType": "number"
-  },
-  "atpc-thresh-lower": {
-   "id": "atpc-thresh-lower",
-   "uml-id": "_sIlPMHgAEeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 20,
-   "is-read-only": false,
-   "unit": "dBm",
-   "description": [
-    "If the receive level is lower than the lower threshold value, the transmitter is notified to increase transmit power."
-   ],
-   "uml-name": "atpcThreshLower",
-   "controlType": "number"
-  },
-  "auto-freq-select-is-on": {
-   "id": "auto-freq-select-is-on",
-   "uml-id": "_dG5VAIL-EeWMcJAvkeTn2w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 21,
-   "is-read-only": false,
-   "description": [
-    "Activation of automatically selecting the transmit frequency in unlicensed bands shall be expressed as a 'true'."
-   ],
-   "uml-name": "autoFreqSelectIsOn",
-   "controlType": "checkbox"
-  },
-  "auto-freq-select-range": {
-   "id": "auto-freq-select-range",
-   "uml-id": "_yH9XMIMCEeWMcJAvkeTn2w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 22,
-   "is-read-only": false,
-   "unit": "channels",
-   "description": [
-    "Number of transmit channels (starting at the center frequency defined in txFrequency and with channel bandwidth according to txChannelBandwidth) that define the range within the transmit frequency can automatically been chosen."
-   ],
-   "uml-name": "autoFreqSelectRange",
-   "controlType": "number"
-  },
-  "modulation-is-on": {
-   "id": "modulation-is-on",
-   "uml-id": "_kxXzwIMGEeWMcJAvkeTn2w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 23,
-   "is-read-only": false,
-   "description": [
-    "Maintenance Feature. De-activation of the modulation of the carrier signal for fault management shall be expressed as a 'false'."
-   ],
-   "uml-name": "modulationIsOn",
-   "controlType": "checkbox"
-  },
-  "encryption-is-on": {
-   "id": "encryption-is-on",
-   "uml-id": "_uI7bIE58EeaCk6G-lyG1OQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 11,
-   "is-read-only": false,
-   "description": [
-    "Activates encryption of the Ethernet payload."
-   ],
-   "uml-name": "encryptionIsOn",
-   "controlType": "checkbox"
-  },
-  "cryptographic-key": {
-   "id": "cryptographic-key",
-   "uml-id": "_psRpoE58EeaCk6G-lyG1OQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 12,
-   "is-read-only": false,
-   "description": [
-    "Key for transforming plaintext into cipher text data."
-   ],
-   "uml-name": "cryptographicKey",
-   "controlType": "text"
-  },
-  "loop-back-kind-on": {
-   "id": "loop-back-kind-on",
-   "uml-id": "_PyRvsHf6EeW-M8kopGJqEA",
-   "uml-type": "ownedAttribute",
-   "type": "_3CZ3UIsDEead4ersMrOjBQ",
-   "order-number": 26,
-   "is-read-only": false,
-   "description": [
-    "Maintenance Feature. The currently configured type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site."
-   ],
-   "uml-name": "loopBackKindOn",
-   "controlType": [
-    "none",
-    "if",
-    "rf"
-   ]
-  },
-  "maintenance-timer": {
-   "id": "maintenance-timer",
-   "uml-id": "_7-oTwCd5EeaJA6AVLNrv_w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 27,
-   "is-read-only": false,
-   "unit": "s",
-   "description": [
-    "Time of existence of any maintenance configuration (e.g. the loop back of microwave header information). Valid values are defined in AirInterface::AirInterfaceCapability::maintenanceTimerRange."
-   ],
-   "uml-name": "maintenanceTimer",
-   "controlType": "number"
-  },
-  "problem-kind-severity-list": {
-   "id": "problem-kind-severity-list",
-   "uml-id": "_OMQH02z0Eeaf-__BRLM84g",
-   "uml-type": "ownedAttribute",
-   "type": "_eIml0JH1EeWUdbnmmNiTAA",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "Severity of this type of alarm."
-   ],
-   "uml-name": "problemKindSeverity",
-   "controlType": [
-    "non-alarmed",
-    "warning",
-    "minor",
-    "major",
-    "critical"
-   ]
-  },
-  "tx-frequency-cur": {
-   "id": "tx-frequency-cur",
-   "uml-id": "_YZq7gK4tEeWXs6m-9H3KvA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 1,
-   "is-read-only": true,
-   "unit": "kHz",
-   "description": [
-    "Center frequency of the currently operated transmit channel."
-   ],
-   "uml-name": "txFrequencyCur",
-   "controlType": "number"
-  },
-  "rx-frequency-cur": {
-   "id": "rx-frequency-cur",
-   "uml-id": "_33IdUIL-EeWMcJAvkeTn2w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": true,
-   "unit": "kHz",
-   "description": [
-    "Center frequency of the currently operated receive channel."
-   ],
-   "uml-name": "rxFrequencyCur",
-   "controlType": "number"
-  },
-  "tx-level-cur": {
-   "id": "tx-level-cur",
-   "uml-id": "_L3B5wHgIEeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 3,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Current transmit level."
-   ],
-   "uml-name": "txLevelCur",
-   "controlType": "number"
-  },
-  "rx-level-cur": {
-   "id": "rx-level-cur",
-   "uml-id": "_OHN9AHizEeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 4,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Current receive level."
-   ],
-   "uml-name": "rxLevelCur",
-   "controlType": "number"
-  },
-  "modulation-cur": {
-   "id": "modulation-cur",
-   "uml-id": "_RBMa0HizEeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 5,
-   "is-read-only": true,
-   "unit": "symbols",
-   "description": [
-    "Currently operated modulation on transmit path. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme."
-   ],
-   "uml-name": "modulationCur",
-   "controlType": "number"
-  },
-  "code-rate-cur": {
-   "id": "code-rate-cur",
-   "uml-id": "_UYyBsHizEeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 6,
-   "is-read-only": true,
-   "unit": "%",
-   "description": [
-    "Code rate of the currently operated coding scheme (Net bit rate ≤ Gross bit rate · code rate)."
-   ],
-   "uml-name": "codeRateCur",
-   "controlType": "number"
-  },
-  "snir-cur": {
-   "id": "snir-cur",
-   "uml-id": "_B7G0AEzvEeaRytIQfQ43Wg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 1,
-   "is-read-only": true,
-   "unit": "dB",
-   "description": [
-    "Currently measured signal to (noise+interference) ratio of the combined signals."
-   ],
-   "uml-name": "snirCur",
-   "controlType": "number"
-  },
-  "xpd-cur": {
-   "id": "xpd-cur",
-   "uml-id": "_Z7NvgHizEeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 8,
-   "is-read-only": true,
-   "unit": "dB",
-   "description": [
-    "Currently measured cross polarization discrimination."
-   ],
-   "uml-name": "xpdCur",
-   "controlType": "number"
-  },
-  "rf-temp-cur": {
-   "id": "rf-temp-cur",
-   "uml-id": "_d6wuQHizEeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 9,
-   "is-read-only": true,
-   "unit": "Celsius",
-   "description": [
-    "Current temperature (in degree Celsius) of the radio module inside the outdoor unit."
-   ],
-   "uml-name": "rfTempCur",
-   "controlType": "number"
-  },
-  "last-status-change": {
-   "id": "last-status-change",
-   "uml-id": "_ecCetEaqEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_oGqi1lLNEeO75dO39GbF8Q",
-   "order-number": 1,
-   "is-read-only": true,
-   "description": [
-    "Time the Container entered its current operational status. _format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes."
-   ],
-   "uml-name": "lastStatusChange"
-  },
-  "radio-power-is-up": {
-   "id": "radio-power-is-up",
-   "uml-id": "_sFKXcHizEeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 11,
-   "is-read-only": true,
-   "description": [
-    "If the radio unit has power and is switched on, this shall be expressed as a 'true'."
-   ],
-   "uml-name": "radioPowerIsUp",
-   "controlType": "checkbox"
-  },
-  "link-is-up": {
-   "id": "link-is-up",
-   "uml-id": "_5JBPUHizEeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 12,
-   "is-read-only": true,
-   "description": [
-    "If connection is established to the remote site with the same linkID, this shall be expressed as a 'true'."
-   ],
-   "uml-name": "linkIsUp",
-   "controlType": "checkbox"
-  },
-  "xpic-is-up": {
-   "id": "xpic-is-up",
-   "uml-id": "_ESRbsHi0EeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 13,
-   "is-read-only": true,
-   "description": [
-    "If XPIC is currently actually working (not just configured), this shall be expressed as a 'true'."
-   ],
-   "uml-name": "xpicIsUp",
-   "controlType": "checkbox"
-  },
-  "mimo-is-up": {
-   "id": "mimo-is-up",
-   "uml-id": "_DVaQwIL6EeWMcJAvkeTn2w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 14,
-   "is-read-only": true,
-   "description": [
-    "If MIMO is currently actually working (not just configured), this shall be expressed as a 'true'."
-   ],
-   "uml-name": "mimoIsUp",
-   "controlType": "checkbox"
-  },
-  "alic-is-up": {
-   "id": "alic-is-up",
-   "uml-id": "_Hte-UHi0EeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 15,
-   "is-read-only": true,
-   "description": [
-    "If Adjacent Link Interference Cancelation (ALIC) is currently actually working (not just configured), this shall be expressed as a 'true'."
-   ],
-   "uml-name": "alicIsUp",
-   "controlType": "checkbox"
-  },
-  "atpc-is-up": {
-   "id": "atpc-is-up",
-   "uml-id": "_VimCgMjNEeWYRsWW_rqpgw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 16,
-   "is-read-only": true,
-   "description": [
-    "If ATPC is currently actually working (not just configured), this shall be expressed as a 'true'."
-   ],
-   "uml-name": "atpcIsUp",
-   "controlType": "checkbox"
-  },
-  "auto-freq-select-is-up": {
-   "id": "auto-freq-select-is-up",
-   "uml-id": "_-PXKsIL-EeWMcJAvkeTn2w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 17,
-   "is-read-only": true,
-   "description": [
-    "If automated frequency selection is currently actually working (not just configured), this shall be expressed as a 'true'."
-   ],
-   "uml-name": "autoFreqSelectIsUp",
-   "controlType": "checkbox"
-  },
-  "loop-back-kind-up": {
-   "id": "loop-back-kind-up",
-   "uml-id": "_S9prAHi0EeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "_3CZ3UIsDEead4ersMrOjBQ",
-   "order-number": 18,
-   "is-read-only": true,
-   "description": [
-    "The currently active (not just configured) type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site."
-   ],
-   "uml-name": "loopBackKindUp",
-   "controlType": [
-    "none",
-    "if",
-    "rf"
-   ]
-  },
-  "local-end-point-id": {
-   "id": "local-end-point-id",
-   "uml-id": "_pEsgcFQHEeaCXY7nSBqs6w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 19,
-   "is-read-only": true,
-   "description": [
-    "The value of the localEndPointId is a vendor specific identifier of the air interface, used by the node to discover a microwave radio link."
-   ],
-   "uml-name": "localEndPointId",
-   "controlType": "text"
-  },
-  "remote-end-point-id": {
-   "id": "remote-end-point-id",
-   "uml-id": "_r3cU4FQHEeaCXY7nSBqs6w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 20,
-   "is-read-only": true,
-   "description": [
-    "The value of the remoteEndPointId is a vendor specific identifier or the airinterface at the remote side, used to by the node to discover a microwave radio link."
-   ],
-   "uml-name": "remoteEndPointId",
-   "controlType": "text"
-  },
-  "current-problem-list": {
-   "id": "current-problem-list",
-   "uml-id": "_ecCewEaqEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "__h1n4MXpEeWJ6KZuc0h_vw",
-   "order-number": 1,
-   "is-read-only": true,
-   "uml-name": "currentProblemList"
-  },
-  "current-performance-data-list": {
-   "id": "current-performance-data-list",
-   "uml-id": "_ecCexkaqEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "_pA5AQGz6Eeaf-__BRLM84g",
-   "order-number": 1,
-   "is-read-only": true,
-   "description": [
-    "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too."
-   ],
-   "uml-name": "currentPerformanceDataList"
-  },
-  "historical-performance-data-list": {
-   "id": "historical-performance-data-list",
-   "uml-id": "_ecCeykaqEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "_pTaToGz6Eeaf-__BRLM84g",
-   "order-number": 1,
-   "is-read-only": true,
-   "uml-name": "historicalPerformanceDataList"
-  },
-  "co-channel-group": {
-   "id": "co-channel-group",
-   "uml-id": "_XBs2YJQrEeWOu_cDl8dd7w",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Required for configuring XPIC, MIMO and ALIC."
-   ],
-   "uml-name": "CoChannelGroup"
-  },
-  "co-channel-group-id": {
-   "id": "co-channel-group-id",
-   "uml-id": "_pIjBgEy7EeaRytIQfQ43Wg",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_SU3Q4I30EeO38ZmbECnvbg",
-   "order-number": 1,
-   "is-read-only": false,
-   "is-key": 1,
-   "uml-name": "coChannelGroupId"
-  },
-  "air-interface-list": {
-   "id": "air-interface-list",
-   "uml-id": "_tIadUCJeEeaCUo1MUtSuEg",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_eEpDMFX4EeOVGaP4lO41SQ",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "List of air interfaces, which are part of the co-channel (XPIC, MIMO, ALIC) group."
-   ],
-   "uml-name": "_airInterfaceList"
-  },
-  "sort-of-co-channel-group": {
-   "id": "sort-of-co-channel-group",
-   "uml-id": "_ZrjZcJRrEeWIaZzoaYJ6_A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "Type of group of air interfaces with the same transmit and receive frequency. The values shall be chosen from the following _list:'XPIC', 'MIMO', 'ALIC';"
-   ],
-   "uml-name": "sortOfCoChannelGroup",
-   "controlType": "text"
-  },
-  "logical-termination-point": {
-   "id": "logical-termination-point",
-   "uml-id": "_8QgfIKwZEeaK38AermeaCw",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_eEpDMFX4EeOVGaP4lO41SQ",
-   "order-number": 4,
-   "is-read-only": false,
-   "uml-name": "_logicalTerminationPoint"
-  },
-  "mw-air-interface-hsb-end-point-pac": {
-   "id": "mw-air-interface-hsb-end-point-pac",
-   "uml-id": "_CXKgMJRbEeWMYJZn43K_Aw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The EndPoint (EP) object class models the access to the FC function. Each EndPoint instance has a role (e.g., working, protection, protected, hub, spoke, leaf, root, etc.) with respect to the FC function. The association of the FC to LTPs is made via EndPoints (essentially the ports of the FC) where each EndPoint (EP) of the FC has a role in the context of the FC. The traffic forwarding between the associated End PointsEPs of the FC depends upon the type of FC and may be associated with FCSwitch object instances. In cases where there is protection conveys the protecting role of the access to the FC. The EP replaces the Protection Unit of a traditional protection model. It represents a protected (resilient/reliable) point or a protecting (unreliable working or protection) point."
-   ],
-   "uml-name": "MW_AirInterfaceHsbEndPoint_Pac"
-  },
-  "role": {
-   "id": "role",
-   "uml-id": "_CXKgNpRbEeWMYJZn43K_Aw",
-   "uml-type": "ownedAttribute",
-   "type": "_01_dYJReEeWxIPEwZQ_gmw",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "role",
-   "controlType": [
-    "working",
-    "protection",
-    "protected"
-   ]
-  },
-  "endpoint": {
-   "id": "endpoint",
-   "uml-id": "_dglVQLYgEeWOio-Gg6Q2sw",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_b_lUAFYgEeOVGaP4lO41SQ",
-   "order-number": 2,
-   "is-read-only": false,
-   "is-key": 1,
-   "uml-name": "_endpoint"
-  },
-  "mw-air-interface-hsb-fc-switch-pac": {
-   "id": "mw-air-interface-hsb-fc-switch-pac",
-   "uml-id": "_CXNjgJRbEeWMYJZn43K_Aw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Represents and defines a protection switch structure encapsulated in the forwarding construct. Essentially performs the function of Protection Group. Associates to 2 or more Endpoints each playing the role of a Protection Unit. One or more protection EndPoints (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) Endpoints where either protection or working can feed one or more protected Endpoint. May be used in revertive or non-revertive (symmetric) mode. When in revertive mode may define waitToRestore time. May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as 1+1 ane 1:1). May be lockout (prevented from switching), force switched or manual switched. Will indicate switch state and change of state."
-   ],
-   "uml-name": "MW_AirInterfaceHsbFcSwitch_Pac"
-  },
-  "prot-type": {
-   "id": "prot-type",
-   "uml-id": "_CXNjiJRbEeWMYJZn43K_Aw",
-   "uml-type": "ownedAttribute",
-   "type": "_DaB5IJRgEeWxIPEwZQ_gmw",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "Indicates the protection scheme that is used for the ProtectionGroup."
-   ],
-   "uml-name": "protType",
-   "controlType": [
-    "hsb"
-   ]
-  },
-  "air-interface-hsb-configuration-is-faulty-severity": {
-   "id": "air-interface-hsb-configuration-is-faulty-severity",
-   "uml-id": "_80BlAJ2gEeWSuvrh9KcclQ",
-   "uml-type": "ownedAttribute",
-   "type": "_eIml0JH1EeWUdbnmmNiTAA",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "The level of severity of an airInterfaceHsbConfigurationIsFaulty alarm shall be chosen from an enumeration."
-   ],
-   "uml-name": "airInterfaceHsbConfigurationIsFaultySeverity",
-   "controlType": [
-    "non-alarmed",
-    "warning",
-    "minor",
-    "major",
-    "critical"
-   ]
-  },
-  "air-interface-hsb-is-partly-down-severity": {
-   "id": "air-interface-hsb-is-partly-down-severity",
-   "uml-id": "_r382sJ2mEeWSuvrh9KcclQ",
-   "uml-type": "ownedAttribute",
-   "type": "_eIml0JH1EeWUdbnmmNiTAA",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "The level of severity for one link out of the HSB configuration being down shall be chosen from an enumeration."
-   ],
-   "uml-name": "airInterfaceHsbIsPartlyDownSeverity",
-   "controlType": [
-    "non-alarmed",
-    "warning",
-    "minor",
-    "major",
-    "critical"
-   ]
-  },
-  "air-interface-hsb-is-down-severity": {
-   "id": "air-interface-hsb-is-down-severity",
-   "uml-id": "_sRGWgJ2mEeWSuvrh9KcclQ",
-   "uml-type": "ownedAttribute",
-   "type": "_eIml0JH1EeWUdbnmmNiTAA",
-   "order-number": 4,
-   "is-read-only": false,
-   "description": [
-    "The level of severity of the total HSB configuration being down shall be chosen from an enumeration."
-   ],
-   "uml-name": "airInterfaceHsbIsDownSeverity",
-   "controlType": [
-    "non-alarmed",
-    "warning",
-    "minor",
-    "major",
-    "critical"
-   ]
-  },
-  "fcswitch": {
-   "id": "fcswitch",
-   "uml-id": "_FS83ILYhEeWOio-Gg6Q2sw",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_a97NQFYhEeOVGaP4lO41SQ",
-   "order-number": 5,
-   "is-read-only": false,
-   "is-key": 1,
-   "uml-name": "_fcswitch"
-  },
-  "mw-air-interface-diversity-pac": {
-   "id": "mw-air-interface-diversity-pac",
-   "uml-id": "_WbgFcHgFEeWfutScSwFT9A",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "MW_AirInterfaceDiversity_Pac"
-  },
-  "air-interface-diversity-capability": {
-   "id": "air-interface-diversity-capability",
-   "uml-id": "_vxH2wIekEeWaZYk7gpuOtw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Describes the capabilities in implementing different types of air interface diversity."
-   ],
-   "uml-name": "AirInterfaceDiversityCapability"
-  },
-  "air-interface-diversity-configuration": {
-   "id": "air-interface-diversity-configuration",
-   "uml-id": "_43RTMIe1EeWnUdmvl3PBkw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "AirInterfaceDiversityConfiguration"
-  },
-  "air-interface-diversity-status": {
-   "id": "air-interface-diversity-status",
-   "uml-id": "_EKZYcJOXEeWz-6sqLzUedw",
-   "uml-type": "ownedAttribute",
-   "type": "_DUJs8JOXEeWz-6sqLzUedw",
-   "order-number": 2,
-   "is-read-only": true,
-   "description": [
-    "Status of the air interface bundle."
-   ],
-   "uml-name": "airInterfaceDiversityStatus",
-   "controlType": [
-    "group-down",
-    "not-all-ai-active",
-    "all-ai-active"
-   ]
-  },
-  "air-interface-diversity-current-problems": {
-   "id": "air-interface-diversity-current-problems",
-   "uml-id": "_CAvhEHvtEeWzooKF5kx0aw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "AirInterfaceDiversityCurrentProblems"
-  },
-  "air-interface-diversity-current-performance": {
-   "id": "air-interface-diversity-current-performance",
-   "uml-id": "_GIsAQKjDEeWlgMiFXLmCIQ",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the air interface diversity configuration at a particular moment."
-   ],
-   "uml-name": "AirInterfaceDiversityCurrentPerformance"
-  },
-  "air-interface-diversity-historical-performances": {
-   "id": "air-interface-diversity-historical-performances",
-   "uml-id": "_8IIu8HvsEeWzooKF5kx0aw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the air interface diversity configuration for a pre-defined measurement interval."
-   ],
-   "uml-name": "AirInterfaceDiversityHistoricalPerformances"
-  },
-  "available-kinds-of-diversity": {
-   "id": "available-kinds-of-diversity",
-   "uml-id": "_luAGENyVEeW-SfXlFFFI0Q",
-   "uml-type": "ownedAttribute",
-   "type": "_pTliINyUEeW-SfXlFFFI0Q",
-   "order-number": 1,
-   "is-read-only": true,
-   "description": [
-    "Available types of diversity to be listed."
-   ],
-   "uml-name": "availableKindsOfDiversity"
-  },
-  "air-interface-diversity": {
-   "id": "air-interface-diversity",
-   "uml-id": "_hynTIHi_EeWfutScSwFT9A",
-   "uml-type": "ownedAttribute",
-   "type": "_pTliINyUEeW-SfXlFFFI0Q",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "Type of air interface diversity configured at the link."
-   ],
-   "uml-name": "airInterfaceDiversity"
-  },
-  "air-interface-ltp-list": {
-   "id": "air-interface-ltp-list",
-   "uml-id": "_xRMKgNyXEeW-SfXlFFFI0Q",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_eEpDMFX4EeOVGaP4lO41SQ",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "_multiplicity:2-ThisAirInterfaceDiversity::AirInterfaceDiversityConfiguration::airInterfaceDiversity::diversityType::numberOfAirInterfacesMax"
-   ],
-   "uml-name": "_airInterfaceLtpList"
-  },
-  "mw-pure-ethernet-structure-pac": {
-   "id": "mw-pure-ethernet-structure-pac",
-   "uml-id": "__OTQ0UaeEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The pureEthernetStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting Ethernet traffic only."
-   ],
-   "uml-name": "MW_PureEthernetStructure_Pac"
-  },
-  "pure-ethernet-structure-capability-list": {
-   "id": "pure-ethernet-structure-capability-list",
-   "uml-id": "__OTQ4EaeEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Describes the logical structuring of the physical capacity provided by a pure Ethernet microwave device. Segmentation is not available. No fixed segment size. No TDM transport."
-   ],
-   "uml-name": "PureEthernetStructureCapability"
-  },
-  "pure-ethernet-structure-configuration": {
-   "id": "pure-ethernet-structure-configuration",
-   "uml-id": "__OTQ8UaeEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "PureEthernetStructureConfiguration"
-  },
-  "pure-ethernet-structure-status": {
-   "id": "pure-ethernet-structure-status",
-   "uml-id": "__OTQ_UaeEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "PureEthernetStructureStatus"
-  },
-  "pure-ethernet-structure-current-problems": {
-   "id": "pure-ethernet-structure-current-problems",
-   "uml-id": "__OTRCUaeEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "PureEthernetStructureCurrentProblems"
-  },
-  "pure-ethernet-structure-current-performance": {
-   "id": "pure-ethernet-structure-current-performance",
-   "uml-id": "__OTRD0aeEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the structure of an pure Ethernet microwave at a particular moment."
-   ],
-   "uml-name": "PureEthernetStructureCurrentPerformance"
-  },
-  "pure-ethernet-structure-historical-performances": {
-   "id": "pure-ethernet-structure-historical-performances",
-   "uml-id": "__OTRE0aeEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the structure of an pure Ethernet microwave for a pre-defined measurement interval."
-   ],
-   "uml-name": "PureEthernetStructureHistoricalPerformances"
-  },
-  "structure-id": {
-   "id": "structure-id",
-   "uml-id": "_Bzxo5EagEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_SU3Q4I30EeO38ZmbECnvbg",
-   "order-number": 1,
-   "is-read-only": true,
-   "is-key": 1,
-   "description": [
-    "Identifies the Structure for bundling and container."
-   ],
-   "uml-name": "structureId"
-  },
-  "segment-status-list": {
-   "id": "segment-status-list",
-   "uml-id": "_BzxpAEagEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "_KwZVcMUCEeW3xsRKtpCLuA",
-   "order-number": 1,
-   "is-read-only": true,
-   "description": [
-    "Status of each segment (all TDM and one Ethernet). Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1"
-   ],
-   "uml-name": "segmentStatusList"
-  },
-  "mw-hybrid-mw-structure-pac": {
-   "id": "mw-hybrid-mw-structure-pac",
-   "uml-id": "_Bzxo0UagEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "The HybridMwStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM and Ethernet traffic."
-   ],
-   "uml-name": "MW_HybridMwStructure_Pac"
-  },
-  "hybrid-mw-structure-capability": {
-   "id": "hybrid-mw-structure-capability",
-   "uml-id": "_Bzxo4EagEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Describes the logical structuring of the physical capacity provided by a hybrid microwave device (TDM + Ethernet). Segmentation is available. TDM transport is available."
-   ],
-   "uml-name": "HybridMwStructureCapability"
-  },
-  "hybrid-mw-structure-configuration": {
-   "id": "hybrid-mw-structure-configuration",
-   "uml-id": "_Bzxo8UagEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "HybridMwStructureConfiguration"
-  },
-  "hybrid-mw-structure-status": {
-   "id": "hybrid-mw-structure-status",
-   "uml-id": "_Bzxo_UagEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "HybridMwStructureStatus"
-  },
-  "hybrid-mw-structure-current-problems": {
-   "id": "hybrid-mw-structure-current-problems",
-   "uml-id": "_BzxpCUagEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "HybridMwStructureCurrentProblems"
-  },
-  "hybrid-mw-structure-current-performance": {
-   "id": "hybrid-mw-structure-current-performance",
-   "uml-id": "_BzxpD0agEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the structure of a hybrid microwave at a particular moment."
-   ],
-   "uml-name": "HybridMwStructureCurrentPerformance"
-  },
-  "hybrid-mw-structure-historical-performances": {
-   "id": "hybrid-mw-structure-historical-performances",
-   "uml-id": "_BzxpE0agEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the structure of a hybrid microwave for a pre-defined measurement interval."
-   ],
-   "uml-name": "HybridMwStructureHistoricalPerformances"
-  },
-  "supported-tdm-structure-types-list": {
-   "id": "supported-tdm-structure-types-list",
-   "uml-id": "_tA-uQEduEeax2rWez10Siw",
-   "uml-type": "ownedAttribute",
-   "type": "_jRAQsEdoEeax2rWez10Siw",
-   "order-number": 2,
-   "is-read-only": true,
-   "description": [
-    "Lists the TDM frame types that are supported."
-   ],
-   "uml-name": "supportedTdmStructureTypesList"
-  },
-  "structure-type": {
-   "id": "structure-type",
-   "uml-id": "_cduh4EdvEeax2rWez10Siw",
-   "uml-type": "ownedAttribute",
-   "type": "_jRAQsEdoEeax2rWez10Siw",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "TDM frame to be applied."
-   ],
-   "uml-name": "structureType"
-  },
-  "number-of-tdm-segments-to-be-reserved": {
-   "id": "number-of-tdm-segments-to-be-reserved",
-   "uml-id": "_Bzxo9EagEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "Allows to configure the number of segments reserved for TDM frames of the type specified in HybridMwStructure::HybridMwStructureConfiguration::structureType"
-   ],
-   "uml-name": "numberOfTdmSegmentsToBeReserved",
-   "controlType": "number"
-  },
-  "mw-ethernet-container-pac": {
-   "id": "mw-ethernet-container-pac",
-   "uml-id": "_4uEBgUafEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "MW_EthernetContainer_Pac"
-  },
-  "ethernet-container-capability": {
-   "id": "ethernet-container-capability",
-   "uml-id": "_4uEBmEafEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EthernetContainerCapability"
-  },
-  "ethernet-container-configuration": {
-   "id": "ethernet-container-configuration",
-   "uml-id": "_4uEBwUafEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EthernetContainerConfiguration"
-  },
-  "ethernet-container-status": {
-   "id": "ethernet-container-status",
-   "uml-id": "_4uECAUafEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EthernetContainerStatus"
-  },
-  "ethernet-container-current-problems": {
-   "id": "ethernet-container-current-problems",
-   "uml-id": "_4uECDUafEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EthernetContainerCurrentProblems"
-  },
-  "ethernet-container-current-performance": {
-   "id": "ethernet-container-current-performance",
-   "uml-id": "_4uECE0afEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the Ethernet container at a particular moment."
-   ],
-   "uml-name": "EthernetContainerCurrentPerformance"
-  },
-  "ethernet-container-historical-performances": {
-   "id": "ethernet-container-historical-performances",
-   "uml-id": "_4uECF0afEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the Ethernet container for a pre-defined measurement interval."
-   ],
-   "uml-name": "EthernetContainerHistoricalPerformances"
-  },
-  "bundling-is-avail": {
-   "id": "bundling-is-avail",
-   "uml-id": "_IzCGMNyCEeW-SfXlFFFI0Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 4,
-   "is-read-only": true,
-   "description": [
-    "If it is possible to combine transport resources of several radio links to transport this container type, this attribute shall be set to '1'."
-   ],
-   "uml-name": "bundlingIsAvail",
-   "controlType": "checkbox"
-  },
-  "packet-compression-is-avail": {
-   "id": "packet-compression-is-avail",
-   "uml-id": "_4uEBp0afEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 2,
-   "is-read-only": true,
-   "description": [
-    "In case packet compression can be activated, but not configured to a certain type, packetCompressionAvail shall be set on 'true', but none of the compression level specific booleans."
-   ],
-   "uml-name": "packetCompressionIsAvail",
-   "controlType": "checkbox"
-  },
-  "layer2-compression-is-avail": {
-   "id": "layer2-compression-is-avail",
-   "uml-id": "_4uEBqkafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 3,
-   "is-read-only": true,
-   "description": [
-    "Packet compression on layer 2 available at the device."
-   ],
-   "uml-name": "layer2CompressionIsAvail",
-   "controlType": "checkbox"
-  },
-  "vlan-compression-is-avail": {
-   "id": "vlan-compression-is-avail",
-   "uml-id": "_4uEBrUafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 4,
-   "is-read-only": true,
-   "description": [
-    "Packet compression on VLAN layer available at the device."
-   ],
-   "uml-name": "vlanCompressionIsAvail",
-   "controlType": "checkbox"
-  },
-  "q-in-q-compression-is-avail": {
-   "id": "q-in-q-compression-is-avail",
-   "uml-id": "_4uEBsEafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 5,
-   "is-read-only": true,
-   "description": [
-    "Packet compression on layer of a second VLAN available at the device."
-   ],
-   "uml-name": "qInQCompressionIsAvail",
-   "controlType": "checkbox"
-  },
-  "mpls-compression-is-avail": {
-   "id": "mpls-compression-is-avail",
-   "uml-id": "_4uEBs0afEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 6,
-   "is-read-only": true,
-   "description": [
-    "Packet compression on mpls layer available at the device."
-   ],
-   "uml-name": "mplsCompressionIsAvail",
-   "controlType": "checkbox"
-  },
-  "ipv4-compression-is-avail": {
-   "id": "ipv4-compression-is-avail",
-   "uml-id": "_4uEBtkafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 7,
-   "is-read-only": true,
-   "description": [
-    "Packet compression on layer 3 for IPv4 available at the device."
-   ],
-   "uml-name": "ipv4CompressionIsAvail",
-   "controlType": "checkbox"
-  },
-  "ipv6-compression-is-avail": {
-   "id": "ipv6-compression-is-avail",
-   "uml-id": "_4uEBuUafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 8,
-   "is-read-only": true,
-   "description": [
-    "Packet compression on layer 3 for IPv6 available at the device."
-   ],
-   "uml-name": "ipv6CompressionIsAvail",
-   "controlType": "checkbox"
-  },
-  "layer4-compression-is-avail": {
-   "id": "layer4-compression-is-avail",
-   "uml-id": "_4uEBvEafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 9,
-   "is-read-only": true,
-   "description": [
-    "Packet compression on layer 4 (TCP and UDP header) available at the device."
-   ],
-   "uml-name": "layer4CompressionIsAvail",
-   "controlType": "checkbox"
-  },
-  "container-id": {
-   "id": "container-id",
-   "uml-id": "_ecCeS0aqEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "ContainterID in Netconf must be the same as TDM Flow ID so a connection can be made between the two items, which separately exist in the controller."
-   ],
-   "uml-name": "containerID",
-   "controlType": "text"
-  },
-  "segments-id-list": {
-   "id": "segments-id-list",
-   "uml-id": "_4uEBy0afEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "_Nd1F4MKuEeWwLJhHQlOGSQ",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list."
-   ],
-   "uml-name": "segmentsIdList"
-  },
-  "packet-compression-is-on": {
-   "id": "packet-compression-is-on",
-   "uml-id": "_4uEB1UafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "In case packet compression is activated, but no type is activated, it is assumed that the device chooses the optimum."
-   ],
-   "uml-name": "packetCompressionIsOn",
-   "controlType": "checkbox"
-  },
-  "layer2-compression-is-on": {
-   "id": "layer2-compression-is-on",
-   "uml-id": "_4uEB2kafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 4,
-   "is-read-only": false,
-   "description": [
-    "Packet compression on layer 2 configured at the device."
-   ],
-   "uml-name": "layer2CompressionIsOn",
-   "controlType": "checkbox"
-  },
-  "vlan-compression-is-on": {
-   "id": "vlan-compression-is-on",
-   "uml-id": "_4uEB30afEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 5,
-   "is-read-only": false,
-   "description": [
-    "Packet compression on VLAN layer configured at the device."
-   ],
-   "uml-name": "vlanCompressionIsOn",
-   "controlType": "checkbox"
-  },
-  "q-in-q-compression-is-on": {
-   "id": "q-in-q-compression-is-on",
-   "uml-id": "_4uEB5EafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 6,
-   "is-read-only": false,
-   "description": [
-    "Packet compression on layer of a second VLAN configured at the device."
-   ],
-   "uml-name": "qInQCompressionIsOn",
-   "controlType": "checkbox"
-  },
-  "mpls-compression-is-on": {
-   "id": "mpls-compression-is-on",
-   "uml-id": "_4uEB6UafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 7,
-   "is-read-only": false,
-   "description": [
-    "Packet compression on MPLS layer configured at the device."
-   ],
-   "uml-name": "mplsCompressionIsOn",
-   "controlType": "checkbox"
-  },
-  "ipv4-compression-is-on": {
-   "id": "ipv4-compression-is-on",
-   "uml-id": "_4uEB7kafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 8,
-   "is-read-only": false,
-   "description": [
-    "Packet compression on layer 3 for IPv4 configured at the device."
-   ],
-   "uml-name": "ipv4CompressionIsOn",
-   "controlType": "checkbox"
-  },
-  "ipv6-compression-is-on": {
-   "id": "ipv6-compression-is-on",
-   "uml-id": "_4uEB80afEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 9,
-   "is-read-only": false,
-   "description": [
-    "Packet compression on layer 3 for IPv6 configured at the device."
-   ],
-   "uml-name": "ipv6CompressionIsOn",
-   "controlType": "checkbox"
-  },
-  "layer4-compression-is-on": {
-   "id": "layer4-compression-is-on",
-   "uml-id": "_4uEB-EafEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 10,
-   "is-read-only": false,
-   "description": [
-    "Packet compression on layer 4 (TCP and UDP header) configured at the device."
-   ],
-   "uml-name": "layer4CompressionIsOn",
-   "controlType": "checkbox"
-  },
-  "mw-tdm-container-pac": {
-   "id": "mw-tdm-container-pac",
-   "uml-id": "_ecCeMUaqEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "MW_TdmContainer_Pac"
-  },
-  "tdm-container-capability": {
-   "id": "tdm-container-capability",
-   "uml-id": "_ecCeSEaqEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Bundling is not available."
-   ],
-   "uml-name": "TdmContainerCapability"
-  },
-  "tdm-container-configuration": {
-   "id": "tdm-container-configuration",
-   "uml-id": "_ecCecUaqEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "TdmContainerConfiguration"
-  },
-  "tdm-container-status": {
-   "id": "tdm-container-status",
-   "uml-id": "_ecCesUaqEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "TdmContainerStatus"
-  },
-  "tdm-container-current-problems": {
-   "id": "tdm-container-current-problems",
-   "uml-id": "_ecCevUaqEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "TdmContainerCurrentProblems"
-  },
-  "tdm-container-current-performance": {
-   "id": "tdm-container-current-performance",
-   "uml-id": "_ecCew0aqEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the TDM container at a particular moment."
-   ],
-   "uml-name": "TdmContainerCurrentPerformance"
-  },
-  "tdm-container-historical-performances": {
-   "id": "tdm-container-historical-performances",
-   "uml-id": "_ecCex0aqEeas2eqI3oKNtg",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "description": [
-    "Aggregated performance information of the TDM container for a pre-defined measurement interval."
-   ],
-   "uml-name": "TdmContainerHistoricalPerformances"
-  },
-  "supported-tdm-container-types-list": {
-   "id": "supported-tdm-container-types-list",
-   "uml-id": "_R5hG0EdwEeax2rWez10Siw",
-   "uml-type": "ownedAttribute",
-   "type": "_rgbigEdjEeax2rWez10Siw",
-   "order-number": 1,
-   "is-read-only": true,
-   "description": [
-    "Lists the TDM containers that are supported."
-   ],
-   "uml-name": "supportedTdmContainerTypesList"
-  },
-  "container-type": {
-   "id": "container-type",
-   "uml-id": "_be7AoMWkEeW3xsRKtpCLuA",
-   "uml-type": "uml:DataType",
-   "uml-name": "ContainerType"
-  },
-  "segment-id": {
-   "id": "segment-id",
-   "uml-id": "_ecCee0aqEeas2eqI3oKNtg",
-   "uml-type": "ownedAttribute",
-   "type": "_Nd1F4MKuEeWwLJhHQlOGSQ",
-   "order-number": 3,
-   "is-read-only": false,
-   "description": [
-    "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;"
-   ],
-   "uml-name": "segmentID"
-  },
-  "mw-current-problem": {
-   "id": "mw-current-problem",
-   "uml-id": "_LKRM4JNQEeWuAeXkr703BA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "MwCurrentProblem"
-  },
-  "sequence-number": {
-   "id": "sequence-number",
-   "uml-id": "_YadH4CJbEeaHpPYk5sscIg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 1,
-   "is-read-only": true,
-   "is-key": 1,
-   "description": [
-    "Unique sequence number of the current problem object."
-   ],
-   "uml-name": "sequenceNumber",
-   "controlType": "number"
-  },
-  "time-stamp": {
-   "id": "time-stamp",
-   "uml-id": "_lB4EQJN1EeWuAeXkr703BA",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_oGqi1lLNEeO75dO39GbF8Q",
-   "order-number": 2,
-   "is-read-only": true,
-   "description": [
-    "Time and date of the problem. _format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes."
-   ],
-   "uml-name": "timeStamp"
-  },
-  "problem-severity": {
-   "id": "problem-severity",
-   "uml-id": "_qInZ8KT4EeapooeghKN-dA",
-   "uml-type": "ownedAttribute",
-   "type": "_eIml0JH1EeWUdbnmmNiTAA",
-   "order-number": 3,
-   "is-read-only": true,
-   "description": [
-    "Severity of the alarm."
-   ],
-   "uml-name": "problemSeverity",
-   "controlType": [
-    "non-alarmed",
-    "warning",
-    "minor",
-    "major",
-    "critical"
-   ]
-  },
-  "channel-plan-type": {
-   "id": "channel-plan-type",
-   "uml-id": "_oQf6IPXSEeW9zIqh2WHHww",
-   "uml-type": "uml:DataType",
-   "uml-name": "ChannelPlanType"
-  },
-  "duplex-distance-is-variable": {
-   "id": "duplex-distance-is-variable",
-   "uml-id": "_OPxkQK42EeWxIavXll_b0A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 2,
-   "is-read-only": true,
-   "description": [
-    "To be set on 'true', if the distance between transmitted and received frequency is variable."
-   ],
-   "uml-name": "duplexDistanceIsVariable",
-   "controlType": "checkbox"
-  },
-  "duplex-distance": {
-   "id": "duplex-distance",
-   "uml-id": "_BEr_wIMEEeWMcJAvkeTn2w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 3,
-   "is-read-only": true,
-   "unit": "kHz",
-   "description": [
-    "Distance between transmitted and received frequency."
-   ],
-   "uml-name": "duplexDistance",
-   "controlType": "number"
-  },
-  "auto-freq-select-is-avail": {
-   "id": "auto-freq-select-is-avail",
-   "uml-id": "_te6XMIL8EeWMcJAvkeTn2w",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 4,
-   "is-read-only": true,
-   "description": [
-    "In case the microwave radio is capable of automatically selecting the transmit frequency in unlicensed bands, this field shall contain a 'true'."
-   ],
-   "uml-name": "autoFreqSelectIsAvail",
-   "controlType": "checkbox"
-  },
-  "transmission-mode-type": {
-   "id": "transmission-mode-type",
-   "uml-id": "_zG34sPXQEeW9zIqh2WHHww",
-   "uml-type": "uml:DataType",
-   "uml-name": "TransmissionModeType"
-  },
-  "transmission-mode-id": {
-   "id": "transmission-mode-id",
-   "uml-id": "_afdYoNumEeWHIeLurhMv0A",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_SU3Q4I30EeO38ZmbECnvbg",
-   "order-number": 1,
-   "is-read-only": true,
-   "is-key": 1,
-   "description": [
-    "Indentifies the transmissionMode for internal reference."
-   ],
-   "uml-name": "transmissionModeId"
-  },
-  "channel-bandwidth": {
-   "id": "channel-bandwidth",
-   "uml-id": "_FteJEHfdEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": true,
-   "unit": "kHz",
-   "description": [
-    "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;"
-   ],
-   "uml-name": "channelBandwidth",
-   "controlType": "number"
-  },
-  "modulation-scheme": {
-   "id": "modulation-scheme",
-   "uml-id": "_G4H-UHfdEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 3,
-   "is-read-only": true,
-   "unit": "symbols",
-   "description": [
-    "Modulation scheme, which is base to the other characteristics described in the same transmissionModeType data type. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256')."
-   ],
-   "uml-name": "modulationScheme",
-   "controlType": "number"
-  },
-  "code-rate": {
-   "id": "code-rate",
-   "uml-id": "_jE7-EHf4EeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 4,
-   "is-read-only": true,
-   "unit": "%",
-   "description": [
-    "Code rate of the coding scheme in % (Net bit rate ≤ Gross bit rate · code rate)."
-   ],
-   "uml-name": "codeRate",
-   "controlType": "number"
-  },
-  "tx-power-min": {
-   "id": "tx-power-min",
-   "uml-id": "_I3nJ0HfdEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 5,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Value of the minimum transmit power the modem can operate in dBm."
-   ],
-   "uml-name": "txPowerMin",
-   "controlType": "number"
-  },
-  "tx-power-max": {
-   "id": "tx-power-max",
-   "uml-id": "_KB7A0HfdEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 6,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Value of the maximum transmit power the modem can operate in dBm."
-   ],
-   "uml-name": "txPowerMax",
-   "controlType": "number"
-  },
-  "rx-threshold": {
-   "id": "rx-threshold",
-   "uml-id": "_LCr6QHfdEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 7,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Value of the receive level required to decode the received signal with a Bit Error Rate of 1e-6 or less."
-   ],
-   "uml-name": "rxThreshold",
-   "controlType": "number"
-  },
-  "am-upshift-level": {
-   "id": "am-upshift-level",
-   "uml-id": "_MGguwHfdEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 8,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Value of the receive level that has to be exceeded to shift into a higher modulation scheme."
-   ],
-   "uml-name": "amUpshiftLevel",
-   "controlType": "number"
-  },
-  "am-downshift-level": {
-   "id": "am-downshift-level",
-   "uml-id": "_NIvAwHfdEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 9,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Value of the receive level that has to be exceeded for not shifting into a lower modulation scheme."
-   ],
-   "uml-name": "amDownshiftLevel",
-   "controlType": "number"
-  },
-  "xpic-is-avail": {
-   "id": "xpic-is-avail",
-   "uml-id": "_QHd9kHfvEeW-h9gN8LYm4Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 10,
-   "is-read-only": true,
-   "description": [
-    "In case this air interface type is capable of XPIC, this field shall contain a 'true'. This information shall purely relate to capabilities of the equipment type, but not to the operational capability of a specific hardware composition on site. Means for example that this attribute might contain a 'true' statement, even if an additional cable would have been required to actually operate XPIC in a specific case."
-   ],
-   "uml-name": "xpicIsAvail",
-   "controlType": "checkbox"
-  },
-  "air-interface-problem-severity-type": {
-   "id": "air-interface-problem-severity-type",
-   "uml-id": "_ZKdWgGnuEeaZwMagYjVCHQ",
-   "uml-type": "uml:DataType",
-   "uml-name": "AirInterfaceProblemSeverityType"
-  },
-  "problem-kind-name": {
-   "id": "problem-kind-name",
-   "uml-id": "_OMQH0Gz0Eeaf-__BRLM84g",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "is-key": 1,
-   "description": [
-    "Name of the alarm according to Container::ContainerCapability::supportedAlarms"
-   ],
-   "uml-name": "problemKindName",
-   "controlType": "text"
-  },
-  "air-interface-current-problem-type": {
-   "id": "air-interface-current-problem-type",
-   "uml-id": "_umuZUMXjEeW3xsRKtpCLuA",
-   "uml-type": "uml:DataType",
-   "uml-name": "AirInterfaceCurrentProblemType"
-  },
-  "problem-name": {
-   "id": "problem-name",
-   "uml-id": "__h1n4cXpEeWJ6KZuc0h_vw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": true,
-   "description": [
-    "Name of the alarm according to Container::ContainerCapability::supportedAlarms"
-   ],
-   "uml-name": "problemName",
-   "controlType": "text"
-  },
-  "air-interface-performance-type": {
-   "id": "air-interface-performance-type",
-   "uml-id": "_OvFYwEQbEea3g-FxAUaYRg",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Consolidated performance information of the air interface."
-   ],
-   "uml-name": "AirInterfacePerformanceType"
-  },
-  "es": {
-   "id": "es",
-   "uml-id": "_DbVzpUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 1,
-   "is-read-only": true,
-   "unit": "s",
-   "description": [
-    "Number of errored seconds."
-   ],
-   "uml-name": "es",
-   "controlType": "number"
-  },
-  "ses": {
-   "id": "ses",
-   "uml-id": "_DbVzqUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": true,
-   "unit": "s",
-   "description": [
-    "Number of severely errored seconds."
-   ],
-   "uml-name": "ses",
-   "controlType": "number"
-  },
-  "cses": {
-   "id": "cses",
-   "uml-id": "_DbVzrUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 3,
-   "is-read-only": true,
-   "unit": "s",
-   "description": [
-    "Number of consecutive severely errored seconds."
-   ],
-   "uml-name": "cses",
-   "controlType": "number"
-  },
-  "unavailability": {
-   "id": "unavailability",
-   "uml-id": "_DbVzsUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 4,
-   "is-read-only": true,
-   "unit": "s",
-   "description": [
-    "Total time of unavailability in seconds."
-   ],
-   "uml-name": "unavailability",
-   "controlType": "number"
-  },
-  "tx-level-min": {
-   "id": "tx-level-min",
-   "uml-id": "_DbVztUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 5,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Minimum transmit power. Signed integers are required."
-   ],
-   "uml-name": "txLevelMin",
-   "controlType": "number"
-  },
-  "tx-level-max": {
-   "id": "tx-level-max",
-   "uml-id": "_DbVzuUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 6,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Maximum transmit power. Signed integers are required."
-   ],
-   "uml-name": "txLevelMax",
-   "controlType": "number"
-  },
-  "tx-level-avg": {
-   "id": "tx-level-avg",
-   "uml-id": "_DbVzvUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 7,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Averaged transmit power. Signed integers are required."
-   ],
-   "uml-name": "txLevelAvg",
-   "controlType": "number"
-  },
-  "rx-level-min": {
-   "id": "rx-level-min",
-   "uml-id": "_DbVzwUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 8,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Minimum receive level. Signed integers are required."
-   ],
-   "uml-name": "rxLevelMin",
-   "controlType": "number"
-  },
-  "rx-level-max": {
-   "id": "rx-level-max",
-   "uml-id": "_DbVzxUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 9,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Maximum receive level. Signed integers are required."
-   ],
-   "uml-name": "rxLevelMax",
-   "controlType": "number"
-  },
-  "rx-level-avg": {
-   "id": "rx-level-avg",
-   "uml-id": "_DbVzyUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 10,
-   "is-read-only": true,
-   "unit": "dBm",
-   "description": [
-    "Averaged receive level. Signed integers are required."
-   ],
-   "uml-name": "rxLevelAvg",
-   "controlType": "number"
-  },
-  "time2-states": {
-   "id": "time2-states",
-   "uml-id": "_DbVzzUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 11,
-   "is-read-only": true,
-   "unit": "s",
-   "description": [
-    "Sum of all seconds the transmitter operated in e.g. BPSK."
-   ],
-   "uml-name": "time2States",
-   "controlType": "number"
-  },
-  "time4-states-s": {
-   "id": "time4-states-s",
-   "uml-id": "_DbVz0kQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 12,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time4StatesS",
-   "controlType": "number"
-  },
-  "time4-states": {
-   "id": "time4-states",
-   "uml-id": "_DbVz2EQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 13,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time4States",
-   "controlType": "number"
-  },
-  "time8-states": {
-   "id": "time8-states",
-   "uml-id": "_DbVz3UQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 14,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time8States",
-   "controlType": "number"
-  },
-  "time16-states-s": {
-   "id": "time16-states-s",
-   "uml-id": "_DbVz4kQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 15,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time16StatesS",
-   "controlType": "number"
-  },
-  "time16-states": {
-   "id": "time16-states",
-   "uml-id": "_DbVz50QbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 16,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time16States",
-   "controlType": "number"
-  },
-  "time32-states": {
-   "id": "time32-states",
-   "uml-id": "_DbVz7EQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 17,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time32States",
-   "controlType": "number"
-  },
-  "time64-states": {
-   "id": "time64-states",
-   "uml-id": "_DbVz8UQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 18,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time64States",
-   "controlType": "number"
-  },
-  "time128-states": {
-   "id": "time128-states",
-   "uml-id": "_DbVz9kQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 19,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time128States",
-   "controlType": "number"
-  },
-  "time256-states": {
-   "id": "time256-states",
-   "uml-id": "_DbVz-0QbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 20,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time256States",
-   "controlType": "number"
-  },
-  "time512-states": {
-   "id": "time512-states",
-   "uml-id": "_DbV0AEQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 21,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time512States",
-   "controlType": "number"
-  },
-  "time512-states-l": {
-   "id": "time512-states-l",
-   "uml-id": "_DbV0BUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 22,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time512StatesL",
-   "controlType": "number"
-  },
-  "time1024-states": {
-   "id": "time1024-states",
-   "uml-id": "_DbV0CkQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 23,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time1024States",
-   "controlType": "number"
-  },
-  "time1024-states-l": {
-   "id": "time1024-states-l",
-   "uml-id": "_DbV0D0QbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 24,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time1024StatesL",
-   "controlType": "number"
-  },
-  "time2048-states": {
-   "id": "time2048-states",
-   "uml-id": "_DbV0FEQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 25,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time2048States",
-   "controlType": "number"
-  },
-  "time2048-states-l": {
-   "id": "time2048-states-l",
-   "uml-id": "_DbV0GUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 26,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time2048StatesL",
-   "controlType": "number"
-  },
-  "time4096-states": {
-   "id": "time4096-states",
-   "uml-id": "_DbV0HkQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 27,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time4096States",
-   "controlType": "number"
-  },
-  "time4096-states-l": {
-   "id": "time4096-states-l",
-   "uml-id": "_DbV0I0QbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 28,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time4096StatesL",
-   "controlType": "number"
-  },
-  "time8192-states": {
-   "id": "time8192-states",
-   "uml-id": "_DbV0KEQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 29,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time8192States",
-   "controlType": "number"
-  },
-  "time8192-states-l": {
-   "id": "time8192-states-l",
-   "uml-id": "_DbV0LUQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 30,
-   "is-read-only": true,
-   "unit": "s",
-   "uml-name": "time8192StatesL",
-   "controlType": "number"
-  },
-  "snir-min": {
-   "id": "snir-min",
-   "uml-id": "_nG-NsEzvEeaRytIQfQ43Wg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 1,
-   "is-read-only": true,
-   "unit": "dB",
-   "description": [
-    "Minimum signal to (noise+interference) ratio of the combined signals."
-   ],
-   "uml-name": "snirMin",
-   "controlType": "number"
-  },
-  "snir-max": {
-   "id": "snir-max",
-   "uml-id": "_n_OEUEzvEeaRytIQfQ43Wg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": true,
-   "unit": "dB",
-   "description": [
-    "Maximum signal to (noise+interference) ratio of the combined signals."
-   ],
-   "uml-name": "snirMax",
-   "controlType": "number"
-  },
-  "snir-avg": {
-   "id": "snir-avg",
-   "uml-id": "_oU3kMEzvEeaRytIQfQ43Wg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 3,
-   "is-read-only": true,
-   "unit": "dB",
-   "description": [
-    "Average signal to (noise+interference) ratio of the combined signals."
-   ],
-   "uml-name": "snirAvg",
-   "controlType": "number"
-  },
-  "xpd-min": {
-   "id": "xpd-min",
-   "uml-id": "_DbV0PkQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 34,
-   "is-read-only": true,
-   "unit": "dB",
-   "description": [
-    "Minimum cross polarization discrimination."
-   ],
-   "uml-name": "xpdMin",
-   "controlType": "number"
-  },
-  "xpd-max": {
-   "id": "xpd-max",
-   "uml-id": "_DbV0QkQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 35,
-   "is-read-only": true,
-   "unit": "dB",
-   "description": [
-    "Maximum cross polarization discrimination."
-   ],
-   "uml-name": "xpdMax",
-   "controlType": "number"
-  },
-  "xpd-avg": {
-   "id": "xpd-avg",
-   "uml-id": "_DbV0RkQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 36,
-   "is-read-only": true,
-   "unit": "dB",
-   "description": [
-    "Averaged cross polarization discrimination."
-   ],
-   "uml-name": "xpdAvg",
-   "controlType": "number"
-  },
-  "rf-temp-min": {
-   "id": "rf-temp-min",
-   "uml-id": "_DbV0SkQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 37,
-   "is-read-only": true,
-   "unit": "C",
-   "description": [
-    "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit."
-   ],
-   "uml-name": "rfTempMin",
-   "controlType": "number"
-  },
-  "rf-temp-max": {
-   "id": "rf-temp-max",
-   "uml-id": "_DbV0TkQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 38,
-   "is-read-only": true,
-   "unit": "C",
-   "description": [
-    "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit."
-   ],
-   "uml-name": "rfTempMax",
-   "controlType": "number"
-  },
-  "rf-temp-avg": {
-   "id": "rf-temp-avg",
-   "uml-id": "_DbV0UkQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 39,
-   "is-read-only": true,
-   "unit": "C",
-   "description": [
-    "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit."
-   ],
-   "uml-name": "rfTempAvg",
-   "controlType": "number"
-  },
-  "defect-blocks-sum": {
-   "id": "defect-blocks-sum",
-   "uml-id": "_DbV0VkQbEea3g-FxAUaYRg",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 40,
-   "is-read-only": true,
-   "unit": "blocks",
-   "description": [
-    "Total number of blocks that were defect after receiving and could not be corrected by the FEC."
-   ],
-   "uml-name": "defectBlocksSum",
-   "controlType": "number"
-  },
-  "time-period": {
-   "id": "time-period",
-   "uml-id": "_Nyme4H1IEeWHjMaYlqnBcw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 4,
-   "is-read-only": true,
-   "unit": "s",
-   "description": [
-    "Total length of the measurement period in seconds."
-   ],
-   "uml-name": "timePeriod",
-   "controlType": "number"
-  },
-  "air-interface-current-performance-type": {
-   "id": "air-interface-current-performance-type",
-   "uml-id": "_pQ_y4GoHEeaZwMagYjVCHQ",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Turns performance information into current performance information by inheriting from OTN_CurrentData."
-   ],
-   "uml-name": "AirInterfaceCurrentPerformanceType"
-  },
-  "performance-data": {
-   "id": "performance-data",
-   "uml-id": "_i5STYGz7Eeaf-__BRLM84g",
-   "uml-type": "ownedAttribute",
-   "type": "_U9tW0EQeEea3g-FxAUaYRg",
-   "order-number": 1,
-   "is-read-only": true,
-   "uml-name": "performanceData"
-  },
-  "air-interface-historical-performance-type": {
-   "id": "air-interface-historical-performance-type",
-   "uml-id": "_t18kwGoHEeaZwMagYjVCHQ",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Turns performance information into historical performance information by inheriting from OTN_HistoryData."
-   ],
-   "uml-name": "AirInterfaceHistoricalPerformanceType"
-  },
-  "diversity-type": {
-   "id": "diversity-type",
-   "uml-id": "_pTliINyUEeW-SfXlFFFI0Q",
-   "uml-type": "uml:DataType",
-   "uml-name": "DiversityType"
-  },
-  "diversity-name": {
-   "id": "diversity-name",
-   "uml-id": "_uYhboNyUEeW-SfXlFFFI0Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": true,
-   "is-key": 1,
-   "description": [
-    "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'"
-   ],
-   "uml-name": "diversityName",
-   "controlType": "text"
-  },
-  "number-of-air-interfaces-max": {
-   "id": "number-of-air-interfaces-max",
-   "uml-id": "_wKDDoNyUEeW-SfXlFFFI0Q",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": true,
-   "unit": "air interfaces",
-   "description": [
-    "Maximum number of air interfaces that could be part of this kind of diversity."
-   ],
-   "uml-name": "numberOfAirInterfacesMax",
-   "controlType": "number"
-  },
-  "air-interface-diversity-problem-severity-type": {
-   "id": "air-interface-diversity-problem-severity-type",
-   "uml-id": "_2kMRYGzzEeaf-__BRLM84g",
-   "uml-type": "uml:DataType",
-   "uml-name": "AirInterfaceDiversityProblemSeverityType"
-  },
-  "air-interface-diversity-current-problem-type": {
-   "id": "air-interface-diversity-current-problem-type",
-   "uml-id": "_z1XWgMXlEeWJ6KZuc0h_vw",
-   "uml-type": "uml:DataType",
-   "uml-name": "AirInterfaceDiversityCurrentProblemType"
-  },
-  "air-interface-diversity-performance-type": {
-   "id": "air-interface-diversity-performance-type",
-   "uml-id": "_EH3QgEQdEea3g-FxAUaYRg",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Consolidated performance information of the air interface diversity group."
-   ],
-   "uml-name": "AirInterfaceDiversityPerformanceType"
-  },
-  "air-interface-diversity-current-performance-type": {
-   "id": "air-interface-diversity-current-performance-type",
-   "uml-id": "_n4wTgGz6Eeaf-__BRLM84g",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Turns performance information into current performance information by inheriting from OTN_CurrentData."
-   ],
-   "uml-name": "AirInterfaceDiversityCurrentPerformanceType"
-  },
-  "air-interface-diversity-historical-performance-type": {
-   "id": "air-interface-diversity-historical-performance-type",
-   "uml-id": "_pG0pIGz6Eeaf-__BRLM84g",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Turns performance information into historical performance information by inheriting from OTN_HistoryData."
-   ],
-   "uml-name": "AirInterfaceDiversityHistoricalPerformanceType"
-  },
-  "tdm-structure-type": {
-   "id": "tdm-structure-type",
-   "uml-id": "_jRAQsEdoEeax2rWez10Siw",
-   "uml-type": "uml:DataType",
-   "uml-name": "TdmStructureType"
-  },
-  "tdm-structure-name": {
-   "id": "tdm-structure-name",
-   "uml-id": "_1bJF4EdoEeax2rWez10Siw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": true,
-   "is-key": 1,
-   "description": [
-    "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'"
-   ],
-   "uml-name": "tdmStructureName",
-   "controlType": "text"
-  },
-  "tdm-segment-size": {
-   "id": "tdm-segment-size",
-   "uml-id": "_hPq1oEdpEeax2rWez10Siw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": true,
-   "unit": "kbit/s",
-   "description": [
-    "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;"
-   ],
-   "uml-name": "tdmSegmentSize",
-   "controlType": "number"
-  },
-  "max-number-of-segments-reservable": {
-   "id": "max-number-of-segments-reservable",
-   "uml-id": "_EJnsgEdpEeax2rWez10Siw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 3,
-   "is-read-only": true,
-   "unit": "segments",
-   "description": [
-    "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface."
-   ],
-   "uml-name": "maxNumberOfSegmentsReservable",
-   "controlType": "number"
-  },
-  "structure-problem-severity-type": {
-   "id": "structure-problem-severity-type",
-   "uml-id": "_LPgp4Gz0Eeaf-__BRLM84g",
-   "uml-type": "uml:DataType",
-   "uml-name": "StructureProblemSeverityType"
-  },
-  "structure-current-problem-type": {
-   "id": "structure-current-problem-type",
-   "uml-id": "_UC0gAMXnEeWJ6KZuc0h_vw",
-   "uml-type": "uml:DataType",
-   "uml-name": "StructureCurrentProblemType"
-  },
-  "structure-performance-type": {
-   "id": "structure-performance-type",
-   "uml-id": "_kzEicEQdEea3g-FxAUaYRg",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Consolidated performance information of the Structure."
-   ],
-   "uml-name": "StructurePerformanceType"
-  },
-  "structure-current-performance-type": {
-   "id": "structure-current-performance-type",
-   "uml-id": "_o7jNQGz6Eeaf-__BRLM84g",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Turns performance information into current performance information by inheriting from OTN_CurrentData."
-   ],
-   "uml-name": "StructureCurrentPerformanceType"
-  },
-  "structure-historical-performance-type": {
-   "id": "structure-historical-performance-type",
-   "uml-id": "_pNAJoGz6Eeaf-__BRLM84g",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Turns performance information into historical performance information by inheriting from OTN_HistoryData."
-   ],
-   "uml-name": "StructureHistoricalPerformanceType"
-  },
-  "container-name": {
-   "id": "container-name",
-   "uml-id": "_o0IuQMWkEeW3xsRKtpCLuA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": true,
-   "is-key": 1,
-   "description": [
-    "Names to be chosen from the following list: 'ethernet','e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'"
-   ],
-   "uml-name": "containerName",
-   "controlType": "text"
-  },
-  "number-of-time-slots-required": {
-   "id": "number-of-time-slots-required",
-   "uml-id": "_sZ82MMXXEeW3xsRKtpCLuA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": true,
-   "unit": "timeslots",
-   "description": [
-    "Number of time slots required for transporting this type of container. Value must be calculated by the vendor after defining the timeSlotCapacity. For containers of fixed size: numberOfTimeSlotsRequired = required bandwidth of the container divided by timeSlotCapacity. For containers of variable size the minimum (most probably 1) is to be stated."
-   ],
-   "uml-name": "numberOfTimeSlotsRequired",
-   "controlType": "number"
-  },
-  "tdm-time-slots-is-required": {
-   "id": "tdm-time-slots-is-required",
-   "uml-id": "_hIagINrWEeWcA7plcJPZ7A",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 3,
-   "is-read-only": true,
-   "description": [
-    "Shall be set to '1', if this container type requires bandwidth (times slots) reserved for TDM transport."
-   ],
-   "uml-name": "tdmTimeSlotsIsRequired",
-   "controlType": "checkbox"
-  },
-  "tdm-container-type": {
-   "id": "tdm-container-type",
-   "uml-id": "_rgbigEdjEeax2rWez10Siw",
-   "uml-type": "uml:DataType",
-   "uml-name": "TdmContainerType"
-  },
-  "tdm-container-name": {
-   "id": "tdm-container-name",
-   "uml-id": "_rgbigkdjEeax2rWez10Siw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": true,
-   "is-key": 1,
-   "description": [
-    "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'"
-   ],
-   "uml-name": "tdmContainerName",
-   "controlType": "text"
-  },
-  "tdm-container-size": {
-   "id": "tdm-container-size",
-   "uml-id": "_rgbihEdjEeax2rWez10Siw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": true,
-   "unit": "kbit/s",
-   "description": [
-    "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;"
-   ],
-   "uml-name": "tdmContainerSize",
-   "controlType": "number"
-  },
-  "segment-id-type": {
-   "id": "segment-id-type",
-   "uml-id": "_Nd1F4MKuEeWwLJhHQlOGSQ",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Identifies the segments, which are used to transport the container."
-   ],
-   "uml-name": "SegmentIDType"
-  },
-  "structure-id-ref": {
-   "id": "structure-id-ref",
-   "uml-id": "_N4GKkMKvEeWwLJhHQlOGSQ",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_SU3Q4I30EeO38ZmbECnvbg",
-   "order-number": 1,
-   "is-read-only": false,
-   "is-key": 1,
-   "uml-name": "structureIdRef"
-  },
-  "segment-id-ref": {
-   "id": "segment-id-ref",
-   "uml-id": "_nVubgMKvEeWwLJhHQlOGSQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": false,
-   "is-key": 2,
-   "description": [
-    "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once."
-   ],
-   "uml-name": "segmentIdRef",
-   "controlType": "number"
-  },
-  "segment-status-type": {
-   "id": "segment-status-type",
-   "uml-id": "_KwZVcMUCEeW3xsRKtpCLuA",
-   "uml-type": "uml:DataType",
-   "uml-name": "SegmentStatusType"
-  },
-  "segment-status-type-id": {
-   "id": "segment-status-type-id",
-   "uml-id": "_7JBAYOLbEeWM2vUDE3Xqhw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 1,
-   "is-read-only": true,
-   "is-key": 1,
-   "uml-name": "segmentStatusTypeId",
-   "controlType": "number"
-  },
-  "segment-is-reserved-for-tdm": {
-   "id": "segment-is-reserved-for-tdm",
-   "uml-id": "__1DMwMUCEeW3xsRKtpCLuA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 2,
-   "is-read-only": true,
-   "description": [
-    "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm."
-   ],
-   "uml-name": "segmentIsReservedForTdm",
-   "controlType": "checkbox"
-  },
-  "operational-status": {
-   "id": "operational-status",
-   "uml-id": "_ZA94EMUCEeW3xsRKtpCLuA",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-CoreModel/CoreModel.uml#_lNclkLEtEeSZUdYfPSdgew",
-   "order-number": 3,
-   "is-read-only": true,
-   "description": [
-    "Current operational status of each segment."
-   ],
-   "uml-name": "operationalStatus"
-  },
-  "obsolete-priority-class": {
-   "id": "obsolete-priority-class",
-   "uml-id": "_ebslwMnAEeWYRsWW_rqpgw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 4,
-   "is-read-only": true,
-   "description": [
-    "PriorityClass as inherited from the associated Container::ContainerConfiguration::priorityClass. In case the device is capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, priorityClass shall be considered, while calculating the dropOrderRank."
-   ],
-   "uml-name": "obsoletePriorityClass",
-   "controlType": "number"
-  },
-  "obsolete-drop-order-rank": {
-   "id": "obsolete-drop-order-rank",
-   "uml-id": "_DbJpMMnDEeWYRsWW_rqpgw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 5,
-   "is-read-only": true,
-   "description": [
-    "In case the device is NOT capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, dropOrderRank is number of segments minus sequence number of the segment. In case the device is capable of adapting the sequence, dropOrderRank has to be calculated by the device in dependency to the assigned priorityClass. _unique: within Structure::StructureStatus::segmentStatusList"
-   ],
-   "uml-name": "obsoleteDropOrderRank",
-   "controlType": "number"
-  },
-  "container-problem-severity-type": {
-   "id": "container-problem-severity-type",
-   "uml-id": "_OMPgwGz0Eeaf-__BRLM84g",
-   "uml-type": "uml:DataType",
-   "uml-name": "ContainerProblemSeverityType"
-  },
-  "container-current-problem-type": {
-   "id": "container-current-problem-type",
-   "uml-id": "__h1n4MXpEeWJ6KZuc0h_vw",
-   "uml-type": "uml:DataType",
-   "uml-name": "ContainerCurrentProblemType"
-  },
-  "container-performance-type": {
-   "id": "container-performance-type",
-   "uml-id": "_U9tW0EQeEea3g-FxAUaYRg",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Consolidated performance information of the Container."
-   ],
-   "uml-name": "ContainerPerformanceType"
-  },
-  "tx-ethernet-bytes-max-s": {
-   "id": "tx-ethernet-bytes-max-s",
-   "uml-id": "_MaHB8H1IEeWHjMaYlqnBcw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 1,
-   "is-read-only": true,
-   "unit": "Bytes/s",
-   "description": [
-    "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers."
-   ],
-   "uml-name": "txEthernetBytesMaxS",
-   "controlType": "number"
-  },
-  "tx-ethernet-bytes-max-m": {
-   "id": "tx-ethernet-bytes-max-m",
-   "uml-id": "_M3NNoH1IEeWHjMaYlqnBcw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 2,
-   "is-read-only": true,
-   "unit": "Bytes/min",
-   "description": [
-    "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers."
-   ],
-   "uml-name": "txEthernetBytesMaxM",
-   "controlType": "number"
-  },
-  "tx-ethernet-bytes-sum": {
-   "id": "tx-ethernet-bytes-sum",
-   "uml-id": "_NWtNEH1IEeWHjMaYlqnBcw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 3,
-   "is-read-only": true,
-   "unit": "Bytes",
-   "description": [
-    "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers."
-   ],
-   "uml-name": "txEthernetBytesSum",
-   "controlType": "number"
-  },
-  "container-current-performance-type": {
-   "id": "container-current-performance-type",
-   "uml-id": "_pA5AQGz6Eeaf-__BRLM84g",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Turns performance information into current performance information by inheriting from OTN_CurrentData."
-   ],
-   "uml-name": "ContainerCurrentPerformanceType"
-  },
-  "container-historical-performance-type": {
-   "id": "container-historical-performance-type",
-   "uml-id": "_pTaToGz6Eeaf-__BRLM84g",
-   "uml-type": "uml:DataType",
-   "description": [
-    "Turns performance information into historical performance information by inheriting from OTN_HistoryData."
-   ],
-   "uml-name": "ContainerHistoricalPerformanceType"
-  },
-  "3-cz3-u-is-d-eead4-ers-mr-oj-bq": {
-   "id": "3-cz3-u-is-d-eead4-ers-mr-oj-bq",
-   "uml-id": "_3CZ3UIsDEead4ersMrOjBQ",
-   "enum": [
-    "NON",
-    "IF",
-    "RF"
-   ],
-   "is-read-only": false,
-   "uml-name": "_3CZ3UIsDEead4ersMrOjBQ"
-  },
-  "e-iml0-jh1-ee-w-udbnmm-ni-taa": {
-   "id": "e-iml0-jh1-ee-w-udbnmm-ni-taa",
-   "uml-id": "_eIml0JH1EeWUdbnmmNiTAA",
-   "enum": [
-    "NON_ALARMED",
-    "WARNING",
-    "MINOR",
-    "MAJOR",
-    "CRITICAL"
-   ],
-   "is-read-only": false,
-   "description": [
-    "According to ITU-T M.3160"
-   ],
-   "uml-name": "_eIml0JH1EeWUdbnmmNiTAA"
-  },
-  "e85-ns-i99-ee-w-fluv9-kl-ll5-a": {
-   "id": "e85-ns-i99-ee-w-fluv9-kl-ll5-a",
-   "uml-id": "_e85NsI99EeWFluv9KLLl5A",
-   "enum": [
-    "NOT_SPECIFIED",
-    "HORIZONTAL",
-    "VERTICAL"
-   ],
-   "is-read-only": false,
-   "uml-name": "_e85NsI99EeWFluv9KLLl5A"
-  },
-  "da-b5-ij-rg-ee-wx-ip-ew-zq-gmw": {
-   "id": "da-b5-ij-rg-ee-wx-ip-ew-zq-gmw",
-   "uml-id": "_DaB5IJRgEeWxIPEwZQ_gmw",
-   "enum": [
-    "HSB"
-   ],
-   "is-read-only": false,
-   "uml-name": "_DaB5IJRgEeWxIPEwZQ_gmw"
-  },
-  "01-d-yj-re-ee-wx-ip-ew-zq-gmw": {
-   "id": "01-d-yj-re-ee-wx-ip-ew-zq-gmw",
-   "uml-id": "_01_dYJReEeWxIPEwZQ_gmw",
-   "enum": [
-    "WORKING",
-    "PROTECTION",
-    "PROTECTED"
-   ],
-   "is-read-only": false,
-   "uml-name": "_01_dYJReEeWxIPEwZQ_gmw"
-  },
-  "du-js8-jox-ee-wz-6-sq-lz-uedw": {
-   "id": "du-js8-jox-ee-wz-6-sq-lz-uedw",
-   "uml-id": "_DUJs8JOXEeWz-6sqLzUedw",
-   "enum": [
-    "GROUP_DOWN",
-    "NOT_ALL_AI_ACTIVE",
-    "ALL_AI_ACTIVE"
-   ],
-   "is-read-only": false,
-   "uml-name": "_DUJs8JOXEeWz-6sqLzUedw"
-  }
- }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/microwave-model.yin.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/microwave-model.yin.json
deleted file mode 100755 (executable)
index 00b1ed6..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-{\r
-       "module": {\r
-               "name": "microwave-model",\r
-               "microwave-model": {\r
-                       "mw-air-interface-pac": {\r
-                               "type": "list",\r
-                               "key": "layer-protocol",\r
-                               "air-interface-capability": {\r
-                                       "name": "air-interface-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "air-interface-configuration": {\r
-                                       "name": "air-interface-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "air-interface-status": {\r
-                                       "name": "air-interface-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "air-interface-current-problems": {\r
-                                       "name": "air-interface-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "air-interface-current-performance": {\r
-                                       "name": "air-interface-current-performance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "air-interface-historical-performances": {\r
-                                       "name": "air-interface-historical-performances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       },\r
-                       "co-channel-group": {\r
-                               "type": "list",\r
-                               "key": "co-channel-group-id"\r
-                       },\r
-                       "mw-air-interface-hsb-end-point-pac": {\r
-                               "type": "list",\r
-                               "key": "endpoint"\r
-                       },\r
-                       "mw-air-interface-hsb-fc-switch-pac": {\r
-                               "type": "list",\r
-                               "key": "fcswitch"\r
-                       },\r
-                       "mw-air-interface-diversity-pac": {\r
-                               "type": "list",\r
-                               "key": "layer-protocol",\r
-                               "air-interface-diversity-capability": {\r
-                                       "name": "air-interface-diversity-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "air-interface-diversity-configuration": {\r
-                                       "name": "air-interface-diversity-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "air-interface-diversity-status": {\r
-                                       "name": "air-interface-diversity-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "air-interface-diversity-current-problems": {\r
-                                       "name": "air-interface-diversity-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "air-interface-diversity-current-performance": {\r
-                                       "name": "air-interface-diversity-current-performance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "air-interface-diversity-historical-performances": {\r
-                                       "name": "air-interface-diversity-historical-performances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       },\r
-                       "mw-pure-ethernet-structure-pac": {\r
-                               "type": "list",\r
-                               "key": "layer-protocol",\r
-                               "pure-ethernet-structure-capability": {\r
-                                       "name": "pure-ethernet-structure-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "pure-ethernet-structure-configuration": {\r
-                                       "name": "pure-ethernet-structure-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "pure-ethernet-structure-status": {\r
-                                       "name": "pure-ethernet-structure-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "pure-ethernet-structure-current-problems": {\r
-                                       "name": "pure-ethernet-structure-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "pure-ethernet-structure-current-performance": {\r
-                                       "name": "pure-ethernet-structure-current-performance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "pure-ethernet-structure-historical-performances": {\r
-                                       "name": "pure-ethernet-structure-historical-performances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       },\r
-                       "mw-hybrid-mw-structure-pac": {\r
-                               "type": "list",\r
-                               "key": "layer-protocol",\r
-                               "hybrid-mw-structure-capability": {\r
-                                       "name": "hybrid-mw-structure-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "hybrid-mw-structure-configuration": {\r
-                                       "name": "hybrid-mw-structure-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "hybrid-mw-structure-status": {\r
-                                       "name": "hybrid-mw-structure-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "hybrid-mw-structure-current-problems": {\r
-                                       "name": "hybrid-mw-structure-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "hybrid-mw-structure-current-performance": {\r
-                                       "name": "hybrid-mw-structure-current-performance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "hybrid-mw-structure-historical-performances": {\r
-                                       "name": "hybrid-mw-structure-historical-performances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       },\r
-                       "mw-ethernet-container-pac": {\r
-                               "type": "list",\r
-                               "key": "layer-protocol",\r
-                               "ethernet-container-capability": {\r
-                                       "name": "ethernet-container-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernet-container-configuration": {\r
-                                       "name": "ethernet-container-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernet-container-status": {\r
-                                       "name": "ethernet-container-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernet-container-current-problems": {\r
-                                       "name": "ethernet-container-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernet-container-current-performance": {\r
-                                       "name": "ethernet-container-current-performance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernet-container-historical-performances": {\r
-                                       "name": "ethernet-container-historical-performances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       },\r
-                       "mw-tdm-container-pac": {\r
-                               "type": "list",\r
-                               "key": "layer-protocol",\r
-                               "tdm-container-capability": {\r
-                                       "name": "tdm-container-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "tdm-container-configuration": {\r
-                                       "name": "tdm-container-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "tdm-container-status": {\r
-                                       "name": "tdm-container-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "tdm-container-current-problems": {\r
-                                       "name": "tdm-container-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "tdm-container-current-performance": {\r
-                                       "name": "tdm-container-current-performance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "tdm-container-historical-performances": {\r
-                                       "name": "tdm-container-historical-performances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-core-model-conditional-packages.schema-information.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-core-model-conditional-packages.schema-information.json
deleted file mode 100644 (file)
index 5d3014f..0000000
+++ /dev/null
@@ -1,337 +0,0 @@
-{
- "schema-information": {
-  "network-element-pac": {
-   "id": "network-element-pac",
-   "uml-id": "_RamCUPaMEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "NetworkElement_Pac"
-  },
-  "network-element": {
-   "id": "network-element",
-   "uml-id": "_5z06cPaNEeaW9u5N6usiTA",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel/CoreModel.uml#_oGqnr1LNEeO75dO39GbF8Q",
-   "order-number": 1,
-   "is-read-only": false,
-   "uml-name": "_networkElement"
-  },
-  "network-element-capability": {
-   "id": "network-element-capability",
-   "uml-id": "_1_TVYPaMEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "NetworkElementCapability"
-  },
-  "network-element-configuration": {
-   "id": "network-element-configuration",
-   "uml-id": "_Pu6HIPaNEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "NetworkElementConfiguration"
-  },
-  "network-element-status": {
-   "id": "network-element-status",
-   "uml-id": "_g5u0YPaNEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "NetworkElementStatus"
-  },
-  "network-element-current-problems": {
-   "id": "network-element-current-problems",
-   "uml-id": "_Pu6HIfaNEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "NetworkElementCurrentProblems"
-  },
-  "supported-alarms": {
-   "id": "supported-alarms",
-   "uml-id": "_444DuBd_EeegALpYen9G6g",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": true,
-   "description": [
-    "Available alarms to be listed. Names are to be separated by commas."
-   ],
-   "uml-name": "supportedAlarms",
-   "controlType": "text"
-  },
-  "problem-type-severity": {
-   "id": "problem-type-severity",
-   "uml-id": "_rvDABPasEeaW9u5N6usiTA",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel-MicrowaveTransportNetwork/MicrowaveModel.uml#_eIml0JH1EeWUdbnmmNiTAA",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "Severity of this type of alarm."
-   ],
-   "uml-name": "problemTypeSeverity"
-  },
-  "trigger-refresh": {
-   "id": "trigger-refresh",
-   "uml-id": "_F6C-8Pm7EeaOH6heSczBpQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "A trigger to instuct the netconf server to refresh its internal database/cache. It is primary used for alarms status, but could used for anything else too. It is assumed that the refresh mechanismn takes somes time. In order to indictate the process to the controller a refreshStatus attribute is used."
-   ],
-   "uml-name": "triggerRefresh",
-   "controlType": "checkbox"
-  },
-  "refresh-status": {
-   "id": "refresh-status",
-   "uml-id": "_w0x8wPm3EeaOH6heSczBpQ",
-   "uml-type": "ownedAttribute",
-   "type": "_7HZcEPm3EeaOH6heSczBpQ",
-   "order-number": 1,
-   "is-read-only": true,
-   "uml-name": "refreshStatus",
-   "controlType": [
-    "done",
-    "processing"
-   ]
-  },
-  "current-problem-list": {
-   "id": "current-problem-list",
-   "uml-id": "_444DwRd_EeegALpYen9G6g",
-   "uml-type": "ownedAttribute",
-   "type": "_TBaooPasEeaW9u5N6usiTA",
-   "order-number": 1,
-   "is-read-only": true,
-   "uml-name": "currentProblemList"
-  },
-  "equipment-pac": {
-   "id": "equipment-pac",
-   "uml-id": "_VtO8MPaMEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "Equipment_Pac"
-  },
-  "equipment": {
-   "id": "equipment",
-   "uml-id": "_92PqMfaREeaW9u5N6usiTA",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel/CoreModel.uml#_8SXNej-HEeaRI-H69PghuA",
-   "order-number": 1,
-   "is-read-only": false,
-   "is-key": 1,
-   "uml-name": "_equipment"
-  },
-  "equipment-capability": {
-   "id": "equipment-capability",
-   "uml-id": "_g5u0YfaNEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EquipmentCapability"
-  },
-  "equipment-configuration": {
-   "id": "equipment-configuration",
-   "uml-id": "_OGWN4PaNEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EquipmentConfiguration"
-  },
-  "equipment-status": {
-   "id": "equipment-status",
-   "uml-id": "_gJH6APaREeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EquipmentStatus"
-  },
-  "equipment-current-problems": {
-   "id": "equipment-current-problems",
-   "uml-id": "_kRHqIPaREeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EquipmentCurrentProblems"
-  },
-  "holder-pac": {
-   "id": "holder-pac",
-   "uml-id": "_dECKoPaMEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "Holder_Pac"
-  },
-  "holder": {
-   "id": "holder",
-   "uml-id": "_TNk0IfaSEeaW9u5N6usiTA",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel/CoreModel.uml#_8SXNjj-HEeaRI-H69PghuA",
-   "order-number": 1,
-   "is-read-only": false,
-   "is-key": 1,
-   "uml-name": "_holder"
-  },
-  "holder-capability": {
-   "id": "holder-capability",
-   "uml-id": "_gtTvsPaSEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "HolderCapability"
-  },
-  "holder-configuration": {
-   "id": "holder-configuration",
-   "uml-id": "_g8TN8PaSEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "HolderConfiguration"
-  },
-  "holder-status": {
-   "id": "holder-status",
-   "uml-id": "_hDSmwPaSEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "HolderStatus"
-  },
-  "holder-current-problems": {
-   "id": "holder-current-problems",
-   "uml-id": "_hJQE0PaSEeaW9u5N6usiTA",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "HolderCurrentProblems"
-  },
-  "connector-pac": {
-   "id": "connector-pac",
-   "uml-id": "_444DsRd_EeegALpYen9G6g",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "Connector_Pac"
-  },
-  "connector": {
-   "id": "connector",
-   "uml-id": "_eDZ5QBeDEeegALpYen9G6g",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel/CoreModel.uml#_8SXNcD-HEeaRI-H69PghuA",
-   "order-number": 1,
-   "is-read-only": false,
-   "is-key": 1,
-   "uml-name": "_connector"
-  },
-  "connector-capability": {
-   "id": "connector-capability",
-   "uml-id": "_444Dtxd_EeegALpYen9G6g",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "ConnectorCapability"
-  },
-  "connector-configuration": {
-   "id": "connector-configuration",
-   "uml-id": "_444Duhd_EeegALpYen9G6g",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "ConnectorConfiguration"
-  },
-  "connector-status": {
-   "id": "connector-status",
-   "uml-id": "_444Dvxd_EeegALpYen9G6g",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "ConnectorStatus"
-  },
-  "connector-current-problems": {
-   "id": "connector-current-problems",
-   "uml-id": "_444DwBd_EeegALpYen9G6g",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "ConnectorCurrentProblems"
-  },
-  "remote-end-point": {
-   "id": "remote-end-point",
-   "uml-id": "_RDCPsBeCEeegALpYen9G6g",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 2,
-   "is-read-only": false,
-   "description": [
-    "A network wide identifier of the remote connector. The value is used for topology discovery. Please see also ConnectorStatus::localEndPoint."
-   ],
-   "uml-name": "remoteEndPoint",
-   "controlType": "text"
-  },
-  "local-end-point": {
-   "id": "local-end-point",
-   "uml-id": "_NZGKABeBEeegALpYen9G6g",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "A network wide global identifier of the this connector, which can be used to discover the physical connectivitiy. The value should contain the network element name, because the network element software can assume that the network element name is unique in the network. The value should be formated: <connector:uuid>@<network-element-name> Please see also ConnectorConfiguration::remoteEndPoint"
-   ],
-   "uml-name": "localEndPoint",
-   "controlType": "text"
-  },
-  "current-problem-type": {
-   "id": "current-problem-type",
-   "uml-id": "_TBaooPasEeaW9u5N6usiTA",
-   "uml-type": "uml:DataType",
-   "uml-name": "CurrentProblemType"
-  },
-  "problem-name": {
-   "id": "problem-name",
-   "uml-id": "_0XQ-UvmyEeaOH6heSczBpQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": true,
-   "description": [
-    "Name of the alarm according capability::supportedAlarms."
-   ],
-   "uml-name": "problemName",
-   "controlType": "text"
-  },
-  "network-element-current-problem-type": {
-   "id": "network-element-current-problem-type",
-   "uml-id": "_0XQ-UPmyEeaOH6heSczBpQ",
-   "uml-type": "uml:DataType",
-   "uml-name": "NetworkElementCurrentProblemType"
-  },
-  "object-reference": {
-   "id": "object-reference",
-   "uml-id": "_BW8g0PmzEeaOH6heSczBpQ",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 2,
-   "is-read-only": true,
-   "description": [
-    "An explaining string of the related object class. This is necesseary, because the current problem list of the NetworkElement object class acts as a container for all alarms, where its object classes are not modeled."
-   ],
-   "uml-name": "objectReference",
-   "controlType": "text"
-  },
-  "problem-severity-type": {
-   "id": "problem-severity-type",
-   "uml-id": "_rvDAAPasEeaW9u5N6usiTA",
-   "uml-type": "uml:DataType",
-   "uml-name": "ProblemSeverityType"
-  },
-  "problem-type-name": {
-   "id": "problem-type-name",
-   "uml-id": "_rvDAAfasEeaW9u5N6usiTA",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String",
-   "order-number": 1,
-   "is-read-only": false,
-   "is-key": 1,
-   "description": [
-    "Name of the alarm according to Capability::supportedAlarms"
-   ],
-   "uml-name": "problemTypeName",
-   "controlType": "text"
-  },
-  "7-h-zc-e-pm3-eea-oh6-he-scz-bp-q": {
-   "id": "7-h-zc-e-pm3-eea-oh6-he-scz-bp-q",
-   "uml-id": "_7HZcEPm3EeaOH6heSczBpQ",
-   "enum": [
-    "DONE",
-    "PROCESSING"
-   ],
-   "is-read-only": false,
-   "uml-name": "_7HZcEPm3EeaOH6heSczBpQ"
-  }
- }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-core-model-conditional-packages.yin.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-core-model-conditional-packages.yin.json
deleted file mode 100755 (executable)
index ae603d5..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-{\r
-       "module": {\r
-               "name": "onf-core-model-conditional-packages",\r
-               "onf-core-model-conditional-packages": {\r
-                       "equipment-pac": {\r
-                               "type": "list",\r
-                               "key": "equipment",\r
-                               "equipment-capability": {\r
-                                       "name": "equipment-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "equipment-configuration": {\r
-                                       "name": "equipment-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "equipment-status": {\r
-                                       "name": "equipment-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "equipment-current-problems": {\r
-                                       "name": "equipment-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               }\r
-                       },\r
-                       "holder-pac": {\r
-                               "type": "list",\r
-                               "key": "holder",\r
-                               "holder-capability": {\r
-                                       "name": "holder-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "holder-configuration": {\r
-                                       "name": "holder-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "holder-status": {\r
-                                       "name": "holder-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "holder-current-problems": {\r
-                                       "name": "holder-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               }\r
-                       },\r
-                       "connector-pac": {\r
-                               "type": "list",\r
-                               "key": "connector",\r
-                               "connector-capability": {\r
-                                       "name": "connector-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "connector-configuration": {\r
-                                       "name": "connector-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "connector-status": {\r
-                                       "name": "connector-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "connector-current-problems": {\r
-                                       "name": "connector-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-ethernet-conditional-packages.schema-information.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-ethernet-conditional-packages.schema-information.json
deleted file mode 100644 (file)
index 50a8d3b..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-{
- "schema-information": {
-  "ethernet-pac": {
-   "id": "ethernet-pac",
-   "uml-id": "_fytUABOvEeeV4YL-goyoXw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "Ethernet_Pac"
-  },
-  "layer-protocol": {
-   "id": "layer-protocol",
-   "uml-id": "_D0ijgBOwEeeV4YL-goyoXw",
-   "uml-type": "ownedAttribute",
-   "type": "../OnfModel/CoreModel.uml#_gROecFYXEeOVGaP4lO41SQ",
-   "order-number": 1,
-   "is-read-only": false,
-   "is-key": 1,
-   "uml-name": "_layerProtocol"
-  },
-  "ethernet-capability": {
-   "id": "ethernet-capability",
-   "uml-id": "_1ukHUBOvEeeV4YL-goyoXw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EthernetCapability"
-  },
-  "ethernet-configuration": {
-   "id": "ethernet-configuration",
-   "uml-id": "_mZ64kBOvEeeV4YL-goyoXw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EthernetConfiguration"
-  },
-  "ethernet-status": {
-   "id": "ethernet-status",
-   "uml-id": "_3WQd4BOvEeeV4YL-goyoXw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EthernetStatus"
-  },
-  "ethernet-current-problems": {
-   "id": "ethernet-current-problems",
-   "uml-id": "_-VkZYBOvEeeV4YL-goyoXw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EthernetCurrentProblems"
-  },
-  "ethernet-current-performance": {
-   "id": "ethernet-current-performance",
-   "uml-id": "_4nyXMBOvEeeV4YL-goyoXw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EthernetCurrentPerformance"
-  },
-  "ethernet-historical-performances": {
-   "id": "ethernet-historical-performances",
-   "uml-id": "_A2670BOwEeeV4YL-goyoXw",
-   "uml-type": "uml:Class",
-   "is-read-only": false,
-   "uml-name": "EthernetHistoricalPerformances"
-  },
-  "vlan-id": {
-   "id": "vlan-id",
-   "uml-id": "_14axcBOwEeeV4YL-goyoXw",
-   "uml-type": "ownedAttribute",
-   "type": "pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer",
-   "order-number": 1,
-   "is-read-only": false,
-   "description": [
-    "value = 0: frames on ingress must be untagged, frames on egress get untagged; value = any other positive integer < 4096: frames on ingress must be tagged with this VLAN ID, frames on egress either already have or get this VLAN ID attached;"
-   ],
-   "uml-name": "vlanId",
-   "controlType": "number"
-  }
- }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-ethernet-conditional-packages.yin.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-ethernet-conditional-packages.yin.json
deleted file mode 100755 (executable)
index 67cedf4..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-{\r
-       "module": {\r
-               "name": "onf-ethernet-conditional-packages",\r
-               "onf-ethernet-conditional-packages": {\r
-                       "ethernet-pac": {\r
-                               "type": "list",\r
-                               "key": "layer-protocol",\r
-                               "ethernet-capability": {\r
-                                       "name": "ethernet-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernet-configuration": {\r
-                                       "name": "ethernet-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernet-status": {\r
-                                       "name": "ethernet-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernet-current-problems": {\r
-                                       "name": "ethernet-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernet-current-performance": {\r
-                                       "name": "ethernet-current-performance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "ethernet-historical-performances": {\r
-                                       "name": "ethernet-historical-performances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-ptp-dataset.schema-information.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/onf-ptp-dataset.schema-information.json
deleted file mode 100644 (file)
index 5c6e41a..0000000
+++ /dev/null
@@ -1,435 +0,0 @@
-{
-    "schema-information": {
-        "instance-number": {
-            "id": "instance-number",
-            "type": "uint16",
-            "order-number": 1,
-            "is-read-only": true,
-            "description": ["There is only one clock per device in the 4th PoC - value 1 should be used as instance-number."]
-        },
-        "two-step-flag": {
-            "id": "two-step-flag",
-            "type": "boolean",
-            "order-number": 80,
-            "is-read-only": true,
-            "description": ["Indicates whether PTP clock is a two-step clock"]
-        },
-        "clock-quality": {
-            "id": "clock-quality",
-            "type": "",
-            "order-number": 6,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "clock-class": {
-            "id": "clock-class",
-            "type": "",
-            "order-number": 7,
-            "is-read-only": true,
-            "description": ["Clock Class acc. to IEEE 1588-2008, 7.6.2.4 and ITU-T G.8275.1, 6.4"]
-        },
-        "clock-accuracy": {
-            "id": "clock-accuracy",
-            "type": "",
-            "order-number": 8,
-            "is-read-only": true,
-            "description": ["Clock accuracy acc. to IEEE 1588-2008, 7.6.2.5 and ITU-T G.8275.1, 6.3.5"]
-        },
-        "offset-scaled-log-variance": {
-            "id": "offset-scaled-log-variance",
-            "type": "",
-            "order-number": 9,
-            "is-read-only": true,
-            "description": ["Offset of scaled log variance acc. to IEEE 1588-2008, 7.6.3.5 and ITU-T G.8275.1, 6.3.5"]
-        },
-        "priority1": {
-            "id": "priority1",
-            "type": "number",
-            "min": 0,
-            "max": 255,
-            "order-number": 10,
-            "is-read-only": true,
-            "description": ["Priority 1 acc. to IEEE 1588-2008, 7.6.2.2"]
-        },
-        "priority2": {
-            "id": "priority2",
-            "type": "number",
-            "min": 0,
-            "max": 255,
-            "order-number": 11,
-            "is-read-only": false,
-            "description": ["Priority 2 acc. to IEEE 1588-2008, 7.6.2.3"]
-        },
-        "domain-number": {
-            "id": "domain-number",
-            "type": "number",
-            "min": 24,
-            "max": 43,
-            "order-number": 12,
-            "is-read-only": false,
-            "description": ["PTP domain number acc. to IEEE 1588-2008, 7.1. See ptpDS.domainNumber."]
-        },
-        "slave-only": {
-            "id": "slave-only",
-            "type": "boolean",
-            "order-number": 81,
-            "is-read-only": false,
-            "description": ["Indicates whether PTP clock may only operate as SC. See IEEE 1588-2008, 9.2."]
-        },
-        "current-ds": {
-            "id": "current-ds",
-            "type": "",
-            "order-number": 14,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "steps-removed": {
-            "id": "steps-removed",
-            "type": "",
-            "order-number": 15,
-            "is-read-only": true,
-            "description": ["Number of communication paths traversed between local clock and GM"]
-        },
-        "offset-from-master": {
-            "id": "offset-from-master",
-            "type": "",
-            "order-number": 16,
-            "is-read-only": true,
-            "unit": "ns*2^16",
-            "description": ["Time off-set from master"]
-        },
-        "mean-path-delay": {
-            "id": "mean-path-delay",
-            "type": "",
-            "order-number": 17,
-            "is-read-only": true,
-            "unit": "ns*2^16",
-            "description": ["Mean propagation time between master and slave"]
-        },
-        "parrent-ds": {
-            "id": "parrent-ds",
-            "type": "",
-            "order-number": 18,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "parent-port-identity": {
-            "id": "parent-port-identity",
-            "type": "",
-            "order-number": 19,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "parent-stats": {
-            "id": "parent-stats",
-            "type": "",
-            "order-number": 22,
-            "is-read-only": true,
-            "description": ["Indicates whether there are valid parent stats."]
-        },
-        "observed-parent-offset-scaled-log-variance": {
-            "id": "observed-parent-offset-scaled-log-variance",
-            "type": "",
-            "order-number": 23,
-            "is-read-only": true,
-            "description": ["Estimate of parent's clock PTP variance as observed by slave clock acc. to IEEE 1588-2008, 7.6.4.4."]
-        },
-        "observed-parent-clock-phase-change-rate": {
-            "id": "observed-parent-clock-phase-change-rate",
-            "type": "",
-            "order-number": 24,
-            "is-read-only": true,
-            "description": ["Estimate of parent's clock PTP phase change rate as observed by slave clock acc. to IEEE 1588-2008, 7.6.4.4."]
-        },
-        "grandmaster-identity": {
-            "id": "grandmaster-identity",
-            "type": "",
-            "order-number": 25,
-            "is-read-only": true,
-            "description": ["Grandmaster clock ID acc. to IEEE 1588-2008, 7.6.2.1"]
-        },
-        "grandmaster-clock-quality": {
-            "id": "grandmaster-clock-quality",
-            "type": "",
-            "order-number": 26,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "grandmaster-priority1": {
-            "id": "grandmaster-priority1",
-            "type": "",
-            "order-number": 30,
-            "is-read-only": true,
-            "description": ["Grandmaster's priority 1 acc. to IEEE 1588-2008, 7.6.2.2"]
-        },
-        "grandmaster-priority2": {
-            "id": "grandmaster-priority2",
-            "type": "",
-            "order-number": 31,
-            "is-read-only": true,
-            "description": ["Grandmaster's priority 2 acc. to IEEE 1588-2008, 7.6.2.3"]
-        },
-        "time-properties-ds": {
-            "id": "time-properties-ds",
-            "type": "",
-            "order-number": 32,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "current-utc-offset-valid": {
-            "id": "current-utc-offset-valid",
-            "type": "",
-            "order-number": 33,
-            "is-read-only": true,
-            "description": ["Indicates wheterh current UTC offset is correct."]
-        },
-        "current-utc-offset": {
-            "id": "current-utc-offset",
-            "type": "",
-            "order-number": 34,
-            "is-read-only": true,
-            "description": ["Offset between TAI and UTC acc. to IEEE 1588-2008, 7.2.3"]
-        },
-        "leap59": {
-            "id": "leap59",
-            "type": "",
-            "order-number": 35,
-            "is-read-only": true,
-            "description": ["Inidcates that last minute of current UTC day has 59 seconds."]
-        },
-        "leap61": {
-            "id": "leap61",
-            "type": "",
-            "order-number": 36,
-            "is-read-only": true,
-            "description": ["Inidcates that last minute of current UTC day has 61 seconds."]
-        },
-        "time-tracable": {
-            "id": "time-tracable",
-            "type": "",
-            "order-number": 37,
-            "is-read-only": true,
-            "description": ["Indicates that current UTC offset and timescale are traceable to a PRC"]
-        },
-        "frequency-tracable": {
-            "id": "frequency-tracable",
-            "type": "",
-            "order-number": 38,
-            "is-read-only": true,
-            "description": ["Indicates that frequency determining timescale is traceable to a PRC"]
-        },
-        "ptp-timescale": {
-            "id": "ptp-timescale",
-            "type": "",
-            "order-number": 39,
-            "is-read-only": true,
-            "description": ["Indicates thet timescale of grandmaster clock is PTP."]
-        },
-        "time-source": {
-            "id": "time-source",
-            "type": "",
-            "order-number": 40,
-            "is-read-only": true,
-            "description": ["Time source used by grandmaster. See IEEE 1588-2008, 7.6.2.6."]
-        },
-        "port-state": {
-            "id": "port-state",
-            "type": "",
-            "order-number": 45,
-            "is-read-only": true,
-            "description": ["State of this local port"]
-        },
-        "log-min-delay-req-interval": {
-            "id": "log-min-delay-req-interval",
-            "type": "",
-            "order-number": 46,
-            "is-read-only": true,
-            "description": ["Minimum permitted mean time interval between successive Delay_Req messages"]
-        },
-        "peer-mean-path-delay": {
-            "id": "peer-mean-path-delay",
-            "type": "",
-            "order-number": 47,
-            "is-read-only": true,
-            "unit": "ns*2^16",
-            "description": ["Not applicable with this profile"]
-        },
-        "log-announce-interval": {
-            "id": "log-announce-interval",
-            "type": "",
-            "order-number": 48,
-            "is-read-only": true,
-            "description": ["Mean time interval between successive Announce messages"]
-        },
-        "announce-receipt-timeout": {
-            "id": "announce-receipt-timeout",
-            "type": "",
-            "order-number": 49,
-            "is-read-only": true,
-            "description": ["Number of announce intervals w/o announce message before timeout acc. to IEEE 1588-2008, 7.7.3.1."]
-        },
-        "log-sync-interval": {
-            "id": "log-sync-interval",
-            "type": "",
-            "order-number": 50,
-            "is-read-only": true,
-            "description": ["Mean SyncInterval for multicast messages"]
-        },
-        "delay-mechanism": {
-            "id": "delay-mechanism",
-            "type": "string",
-            "controlType": "text",
-            "order-number": 51,
-            "is-read-only": true,
-            "description": ["Delay mechanism acc. to IEEE 1588-2008, 8.2.5.4.4."]
-        },
-        "version-number": {
-            "id": "version-number",
-            "type": "",
-            "order-number": 53,
-            "is-read-only": true,
-            "description": ["PTP version used on this port"]
-        },
-        "transparent-clock-default-ds": {
-            "id": "transparent-clock-default-ds",
-            "type": "",
-            "order-number": 54,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "number-ports": {
-            "id": "number-ports",
-            "type": "",
-            "order-number": -6,
-            "is-read-only": true,
-            "description": ["Number of ports of the device"]
-        },
-        "primary-domain": {
-            "id": "primary-domain",
-            "type": "",
-            "order-number": 58,
-            "is-read-only": true,
-            "description": ["Domain number of primary syntonization domain acc. to IEEE 1588-2008, 10.1"]
-        },
-        "transparent-clock-port-ds-list": {
-            "id": "transparent-clock-port-ds-list",
-            "type": "",
-            "order-number": 59,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "log-min-pdelay-req-interval": {
-            "id": "log-min-pdelay-req-interval",
-            "type": "",
-            "order-number": 63,
-            "is-read-only": true,
-            "description": ["Not applicable with this profile"]
-        },
-        "faulty-flag": {
-            "id": "faulty-flag",
-            "type": "",
-            "order-number": 64,
-            "is-read-only": true,
-            "description": ["Indicates whether port is faulty."]
-        },
-        "default-ds": {
-            "id": "default-ds",
-            "type": "",
-            "order-number": 68,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "local-priority": {
-            "id": "local-priority",
-            "type": "number",
-            "min": 1,
-            "max": 255,
-            "order-number": 69,
-            "is-read-only": true,
-            "description": ["See ITU-T G.8275.1, 6.3.2."]
-        },
-        "max-steps-removed": {
-            "id": "max-steps-removed",
-            "type": "number",
-            "min": 1,
-            "max": 255,
-            "order-number": 70,
-            "is-read-only": true,
-            "description": ["See ITU-T G.8275.1, 6.3."]
-        },
-        "port-ds-list": {
-            "id": "port-ds-list",
-            "type": "",
-            "order-number": 73,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "clock-identity": {
-            "id": "clock-identity",
-            "type": "",
-            "order-number": -10,
-            "is-read-only": true,
-            "description": ["ID of the local clock"]
-        },
-        "port-number": {
-            "id": "port-number",
-            "type": "",
-            "order-number": 76,
-            "is-read-only": true,
-            "description": ["Port number of this port on the local clock"]
-        },
-        "onf-ptp-dataset:master-only": {
-            "id": "onf-ptp-dataset:master-only",
-            "type": "boolean",
-            "order-number": 83,
-            "is-read-only": false,
-            "description": ["Indicates that port can only be a master."]
-        },
-        "onf-ptp-dataset:local-priority": {
-            "id": "onf-ptp-dataset:local-priority",
-            "type": "number",
-            "min":1,
-            "max":255,
-            "order-number": -2,
-            "is-read-only": false,
-            "description": ["Local priority as used for Alternate BMCA. See ITU-T G.8275.1, 6.3.2."]
-        },
-        "onf-ptp-dataset:designated-enabled": {
-            "id": "onf-ptp-dataset:designated-enabled",
-            "type": "boolean",
-            "order-number": 82,
-            "is-read-only": false,
-            "description": ["A PTP Port needs to be enabled by management acc. to IEEE 1588-2008, 9.2."]
-        },
-        "onf-ptp-dataset:delay-asymmetry": {
-            "id": "onf-ptp-dataset:delay-asymmetry",
-            "type": "number",
-            "order-number": 80,
-            "is-read-only": true,
-            "description": ["Known path asymmetry in ns acc. to IEEE 1588-2008, 7.4.2."]
-        },
-        "onf-ptp-dataset:logical-termination-point": {
-            "id": "onf-ptp-dataset:logical-termination-point ",
-            "type": "string",
-            "order-number": 81,
-            "is-read-only": true,
-            "description": [""]
-        },
-        "onf-ptp-dataset:multicast-mac-address": {
-            "id": "onf-ptp-dataset:multicast-mac-address",
-            "type": "",
-            "order-number": -5,
-            "is-read-only": true,
-            "description": ["In 4th PoC the value is fixed."]
-        },
-        "onf-ptp-dataset:max-steps-removed": {
-            "id": "onf-ptp-dataset:max-steps-removed",
-            "type": "number",
-            "min":1,
-            "max":255,
-            "order-number": 70,
-            "is-read-only": false,
-            "description": ["See ITU-T G.8275.1, 6.3."]
-        }
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/otn-odu-conditional-packages.yin.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/modelDescription/otn-odu-conditional-packages.yin.json
deleted file mode 100644 (file)
index 3091cc0..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-{\r
-       "module": {\r
-               "name": "otn-odu-conditional-packages",\r
-               "otn-odu-conditional-packages": {\r
-                       "otn-odu-connection-pac": {\r
-                               "type": "list",\r
-                               "key": "layer-protocol",\r
-                               "otn-odu-connection-capability": {\r
-                                       "name": "otn-odu-connection-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "otn-odu-connection-configuration": {\r
-                                       "name": "otn-odu-connection-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "otn-odu-connection-status": {\r
-                                       "name": "otn-odu-connection-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "otn-odu-connection-current-problems": {\r
-                                       "name": "otn-odu-connection-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "otn-odu-connection-current-performance": {\r
-                                       "name": "otn-odu-connection-current-performance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "otn-odu-connection-historical-performances": {\r
-                                       "name": "otn-odu-connection-historical-performances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       },\r
-                       "otn-odu-termination-pac": {\r
-                               "type": "list",\r
-                               "key": "layer-protocol",\r
-                               "otn-odu-termination-capability": {\r
-                                       "name": "otn-odu-termination-capability",\r
-                                       "local-name": "capability",\r
-                                       "type": "container"\r
-                               },\r
-                               "otn-odu-termination-configuration": {\r
-                                       "name": "otn-odu-termination-configuration",\r
-                                       "local-name": "configuration",\r
-                                       "type": "container"\r
-                               },\r
-                               "otn-odu-termination-status": {\r
-                                       "name": "otn-odu-termination-status",\r
-                                       "local-name": "status",\r
-                                       "type": "container"\r
-                               },\r
-                               "otn-odu-termination-current-problems": {\r
-                                       "name": "otn-odu-termination-current-problems",\r
-                                       "local-name": "current-problems",\r
-                                       "type": "container"\r
-                               },\r
-                               "otn-odu-termination-current-performance": {\r
-                                       "name": "otn-odu-termination-current-performance",\r
-                                       "local-name": "current-performance",\r
-                                       "type": "container"\r
-                               },\r
-                               "otn-odu-termination-historical-performances": {\r
-                                       "name": "otn-odu-termination-historical-performances",\r
-                                       "local-name": "historical-performances",\r
-                                       "type": "container"\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/mwtnMapping.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/mwtnMapping.json
deleted file mode 100644 (file)
index 7783b09..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-{
-    "settings": {
-       "analysis": {
-          "analyzer": {
-             "standard": {
-                 "type": "whitespace"
-             }
-          }
-       }
-    },
-    "mappings": {
-        "required-networkelement": {
-            "date_detection": false
-        },
-        "site": {
-            "properties": {
-                "id": {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "name": {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "location": {
-                    "geohash": true,
-                    "geohash_precision": 10,
-                    "type": "geo_point",
-                    "lat_lon": true,
-                    "geohash_prefix": true
-                }
-            }
-        },
-        "site-link": {
-            "properties": {
-                "id": {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                 "siteZ": {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "siteA": {
-                    "index": "not_analyzed",
-                    "type": "string"
-                }
-            }
-        }
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/mwtnV1Alias.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/mwtn/mwtnV1Alias.json
deleted file mode 100644 (file)
index e4aa745..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-{
-    "actions":[
-            { "add": {
-                "alias": "mwtn",
-                "index": "mwtn_v1"
-            }}
-        ]
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/sdnevents/sdneventsMapping.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/sdnevents/sdneventsMapping.json
deleted file mode 100644 (file)
index 0e3fb77..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-{\r
-       "mappings": {\r
-               "faultlog": {\r
-                       "properties": {\r
-                               "fault": {\r
-                                       "properties": {\r
-                                               "nodeName": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "severity": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "timeStamp": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "problem": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "counter": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "objectId": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               },\r
-               "faultcurrent": {\r
-                       "properties": {\r
-                               "faultCurrent": {\r
-                                       "properties": {\r
-                                               "nodeName": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "severity": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "timeStamp": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "problem": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "counter": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "objectId": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               },\r
-               "eventlog": {\r
-                       "properties": {\r
-                               "event": {\r
-                                       "properties": {\r
-                                               "nodeName": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "timeStamp": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "newValue": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "attributeName": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "counter": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               },\r
-                                               "objectId": {\r
-                                                       "index": "not_analyzed",\r
-                                                       "type": "string"\r
-                                               }\r
-                                       }\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-}\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/sdnperformance/sdnperformanceMapping.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/index/sdnperformance/sdnperformanceMapping.json
deleted file mode 100644 (file)
index 92d5ad2..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-{
-    "mappings":
-    {
-        "historicalperformance24h":
-        {
-            "properties":
-            {
-                "node-name":
-                {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "time-stamp":
-                {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "suspect-interval-flag":
-                {
-                    "type": "boolean"
-                },
-                "scanner-id":
-                {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "uuid-interface":
-                {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                 "layer-protocol-name": {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "granularity-period":
-                {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "radio-signal-id": {
-                    "index": "not_analyzed",
-                    "type": "string"
-                }
-            }
-        },
-
-        "historicalperformance15min":
-        {
-            "properties":
-            {
-                "node-name":
-                {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "time-stamp":
-                {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "suspect-interval-flag":
-                {
-                    "type": "boolean"
-                },
-                "scanner-id":
-                {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "uuid-interface":
-                {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                 "layer-protocol-name": {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "granularity-period":
-                {
-                    "index": "not_analyzed",
-                    "type": "string"
-                },
-                "radio-signal-id": {
-                    "index": "not_analyzed",
-                    "type": "string"
-                }
-            }
-        }
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/plugins/delete-by-query.zip b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/plugins/delete-by-query.zip
deleted file mode 100644 (file)
index 12518c0..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/plugins/delete-by-query.zip and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/plugins/head.zip b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/plugins/head.zip
deleted file mode 100644 (file)
index bf495f1..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/elasticsearch/plugins/head.zip and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/bbf-tr-196-2-0-3-full@2018-04-08.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/bbf-tr-196-2-0-3-full@2018-04-08.yang
deleted file mode 100644 (file)
index d10c58b..0000000
+++ /dev/null
@@ -1,17194 +0,0 @@
-module bbf-tr-196-2-0-3-full {
-  namespace "urn:onf:otcc:wireless:yang:radio-access";
-  prefix ran;
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  organization
-    "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Project";
-  contact
-    "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-     WG List:  <mailto:wireless-transport@login.opennetworking.org>
-     WG Chair: Lyndon Ong         <mailto:lyong@ciena.com>
-     WG Chair: Giorgio Cazzaniga  <mailto:giorgio.cazzaniga@sm-optics.com>
-     Editors:  Ramakrishnan, Shanthakumar (Shanth) <Shanthakumar.Ramakrishnan@commscope.com>                    Martin Skorupski   <mailto:martin.skorupski@highstreet-technologies.com>";
-  description
-    "This module contains a collection of YANG definitions for managing radio access network (RAN) devices.";
-
-  revision 2018-04-08 {
-    description
-      "Initial version, used only for ONAP PoC 2018-06-25";
-    reference
-      "ONF TR ???: A YANG Data Model for Radio Access Networks.
-       BBF TR-196 2.0.3 full";
-  }
-
-  list fap-service {
-    key "alias";
-    uses fap-service-g;
-    container capabilities {
-      uses capabilities-g;
-      description
-        "Container for object class FAPService.{i}.Capabilities.";
-      container capabilities-umts {
-        uses capabilities-umts-g;
-        description
-          "Container for object class FAPService.{i}.Capabilities.UMTS.";
-        container capabilities-umts-self-config {
-          uses capabilities-umts-self-config-g;
-          description
-            "Container for object class FAPService.{i}.Capabilities.UMTS.SelfConfig.";
-        }
-      }
-      container capabilities-lte {
-        uses capabilities-lte-g;
-        description
-          "Container for object class FAPService.{i}.Capabilities.LTE.";
-      }
-      container capabilities-cdma2000 {
-        uses capabilities-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.Capabilities.CDMA2000.";
-        container capabilities-cdma2000-one-x {
-          uses capabilities-cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.Capabilities.CDMA2000.OneX.";
-          container capabilities-cdma2000-one-x-self-config {
-            uses capabilities-cdma2000-one-x-self-config-g;
-            description
-              "Container for object class FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.";
-          }
-        }
-        container capabilities-cdma2000-hrpd {
-          uses capabilities-cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.Capabilities.CDMA2000.HRPD.";
-          container capabilities-cdma2000-hrpd-self-config {
-            uses capabilities-cdma2000-hrpd-self-config-g;
-            description
-              "Container for object class FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.";
-          }
-        }
-      }
-    }
-    container fap-control {
-      uses fap-control-g;
-      description
-        "Container for object class FAPService.{i}.FAPControl.";
-      container fap-control-umts {
-        uses fap-control-umts-g;
-        description
-          "Container for object class FAPService.{i}.FAPControl.UMTS.";
-        container fap-control-umts-self-config {
-          uses fap-control-umts-self-config-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.UMTS.SelfConfig.";
-        }
-        container fap-control-umts-gateway {
-          uses fap-control-umts-gateway-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.UMTS.Gateway.";
-        }
-      }
-      container fap-control-lte {
-        uses fap-control-lte-g;
-        description
-          "Container for object class FAPService.{i}.FAPControl.LTE.";
-        container fap-control-lte-gateway {
-          uses fap-control-lte-gateway-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.LTE.Gateway.";
-        }
-      }
-      container fap-control-cdma2000 {
-        uses fap-control-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.FAPControl.CDMA2000.";
-        container fap-control-cdma2000-time {
-          uses fap-control-cdma2000-time-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.Time.";
-        }
-        container fap-control-cdma2000-one-x {
-          uses fap-control-cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.";
-          container fap-control-cdma2000-one-x-active-handin-measurement {
-            uses fap-control-cdma2000-one-x-active-handin-measurement-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.";
-          }
-          container fap-control-cdma2000-one-x-self-config {
-            uses fap-control-cdma2000-one-x-self-config-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.";
-          }
-        }
-        container fap-control-cdma2000-gateway {
-          uses fap-control-cdma2000-gateway-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.Gateway.";
-        }
-        container fap-control-cdma2000-hrpd {
-          uses fap-control-cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.";
-          container fap-control-cdma2000-hrpd-self-config {
-            uses fap-control-cdma2000-hrpd-self-config-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.";
-          }
-          container fap-control-cdma2000-hrpd-a13 {
-            uses fap-control-cdma2000-hrpd-a13-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.";
-            list fap-control-cdma2000-hrpd-a13-color-code-to-uati104 {
-              key "color-code uati104";
-              uses fap-control-cdma2000-hrpd-a13-color-code-to-uati104-g;
-              description
-                "List of object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.";
-            }
-            list fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip {
-              key "a13-ip-address";
-              uses fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip-g;
-              description
-                "List of object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.";
-            }
-          }
-        }
-      }
-    }
-    container access-mgmt {
-      uses access-mgmt-g;
-      description
-        "Container for object class FAPService.{i}.AccessMgmt.";
-      container access-mgmt-umts {
-        uses access-mgmt-umts-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.UMTS.";
-        list access-mgmt-umts-member-detail {
-          key "imsi";
-          uses access-mgmt-umts-member-detail-g;
-          description
-            "List of object class FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.";
-        }
-        container access-mgmt-umts-local-ip-access {
-          uses access-mgmt-umts-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.";
-        }
-      }
-      container access-mgmt-lte {
-        uses access-mgmt-lte-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.LTE.";
-        container access-mgmt-lte-local-ip-access {
-          uses access-mgmt-lte-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.";
-        }
-      }
-      container access-mgmt-cdma2000 {
-        uses access-mgmt-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.";
-        list access-mgmt-cdma2000-member-detail {
-          key "imsi";
-          uses access-mgmt-cdma2000-member-detail-g;
-          description
-            "List of object class FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.";
-        }
-        container access-mgmt-cdma2000-local-ip-access {
-          uses access-mgmt-cdma2000-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.";
-          container access-mgmt-cdma2000-local-ip-access-hrpd {
-            uses access-mgmt-cdma2000-local-ip-access-hrpd-g;
-            description
-              "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.";
-            list access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter {
-              key "subnet subnet-mask";
-              uses access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter-g;
-              description
-                "List of object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.";
-            }
-          }
-        }
-      }
-      container access-mgmt-legacy {
-        uses access-mgmt-legacy-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.Legacy.";
-        container access-mgmt-legacy-local-ip-access {
-          uses access-mgmt-legacy-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.";
-          list access-mgmt-legacy-local-ip-access-rule {
-            key "dest-ip-address dest-subnet-mask protocol";
-            uses access-mgmt-legacy-local-ip-access-rule-g;
-            description
-              "List of object class FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.";
-          }
-        }
-      }
-    }
-    container cell-config {
-      uses cell-config-g;
-      description
-        "Container for object class FAPService.{i}.CellConfig.";
-      container umts {
-        uses umts-g;
-        description
-          "Container for object class FAPService.{i}.CellConfig.UMTS.";
-        container umts-cn {
-          uses umts-cn-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.UMTS.CN.";
-          container umts-cn-cs-domain {
-            uses umts-cn-cs-domain-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.CN.CSDomain.";
-          }
-          container umts-cn-ps-domain {
-            uses umts-cn-ps-domain-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.CN.PSDomain.";
-          }
-        }
-        container umts-ran {
-          uses umts-ran-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.";
-          container umts-ran-csg {
-            uses umts-ran-csg-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CSG.";
-            container umts-ran-csg-csgpsc-split-info {
-              uses umts-ran-csg-csgpsc-split-info-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.";
-            }
-          }
-          container umts-ran-cell-selection {
-            uses umts-ran-cell-selection-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.";
-          }
-          container umts-ran-rrc-timers {
-            uses umts-ran-rrc-timers-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.";
-          }
-          container umts-ran-drx {
-            uses umts-ran-drx-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.DRX.";
-          }
-          container umts-ran-power-control {
-            uses umts-ran-power-control-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.";
-          }
-          container umts-ran-cell-restriction {
-            uses umts-ran-cell-restriction-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.";
-          }
-          container umts-ran-intra-freq-meas {
-            uses umts-ran-intra-freq-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.";
-            list umts-ran-intra-freq-meas-instance {
-              key "intra-frequency-event-identity";
-              uses umts-ran-intra-freq-meas-instance-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.";
-            }
-          }
-          container umts-ran-inter-freq-meas {
-            uses umts-ran-inter-freq-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.";
-            list umts-ran-inter-freq-meas-instance {
-              key "intra-frequency-event-identity";
-              uses umts-ran-inter-freq-meas-instance-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.";
-            }
-          }
-          container umts-ran-inter-rat-meas {
-            uses umts-ran-inter-rat-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.";
-            list umts-ran-inter-rat-meas-instance {
-              key "inter-rat-event-identity";
-              uses umts-ran-inter-rat-meas-instance-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.";
-            }
-          }
-          container umts-ran-ue-internal-meas {
-            uses umts-ran-ue-internal-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.";
-          }
-          container umts-ran-rf {
-            uses umts-ran-rf-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.RF.";
-          }
-          container umts-ran-neighbor-list {
-            uses umts-ran-neighbor-list-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.";
-            list umts-ran-neighbor-list-intra-freq-cell {
-              key "pcpich-scrambling-code";
-              uses umts-ran-neighbor-list-intra-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.";
-            }
-            list umts-ran-neighbor-list-inter-freq-cell {
-              key "pcpich-scrambling-code uarfcndl";
-              uses umts-ran-neighbor-list-inter-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.";
-            }
-            container umts-ran-neighbor-list-inter-rat-cell {
-              uses umts-ran-neighbor-list-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.";
-              list umts-ran-neighbor-list-inter-rat-cell-gsm {
-                key "bccharfcn";
-                uses umts-ran-neighbor-list-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.";
-              }
-            }
-          }
-          container umts-ran-neighbor-list-in-use {
-            uses umts-ran-neighbor-list-in-use-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.";
-            list umts-ran-neighbor-list-in-use-intra-freq-cell {
-              key "pcpich-scrambling-code";
-              uses umts-ran-neighbor-list-in-use-intra-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.";
-            }
-            list umts-ran-neighbor-list-in-use-inter-freq-cell {
-              key "pcpich-scrambling-code uarfcndl";
-              uses umts-ran-neighbor-list-in-use-inter-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.";
-            }
-            container umts-ran-neighbor-list-in-use-inter-rat-cell {
-              uses umts-ran-neighbor-list-in-use-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.";
-              list umts-ran-neighbor-list-in-use-inter-rat-cell-gsm {
-                key "bccharfcn";
-                uses umts-ran-neighbor-list-in-use-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-              }
-            }
-          }
-        }
-        container umts-rab {
-          uses umts-rab-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.UMTS.RAB.";
-        }
-      }
-      container lte {
-        uses lte-g;
-        description
-          "Container for object class FAPService.{i}.CellConfig.LTE.";
-        list lte-tunnel {
-          key "tunnel-ref";
-          uses lte-tunnel-g;
-          description
-            "List of object class FAPService.{i}.CellConfig.LTE.Tunnel.{i}.";
-        }
-        container lte-epc {
-          uses lte-epc-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.LTE.EPC.";
-          list lte-epc-plmn-list {
-            key "plmnid";
-            uses lte-epc-plmn-list-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.";
-          }
-          list lte-epc-qo-s {
-            key "qci";
-            uses lte-epc-qo-s-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.";
-          }
-        }
-        container lte-ran {
-          uses lte-ran-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.LTE.RAN.";
-          container lte-ran-common {
-            uses lte-ran-common-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Common.";
-          }
-          container lte-ran-s1-ap {
-            uses lte-ran-s1-ap-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.S1AP.";
-          }
-          container lte-ran-s1-u {
-            uses lte-ran-s1-u-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.S1U.";
-          }
-          container lte-ran-rf {
-            uses lte-ran-rf-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RF.";
-          }
-          container lte-ran-phy {
-            uses lte-ran-phy-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.";
-            container lte-ran-phy-antenna-info {
-              uses lte-ran-phy-antenna-info-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.";
-            }
-            container lte-ran-phy-pdsch {
-              uses lte-ran-phy-pdsch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.";
-            }
-            container lte-ran-phy-srs {
-              uses lte-ran-phy-srs-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.";
-            }
-            container lte-ran-phy-prach {
-              uses lte-ran-phy-prach-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.";
-            }
-            container lte-ran-phy-pucch {
-              uses lte-ran-phy-pucch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.";
-            }
-            container lte-ran-phy-pusch {
-              uses lte-ran-phy-pusch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.";
-              container lte-ran-phy-pusch-ulrs {
-                uses lte-ran-phy-pusch-ulrs-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.";
-              }
-            }
-            container lte-ran-phy-ul-power-control {
-              uses lte-ran-phy-ul-power-control-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.";
-            }
-            container lte-ran-phy-mbsfn {
-              uses lte-ran-phy-mbsfn-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.";
-              list lte-ran-phy-mbsfn-sf-config-list {
-                key "radio-frame-allocation-period radioframe-allocation-offset radio-frame-allocation-size";
-                uses lte-ran-phy-mbsfn-sf-config-list-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.";
-              }
-            }
-            container lte-ran-phy-prs {
-              uses lte-ran-phy-prs-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.";
-            }
-            container lte-ran-phy-tdd-frame {
-              uses lte-ran-phy-tdd-frame-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.";
-            }
-          }
-          container lte-ran-mac {
-            uses lte-ran-mac-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.";
-            container lte-ran-mac-rach {
-              uses lte-ran-mac-rach-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.";
-            }
-            container lte-ran-mac-drx {
-              uses lte-ran-mac-drx-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.";
-            }
-            container lte-ran-mac-ulsch {
-              uses lte-ran-mac-ulsch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.";
-            }
-          }
-          container lte-ran-rlc {
-            uses lte-ran-rlc-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.";
-            container lte-ran-rlc-srb1 {
-              uses lte-ran-rlc-srb1-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.";
-            }
-            container lte-ran-rlc-srb2 {
-              uses lte-ran-rlc-srb2-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.";
-            }
-          }
-          container lte-ran-rrc-timers {
-            uses lte-ran-rrc-timers-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.";
-          }
-          container lte-ran-cell-restriction {
-            uses lte-ran-cell-restriction-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.";
-          }
-          container lte-ran-mobility {
-            uses lte-ran-mobility-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.";
-            container lte-ran-mobility-idle-mode {
-              uses lte-ran-mobility-idle-mode-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.";
-              container lte-ran-mobility-idle-mode-common {
-                uses lte-ran-mobility-idle-mode-common-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.";
-              }
-              container lte-ran-mobility-idle-mode-intra-freq {
-                uses lte-ran-mobility-idle-mode-intra-freq-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.";
-              }
-              container lte-ran-mobility-idle-mode-inter-freq {
-                uses lte-ran-mobility-idle-mode-inter-freq-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.";
-                list lte-ran-mobility-idle-mode-inter-freq-carrier {
-                  key "eutra-carrier-arfcn";
-                  uses lte-ran-mobility-idle-mode-inter-freq-carrier-g;
-                  description
-                    "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.";
-                }
-              }
-              container lte-ran-mobility-idle-mode-irat {
-                uses lte-ran-mobility-idle-mode-irat-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.";
-                container lte-ran-mobility-idle-mode-irat-utra {
-                  uses lte-ran-mobility-idle-mode-irat-utra-g;
-                  description
-                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.";
-                  list lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq {
-                    key "utra-carrier-arfcn";
-                    uses lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq-g;
-                    description
-                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.";
-                  }
-                }
-                container lte-ran-mobility-idle-mode-irat-geran {
-                  uses lte-ran-mobility-idle-mode-irat-geran-g;
-                  description
-                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.";
-                  list lte-ran-mobility-idle-mode-irat-geran-geran-freq-group {
-                    key "bccharfcn";
-                    uses lte-ran-mobility-idle-mode-irat-geran-geran-freq-group-g;
-                    description
-                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.";
-                  }
-                }
-                container lte-ran-mobility-idle-mode-irat-cdma2000 {
-                  uses lte-ran-mobility-idle-mode-irat-cdma2000-g;
-                  description
-                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.";
-                  list lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band {
-                    key "band-class";
-                    uses lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band-g;
-                    description
-                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.";
-                  }
-                }
-              }
-            }
-            container lte-ran-mobility-conn-mode {
-              uses lte-ran-mobility-conn-mode-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.";
-              container lte-ran-mobility-conn-mode-eutra {
-                uses lte-ran-mobility-conn-mode-eutra-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.";
-              }
-              container lte-ran-mobility-conn-mode-irat {
-                uses lte-ran-mobility-conn-mode-irat-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.";
-              }
-            }
-          }
-          container lte-ran-neighbor-list {
-            uses lte-ran-neighbor-list-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.";
-            list lte-ran-neighbor-list-lte-cell {
-              key "plmnid cid";
-              uses lte-ran-neighbor-list-lte-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.";
-            }
-            container lte-ran-neighbor-list-inter-rat-cell {
-              uses lte-ran-neighbor-list-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.";
-              list lte-ran-neighbor-list-inter-rat-cell-umts {
-                key "plmnid cid";
-                uses lte-ran-neighbor-list-inter-rat-cell-umts-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.";
-              }
-              list lte-ran-neighbor-list-inter-rat-cell-gsm {
-                key "plmnid lac ci";
-                uses lte-ran-neighbor-list-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.";
-              }
-              list lte-ran-neighbor-list-inter-rat-cell-cdma2000 {
-                key "cid";
-                uses lte-ran-neighbor-list-inter-rat-cell-cdma2000-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.";
-              }
-            }
-          }
-          container lte-ran-neighbor-list-in-use {
-            uses lte-ran-neighbor-list-in-use-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.";
-            list lte-ran-neighbor-list-in-use-lte-cell {
-              key "plmnid cid";
-              uses lte-ran-neighbor-list-in-use-lte-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.";
-            }
-            container lte-ran-neighbor-list-in-use-inter-rat-cell {
-              uses lte-ran-neighbor-list-in-use-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.";
-              list lte-ran-neighbor-list-in-use-inter-rat-cell-umts {
-                key "plmnid cid";
-                uses lte-ran-neighbor-list-in-use-inter-rat-cell-umts-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.";
-              }
-              list lte-ran-neighbor-list-in-use-inter-rat-cell-gsm {
-                key "plmnid lac ci";
-                uses lte-ran-neighbor-list-in-use-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-              }
-              list lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000 {
-                key "cid";
-                uses lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.";
-              }
-            }
-          }
-        }
-      }
-      container cdma2000 {
-        uses cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.CellConfig.CDMA2000.";
-        container cdma2000-one-x {
-          uses cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.";
-          container cdma2000-one-x-ran {
-            uses cdma2000-one-x-ran-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.";
-            container cdma2000-one-x-ran-rf {
-              uses cdma2000-one-x-ran-rf-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.";
-            }
-            container cdma2000-one-x-ran-network-listen-mode-config {
-              uses cdma2000-one-x-ran-network-listen-mode-config-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.";
-            }
-            container cdma2000-one-x-ran-access-parameters {
-              uses cdma2000-one-x-ran-access-parameters-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.";
-            }
-            container cdma2000-one-x-ran-system-parameters {
-              uses cdma2000-one-x-ran-system-parameters-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.";
-            }
-            container cdma2000-one-x-ran-extended-system-parameters {
-              uses cdma2000-one-x-ran-extended-system-parameters-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.";
-            }
-            container cdma2000-one-x-ran-forward-pwr-ctr {
-              uses cdma2000-one-x-ran-forward-pwr-ctr-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.";
-            }
-            container cdma2000-one-x-ran-hard-handoff {
-              uses cdma2000-one-x-ran-hard-handoff-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.";
-              container cdma2000-one-x-ran-hard-handoff-stats {
-                uses cdma2000-one-x-ran-hard-handoff-stats-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.";
-              }
-            }
-            container cdma2000-one-x-ran-power-control {
-              uses cdma2000-one-x-ran-power-control-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.";
-            }
-            list cdma2000-one-x-ran-neighbor-list {
-              key "one-x-neighbor-index neighbor-pn";
-              uses cdma2000-one-x-ran-neighbor-list-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.";
-            }
-            container cdma2000-one-x-ran-apidm {
-              uses cdma2000-one-x-ran-apidm-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.";
-            }
-            container cdma2000-one-x-ran-apidtm {
-              uses cdma2000-one-x-ran-apidtm-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.";
-            }
-            container cdma2000-one-x-ran-appim {
-              uses cdma2000-one-x-ran-appim-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.";
-              list cdma2000-one-x-ran-appim-appirec {
-                key "apsid apnid apband apfreq appnrectype appnreclen appnrec";
-                uses cdma2000-one-x-ran-appim-appirec-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.";
-              }
-            }
-          }
-          container cdma2000-one-x-pcf-config {
-            uses cdma2000-one-x-pcf-config-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.";
-            container cdma2000-one-x-pcf-config-pcf-performance-stats {
-              uses cdma2000-one-x-pcf-config-pcf-performance-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.";
-            }
-          }
-          list cdma2000-one-x-batch-pcfpdsn {
-            key "batch-table-number";
-            uses cdma2000-one-x-batch-pcfpdsn-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.";
-          }
-          list cdma2000-one-x-pcfpdsn {
-            key "pdsn-number security-parameter-index security-key";
-            uses cdma2000-one-x-pcfpdsn-g;
-            container cdma2000-one-x-pcfpdsn-a11-reg-update-stats {
-              uses cdma2000-one-x-pcfpdsn-a11-reg-update-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.";
-            }
-            container cdma2000-one-x-pcfpdsn-pcfpdsn-stats {
-              uses cdma2000-one-x-pcfpdsn-pcfpdsn-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.";
-            }
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.";
-          }
-          container cdma2000-one-x-stats {
-            uses cdma2000-one-x-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.";
-          }
-          container cdma2000-one-x-redirect {
-            uses cdma2000-one-x-redirect-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.";
-          }
-        }
-        container cdma2000-hrpd {
-          uses cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.";
-          container cdma2000-hrpd-ran {
-            uses cdma2000-hrpd-ran-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.";
-            container cdma2000-hrpd-ran-rf {
-              uses cdma2000-hrpd-ran-rf-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.";
-            }
-          }
-          container cdma2000-hrpd-pcf-config {
-            uses cdma2000-hrpd-pcf-config-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.";
-            container cdma2000-hrpd-pcf-config-pcf-performance-stats {
-              uses cdma2000-hrpd-pcf-config-pcf-performance-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.";
-            }
-          }
-          list cdma2000-hrpd-batch-pcfpdsn {
-            key "batch-table-number batch-table-security-parameter-index batch-table-secret-key";
-            uses cdma2000-hrpd-batch-pcfpdsn-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.";
-          }
-          list cdma2000-hrpd-pcfpdsn {
-            key "pdsn-number security-parameter-index security-key";
-            uses cdma2000-hrpd-pcfpdsn-g;
-            container cdma2000-hrpd-pcfpdsn-a11-session-update-stats {
-              uses cdma2000-hrpd-pcfpdsn-a11-session-update-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.";
-            }
-            container cdma2000-hrpd-pcfpdsn-a11-reg-update-stats {
-              uses cdma2000-hrpd-pcfpdsn-a11-reg-update-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.";
-            }
-            container cdma2000-hrpd-pcfpdsn-aux-a10-stats {
-              uses cdma2000-hrpd-pcfpdsn-aux-a10-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.";
-            }
-            container cdma2000-hrpd-pcfpdsn-pcfpdsn-stats {
-              uses cdma2000-hrpd-pcfpdsn-pcfpdsn-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.";
-            }
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.";
-          }
-          container cdma2000-hrpd-redirect {
-            uses cdma2000-hrpd-redirect-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.";
-          }
-          container cdma2000-hrpd-call-control-stats {
-            uses cdma2000-hrpd-call-control-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.";
-          }
-          container cdma2000-hrpd-qo-s-stats {
-            uses cdma2000-hrpd-qo-s-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.";
-          }
-          container cdma2000-hrpd-rnc-sig-apps-stats {
-            uses cdma2000-hrpd-rnc-sig-apps-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.";
-          }
-          container cdma2000-hrpd-access-auth-config {
-            uses cdma2000-hrpd-access-auth-config-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.";
-          }
-          container cdma2000-hrpd-access-auth-stats {
-            uses cdma2000-hrpd-access-auth-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.";
-          }
-        }
-        container cdma2000-beacon {
-          uses cdma2000-beacon-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.CDMA2000.Beacon.";
-          list cdma2000-beacon-beacon-list {
-            key "beacon-index";
-            uses cdma2000-beacon-beacon-list-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.";
-          }
-          list cdma2000-beacon-hrpd-beacon-list {
-            key "beacon-index";
-            uses cdma2000-beacon-hrpd-beacon-list-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.";
-          }
-        }
-      }
-    }
-    container rem {
-      uses rem-g;
-      description
-        "Container for object class FAPService.{i}.REM.";
-      container rem-umts {
-        uses rem-umts-g;
-        description
-          "Container for object class FAPService.{i}.REM.UMTS.";
-        container rem-umts-wcdma {
-          uses rem-umts-wcdma-g;
-          description
-            "Container for object class FAPService.{i}.REM.UMTS.WCDMA.";
-          list rem-umts-wcdma-cell {
-            key "rem-umts-wcdma-cell-key";
-            uses rem-umts-wcdma-cell-g;
-            container rem-umts-wcdma-cell-rf {
-              uses rem-umts-wcdma-cell-rf-g;
-              description
-                "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.";
-            }
-            container rem-umts-wcdma-cell-bcch {
-              uses rem-umts-wcdma-cell-bcch-g;
-              description
-                "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.";
-              container rem-umts-wcdma-cell-bcch-csgpsc-split-info {
-                uses rem-umts-wcdma-cell-bcch-csgpsc-split-info-g;
-                description
-                  "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.";
-              }
-              container rem-umts-wcdma-cell-bcch-reference-position {
-                uses rem-umts-wcdma-cell-bcch-reference-position-g;
-                description
-                  "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.";
-              }
-            }
-            description
-              "List of object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.";
-          }
-        }
-        container rem-umts-gsm {
-          uses rem-umts-gsm-g;
-          description
-            "Container for object class FAPService.{i}.REM.UMTS.GSM.";
-          list rem-umts-gsm-cell {
-            key "arfcn bsic";
-            uses rem-umts-gsm-cell-g;
-            description
-              "List of object class FAPService.{i}.REM.UMTS.GSM.Cell.{i}.";
-          }
-        }
-      }
-      container rem-lte {
-        uses rem-lte-g;
-        description
-          "Container for object class FAPService.{i}.REM.LTE.";
-        list rem-lte-cell {
-          key "rem-lte-cell-key";
-          uses rem-lte-cell-g;
-          container rem-lte-cell-rf {
-            uses rem-lte-cell-rf-g;
-            description
-              "Container for object class FAPService.{i}.REM.LTE.Cell.{i}.RF.";
-          }
-          container rem-lte-cell-bcch {
-            uses rem-lte-cell-bcch-g;
-            description
-              "Container for object class FAPService.{i}.REM.LTE.Cell.{i}.BCCH.";
-            list rem-lte-cell-bcch-plmn-list {
-              key "plmnid";
-              uses rem-lte-cell-bcch-plmn-list-g;
-              description
-                "List of object class FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.";
-            }
-          }
-          description
-            "List of object class FAPService.{i}.REM.LTE.Cell.{i}.";
-        }
-        list rem-lte-carrier-meas {
-          key "carrier-arfcndl carrier-ch-width";
-          uses rem-lte-carrier-meas-g;
-          description
-            "List of object class FAPService.{i}.REM.LTE.CarrierMeas.{i}.";
-        }
-      }
-      container rem-cdma2000 {
-        uses rem-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.REM.CDMA2000.";
-        container rem-cdma2000-one-x {
-          uses rem-cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.REM.CDMA2000.OneX.";
-          list rem-cdma2000-one-x-channel {
-            key "sniffing-band-class sniffing-channel-number";
-            uses rem-cdma2000-one-x-channel-g;
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.";
-          }
-          list rem-cdma2000-one-x-cell {
-            key "rem-cdma2000-one-x-cell-key";
-            uses rem-cdma2000-one-x-cell-g;
-            container rem-cdma2000-one-x-cell-rf {
-              uses rem-cdma2000-one-x-cell-rf-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.";
-            }
-            container rem-cdma2000-one-x-cell-control-channel {
-              uses rem-cdma2000-one-x-cell-control-channel-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.";
-            }
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.";
-          }
-        }
-        container rem-cdma2000-hrpd {
-          uses rem-cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.";
-          list rem-cdma2000-hrpd-channel {
-            key "sniffing-band-class sniffing-channel-number";
-            uses rem-cdma2000-hrpd-channel-g;
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.";
-          }
-          list rem-cdma2000-hrpd-cell {
-            key "rem-cdma2000-hrpd-cell-key";
-            uses rem-cdma2000-hrpd-cell-g;
-            container rem-cdma2000-hrpd-cell-rf {
-              uses rem-cdma2000-hrpd-cell-rf-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.";
-            }
-            container rem-cdma2000-hrpd-cell-control-channel {
-              uses rem-cdma2000-hrpd-cell-control-channel-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.";
-            }
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.";
-          }
-        }
-        container rem-cdma2000-macro-timing {
-          uses rem-cdma2000-macro-timing-g;
-          description
-            "Container for object class FAPService.{i}.REM.CDMA2000.MacroTiming.";
-          list rem-cdma2000-macro-timing-channel {
-            key "band-class channel-number";
-            uses rem-cdma2000-macro-timing-channel-g;
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.";
-          }
-        }
-      }
-    }
-    container transport {
-      uses transport-g;
-      description
-        "Container for object class FAPService.{i}.Transport.";
-      container transport-sip {
-        uses transport-sip-g;
-        description
-          "Container for object class FAPService.{i}.Transport.SIP.";
-        container transport-sip-fcs {
-          uses transport-sip-fcs-g;
-          description
-            "Container for object class FAPService.{i}.Transport.SIP.FCS.";
-        }
-      }
-      container transport-sctp {
-        uses transport-sctp-g;
-        description
-          "Container for object class FAPService.{i}.Transport.SCTP.";
-        list transport-sctp-assoc {
-          key "primary-peer-address local-port";
-          uses transport-sctp-assoc-g;
-          description
-            "List of object class FAPService.{i}.Transport.SCTP.Assoc.{i}.";
-        }
-      }
-      container transport-real-time {
-        uses transport-real-time-g;
-        description
-          "Container for object class FAPService.{i}.Transport.RealTime.";
-        container transport-real-time-perf {
-          uses transport-real-time-perf-g;
-          description
-            "Container for object class FAPService.{i}.Transport.RealTime.Perf.";
-        }
-      }
-      container transport-packet {
-        uses transport-packet-g;
-        description
-          "Container for object class FAPService.{i}.Transport.Packet.";
-      }
-      container transport-security {
-        uses transport-security-g;
-        description
-          "Container for object class FAPService.{i}.Transport.Security.";
-        list transport-security-secret {
-          key "uicc-card-id";
-          uses transport-security-secret-g;
-          description
-            "List of object class FAPService.{i}.Transport.Security.Secret.{i}.";
-        }
-      }
-    }
-    description
-      "List of object class FAPService.{i}.";
-  }
-
-  grouping fap-service-g {
-    description
-      "The Femto Access Point (FAP) Service Object.";
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Alias";
-    }
-    leaf device-type {
-      type enumeration {
-        enum "standalone" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType - Standalone";
-        }
-        enum "integrated" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType - Integrated";
-        }
-      }
-      description
-        "The type of FAP device.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType";
-    }
-    leaf dn-prefix {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The Distinguished Name prefix (DNPrefix) is an operator-configurable prefix string that is pre-pended to object distinguished names in the {{bibref|TR-157a5}} alarm object. See {{bibref|3GPP-TS.32.300}} for the formal definition and examples of DNPrefix as applied to 3GPP alarm objects";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.DNPrefix";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.";
-  }
-
-  grouping capabilities-g {
-    description
-      "This object contains parameters relating to the hardware capabilities of the FAP device.";
-    leaf gps-equipped {
-      type boolean;
-      description
-        "Indicates whether the FAP is equipped with a GPS receiver or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.GPSEquipped";
-    }
-    leaf max-tx-power {
-      type uint64;
-      units "dBm";
-      description
-        "Indicates the maximum possible transmit power in {{units}} that the FAP hardware can support.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.MaxTxPower";
-    }
-    leaf-list supported-systems {
-      type enumeration {
-        enum "umts" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - UMTS";
-        }
-        enum "lte" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - LTE";
-        }
-        enum "cdma1x" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - CDMA1x";
-        }
-        enum "cdmahrpd" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - CDMAHRPD";
-        }
-      }
-      description
-        "{{list}} Each entry is a type of system that the FAP supports. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems";
-    }
-    leaf beacon {
-      type boolean;
-      description
-        "Indicates whether FAP can support beacon transmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.Beacon";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.";
-  }
-
-  grouping capabilities-umts-g {
-    description
-      "This object contains parameters relating to the system and RF aspect of the FAP device that supports the UMTS system.";
-    leaf duplex-mode {
-      type enumeration {
-        enum "fdd-mode" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.DuplexMode - FDDMode";
-        }
-      }
-      description
-        "Indicates the mode supported by the FAP. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.DuplexMode";
-    }
-    leaf gsm-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the FAP hardware supports the receiving function of GSM or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxSupported";
-    }
-    leaf hsdpa-supported {
-      type boolean;
-      description
-        "Indicates whether the FAP hardware supports the HSDPA capability or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.HSDPASupported";
-    }
-    leaf max-hsdpa-data-rate-supported {
-      type uint64;
-      units "Kbps";
-      description
-        "If the FAP hardware supports HSDPA ({{param|HSDPASupported}} is {{true}}), this parameter indicates the maximum HSDPA data rate in {{units}} that the device supports.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSDPADataRateSupported";
-    }
-    leaf hsupa-supported {
-      type boolean;
-      description
-        "Indicates whether the FAP hardware supports the HSUPA capability or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.HSUPASupported";
-    }
-    leaf max-hsupa-data-rate-supported {
-      type uint64;
-      units "Kbps";
-      description
-        "If the FAP hardware supports HSUPA ({{param|HSUPASupported}} is {{true}}), this parameter indicates the maximum HSUPA data rate in {{units}} that the device supports.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSUPADataRateSupported";
-    }
-    leaf max-hspdsc-hs-supported {
-      type uint8 {
-        range "0..15";
-      }
-      description
-        "If the FAP hardware supports HSPA family (either {{param|HSDPASupported}} is {{true}} or {{param|HSUPASupported}} is {{true}}), this parameter indicates the available number of codes at the defined spreading factor (SF=16), within the complete code tree. See {{bibref|3GPP-TS.32.642|Section 6.3.9}} for more details.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSPDSCHsSupported";
-    }
-    leaf max-hsscc-hs-supported {
-      type uint64;
-      description
-        "If the FAP hardware supports HSPA family (either {{param|HSDPASupported}} is {{true}} or {{param|HSUPASupported}} is {{true}}), this parameter indicates the available number of HS-SCCHs for one cell. See {{bibref|3GPP-TS.32.642|Section 6.3.9}} for more details.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSSCCHsSupported";
-    }
-    leaf-list fdd-bands-supported {
-      type string;
-      min-elements 1;
-      max-elements "16";
-      description
-        "{{list}} Indicates the UMTS bands that the FAP supports {{bibref|3GPP-TS.25.104}}, Release 8. At least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.25.104}} Version 8.3.0 defines 14 UMTS bands (I through XIV). Each individual band is identified by its upper case Roman numeral. The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.25.104}}, the corresponding new upper case Roman numeral will be included in the valid band indicators. The followings are examples of valid values: :\"I\" (specifies only band-I is supported) :\"I,II,V\" (specifies 3 bands are supported) :\"II,VII,I\" (specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.FDDBandsSupported";
-    }
-    leaf-list gsm-rx-bands-supported {
-      type enumeration {
-        enum "t-gsm380" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM380";
-        }
-        enum "t-gsm410" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM410";
-        }
-        enum "gsm450" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM450";
-        }
-        enum "gsm480" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM480";
-        }
-        enum "gsm710" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM710";
-        }
-        enum "gsm750" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM750";
-        }
-        enum "t-gsm810" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM810";
-        }
-        enum "gsm850" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM850";
-        }
-        enum "p-gsm900" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - P-GSM900";
-        }
-        enum "e-gsm900" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - E-GSM900";
-        }
-        enum "r-gsm900" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - R-GSM900";
-        }
-        enum "t-gsm900" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM900";
-        }
-        enum "dcs1800" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - DCS1800";
-        }
-        enum "pcs1900" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - PCS1900";
-        }
-      }
-      description
-        "{{list}} Indicates the GSM receive bands that the FAP supports {{bibref|3GPP-TS.45.005}}. At least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.45.005}} defines 14 GSM bands. {{enum}} The order of the band indicators in the string has no significance. The following is an example of a valid value. :\"GSM850,PCS1900\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.";
-  }
-
-  grouping capabilities-umts-self-config-g {
-    description
-      "This object contains parameters relating to the self-configuration capabilities of the FAP. Self-configuration is enabled in {{object|.FAPControl.UMTS.SelfConfig.}}";
-    leaf uarfcn-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the UTRA Absolute Radio Frequency Channel Number (UARFCN). If {{true}} multiple values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.UARFCNDL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.UARFCNDL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.UARFCNConfig";
-    }
-    leaf primary-scrambling-code-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Primary Scrambling Code (PSC). If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig";
-    }
-    leaf maxfap-tx-power-expanded-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig";
-    }
-    leaf pcpich-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the P-CPICH power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}} as an upper bound.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig";
-    }
-    leaf max-ul-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum UL Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig";
-    }
-    leaf lacracura-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the LAC, RAC, and URA. If {{true}} multiple values MAY be provided in {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.LACRACURAConfig";
-    }
-    leaf neighbor-list-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the neighbor list. If {{true}} the ACS uses the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.}} tables to explicitly include or exclude entries and the FAP uses that information to determine the final configuration found in the {{object|.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.}} tables. If {{false}} the ACS uses the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.}} tables to only specify the included entries and the FAP uses that list.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.NeighborListConfig";
-    }
-    leaf cell-re-selection-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine cell-reselection values. If {{true}} {{object|.CellConfig.UMTS.RAN.CellSelection.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.CellSelection.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.CellReSelectionConfig";
-    }
-    leaf intra-freq-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine intra-frequency measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.IntraFreqMeasConfig";
-    }
-    leaf inter-freq-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine inter-frequency measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.InterFreqMeasConfig";
-    }
-    leaf inter-rat-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine inter-RAT measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.InterRATMeasConfig";
-    }
-    leaf ue-internal-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine UE internal measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.UEInternalMeasConfig";
-    }
-    leaf noise-rise-limit-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the selfconfiguration capability to determine the Noise Rise Limit. If {{true}} {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} and {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}}. MAY provide a range of values to select from. If {{false}} {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}} provides only a single value to be used. The value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} is ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.";
-  }
-
-  grouping capabilities-lte-g {
-    description
-      "This object contains parameters relating to the system and RF aspect of the FAP device that supports the LTE system.";
-    leaf duplex-mode {
-      type enumeration {
-        enum "fdd-mode" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode - FDDMode";
-        }
-        enum "tdd-mode" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode - TDDMode";
-        }
-      }
-      description
-        "Indicates the mode supported by the LTE FAP. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode";
-    }
-    leaf-list bands-supported {
-      type uint8 {
-        range "1..21 | 33..40";
-      }
-      min-elements 1;
-      max-elements "16";
-      description
-        "{{list}} Indicates the LTE bands that the LTE FAP supports {{bibref|3GPP-TS.36.101|Section 5.5}}. At least one band MUST be supported and multiple bands MAY be supported. Each individual band is identified by arabic number (1, 2,...). The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.36.101}}, the corresponding new band number will be included in the valid band indicators. The followings are examples of valid values: :\"1\" (specifies only band-1 is supported) :\"1,2,11\" (specifies 3 bands are supported) :\"2,11,1\" (specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.BandsSupported";
-    }
-    leaf nnsf-supported {
-      type boolean;
-      description
-        "Indicates whether LTE FAP supports the NAS Node Selection Function (NNSF) or not. NNSF is described in {{bibref|3GPP-TS.36.300|Section 19.2.1.7 and Section 4.6.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.NNSFSupported";
-    }
-    leaf umts-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the LTE FAP hardware supports the receiving function of UMTS or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.UMTSRxSupported";
-    }
-    leaf-list umts-rx-bands-supported {
-      type string;
-      max-elements "16";
-      description
-        "{{list}} Indicates the UMTS receive bands that the LTE FAP supports {{bibref|3GPP-TS.25.104}}, Release 8. If {{param|UMTSRxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. Each individual band is identified by its upper case Roman numeral. The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.25.104}}, the corresponding new upper case Roman numeral will be included in the valid band indicators. The followings are examples of valid values: :\"I\" (specifies only band-I is supported) :\"I,II,V\" (specifies 3 bands are supported) :\"II,VII,I\" (specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.UMTSRxBandsSupported";
-    }
-    leaf gsm-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the LTE FAP hardware supports the receiving function of GSM or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxSupported";
-    }
-    leaf-list gsm-rx-bands-supported {
-      type enumeration {
-        enum "t-gsm380" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM380";
-        }
-        enum "t-gsm410" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM410";
-        }
-        enum "gsm450" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM450";
-        }
-        enum "gsm480" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM480";
-        }
-        enum "gsm710" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM710";
-        }
-        enum "gsm750" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM750";
-        }
-        enum "t-gsm810" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM810";
-        }
-        enum "gsm850" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM850";
-        }
-        enum "p-gsm900" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - P-GSM900";
-        }
-        enum "e-gsm900" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - E-GSM900";
-        }
-        enum "r-gsm900" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - R-GSM900";
-        }
-        enum "t-gsm900" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM900";
-        }
-        enum "dcs1800" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - DCS1800";
-        }
-        enum "pcs1900" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - PCS1900";
-        }
-      }
-      description
-        "{{list}} Indicates the GSM receive bands that the LTE FAP supports {{bibref|3GPP-TS.45.005}}. If {{param|GSMRxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.45.005}} defines 14 GSM bands. {{enum}} The order of the band indicators in the string has no significance. The following is an example of a valid value. :\"GSM850,PCS1900\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported";
-    }
-    leaf cdma2000-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the LTE FAP hardware supports the receiving function of CDMA2000 or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.CDMA2000RxSupported";
-    }
-    leaf-list cdma2000-rx-bands-supported {
-      type string;
-      max-elements "16";
-      description
-        "{{list}} Indicates the CDMA2000 receive bands that the LTE FAP supports. If {{param|CDMA2000RxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. The order of the band indicators in the string has no significance. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057-B}}. The following are example values: :\"0\" (specifies US Cellular) :\"1,3,14\" (specifies US PCS, Japan Cellular and US PCS 1.9Ghz) specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.CDMA2000RxBandsSupported";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.";
-  }
-
-  grouping capabilities-cdma2000-g {
-    description
-      "This object contains parameters relating to the capability attributes for CDMA2000 FAP.";
-    leaf remote-ip-access-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of providing remote IP access service as defined in {{bibref|3GPP2-X.S0059}}. If {{true}}, the FAP is capable of remote IP access service. If {{false}}, the FAP is not capable of remote IP access service.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.RemoteIPAccessCapable";
-    }
-    leaf-list band-class-supportedfap-beacon {
-      type string;
-      max-elements "32";
-      description
-        "{{list}} Indicates the band classes that the FAP supports for beacon transmission. One or multiple bands MAY be supported. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057}}. List is empty if FAP can not support beacon transmissions.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.BandClassSupportedFAPBeacon";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.";
-  }
-
-  grouping capabilities-cdma2000-one-x-g {
-    description
-      "This object contains parameters relating to the capability attributes for the CDMA2000 1x radio technology portions of a CDMA2000 FAP.";
-    leaf band-class-supportedfap {
-      type string {
-        length "0..32";
-      }
-      description
-        "{{list}} Indicates the CDMA bands that the FAP supports. At least one band MUST be supported and multiple bands MAY be supported. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057}}. The following are example values: \"0\" (specifies US Cellular) \"1,3,14\" (specifies US PCS, Japan Cellular and US PCS 1.9Ghz)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.BandClassSupportedFAP";
-    }
-    leaf active-handin-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of accepting hand-in of active 1x call from another base station. If {{true}}, the FAP is capable of accepting hand-in. If {{false}}, the FAP is not capable of accepting hand-in.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.ActiveHandinCapable";
-    }
-    leaf femto-overhead-messages-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP supports Access Point Identification, Access Point Pilot Information, and Access Point Identification Text messages specified in {{bibref|3GPP2-C.S0005}}. If {{true}}, the FAP supports these messages. If {{false}}, the FAP does not supports these messages.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.";
-  }
-
-  grouping capabilities-cdma2000-one-x-self-config-g {
-    description
-      "This object contains parameters relating to the self-configuration capabilities of the FAP. Self-configuration is enabled in {{object|.FAPControl.CDMA2000.OneX.SelfConfig.}}.";
-    leaf rfcnfl-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Radio Frequency Channel Number. If {{true}} multiple values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig";
-    }
-    leaf pilot-pn-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the pilot PN offset. If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig";
-    }
-    leaf maxfap-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig";
-    }
-    leaf maxfap-beacon-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Beacon Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.";
-  }
-
-  grouping capabilities-cdma2000-hrpd-g {
-    description
-      "This object contains parameters relating to the capability attributes for the CDMA2000 HRPD radio technology portions of a CDMA2000 FAP.";
-    leaf a13-session-transfer-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of supporting A13 session transfer. See {{bibref|3GPP2-C.S0024-B}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.A13SessionTransferCapable";
-    }
-    leaf a16-session-transfer-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of supporting A16 session transfer. See {{bibref|3GPP2-C.S0024-B}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.A16SessionTransferCapable";
-    }
-    leaf local-ip-access-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of supporting Local IP access. See {{bibref|3GPP2-C.S0024-B}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.LocalIPAccessCapable";
-    }
-    leaf dedicated-hrpd-beacon {
-      type boolean;
-      description
-        "Indicated whether the FAP supports a dedicated transmission of HRPD beacon independent of the generalized beacon.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.DedicatedHRPDBeacon";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.";
-  }
-
-  grouping capabilities-cdma2000-hrpd-self-config-g {
-    description
-      "This object contains parameters relating to the self-configuration capability attributes for the CDMA2000 HRPD radio technology portions of a CDMA2000 FAP.";
-    leaf rfcnfl-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Radio Frequency Channel Number. If {{true}} multiple values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig";
-    }
-    leaf pilot-pn-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the pilot PN offset. If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig";
-    }
-    leaf maxfap-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig";
-    }
-    leaf maxfap-beacon-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Beacon Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPBeaconTxPowerConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.";
-  }
-
-  grouping fap-control-g {
-    description
-      "This object contains parameters relating to state management and provisioning aspects of the FAP.";
-    leaf-list self-config-events {
-      type enumeration {
-        enum "initial-rem" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.SelfConfigEvents - InitialREM";
-        }
-      }
-      config false;
-      description
-        "{{list}} Each item is an event that causes the FAP to perform self configuration as defined by {{object|.FAPControl.UMTS.SelfConfig.}}, {{object|.FAPControl.CDMA2000.OneX.SelfConfig.}}, or {{object|.FAPControl.CDMA2000.HRPD.SelfConfig.}}. Vendors can extend the enumerated values with vendor-specific extensions, in which case the rules outlined in {{bibref|TR-106a2|Section3.3}} MUST be adhered to.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.SelfConfigEvents";
-    }
-    leaf enclosure-tampering-detected {
-      type boolean;
-      config false;
-      description
-        "This parameter indicates whether or not physical tampering of the device enclosure occurred, such as illegal opening of the box. If {{true}} device tampering is detected. If {{false}} no sign of device tampering is detected. Tampering state MUST be persisted across reboots and the device MUST never reset it back from {{true}} to {{false}} even after a factory reset.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.EnclosureTamperingDetected";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.";
-  }
-
-  grouping fap-control-umts-g {
-    description
-      "This object contains parameters relating to the UMTS system specific information.";
-    leaf op-state {
-      type boolean;
-      description
-        "Current operational state of the UMTS FAP as defined in {{bibref|ITU-X.731}}. If {{true}} the UMTS FAP is currently enabled. If {{false}} the UMTS FAP is currently disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.OpState";
-    }
-    leaf admin-state {
-      type boolean;
-      config false;
-      description
-        "Lock or unlock the UMTS FAP. This controls the administrative state of the UMTS FAP as defined in {{bibref|ITU-X.731}}. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition UMTS FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the UMTS FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: # location verification (including meeting the governing regulatory requirements) # verifying the UMTS FAP configuration # if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.AdminState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this UMTS FAP RF transmitter. {{true}} indicates that the UMTS FAP Tx transmitter is on. {{false}} indicates that the UMTS FAP Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. :When the ACS sets {{param|AdminState}} to {{true}}, then the UMTS FAP has permission to turn on the RF transmitter. :When the ACS sets {{param|AdminState}} to {{false}}, then the UMTS FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.RFTxStatus";
-    }
-    leaf pm-config {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The value MUST be the path name of a row in the optional ''FAP.PerfMgmt.Config.'' table (see {{bibref|TR-262}}). This is the performance management related configuration for the UMTS FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.PMConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.";
-  }
-
-  grouping fap-control-umts-self-config-g {
-    description
-      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
-    leaf uarfcn-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.UMTS.RAN.CSG.UARFCNDLList}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable";
-    }
-    leaf primary-scrambling-code-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable";
-    }
-    leaf maxfap-tx-power-expanded-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable";
-    }
-    leaf pcpich-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable";
-    }
-    leaf max-ul-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable";
-    }
-    leaf lacracura-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable";
-    }
-    leaf neighbor-list-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values in the object {{object|.CellConfig.UMTS.RAN.NeighborList.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.NeighborListSelfConfigEnable";
-    }
-    leaf cell-re-selection-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine Cell Selection/Reselection-related parameters in {{object|.CellConfig.UMTS.RAN.CellSelection.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.CellReSelectionSelfConfigEnable";
-    }
-    leaf intra-freq-meas-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine intra-frequency measurement -related parameters in {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.IntraFreqMeasSelfConfigEnable";
-    }
-    leaf inter-freq-meas-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine inter-frequency measurement -related parameters in {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.InterFreqMeasSelfConfigEnable";
-    }
-    leaf inter-rat-meas-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine inter-RAT measurement -related parameters in {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.InterRATMeasSelfConfigEnable";
-    }
-    leaf ue-internal-meas-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine UE internal measurement-related parameters in {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.UEInternalMeasConfigEnable";
-    }
-    leaf noise-rise-limit-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitInUse}}. If {{true}} the FAP self-configures the value, based on the limits specified in {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} and {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}}. If {{false}} the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.";
-  }
-
-  grouping fap-control-umts-gateway-g {
-    description
-      "This object contains parameters relating to the Gateways that FAP is connected to.";
-    leaf sec-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer1";
-    }
-    leaf sec-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer2";
-    }
-    leaf sec-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer3";
-    }
-    leaf fap-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer1";
-    }
-    leaf fap-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer2";
-    }
-    leaf fap-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer3";
-    }
-    leaf fap-gw-port {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Port number of FAPGW used for initial Iuh SCTP contact. This value is specified as 29169 according to IANA definition per {{bibref|IANA-portnumbers}}, registered on 2009-09-08. Use of IANA-defined value is recommended.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWPort";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.";
-  }
-
-  grouping fap-control-lte-g {
-    description
-      "This object contains parameters relating to the LTE system specific information.";
-    leaf op-state {
-      type boolean;
-      description
-        "Current operational state of the LTE FAP as defined in {{bibref|ITU-X.731}}. If {{true}} the LTE FAP is currently enabled. If {{false}} the LTE FAP is currently disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.OpState";
-    }
-    leaf admin-state {
-      type boolean;
-      config false;
-      description
-        "Lock or unlock the LTE FAP. This controls the administrative state of the LTE FAP as defined in {{bibref|ITU-X.731}}. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition LTE FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the LTE FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: # location verification (including meeting the governing regulatory requirements) # verifying the LTE FAP configuration # if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.AdminState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this LTE FAP RF transmitter. {{true}} indicates that the LTE FAP Tx transmitter is on. {{false}} indicates that the LTE FAP Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. :When the ACS sets {{param|AdminState}} to {{true}}, then the LTE FAP has permission to turn on the RF transmitter. :When the ACS sets {{param|AdminState}} to {{false}}, then the LTE FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.RFTxStatus";
-    }
-    leaf pm-config {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The value MUST be the path name of a row in optional the ''.FAP.PerfMgmt.Config.'' table (see {{bibref|TR-262}}). This is the performance management related configuration for the LTE FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.PMConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.";
-  }
-
-  grouping fap-control-lte-gateway-g {
-    description
-      "This object contains parameters relating to the Gateways that the LTE FAP is connected to.";
-    leaf sec-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer1";
-    }
-    leaf sec-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer2";
-    }
-    leaf sec-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer3";
-    }
-    leaf-list s1-sig-link-server-list {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a S1 signaling connection end point (-GW or MME) the LTE FAP attempts to establish connection with. It is in the form of either hostname or IPaddress. LTE FAP's behavior in terms of the number of S1 connection to established with is determined by {{param|S1ConnectionMode}} parameter. If {{param|S1ConnectionMode}} has the value of {{enum|One|S1ConnectionMode}}, then LTE FAP attempts to establish S1 connection with only one address following the ordering of the list. If {{param|S1ConnectionMode}} has the value of {{enum|All|S1ConnectionMode}}, then LTE FAP attempts to establish connection with all addresses in the list.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1SigLinkServerList";
-    }
-    leaf s1-connection-mode {
-      type enumeration {
-        enum "one" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode - One";
-        }
-        enum "all" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode - All";
-        }
-      }
-      config false;
-      description
-        "Indicates how many of the configured far-end S1 link address(es),as defined in {{param|S1SigLinkServerList}}, LTE FAP SHOULD attempt to establish connection with simultaneously. If {{param}} parameter is not explicitly configured, then LTE FAP shall assume the value to be {{enum|One|S1ConnectionMode}} as default.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode";
-    }
-    leaf s1-sig-link-port {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Port number of S1AP signaling connection end point (-GW or MME) used for initial S1 SCTP contact. This value is specified as 36412 according to IANA definition per {{bibref|IANA-portnumbers}}, registered on 2009-09-01. Use of IANA-defined value is recommended.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1SigLinkPort";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.";
-  }
-
-  grouping fap-control-cdma2000-g {
-    description
-      "This object contains parameters relating to the configuration for the control portions of a CDMA2000 FAP.";
-    leaf home-domain {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "A string containing one of operator's home domains in URI format. FAP is preconfigured with a default home domain, which can be overwritten later by ACS. See {{bibref|3GPP2-X.S0059}}. If the''.ManagementServer.URL'' is null, then the FAP shall use the value of this attribute to construct the ''.ManagementServer.URL'' attribute. If {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} is null, then the FAP shall use the value of this attribute to construct the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} attribute. If the FAP is unable to connect to the management server indicated by the value of the ''.ManagementServer.URL'' attribute and this attribute is not null, the FAP may use the value of this attribute to construct the ''.ManagementServer.URL'' attribute. If the FAP is unable to connect to any security gateway indicated by the value of the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}}, {{param|.FAPControl.CDMA2000.Gateway.SecGWServer2}}, and {{param|.FAPControl.CDMA2000.Gateway.SecGWServer3}} attributes and this attribute is not null, the FAP may use the value of this attribute to construct the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} attribute.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HomeDomain";
-    }
-    leaf remote-ip-access-enable {
-      type boolean;
-      config false;
-      description
-        "Enable or disable remote IP access service as defined in {{bibref|3GPP2-X.S0059}}. If {{true}} remote IP access is enabled. If {{false}} remove IP access is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.RemoteIPAccessEnable";
-    }
-    leaf pm-config {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The value MUST be the path name of a row in the ''.FAP.PerfMgmt.Config.'' table. This is the performance management related configuration for the CDMA2000 FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.PMConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.";
-  }
-
-  grouping fap-control-cdma2000-time-g {
-    description
-      "This object contains parameters related to time syncronization with CDMA2000 System Time (see {{bibref|3GPP2-C.S0005}}).";
-    leaf local-time-zone {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The local time zone for CDMA2000 operational purposes. E.g., \"+HH:MM JST\" for Japan. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.LocalTimeZone";
-    }
-    leaf current-local-time {
-      type string {
-        length "0..64";
-      }
-      description
-        "The current CDMA System Time (see {{bibref|3GPP2-C.S0005}}), expressed as date and time in the CPE's local time zone. The format of this field is \"YYYY-MM-DDThh:mm:ss.sTZD\" (e.g., 1997-07-16T19:20:30.45+01:00), where: YYYY = four-digit year MM = two-digit month (01=January, etc.) DD = two-digit day of month (01 through 31) hh = two digits of hour (00 through 23) (am/pm NOT allowed) mm = two digits of minute (00 through 59) ss = two digits of second (00 through 59) s = one or more digits representing a decimal fraction of a second TZD = time zone designator (Z or +hh:mm or -hh:mm)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.CurrentLocalTime";
-    }
-    leaf leap-seconds {
-      type int64;
-      units "seconds";
-      config false;
-      description
-        "Number of leap seconds (in {{units}} to be applied between CurrentLocalTime and CDMA System Time. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.LeapSeconds";
-    }
-    leaf daylight-savings-used {
-      type boolean;
-      config false;
-      description
-        "Whether or not daylight savings time is in use in the FAP's local time zone with respect to CDMA2000 System Time (see {{bibref|3GPP2-C.S0005}}). {true}} if daylight savings time is being used; otherwise {{false}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.DaylightSavingsUsed";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.";
-  }
-
-  grouping fap-control-cdma2000-one-x-g {
-    description
-      "This object contains all global attributes of the 1xFemto application.";
-    leaf admin-state {
-      type enumeration {
-        enum "lock" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState - Lock";
-        }
-        enum "unlock" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState - Unlock";
-        }
-      }
-      config false;
-      description
-        "Administrative state for 1x";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState";
-    }
-    leaf op-state {
-      type enumeration {
-        enum "enabled" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState - Enabled";
-        }
-        enum "disabled" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState - Disabled";
-        }
-      }
-      description
-        "Operational state of the 1x";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this RF transmitter. {{true}} indicates that the 3G Tx transmitter is on. {{false}} indicates that the 3G Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. When the ACS sets AdminState to {{true}}, then the FAP has permission to turn on the RF transmitter. When the ACS sets AdminState to {{false}}, then the FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.RFTxStatus";
-    }
-    leaf daylight {
-      type int64;
-      config false;
-      description
-        "If Daylight Savings Time is being used with respect to CDMA2000 1x overhead parameters (see {{bibref|3GPP2-C.S0005}}), then {{param}} should be set to {{true}}. Otherwise, {{param}} should be set to {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.Daylight";
-    }
-    leaf max-p-rev {
-      type int64;
-      config false;
-      description
-        "Protocol revision supported by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.MaxPRev";
-    }
-    leaf reregister {
-      type uint64;
-      config false;
-      description
-        "{{param}} triggers a re-registration of all mobiles. The FAP triggers re-registration of all registered mobiles everytime this number changes";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.Reregister";
-    }
-    leaf emergency-session-period {
-      type uint16 {
-        range "15..1800";
-      }
-      units "seconds";
-      config false;
-      description
-        "The period (in {{units}}) the session of an unauthorized user is kept alive after an emergency call.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.EmergencySessionPeriod";
-    }
-    leaf location-area-code {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "This is the location area code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.LocationAreaCode";
-    }
-    leaf msc-id {
-      type uint64;
-      config false;
-      description
-        "This is the FAP's MSCID. This ID is used in PANI header.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.MSCId";
-    }
-    leaf active-handin-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP performs active hand-in from another base station. If {{true}} active hand-in is enabled; if {{false}} active hand-in is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.";
-  }
-
-  grouping fap-control-cdma2000-one-x-active-handin-measurement-g {
-    description
-      "CDMA2000 1x active handin operational parameters.";
-    leaf active-handin-measurement-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP performs active hand-in measurement if a request is received. If {{true}} active hand-in measurement is enabled; if {{false}} active hand-in measurement is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.ActiveHandinMeasurementEnable";
-    }
-    leaf active-hand-in-measurement-duration {
-      type uint16 {
-        range "0..65535";
-      }
-      units "1.25 ms slots";
-      config false;
-      description
-        "The minimum duration in {{units}} for which FAP should take a mobile's RL pilot strength measurements for active hand-in purpose when directed by the network. Instead of continuous measurement for this entire duration, a FAP can make multiple measurements by sampling over shorter durations. In such a case, this value specifies the minimum time separation required between the first and last measurement samples.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.ActiveHandInMeasurementDuration";
-    }
-    leaf measurement-report-threshold {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "The threshold (in {{units}}) for the FAP to report an active hand-in measurement. If the metric to be reported is below the threshold, the FAP may not send any report.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.MeasurementReportThreshold";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.";
-  }
-
-  grouping fap-control-cdma2000-one-x-self-config-g {
-    description
-      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
-    leaf rfcnfl-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable";
-    }
-    leaf pilot-pn-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable";
-    }
-    leaf maxfap-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable";
-    }
-    leaf maxfap-beacon-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.";
-  }
-
-  grouping fap-control-cdma2000-gateway-g {
-    description
-      "CDMA2000 FAP Security Gateway operational parameters.";
-    leaf sec-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First SecGW the FAP attempts to contact. Either FQDN or IP address";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer1";
-    }
-    leaf sec-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second SecGW the FAP attempts to contact. Either FQDN or IP address";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer2";
-    }
-    leaf sec-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third SecGW that the FAP attempts to contact. Can contain either FQDN or IP address";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer3";
-    }
-    leaf sec-gw-switchover-count {
-      type uint64;
-      description
-        "Counter indicating how many times FAP has switched between SecGW";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWSwitchoverCount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-g {
-    description
-      "Operational parameters for the HRPD portion of a CDMA2000 FAP.";
-    leaf op-state {
-      type boolean;
-      description
-        "Current operational state of the FAP as defined in ITU-X.731 [32]. If {{true}} the FAP is currently enabled. If {{false}} the FAP is currently disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.OpState";
-    }
-    leaf admin-state {
-      type boolean;
-      config false;
-      description
-        "Lock or unlock the FAP. This controls the administrative state of the FAP as defined in ITU-X.731 [32]. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: location verification (including meeting the governing regulatory requirements) verifying the FAP configuration if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.AdminState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this RF transmitter. {{true}} indicates that the 3G Tx transmitter is on. {{false}} indicates that the 3G Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. When the ACS sets AdminState to {{true}}, then the FAP has permission to turn on the RF transmitter. When the ACS sets AdminState to {{false}}, then the FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.RFTxStatus";
-    }
-    leaf a13-session-transfer-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP performs A13 session transfer. If {{true}} A13 session transfer is enabled; if {{false}} A13 session transfer is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13SessionTransferEnable";
-    }
-    leaf local-ip-access-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP can assign local IP address to capable ATs. If {{true}} local IP address is assigned.; if {{false}} local IP address is not assigned.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.LocalIPAccessEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-self-config-g {
-    description
-      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
-    leaf rfcnfl-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable";
-    }
-    leaf pilot-pn-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable";
-    }
-    leaf maxfap-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}} . If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable";
-    }
-    leaf max-hrpd-beacon-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPower}}. If {{true}} the FAP self-configures the value. If {{false}} The ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.MaxHRPDBeaconTxPowerSelfConfigEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-a13-g {
-    description
-      "This object contains attributes related to A13 Session Transfer";
-    leaf color-code-to-uati104-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104NumberOfEntries";
-    }
-    leaf hrpd-subnet-to-ip-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIPNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-a13-color-code-to-uati104-g {
-    description
-      "HRPD ColorCode to UATI Mapping Table number of entries.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.Alias";
-    }
-    leaf color-code {
-      type uint16 {
-        range "0..256";
-      }
-      description
-        "Color Code mapped to UATI104 in the following field";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.ColorCode";
-    }
-    leaf uati104 {
-      type binary {
-        length "0..13";
-      }
-      description
-        "The UATI104 of the AT that accesses with the ColorCode field";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.UATI104";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip-g {
-    description
-      "This object contains attributes related to A13 Session Transfer";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.Alias";
-    }
-    leaf hrpd-subnet-length {
-      type uint8 {
-        range "1..104";
-      }
-      units "bits";
-      config false;
-      description
-        "The number of MSBs (in {{units}}) in the following field that is part of HRPDSubnet";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.HRPDSubnetLength";
-    }
-    leaf hrpd-subnet {
-      type binary {
-        length "0..13";
-      }
-      config false;
-      description
-        "The {{param|HRPDSubnetLength}} MSBs of this field contain the HRPD subnet that maps to the IP address in the following field";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.HRPDSubnet";
-    }
-    leaf a13-ip-address {
-      type inet:ip-address;
-      description
-        "This field contains the IP address of A13 endpoint that corresponds to the HRPD subnet";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.A13IPAddress";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.";
-  }
-
-  grouping access-mgmt-g {
-    description
-      "This object contains parameters relating to Access Management for the different radio technologies.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.";
-  }
-
-  grouping access-mgmt-umts-g {
-    description
-      "This object contains parameters relating to Access Management for UMTS FAP (ACL, CSG, LIPA). Closed Subscriber Group (CSG) service behavior is specified in {{bibref|3GPP-TS.22.011}}. Note: Cell barring and 3GPP access class parameters are contained in {{object|.CellConfig.UMTS.RAN.CellRestriction.}} (UMTS FAP).";
-    leaf access-mode {
-      type enumeration {
-        enum "open access" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Open Access";
-        }
-        enum "closed access" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Closed Access";
-        }
-        enum "hybrid access" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Hybrid Access";
-        }
-      }
-      default "open access";
-      config false;
-      description
-        "Indicates the type of access mode the FAP operates in. {{enum}} When the value is not {{enum|Open Access}} non-CSG-capable UE are handled according to {{param|NonCSGUEAccessDecision}}. Note: This parameter controls the setting of the CSGindicator bit, specified in MIB in {{bibref|3GPP-TS.25.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode";
-    }
-    leaf non-csgue-access-decision {
-      type enumeration {
-        enum "local" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - Local";
-        }
-        enum "query fap-gw" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - Query FAPGW";
-        }
-        enum "by core" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - By Core";
-        }
-      }
-      default "local";
-      config false;
-      description
-        "Indicates how the access decision is made for non-CSG-capable UE. Parameter is ignored when {{param|AccessMode}} is {{enum|Open Access|AccessMode}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision";
-    }
-    leaf csg-membership-determined-locally {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Indicates how the access decision is made for CSG-capable UE. Parameter is ignored when {{param|AccessMode}} is {{enum|Open Access|AccessMode}}. If {{true}} access decision is determined the same way as for {{param|NonCSGUEAccessDecision}}. (E.g. if core network doesn't (yet) support full CSG functionality.) If {{false}} FAP always allows access for CSG-capable UE. CSG enforcement is performed by MSC/SGSN (with support from HSS), or by FGW. {{bibref|3GPP-TS.22.011}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.CSGMembershipDeterminedLocally";
-    }
-    leaf max-u-es-served {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent UEs allowed at a cell. Valid for any {{param|AccessMode}}. A value of -1 allows an unlimited number of concurrent UEs up to the limit of FAP capacity. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxUEsServed";
-    }
-    leaf max-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent CSG member UEs allowed at a hybrid or closed cell. A value of -1 allows an unlimited number of CSG members up to the limit of FAP capacity. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls. {{bibref|3GPP-TS.22.011}}, {{bibref|3GPP-TS.22.220}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxCSGMembers";
-    }
-    leaf max-non-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurerent non-CSG member UEs allowed at a hybrid cell. Valid only if {{param|AccessMode}} is {{enum|Hybrid Access|AccessMode}}. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxNonCSGMembers";
-    }
-    leaf max-resource-non-csg-members {
-      type uint8 {
-        range "0..100";
-      }
-      config false;
-      description
-        "Maximum percentage of physical resource that can be assigned to non-CSG members aggregately at one time. In UMTS FAP, this applies to RB resource.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxResourceNonCSGMembers";
-    }
-    leaf hnb-name {
-      type string {
-        length "0..48";
-      }
-      config false;
-      description
-        "Home NodeB name. An operator-defined string that is broadcast by a CSG cell or a hybrid cell and displayed on the UE for the purpose of manual cell selection or indication that the UE is camped on the cell as specified in {{bibref|3GPP-TS.22.220|Section 5.4.2}}. Corresponds to parameter 'hnb-Name' specified in SIB20 in {{bibref|3GPP-TS.25.331|Section 10.2.48.8.23}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.HNBName";
-    }
-    leaf csgid {
-      type uint32 {
-        range "0..134217727";
-      }
-      config false;
-      description
-        "Defines the Closed Subscriber Group of the Access Control List. The UMTS FAP broadcasts this CSG ID in SIB3 depending on the AccessMode. The LTE FAP broadcasts this in SIB1, and corresponds to parameter csg-Identity in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.CSGID";
-    }
-    leaf-list access-control-list {
-      type string {
-        length "0..15";
-      }
-      config false;
-      max-elements "1024";
-      description
-        "{{list}} Each entry is an IMSI.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessControlList";
-    }
-    leaf max-member-detail-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.AccessMgmt.UMTS.MemberDetail.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxMemberDetailEntries";
-    }
-    leaf member-detail-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetailNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.";
-  }
-
-  grouping access-mgmt-umts-member-detail-g {
-    description
-      "Details for CSG and Non-CSG members.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the MemberDetail entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.Alias";
-    }
-    leaf imsi {
-      type string {
-        length "0..15";
-      }
-      description
-        "International Mobile Subscriber Identity of the UE.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.IMSI";
-    }
-    leaf msisdn {
-      type string {
-        length "0..15";
-      }
-      config false;
-      description
-        "Mobile Station International Subscriber Identity Number. Set to {{empty}} if unknown.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.MSISDN";
-    }
-    leaf membership-expires {
-      type yang:date-and-time;
-      config false;
-      description
-        "Time when the ACL membership expires. An Unknown Time value, as defined in {{bibref|TR-106a2|Section 3.2}}, indicates that the membership doesn't expire. Upon expiry the FAP MUST remove the IMSI from the {{param|.AccessMgmt.UMTS.AccessControlList}}, but the entry in {{object|.AccessMgmt.UMTS.MemberDetail.{i}.}} remains. {{bibref|3GPP-TS.22.011}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.MembershipExpires";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.";
-  }
-
-  grouping access-mgmt-umts-local-ip-access-g {
-    description
-      "Local IP access for UMTS FAP.";
-    leaf enable {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enables/disables the Local IP Access (LIPA) functionality.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.Enable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-lte-g {
-    description
-      "This object contains parameters relating to Access Management, as defined in {{bibref|3GPP-TS.32.592}}/ Closed Subscriber Group (CSG) service behavior is specified in {{bibref|3GPP-TS.22.011}}. Note: Cell barring and 3GPP access class parameters are contained in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-    leaf access-mode {
-      type enumeration {
-        enum "open access" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Open Access";
-        }
-        enum "closed access" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Closed Access";
-        }
-        enum "hybrid access" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Hybrid Access";
-        }
-      }
-      default "open access";
-      config false;
-      description
-        "Indicates the type of access mode the FAP operates in. {{enum}} Note: This parameter controls the setting of the CSGindicator bit, specified in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode";
-    }
-    leaf max-u-es-served {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent UEs allowed at a cell. Valid for any {{param|AccessMode}}. A value of -1 allows an unlimited number of concurrent UEs up to the limit of FAP capacity. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxUEsServed";
-    }
-    leaf max-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent CSG member UEs allowed at a hybrid or closed cell. A value of -1 allows an unlimited number of CSG members up to the limit of FAP capacity. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls. {{bibref|3GPP-TS.22.011}}, {{bibref|3GPP-TS.22.220}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxCSGMembers";
-    }
-    leaf max-non-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurerent non-CSG member UEs allowed at a hybrid cell. Valid only if {{param|AccessMode}} is {{enum|Hybrid Access|AccessMode}}. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxNonCSGMembers";
-    }
-    leaf max-resource-non-csg-members {
-      type uint8 {
-        range "0..100";
-      }
-      config false;
-      description
-        "Maximum percentage of physical resource that can be assigned to non-CSG members aggregately at one time. This applies to PDSCH physical resource blocks.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxResourceNonCSGMembers";
-    }
-    leaf csgid {
-      type uint32 {
-        range "0..134217727";
-      }
-      config false;
-      description
-        "Defines the Closed Subscriber Group of the Access Control List. The LTE FAP broadcasts this in SIB1, and corresponds to parameter csg-Identity in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.CSGID";
-    }
-    leaf hnb-name {
-      type string {
-        length "0..48";
-      }
-      config false;
-      description
-        "Home NodeB name. An operator-defined string that is broadcast by a CSG cell or a hybrid cell and displayed on the UE for the purpose of manual cell selection or indication that the UE is camped on the cell as specified in {{bibref|3GPP-TS.22.220|Section 5.4.2}}. Corresponds to parameter 'hnb-Name' specified in SIB9 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.HNBName";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.";
-  }
-
-  grouping access-mgmt-lte-local-ip-access-g {
-    description
-      "Local IP access for LTE FAP.";
-    leaf enable {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enables/disables the Local IP Access (LIPA) functionality.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.Enable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-cdma2000-g {
-    description
-      "This object contains configurable and observable attributes related to CDMA2000 Access and Admission Control of the FAP.";
-    leaf access-mode {
-      type uint8 {
-        range "0 | 1 | 3";
-      }
-      config false;
-      description
-        "Defines the access control mode of FAP. Allowed modes are Open, Closed, and Signaling Association (refer to {{bibref|3GPP2-A.S0024}}). AccessMode 2 (Hybrid) is not applicable to CDMA2000 FAPs. 0- Open,1-Closed, 2-Reserved, 3-Signaling Association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.AccessMode";
-    }
-    leaf max-total-active-calls-allowed {
-      type uint16 {
-        range "1..1024";
-      }
-      config false;
-      description
-        "Total number of active calls allowed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MaxTotalActiveCallsAllowed";
-    }
-    leaf access-control-list {
-      type string {
-        length "0..1024";
-      }
-      config false;
-      description
-        "{{list}} (maximum item length 15). Each entry is an IMSI.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.AccessControlList";
-    }
-    leaf max-member-detail-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.AccessMgmt.CDMA2000.MemberDetail.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MaxMemberDetailEntries";
-    }
-    leaf member-detail-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetailNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.";
-  }
-
-  grouping access-mgmt-cdma2000-member-detail-g {
-    description
-      "At most one enabled entry in this table can exist with a given value for IMSI and HRPDIdentifierValue. The IMSI field may be empty.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.Alias";
-    }
-    leaf imsi {
-      type string {
-        length "0..15";
-      }
-      description
-        "International Mobile Subscriber Identity of the UE.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.IMSI";
-    }
-    leaf hrpd-identifier-type {
-      type int64;
-      config false;
-      description
-        "Type of identifier used for the HRPD AT. 0-invalid 1-ESN 2-MEID 3-A12NAI. If IMSI in this record is valid, then this attribute is set to 0.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.HRPDIdentifierType";
-    }
-    leaf hrpd-identifier-value {
-      type string {
-        length "0..128";
-      }
-      config false;
-      description
-        "The value of this attribute depends on {{param|HRPDIdentifierType}}. ESN and MEID shall be defined as Hex.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.HRPDIdentifierValue";
-    }
-    leaf membership-expires {
-      type yang:date-and-time;
-      config false;
-      description
-        "The time that the current ACL membership expires.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.MembershipExpires";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.";
-  }
-
-  grouping access-mgmt-cdma2000-local-ip-access-g {
-    description
-      "Local IP access support as defined in 3GPP2";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-cdma2000-local-ip-access-hrpd-g {
-    description
-      "Local IP access support as defined in 3GPP2";
-    leaf filter-type {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Value of '0' indicates that the FAP shall allow only IP packets with destination address matching the local IP subnet on Local IP access interface. Value of '1' indicates that the FAP shall allow any IP packets with destination address matching either the local IP subnet or the subnets listed in Local IP egress filter parameter on Local IP access interface. Value of '2' indicates that the FAP shall allow any IP packets with destination addresses that do not match the Local IP egress filter parameter on Local IP access interface.Value of '3' indicates that the FAP shall allow any IP packets on the local IP address interface.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterType";
-    }
-    leaf filter-in-use {
-      type string {
-        length "0..256";
-      }
-      description
-        "This parameter is set to the IPCP Vendor Specific Option which the FAP uses to send Local IP access packet filter on AN-PPP interface.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterInUse";
-    }
-    leaf egress-filter-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilterNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.";
-  }
-
-  grouping access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter-g {
-    description
-      "HRPD LIPA Egress Filter Table entries.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Alias";
-    }
-    leaf subnet {
-      type inet:ipv4-address;
-      description
-        "The IP subnet of the egress filter to be installed to the AT. The meaning of this field depends on the {{param|.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterType}} field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Subnet";
-    }
-    leaf subnet-mask {
-      type uint8 {
-        range "0..32";
-      }
-      description
-        "The length of the IP subnetmask associated with the IP subnet in the previous field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.SubnetMask";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.";
-  }
-
-  grouping access-mgmt-legacy-g {
-    description
-      "This object contains configurable and observable attributes related to Access and Admission Control of the FAP, which are not not covered by 3GPP and 3GPP2 specifications.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.";
-  }
-
-  grouping access-mgmt-legacy-local-ip-access-g {
-    description
-      "Old Local IP access object, included on special request.";
-    leaf enable {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enables/disables the Local IP Access (LIPA) functionality.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Enable";
-    }
-    leaf max-rules-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.MaxRulesEntries";
-    }
-    leaf rule-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.RuleNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-legacy-local-ip-access-rule-g {
-    description
-      "Policy for selecting traffic for local IP access. Originated traffic will be NAT'ed. The rule is bi-directional, i.e. return traffic is allowed. Rules do NOT affect traffic to/from the FAP itself (such as TR-069 or control). The rules are applied to the mobile station data traffic (PS-domain) via deep packet inspection or similar method.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the forwarding entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Alias";
-    }
-    leaf dest-ip-address {
-      type inet:ip-address;
-      description
-        "Destination IP Address. {{empty}} indicates no destination address is specified. An entry for which {{param}} and {{param|DestSubnetMask}} are both {{empty}} is a default route.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.DestIPAddress";
-    }
-    leaf dest-subnet-mask {
-      type inet:ip-address;
-      description
-        "Destination subnet mask (IPv4) or prefix (IPv6). {{empty}} indicates no destination subnet mask or prefix is specified. If a destination subnet mask or prefix is specified, {{param}} is ANDed with the destination address before comparing with {{param|DestIPAddress}}. Otherwise, the full destination address is used as-is. An entry for which {{param|DestIPAddress}} and {{param}} are both {{empty}} is a default route.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.DestSubnetMask";
-    }
-    leaf protocol {
-      type int64;
-      description
-        "IP Protocol Identifier. -1 matches any protocol.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Protocol";
-    }
-    leaf action {
-      type enumeration {
-        enum "tunnel" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action - Tunnel";
-        }
-        enum "napt" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action - NAPT";
-        }
-      }
-      config false;
-      description
-        "Action to be taken for traffic matching this rule.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action";
-    }
-    leaf interface {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "Specifies the egress interface when {{param|Action}} is set to {{enum|NAPT|Action}}. {{reference}} layer-3 connection object. Example: InternetGatewayDevice.LANDevice.{i}.LANEthernetInterfaceConfig.{i}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Interface";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.";
-  }
-
-  grouping cell-config-g {
-    description
-      "This object contains parameters relating to configuring the FAP.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.";
-  }
-
-  grouping umts-g {
-    description
-      "This object contains parameters relating to configuring UMTS system specific information.";
-    leaf tunnel-instance {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "This is the reference to the IPsec tunnel instance used by the UMTS FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.TunnelInstance";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.";
-  }
-
-  grouping umts-cn-g {
-    description
-      "This object contains parameters relating to configuring UMTS CN.";
-    leaf plmn-type {
-      type enumeration {
-        enum "gsm-map" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType - GSM-MAP";
-        }
-        enum "ansi-41" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType - ANSI-41";
-        }
-      }
-      config false;
-      description
-        "Type of Public Land Mobile Network (PLMN).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNID";
-    }
-    leaf-list equiv-plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each item is a PLMNID. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.EquivPLMNID";
-    }
-    leaf sac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Service Area Code (SAC) {{bibref|3GPP-TS.23.003}}. The concatenation of PLMN ID (MCC+MNC), LAC, and SAC uniquely identifies the Service Area ID (SAI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.SAC";
-    }
-    leaf broadcast-sac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Service Area Code (SAC) for broadcast. The format of this parameter is the same with {{param|SAC}}, and it uniquely identifies the Service Area ID (SAI) for Earthquake and Tsunami Warning Services (ETWS) {{bibref|3GPP-TS.25.469|Section 9.1.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.BroadcastSAC";
-    }
-    leaf-list lacrac {
-      type string;
-      config false;
-      max-elements "256";
-      description
-        "{{list}} Each item is a LAC/RAC combination expressed in the following format: :<LAC or LACrange>':'<RAC or RACrange> Where LAC and RAC are single values, while LACrange and RACrange are inclusive and can be expressed in the following format: :<Start-value>\"..\"<End-value> Location Area Code (LAC) consists of up to 5 numerical characters. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}. Routing Area Code (RAC) consists of up to 3 numerical characters. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}. The FAP is to select one LAC and RAC from the combination(s) expressed in this parameter for use in {{param|LACInUse}} and {{param|RACInUse}} respectively. If a LAC occurs more than once in the list, this shall not increase the chance that it is selected over other LAC values in the list. The following are examples of the valid LACRAC combination formats: :\"64000:210\" ::(one list item with single value for LAC and RAC) :\"64000..64100:210, 64101:211\" ::(two list items, first item has a LAC range) :\"64000:210..214, 64001:215..219\" ::(two list items, both items have a RAC range for a specific LAC value) :\"64000..64100:210..214\" ::(one list item both have a LAC range and a RAC range)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.LACRAC";
-    }
-    leaf lac-in-use {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "The LAC being used by the FAP. Self-configuration for LAC is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|LACRAC}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first LAC value in {{param|LACRAC}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.LACInUse";
-    }
-    leaf rac-in-use {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "The RAC being used by the FAP. Self-configuration for RAC is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|LACRAC}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first RAC value in {{param|LACRAC}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.RACInUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.";
-  }
-
-  grouping umts-cn-cs-domain-g {
-    description
-      "This object contains parameters relating to configuring the CS domain of the UMTS CN.";
-    leaf t3212 {
-      type uint32 {
-        range "0..91800";
-      }
-      units "seconds";
-      config false;
-      description
-        "T3212 timeout value specified in {{units}} {{bibref|3GPP-TS.24.008|section 10.5.1.12.2}}. The values are implemented by steps of 360 {{units}}, which aligns with values in decihours in {{bibref|3GPP-TS.24.008}}. The value of 0 is used for infinite timeout value i.e. periodic updating shall not be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.T3212";
-    }
-    leaf imsi-attach-detach-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates the UE behavior regarding IMSI attach/detach procedure to the CN {{bibref|3GPP-TS.24.008}}. If {{true}} UE SHALL apply IMSI attach and detach procedure If {{false}} UE SHALL NOT apply IMSI attach and detach procedure";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.IMSIAttachDetachEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.";
-  }
-
-  grouping umts-cn-ps-domain-g {
-    description
-      "This object contains parameters relating to configuring the PS domain of the UMTS CN.";
-    leaf network-mode-operation-combined {
-      type boolean;
-      config false;
-      description
-        "Network Mode of Operation of the CN. {{bibref|3GPP-TS.23.060}} {{bibref|3GPP-TS.24.008}} If {{true}} (Network Mode of Operation II) Combined procedures between CS and PS domain are not supported (i.e. Gs interface is not present). If {{false}} (Network Mode of Operation I) Combined procedures between CS and PS domain are supported (i.e. Gs interface is present).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PSDomain.NetworkModeOperationCombined";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PSDomain.";
-  }
-
-  grouping umts-ran-g {
-    description
-      "This object contains parameters relating to the RAN-level configuration.";
-    leaf-list ura-list {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      min-elements 1;
-      max-elements "50";
-      description
-        "{{list}} Each item is a URA (UTRAN Registration Area) to which the FAP belongs. The order of the URA values has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.URAList";
-    }
-    leaf ura-in-use {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "The URA being used by the FAP. Self-configuration for URA is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for URA is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|URAList}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first URA value in {{param|URAList}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.URAInUse";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID allocated to the FAP. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RNCID";
-    }
-    leaf cell-id {
-      type uint32 {
-        range "0..268435455";
-      }
-      config false;
-      description
-        "Cell Identity. {{bibref|3GPP-TS.25.401|Section 6.1.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellID";
-    }
-    leaf t-rat-c {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Guard period in {{units}} before sending a \"RANAP:RESET ACKNOWLEDGE\" message towards the Femto GW. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRatC";
-    }
-    leaf t-raf-c {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} that the FAP SHOULD wait for receiving a \"RANAP:RESET ACKNOWLEDGE\" message from the Femto GW after sending a Reset to the Femto GW. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRafC";
-    }
-    leaf n-raf-c {
-      type uint64 {
-        range "1..max";
-      }
-      config false;
-      description
-        "Maximum number for RESET procedure that can be repeated in FAP. {{bibref|3GPP-TS.25.413|Section 8.26.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NRafC";
-    }
-    leaf tig-or {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Amount of time in {{units}} used to determine when the additional level of traffic reduction in CN overload SHOULD take place. While this timer is running all OVERLOAD messages or signalling pointing to congested information received by the FAP are ignored. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TigOR";
-    }
-    leaf tin-tr {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Amount of time in {{units}} used to determine when the CN overload can be considered cleared. While this timer is running, the FAP is not allowed to increase traffic. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TinTR";
-    }
-    leaf t-data-fwd {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} for Data Forwarding at FAP. Timer is started when a \"RANAP:SRNS Data Forward Command\" message (or a \"RANAP:Relocation Command\" message) is received. At timer expiry the \"SRNS Data Forwarding\" procedure is completed. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TDataFwd";
-    }
-    leaf t-reloc-prep {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} for the Relocation Preparation procedure. Timer is started when a \"RANAP:Relocation Required\" message is sent. Timer is stopped when a \"RANAP:Relocation Command\" or a \"RANAP:Relocation Preparation Failure\" message is received. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRelocPrep";
-    }
-    leaf t-reloc-overall {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} for protection of the overall Relocation procedure. Timer is started when a \"RANAP:Relocation Command\" message is received. Timer is stopped when a \"RANAP:Iu Release Command\" is received or the relocation procedure is cancelled. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRelocOverall";
-    }
-    leaf hnbid-realm {
-      type string {
-        length "0..182";
-      }
-      config false;
-      description
-        "The \"realm\" portion of the HNB-ID where HNB-ID is defined in {{bibref|3GPP-TS.25.469}} and is shown as follows: 0<IMSI>@<realm> Or 1<OUI>-<SerialNumber>@<realm> The other identifiers before \"@\" are device dependent values. Both <OUI> and <SerialNumber> are defined in {{bibref|TR-069a2|Table 36}}. <IMSI> is obtained from the USIM if it is equipped in the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HNBIDRealm";
-    }
-    leaf hs-flag {
-      type boolean;
-      config false;
-      description
-        "Enables/disables the HSDPA function in the FAP. If {{true}} HSDPA is enabled (this is equivalent to a \"1\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{false}} HSDPA is disabled (this is equivalent to a \"0\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HSFlag";
-    }
-    leaf hs-enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables HSDPA in the cell. If {{true}} HSDPA is enabled (this is equivalent to a \"1\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{false}} HSDPA is not enabled (this is equivalent to a \"0\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{param|HSFlag}} is {{false}} then this value MUST be {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HSEnable";
-    }
-    leaf num-of-hspdsc-hs {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "The number of codes at the defined spreading factor (SF=16), within the complete code tree. {{bibref|3GPP-TS.32.642|Section 6.3.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NumOfHSPDSCHs";
-    }
-    leaf num-of-hsscc-hs {
-      type uint64;
-      config false;
-      description
-        "The number of HS-SCCHs for one cell. {{bibref|3GPP-TS.32.642|Section 6.3.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NumOfHSSCCHs";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.";
-  }
-
-  grouping umts-ran-csg-g {
-    description
-      "This object contains parameters relating to the Closed Subscriber Group (CSG).";
-    leaf csg-indicator {
-      type boolean;
-      description
-        "The CSG-indicator Information Element (IE) in the Master Information Block reflects the access mode of the CSG cell. It is hence dependent on the value of {{param|.AccessMgmt.UMTS.AccessMode}}. If {{true}} the CSG-indicator IE is present, reflecting access to the CSG cell is closed. If {{false}} the CSG-indicator IE is absent, reflecting access to the CSG cell is not closed. {{bibref|3GPP-TS.25.331|Section 10.2.48.8.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGIndicator";
-    }
-    leaf-list uarfcndl-list {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      max-elements "128";
-      description
-        "{{list}} Each item is a UTRA Absolute Radio Frequency Channel Number (UARFCN) in the DL direction dedicated to the CSG cells. {{param}} is broadcast in SIB 11bis {{bibref|3GPP-TS.25.331|Section 10.2.48.8.14a}}. The corresponding UTRA Absolute Radio Frequency Channel Number (UARFCN) in the UL direction is derived based on the fixed offset applicable for the frequency band.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.UARFCNDLList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.";
-  }
-
-  grouping umts-ran-csg-csgpsc-split-info-g {
-    description
-      "This object contains parameters relating to the Primary Scrambling Code (PSC) split information for the CSG. Defined in SIB3/11bis {{bibref|3GPP-TS.25.331|Section 10.3.2.8 and 10.3.2.9}}.";
-    leaf start-psc-range1-coefficient {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "The value of this Information Element (IE) multiplied by 8 specifies the start PSC value of the first PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.StartPSCRange1Coefficient";
-    }
-    leaf number-of-ps-cs {
-      type enumeration {
-        enum "5" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 5";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 10";
-        }
-        enum "15" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 15";
-        }
-        enum "20" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 20";
-        }
-        enum "30" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 30";
-        }
-        enum "40" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 40";
-        }
-        enum "50" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 50";
-        }
-        enum "64" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 64";
-        }
-        enum "80" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 80";
-        }
-        enum "120" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 120";
-        }
-        enum "160" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 160";
-        }
-        enum "256" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 256";
-        }
-        enum "alltherest" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - alltherest";
-        }
-        enum "spare3" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare3";
-        }
-        enum "spare2" {
-          value 15;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare2";
-        }
-        enum "spare1" {
-          value 16;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare1";
-        }
-      }
-      config false;
-      description
-        "This Information Element (IE) specifies the number of PSCs reserved for CSG cells in each PSC range.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs";
-    }
-    leaf psc-range2-offset {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "If this Information Element (IE) is included, the UE shall calculate the second PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}. If this Information Element (IE) is not included, the UE shall consider the second PSC range to be not present.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.PSCRange2Offset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.";
-  }
-
-  grouping umts-ran-cell-selection-g {
-    description
-      "This object contains parameters related to cell selection and reselection.";
-    leaf quality-measure-cpich {
-      type enumeration {
-        enum "ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH - Ec/No";
-        }
-        enum "rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH - RSCP";
-        }
-      }
-      config false;
-      description
-        "Which mechanism to use when doing CPICH quality measurements. {{bibref|3GPP-TS.25.331|Section 10.3.7.47}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH";
-    }
-    leaf qqual-min {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Minimum required quality measure, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3 and Section 10.3.2.4}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QqualMin";
-    }
-    leaf qqual-min-offset {
-      type uint8 {
-        range "1..16";
-      }
-      units "dB";
-      default "1";
-      config false;
-      description
-        "Offset for {{param|QqualMin}} specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QqualMinOffset";
-    }
-    leaf q-rx-lev-min {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Minimum required RX level in the cell, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only odd values are valid, use of an even value MUST be rejected by the CPE. This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QRxLevMin";
-    }
-    leaf delta-q-rx-lev-min {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Delta for the minimum required RX level in the cell, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3 and Section 10.3.2.4}} The actual value of {{param|QRxLevMin}} = {{param|QRxLevMin}} + {{param}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.DeltaQRxLevMin";
-    }
-    leaf q-rx-lev-min-offset {
-      type uint8 {
-        range "2 | 4 | 6 | 8 | 10 | 12 | 14 | 16";
-      }
-      units "dB";
-      default "2";
-      config false;
-      description
-        "Offset for {{param|QRxLevMin}}, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QRxLevMinOffset";
-    }
-    leaf q-hyst1s {
-      type uint8 {
-        range "0..40";
-      }
-      config false;
-      description
-        "GSM and FDD Cell reselection hysteresis 1. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only even values are valid, use of an odd value MUST be rejected by the CPE.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHyst1s";
-    }
-    leaf q-hyst2s {
-      type uint8 {
-        range "0..40";
-      }
-      config false;
-      description
-        "FDD Cell reselection hysteresis 2. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only even values are valid, use of an odd value MUST be rejected by the CPE. This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored. By default when {{param|QHyst1s}} is set and {{param}} is not, then the value for {{param}} SHOULD match the value of {{param|QHyst1s}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHyst2s";
-    }
-    leaf t-reselections {
-      type uint8 {
-        range "0..31";
-      }
-      units "seconds";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. A UE triggers the reselection of a new cell if the cell reselection criteria are fulfilled during the time interval in {{units}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TReselections";
-    }
-    leaf s-intrasearch {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for intra-frequency measurements, and for the HCS measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SIntrasearch";
-    }
-    leaf s-intersearch {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for inter-frequency measurements, and for the HCS measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SIntersearch";
-    }
-    leaf s-search-hcs {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for intrafrequency and interfrequency measurement rules in HCS. Below this limit in the serving cell, the UE initiates measurements of all intrafrequency and interfrequency neighbouring cells of the serving cell. Only odd values are valid, use of an even value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SSearchHCS";
-    }
-    leaf s-search-rat {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the RAT (GSM) specific threshold for inter-RAT measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SSearchRAT";
-    }
-    leaf shcsrat {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the RAT (GSM) specific threshold for inter-RAT measurement rules in HCS. Only odd values are valid, use of an even value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SHCSRAT";
-    }
-    leaf s-limit-search-rat {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for skipping inter-RAT measurement rules in HCS. Above this RAT (GSM) specific threshold in the serving UTRA cell, the UE does not need to perform any inter-RAT measurements. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SLimitSearchRAT";
-    }
-    leaf non-hcstcr-max {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - not used";
-        }
-        enum "30" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 30";
-        }
-        enum "60" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 60";
-        }
-        enum "120" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 120";
-        }
-        enum "180" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 180";
-        }
-        enum "240" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 240";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the duration in seconds for evaluating the allowed amount of cell reselections. If the number of cell reselections during the time period defined by {{param}} exceeds {{param|NonHCSNCR}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax";
-    }
-    leaf non-hcsncr {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the maximum number of cell reselections. If the number of cell reselections during the {{param|NonHCSTCRMax}} time period exceeds the value of {{param}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSNCR";
-    }
-    leaf non-hcstcr-max-hyst {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - not used";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 10";
-        }
-        enum "20" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 20";
-        }
-        enum "30" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 30";
-        }
-        enum "40" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 40";
-        }
-        enum "50" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 50";
-        }
-        enum "60" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 60";
-        }
-        enum "70" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 70";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the cell reselection hysteresis for reverting from UE high-mobility measurements. The additional time period in seconds before UE reverts to low-mobility measurements. When the number of cell reselections during the time period defined by {{param|TCRMax}} no longer exceeds {{param|NCR}}, UE continues measurements during the time period defined by {{param|TCRMaxHyst}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst";
-    }
-    leaf qhcs {
-      type uint8 {
-        range "0..99";
-      }
-      default "0";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the quality threshold levels for applying prioritised hierarchical cell reselection. {{bibref|3GPP-TS.25.331|Section 10.3.7.12 and Section 10.3.7.54a}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHCS";
-    }
-    leaf use-of-hcs {
-      type boolean;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Indicate whether HCS is used in this cell or not. {{bibref|3GPP-TS.25.331|Section 10.3.7.47}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.UseOfHCS";
-    }
-    leaf hcs-prio {
-      type uint8 {
-        range "0..7";
-      }
-      default "0";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the HCS priority of this cell. {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.HCSPrio";
-    }
-    leaf tcr-max {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - not used";
-        }
-        enum "30" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 30";
-        }
-        enum "60" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 60";
-        }
-        enum "120" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 120";
-        }
-        enum "180" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 180";
-        }
-        enum "240" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 240";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the duration in seconds for evaluating the allowed amount of cell reselections. If the number of cell reselections during the time period defined by {{param}} exceeds {{param|NCR}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax";
-    }
-    leaf ncr {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the maximum number of cell reselections. If the number of cell reselections during the {{param|TCRMax}} time period exceeds the value of {{param}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NCR";
-    }
-    leaf tcr-max-hyst {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - not used";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 10";
-        }
-        enum "20" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 20";
-        }
-        enum "30" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 30";
-        }
-        enum "40" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 40";
-        }
-        enum "50" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 50";
-        }
-        enum "60" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 60";
-        }
-        enum "70" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 70";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the cell reselection hysteresis for reverting from UE high-mobility measurements. The additional time period in seconds before UE reverts to low-mobility measurements. When the number of cell reselections during the time period defined by {{param|TCRMax}} no longer exceeds {{param|NCR}}, UE continues measurements during the time period defined by {{param}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst";
-    }
-    leaf ue-tx-pwr-max-rach {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the maximum transmit power level, specified in {{units}}, that an UE MAY use when accessing the cell on RACH. Used to calculate Pcompensation, which is: max(UE_TXPWR_MAX_RACH - P_MAX, 0), where UE_TXPWR_MAX_RACH is {{param}} and P_MAX is the max transmit power for a UE. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} {{bibref|3GPP-TS.25.304|Section 5.2.3}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.UETxPwrMaxRACH";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.";
-  }
-
-  grouping umts-ran-rrc-timers-g {
-    description
-      "This object contains parameters related to miscellaneous RRC timers and constants.";
-    leaf t300 {
-      type uint16 {
-        range "100..8000";
-      }
-      units "milliseconds";
-      default "1000";
-      config false;
-      description
-        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T300";
-    }
-    leaf t301 {
-      type uint16 {
-        range "100..8000";
-      }
-      units "milliseconds";
-      default "2000";
-      config false;
-      description
-        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T301";
-    }
-    leaf t302 {
-      type uint16 {
-        range "100..8000";
-      }
-      units "milliseconds";
-      default "4000";
-      config false;
-      description
-        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T302";
-    }
-    leaf t304 {
-      type uint16 {
-        range "100 | 200 | 400 | 1000 | 2000";
-      }
-      units "milliseconds";
-      default "2000";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T304";
-    }
-    leaf t305 {
-      type int64;
-      units "minutes";
-      default "30";
-      config false;
-      description
-        "Timer measured in {{units}}. -1 indicates an unbounded timer in which there is no update. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T305";
-    }
-    leaf t307 {
-      type uint8 {
-        range "5 | 10 | 15 | 20 | 30 | 40 | 50";
-      }
-      units "seconds";
-      default "30";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T307";
-    }
-    leaf t308 {
-      type uint16 {
-        range "40 | 80 | 160 | 320";
-      }
-      units "milliseconds";
-      default "160";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T308";
-    }
-    leaf t309 {
-      type uint8 {
-        range "1..8";
-      }
-      units "seconds";
-      default "5";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T309";
-    }
-    leaf t310 {
-      type uint16 {
-        range "40 | 80 | 120 | 160 | 200 | 240 | 280 | 320";
-      }
-      units "milliseconds";
-      default "160";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T310";
-    }
-    leaf t311 {
-      type uint16 {
-        range "250 | 500 | 750 | 1000 | 1250 | 1500 | 1750 | 2000";
-      }
-      units "milliseconds";
-      default "2000";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T311";
-    }
-    leaf t312 {
-      type uint8 {
-        range "0..15";
-      }
-      units "seconds";
-      default "1";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T312";
-    }
-    leaf t313 {
-      type uint8 {
-        range "0..15";
-      }
-      units "seconds";
-      default "3";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T313";
-    }
-    leaf t314 {
-      type uint8 {
-        range "0 | 2 | 4 | 6 | 8 | 12 | 16 | 20";
-      }
-      units "seconds";
-      default "12";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T314";
-    }
-    leaf t315 {
-      type uint16 {
-        range "0 | 10 | 30 | 60 | 180 | 600 | 1200 | 1800";
-      }
-      units "seconds";
-      default "180";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T315";
-    }
-    leaf t316 {
-      type int64;
-      units "seconds";
-      default "30";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}. -1 indicates an unbounded timer in which there is no update.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T316";
-    }
-    leaf t317 {
-      type uint16 {
-        range "0 | 10 | 30 | 60 | 180 | 600 | 1200 | 1800";
-      }
-      units "seconds";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T317";
-    }
-    leaf n300 {
-      type uint8 {
-        range "0..7";
-      }
-      default "3";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N300";
-    }
-    leaf n301 {
-      type uint8 {
-        range "0..7";
-      }
-      default "2";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N301";
-    }
-    leaf n302 {
-      type uint8 {
-        range "0..7";
-      }
-      default "3";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N302";
-    }
-    leaf n304 {
-      type uint8 {
-        range "0..7";
-      }
-      default "2";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N304";
-    }
-    leaf n310 {
-      type uint8 {
-        range "0..7";
-      }
-      default "4";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N310";
-    }
-    leaf n312 {
-      type uint16 {
-        range "1..1000";
-      }
-      default "1";
-      config false;
-      description
-        "Counter. Only the following values are considered valid: 1, 2, 4, 10, 20, 50, 100, 200, 400, 600, 800, and 1000. Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N312";
-    }
-    leaf n313 {
-      type uint8 {
-        range "1 | 2 | 4 | 10 | 20 | 50 | 100 | 200";
-      }
-      default "20";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N313";
-    }
-    leaf n315 {
-      type uint16 {
-        range "1..1000";
-      }
-      default "1";
-      config false;
-      description
-        "Counter. Only the following values are considered valid: :1, 2, 4, 10, 20, 50, 100, 200, 400, 600, 800, and 1000. Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N315";
-    }
-    leaf wait-time {
-      type uint8 {
-        range "0..15";
-      }
-      units "seconds";
-      config false;
-      description
-        "Time period the UE has to wait before repeating the rejected procedure. This is an IE used when sending RRC connection reject, redirecting the requesting UE to another frequency. 0 indicates that repetition is not allowed. {{bibref|3GPP-TS.25.331|Section 10.3.3.50}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.WaitTime";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.";
-  }
-
-  grouping umts-ran-drx-g {
-    description
-      "This object contains parameters related to DRX parameters.";
-    leaf drx-cycle-length-coefficient-cs {
-      type uint8 {
-        range "6..9";
-      }
-      config false;
-      description
-        "Defines the DRX cycle length coefficient for CS domain to optimize paging in idle mode. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 10.3.3.6}}. {{param}} refers to 'k' in the formula as specified in {{bibref|3GPP-TS.25.304}}, Discontinuous reception. Used by the CN CS domain to count paging occasions for discontinuous reception in Idle Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for CN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.DRXCycleLengthCoefficientCS";
-    }
-    leaf drx-cycle-length-coefficient-ps {
-      type uint8 {
-        range "6..9";
-      }
-      config false;
-      description
-        "Defines the DRX cycle length coefficient for PS domain to optimize paging in idle mode. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 10.3.3.6}}. {{param}} refers to 'k' in the formula as specified in {{bibref|3GPP-TS.25.304}}, Discontinuous reception. Used by the CN PS domain to count paging occasions for discontinuous reception in Idle Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for CN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.DRXCycleLengthCoefficientPS";
-    }
-    leaf utrandrx-cycle-length-coefficient {
-      type uint8 {
-        range "3..9";
-      }
-      config false;
-      description
-        "Defines the DRX cycle length used by UTRAN to count paging occasions for discontinuous reception in Connected Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for UTRAN. {{param}} SHOULD be used by the UTRAN/FAP for UEs in Cell_PCH/Cell_FACH state. {{bibref|3GPP-TS.25.331|Section 10.3.3.49}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.UTRANDRXCycleLengthCoefficient";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.";
-  }
-
-  grouping umts-ran-power-control-g {
-    description
-      "This object contains parameters related to power control and RACH.";
-    leaf constant-value {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Used by the UE to calculate the initial output power, specified in {{units}}, on PRACH according to the open loop power control procedure. Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.11}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.ConstantValue";
-    }
-    leaf power-ramp-step-up {
-      type uint8 {
-        range "1..8";
-      }
-      units "dB";
-      config false;
-      description
-        "Used for the Uplink Common Channel. Defines the Power ramp setup, specified in {{units}}, on PRACH preamble when no acquisition indicator (AI) is detected by the UE. Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.54}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PowerRampStepUp";
-    }
-    leaf preamble-retrans-max {
-      type uint8 {
-        range "1..64";
-      }
-      config false;
-      description
-        "Used for the Uplink Common Channel. Defines the maximum number of preambles allowed in one preamble ramping cycle. PRACH Preamble Retrans Max is part of \"PRACH power offset\" which is part of \"PRACH system information list\". Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.54}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PreambleRetransMax";
-    }
-    leaf persistence-scale-factor {
-      type uint8 {
-        range "2..9";
-      }
-      config false;
-      description
-        "Persistence Scaling Factor for overload control. Parameter in SIB5. The value is the scaling factor multiplied by 10, e.g. 2 is a scaling factor of 0.2";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PersistenceScaleFactor";
-    }
-    leaf m-max {
-      type uint8 {
-        range "1..32";
-      }
-      config false;
-      description
-        "Maximum number of RACH preamble cycles. Defines how many times the PRACH preamble ramping procedure can be repeated before UE MAC reports a failure on RACH transmission to higher layers. Maximum number of RACH preamble cycles is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.MMax";
-    }
-    leaf nb01-min {
-      type uint8 {
-        range "0..50";
-      }
-      config false;
-      description
-        "RACH random back-off lower bound. {{param}} is the lower bound of the waiting time in 10 millisecond increments (i.e. 1 corresponds to 10 ms and 50 corresponds to 500 ms). {{param}} is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.NB01Min";
-    }
-    leaf nb01-max {
-      type uint8 {
-        range "0..50";
-      }
-      config false;
-      description
-        "RACH random back-off upper bound. {{param}} is the Upper bound of the waiting time in 10 millisecond increments (i.e. 1 corresponds to 10 ms and 50 corresponds to 500 ms). {{param}} is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.NB01Max";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.";
-  }
-
-  grouping umts-ran-cell-restriction-g {
-    description
-      "This object contains parameters related to cell access restriction.";
-    leaf cell-barred {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP is barred from service or not. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.CellBarred";
-    }
-    leaf intra-freq-cell-reselection-indicator {
-      type boolean;
-      config false;
-      description
-        "When {{param|CellBarred}} is {{true}}, this indicates whether the intra-frequency cell re-selection is allowed or not. {{param}} has no meaning if {{param|CellBarred}} is {{false}} and MUST be ignored in such cases. {{true}} means that intra-frequency cell re-selection is allowed. {{false}} means that intra-frequency cell re-selection is not allowed. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.IntraFreqCellReselectionIndicator";
-    }
-    leaf t-barred {
-      type uint16 {
-        range "10 | 20 | 40 | 80 | 160 | 320 | 640 | 1280";
-      }
-      units "seconds";
-      config false;
-      description
-        "The time period in {{units}} during which the UE is barred from accessing the FAP. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.TBarred";
-    }
-    leaf-list access-class-barred-list-cs {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "{{list}} Each entry is an Access Class that is barred from CS service. The order of the list has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.AccessClassBarredListCS";
-    }
-    leaf-list access-class-barred-list-ps {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "{{list}} Each entry is an Access Class that is barred from PS service. The order of the list has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.AccessClassBarredListPS";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP is reserved for operator use or not. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.CellReservedForOperatorUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.";
-  }
-
-  grouping umts-ran-intra-freq-meas-g {
-    description
-      "This object contains parameters relating to the intra-freq HO control parameters.";
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - CPICH RSCP";
-        }
-        enum "pathloss" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - Pathloss";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for intra-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.38}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the equivalent time constant of the low pass filter applied to the CPICH quality measurements, or {{enum|CPICH Ec/No|MeasurementQuantity}}. {{bibref|3GPP-TS.25.331|Section 8.6.7.2 and Section 10.3.7.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.FilterCoefficient";
-    }
-    leaf-list intra-frequency-event-identity {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each entry is an Event ID from the list of: 1a, 1b, 1c, 1d, 1e, 1f, 1g, 1h, 1i Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.34}} Since the FAP can determine this on its own, it might not be necessary to configure it.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.IntraFrequencyEventIdentity";
-    }
-    leaf-list triggering-condition2-event1a {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Active and Monitored";
-        }
-        enum "detected" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Detected";
-        }
-        enum "detected and monitored" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Detected and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1a. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a";
-    }
-    leaf-list triggering-condition1-event1b {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Active and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1b. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b";
-    }
-    leaf-list triggering-condition2-event1e {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Active and Monitored";
-        }
-        enum "detected" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Detected";
-        }
-        enum "detected and monitored" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Detected and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1e. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e";
-    }
-    leaf-list triggering-condition1-event1f {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Active and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1f. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f";
-    }
-    leaf reporting-range-event1a {
-      type uint8 {
-        range "0..29";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines a constant in the inequality criterion that needs to be satisfied for an Event 1a to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingRangeEvent1a";
-    }
-    leaf reporting-range-event1b {
-      type uint8 {
-        range "0..29";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines a constant in the inequality criterion that needs to be satisfied for an Event 1b to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingRangeEvent1b";
-    }
-    leaf weighting-factor-event1a {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.WeightingFactorEvent1a";
-    }
-    leaf weighting-factor-event1b {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.WeightingFactorEvent1b";
-    }
-    leaf report-deactivation-threshold-event1a {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Defines the maximum number of cells allowed in the \"active cell set\" for Event 1a to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportDeactivationThresholdEvent1a";
-    }
-    leaf reporting-amount-event1a {
-      type int64;
-      config false;
-      description
-        "Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingAmountEvent1a";
-    }
-    leaf reporting-amount-event1c {
-      type int64;
-      config false;
-      description
-        "Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1c The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingAmountEvent1c";
-    }
-    leaf reporting-interval-event1a {
-      type uint16 {
-        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingIntervalEvent1a";
-    }
-    leaf reporting-interval-event1c {
-      type uint16 {
-        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1c. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingIntervalEvent1c";
-    }
-    leaf hysteresis-event1a {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1a";
-    }
-    leaf hysteresis-event1b {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1b";
-    }
-    leaf hysteresis-event1c {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1c";
-    }
-    leaf hysteresis-event1d {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1d";
-    }
-    leaf hysteresis-event1e {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1e";
-    }
-    leaf hysteresis-event1f {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1f";
-    }
-    leaf time-to-trigger-event1a {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1a";
-    }
-    leaf time-to-trigger-event1b {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1b";
-    }
-    leaf time-to-trigger-event1c {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1c";
-    }
-    leaf time-to-trigger-event1d {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1d";
-    }
-    leaf time-to-trigger-event1e {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1e";
-    }
-    leaf time-to-trigger-event1f {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1f";
-    }
-    leaf threshold-used-frequency-event1e {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ThresholdUsedFrequencyEvent1e";
-    }
-    leaf threshold-used-frequency-event1f {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ThresholdUsedFrequencyEvent1f";
-    }
-    leaf replacement-activation-threshold-event1c {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Defines the minimum number of cells allowed in the \"active cell set\" for Event 1c to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReplacementActivationThresholdEvent1c";
-    }
-    leaf instance-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.InstanceNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.";
-  }
-
-  grouping umts-ran-intra-freq-meas-instance-g {
-    description
-      "Table containing parameters relating to a particular instance of intra-freq events.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Alias";
-    }
-    leaf intra-frequency-event-identity {
-      type enumeration {
-        enum "1a" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1a";
-        }
-        enum "1b" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1b";
-        }
-        enum "1c" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1c";
-        }
-        enum "1d" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1d";
-        }
-        enum "1e" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1e";
-        }
-        enum "1f" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1f";
-        }
-      }
-      description
-        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.34}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity";
-    }
-    leaf event-description {
-      type string {
-        length "0..256";
-      }
-      description
-        "A free-form description of the way the event instance is meant to be used. E.g. \"hand-out to macro cells\", \"addition of enterprise HNB cell to Active Set\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.EventDescription";
-    }
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - CPICH RSCP";
-        }
-        enum "pathloss" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - Pathloss";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for intra-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.38}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the equivalent time constant of the low pass filter applied to the CPICH quality measurements, or {{enum|CPICH Ec/No|MeasurementQuantity}}. {{bibref|3GPP-TS.25.331|Section 8.6.7.2 and Section 10.3.7.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.FilterCoefficient";
-    }
-    leaf-list triggering-condition {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Active and Monitored";
-        }
-        enum "detected" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Detected";
-        }
-        enum "detected and monitored" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Detected and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger the event instance. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition";
-    }
-    leaf reporting-range {
-      type uint8 {
-        range "0..29";
-      }
-      units "dB";
-      config false;
-      description
-        "Applicable to events 1a, 1b, otherwise not needed. Defines a constant in the inequality criterion that needs to be satisfied for an Event 1b to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingRange";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Applicable to events 1a, 1b, otherwise not needed. Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.WeightingFactor";
-    }
-    leaf report-deactivation-threshold {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Applicable to events 1a, otherwise not needed. Defines the maximum number of cells allowed in the \"active cell set\" for Event 1a to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportDeactivationThreshold";
-    }
-    leaf reporting-amount {
-      type int64;
-      config false;
-      description
-        "Applicable to events 1a, 1c, otherwise not needed. Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingAmount";
-    }
-    leaf reporting-interval {
-      type uint16 {
-        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Applicable to events 1a, 1c, otherwise not needed. Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingInterval";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TimeToTrigger";
-    }
-    leaf threshold-used-frequency {
-      type int64;
-      config false;
-      description
-        "Applicable to events 1e, 1f, otherwise not needed. Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ThresholdUsedFrequency";
-    }
-    leaf replacement-activation-threshold {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Applicable only to event 1c Defines the minimum number of cells allowed in the \"active cell set\" for Event 1c to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReplacementActivationThreshold";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.";
-  }
-
-  grouping umts-ran-inter-freq-meas-g {
-    description
-      "This object contains parameters relating to the inter-freq HO related control parameters.";
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity - CPICH RSCP";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for inter-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.FilterCoefficient";
-    }
-    leaf-list inter-frequency-event-identity {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each entry is an Event ID from the list of: 2a, 2b, 2c, 2d, 2e,2f Defines the identity of the event used to trigger inter-frequency UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.InterFrequencyEventIdentity";
-    }
-    leaf weighting-factor-event2a {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2a";
-    }
-    leaf weighting-factor-event2b {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2b";
-    }
-    leaf weighting-factor-event2d {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2d";
-    }
-    leaf weighting-factor-event2f {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2f";
-    }
-    leaf hysteresis-event2a {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2a";
-    }
-    leaf hysteresis-event2b {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2b";
-    }
-    leaf hysteresis-event2d {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2d";
-    }
-    leaf hysteresis-event2f {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2f";
-    }
-    leaf time-to-trigger-event2a {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2a";
-    }
-    leaf time-to-trigger-event2b {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2b";
-    }
-    leaf time-to-trigger-event2d {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2d";
-    }
-    leaf time-to-trigger-event2f {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2f";
-    }
-    leaf threshold-used-frequency-event2b {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2b";
-    }
-    leaf threshold-used-frequency-event2d {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2d";
-    }
-    leaf threshold-used-frequency-event2f {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2f";
-    }
-    leaf instance-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.InstanceNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.";
-  }
-
-  grouping umts-ran-inter-freq-meas-instance-g {
-    description
-      "Table containing parameters relating to a particular instance of inter-freq events.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Alias";
-    }
-    leaf intra-frequency-event-identity {
-      type enumeration {
-        enum "2a" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2a";
-        }
-        enum "2b" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2b";
-        }
-        enum "2c" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2c";
-        }
-        enum "2d" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2d";
-        }
-        enum "2e" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2e";
-        }
-        enum "2f" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2f";
-        }
-      }
-      description
-        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity";
-    }
-    leaf event-description {
-      type string {
-        length "0..256";
-      }
-      description
-        "A free-form description of the way the event instance is meant to be used. E.g. \"detecting cell edge to prepare for hand-out\", \"cancel hand-out preparation\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.EventDescription";
-    }
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity - CPICH RSCP";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for inter-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.FilterCoefficient";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.WeightingFactor";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.TimeToTrigger";
-    }
-    leaf threshold-used-frequency {
-      type int64;
-      config false;
-      description
-        "Applicable to events 2b, 2d, 2f, otherwise not needed. Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.ThresholdUsedFrequency";
-    }
-    leaf threshold-non-used-frequency {
-      type int64;
-      config false;
-      description
-        "Applicable to events 2a, 2b, 2c, 2e otherwise not needed. Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold non used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.ThresholdNonUsedFrequency";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.";
-  }
-
-  grouping umts-ran-inter-rat-meas-g {
-    description
-      "This object contains parameters relating to the inter-RAT HO related control parameters. This is specifically for GERAN system.";
-    leaf gsm-filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.29}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.GSMFilterCoefficient";
-    }
-    leaf bsic-verification-required {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the BSIC verification is required or not for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.29}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.BSICVerificationRequired";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.WeightingFactor";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-RAT HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.TimeToTrigger";
-    }
-    leaf threshold-own-system {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold own system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.ThresholdOwnSystem";
-    }
-    leaf threshold-other-system {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold other system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.ThresholdOtherSystem";
-    }
-    leaf instance-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.InstanceNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.";
-  }
-
-  grouping umts-ran-inter-rat-meas-instance-g {
-    description
-      "Table containing parameters relating to a particular instance of inter-freq events.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Alias";
-    }
-    leaf inter-rat-event-identity {
-      type enumeration {
-        enum "3a" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3a";
-        }
-        enum "3b" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3b";
-        }
-        enum "3c" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3c";
-        }
-        enum "3d" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3d";
-        }
-      }
-      description
-        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity";
-    }
-    leaf event-description {
-      type string {
-        length "0..256";
-      }
-      description
-        "A free-form description of the way the event instance is meant to be used. E.g. \"hand-out to GSM macrocell\", \"cancel hand-out preparation due to decreasing macrocell quality\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.EventDescription";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.FilterCoefficient";
-    }
-    leaf bsic-verification-required {
-      type boolean;
-      config false;
-      description
-        "Applicable only to GSM events. Indicates whether the BSIC verification is required or not for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.29}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.BSICVerificationRequired";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.WeightingFactor";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-RAT HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.TimeToTrigger";
-    }
-    leaf threshold-own-system {
-      type int64;
-      config false;
-      description
-        "Applicable only to event 3a, otherwise not needed. Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold own system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.ThresholdOwnSystem";
-    }
-    leaf threshold-other-system {
-      type int64;
-      config false;
-      description
-        "Applicable to events 3a, 3b, 3c, otherwise not needed. Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold other system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.ThresholdOtherSystem";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.";
-  }
-
-  grouping umts-ran-ue-internal-meas-g {
-    description
-      "This object contains parameters relating to the UE internal measurement control parameters.";
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for UE internal measurement. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.79}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.FilterCoefficient";
-    }
-    leaf ue-tx-pwr-threshold-event6a {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Defines the threshold for UE transmit power above which Event 6a is reported. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.UETxPwrThresholdEvent6a";
-    }
-    leaf time-to-trigger-event6a {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the period in {{units}} between detection of Event 6a and sending of Measurement Report. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.TimeToTriggerEvent6a";
-    }
-    leaf ue-tx-pwr-threshold-event6b {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Defines the threshold for UE transmit power above which Event 6b is reported. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.UETxPwrThresholdEvent6b";
-    }
-    leaf time-to-trigger-event6b {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the period in {{units}} between detection of Event 6b and sending of Measurement Report. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.TimeToTriggerEvent6b";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.";
-  }
-
-  grouping umts-ran-rf-g {
-    description
-      "This object contains parameters relating to the RF configuration.";
-    leaf-list uarfcndl {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433|Section 9.2.1.65}} Self-configuration for UARFCN is controlled by {{param|.Capabilities.UMTS.SelfConfig.UARFCNConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for UARFCN is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|UARFCNDLInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The UARFCN values supplied to the list are derived based on the formula defined in {{bibref|3GPP-TS.25.104|Section 5.4.3}} The order of the UARFCN entries has no significance. The carrier spacing in FDD mode is fixed as defined in {{bibref|3GPP-TS.25.104}}. Therefore, the FAP can unambiguously derive the UL UARFCN value based on the selected DL UARFCN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDL";
-    }
-    leaf uarfcndl-in-use {
-      type uint64;
-      description
-        "The DL UARFCN being used by the FAP. Self-configuration for UARFCN is controlled by {{param|.Capabilities.UMTS.SelfConfig.UARFCNConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|UARFCNDL}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|UARFCNDL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDLInUse";
-    }
-    leaf uarfcnul-in-use {
-      type uint64;
-      description
-        "The UL UARFCN being used by the FAP. The UL UARFCN that corresponds to {{param|UARFCNDLInUse}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNULInUse";
-    }
-    leaf-list uarfcndl-to-protect {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each item is a DL UARFCNs to be protected from adjacent channel interference. \"Adjacent channel\" in this context means offset from the FAP's UARFCN by 5MHz. {{bibref|3GPP-TS.25.104|Section 6.4.6}} If any of the items in the list are adjacent to the FAP's own DL channel, the FAP MUST take the Primary CPICH code power measured on these channels into account as part of its maximum transmit power self-configuration. The UARFCNs in the list can belong to any operator, allowing for protection of the FAP operator's own macro layer as well as that of other operators (only the latter is mandated by the {{bibref|3GPP-TS.25.104}} requirements). The list SHOULD take into account the ability of the FAP to self-configure its own DL UARFCN and so SHOULD include any channels (requiring protection) which can potentially be adjacent to the UARFCN selected by the FAP. For example, if only adjacent operator protection is required and the FAP has the ability to self-configure to any channel owned by its operator, this list would be populated with the UARFCNs immediately above and below the range of channels owned by the FAP operator. Adjacent channel protection can cause the FAP transmit power to be reduced down to as low as 8dBm. If {{empty}} then it indicates that there are no channels adjacent to the FAP that require protection, or that self-configuration of the FAP transmit power is not enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDLToProtect";
-    }
-    leaf-list primary-scrambling-code {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a Primary DL Scrambling Code used by the FDD mode cell with a numeric range between 0 and 511 inclusive. {{bibref|3GPP-TS.25.433|Section 9.2.2.34}} Self-configuration for PSC is controlled by {{param|.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for {{param}} is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|PrimaryScramblingCodeInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PSC values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The following are examples of valid PSC string: :\"20\" ::(explicitly specifies a single PSC value) :\"20,30,40\" ::(specifies 3 possible PSC values to select from) \"20..40\" ::(specifies 21 possible values between 20 and 40, inclusive) \"20..40,50\" ::(specifies 22 possible values between 20 and 40 inclusive and a single value 50) The order of the items has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode";
-    }
-    leaf primary-scrambling-code-in-use {
-      type uint64;
-      description
-        "The PSC being used by the FAP. Self-configuration for PSC is controlled by {{param|.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|PrimaryScramblingCode}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|PrimaryScramblingCode}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PrimaryScramblingCodeInUse";
-    }
-    leaf maxfap-tx-power-expanded {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power allowed on the FAP, maximum value for the linear sum of the power of all downlink physical channels, that is allowed to be used in a cell. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -30.0 to 20.0 incremented by 0.1 dB. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded";
-    }
-    leaf maxfap-tx-power-in-use-expanded {
-      type int64;
-      units "dBm";
-      description
-        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -30.0 {{units}} to 20.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPowerExpanded}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerInUseExpanded";
-    }
-    leaf max-ul-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power level a UE can use on PRACH. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -50 to 33 incremented by 1. {{bibref|3GPP-TS.25.331|Section 10.3.6.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxULTxPower";
-    }
-    leaf max-ul-tx-power-in-use {
-      type int64;
-      units "dBm";
-      description
-        "The maximum transmission power level a UE can use on PRACH. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxULTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxULTxPowerInUse";
-    }
-    leaf pcpich-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "The value of the transmission power of the Primary Common PIlot CHannel (P-CPICH). The P-CPICH physical channel carries the common pilots of the cell. Parameter in SIB5. {{param}} is expressed as a range of allowed transmission power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its transmission power. Self-configuration for transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -10.0 to 20.0 incremented by 0.1 dB. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCPICHPower";
-    }
-    leaf pcpich-power-in-use {
-      type int64;
-      units "dBm";
-      description
-        "The P-CPICH power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -10.0 {{units}} to 20.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|PCPICHPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCPICHPowerInUse";
-    }
-    leaf power-offset-pilot-dpdch {
-      type uint8 {
-        range "0..24";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines the power offset between pilot channel and DPDCH. Actual values of the offset are 0.0 {{units}} to 6.0 {{units}} in steps of 0.25 {{units}}. The value of {{param}} divided by 4 yields the actual value of the offset. {{bibref|3GPP-TS.25.331|Section 10.3.6.18}} {{bibref|3GPP-TS.25.214|Section 5.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PowerOffsetPilotDPDCH";
-    }
-    leaf fap-coverage-target {
-      type uint8 {
-        range "50..150";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines the target value measured in {{units}} for the range of the FAP's DL coverage, in terms of RF propagation loss. This value can be used by the FAP's self-configuration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. {{bibref|3GPP-TS.25.967|Section 7.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FAPCoverageTarget";
-    }
-    leaf fap-quality-target-ec-io {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the target value measured in dB for the downlink signal quality of the FAP in terms of CPICH Ec/Io, thereby clarifying the meaning of \"FAPCoverageTarget\". Actual values of the FAPQualityTargetEcIo are -20 dB to 0 dB in steps of 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FAPQualityTargetEcIo";
-    }
-    leaf psch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the Primary SCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PSCHPower";
-    }
-    leaf ssch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the Secondary SCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.SSCHPower";
-    }
-    leaf pich-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the maximum transmission power offset measured in {{units}} of the PICH channel relative to the Primary CPICH transmission power. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.2.1.49A}} {{bibref|3GPP-TS.25.331|Section 10.3.6.50}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PICHPower";
-    }
-    leaf pch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the PCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.1.3.1 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCHPower";
-    }
-    leaf fach-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the FACH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.1.6.1 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FACHPower";
-    }
-    leaf bch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the BCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 9.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.BCHPower";
-    }
-    leaf aich-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of one AICH relative to the Primary CPICH power. Parameter defined in SIB5 {{bibref|3GPP-TS.25.331|Section 10.3.6.3}}. Transmission power level of AICH, AP-AICH and CD/CA-ICH channels compared to CPICH. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.2.2.D}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.AICHPower";
-    }
-    leaf ctch-allocation-period {
-      type uint8 {
-        range "1..255";
-      }
-      config false;
-      description
-        "The value defines 'N' multiples of M(TTI) for CBS DRX calculations at the UE side.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.CTCHAllocationPeriod";
-    }
-    leaf cbs-frame-offset {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Value of CBS frame offset (CTCH) on DL FACH. Parameter in SIB5";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.CBSFrameOffset";
-    }
-    leaf max-tti {
-      type uint8 {
-        range "1..255";
-      }
-      config false;
-      description
-        "Defines the number of radio frames in the TTI of the FACH used for CTCH (MTTI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxTTI";
-    }
-    leaf noise-rise-limit-lower-value {
-      type uint16 {
-        range "0..500";
-      }
-      config false;
-      description
-        "Defines the lower value of the Noise Rise Limit range that UMTS FAP is allowed to pick from. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB. the value MUST not exceed the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}} The Noise Rise Limit range identifies the limits between which the FAP can self-configure its uplink noise rise limit. Self-configuration for noise rise limit is controlled by {{param|.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable}} from an enabled perspective.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue";
-    }
-    leaf noise-rise-limit-upper-value {
-      type uint16 {
-        range "0..500";
-      }
-      config false;
-      description
-        "Defines the upper value of the Noise Rise Limit range that UMTS FAP is allowed to pick from. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB. the value MUST not be below the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} NoiseRiseLimit identifies the limits between which the FAP can self-configure its uplink noise rise limit. Self-configuration for noise rise limit is controlled by {{param|.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable}} from an enabled perspective.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue";
-    }
-    leaf noise-rise-limit-in-use {
-      type uint16 {
-        range "0..500";
-      }
-      description
-        "Actual value of the Noise Rise Limit that the FAP uses. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitInUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.";
-  }
-
-  grouping umts-ran-neighbor-list-g {
-    description
-      "This object contains parameters relating to the neighbor list.";
-    leaf max-intra-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.MaxIntraFreqCellEntries";
-    }
-    leaf max-inter-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.MaxInterFreqCellEntries";
-    }
-    leaf intra-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCellNumberOfEntries";
-    }
-    leaf inter-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.";
-  }
-
-  grouping umts-ran-neighbor-list-intra-freq-cell-g {
-    description
-      "Table containing the intra-frequency cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.URA";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PCPICHTxPower";
-    }
-    leaf collocated-inter-freq-cell {
-      type uint32 {
-        range "0..268435455";
-      }
-      config false;
-      description
-        "Provides identity of collocated inter-frequency Cell. Needed for pathloss estimation, in case the femto environment masks intra-frequency neighbor. Cell Identity. {{bibref|3GPP-TS.25.331|Section 10.3.2.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.CollocatedInterFreqCell";
-    }
-    leaf max-tx-power {
-      type int64;
-      units "0.1 dBm";
-      config false;
-      description
-        "Cell Max Tx Power. Parameter needed in HNB power calibration, for protection of neighbour cells. Actual values of the power are -30.0 dBm to 60.0 dBm in steps of 0.1 dB. The value of MaxTxPower divided by 10 yields the actual value of the power. C.f {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MaxTxPower";
-    }
-    leaf max-dpc-htx-power {
-      type int64;
-      units "0.1 dBm";
-      config false;
-      description
-        "Maximum DL DPCH Tx Power per UE configured in the cell (for CS UEs). Parameter may be used by FAP to protect the DL budget allocated to neighbouring UEs served by neighbour cells. C.f (max 10 dB below max Tx power) {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}} Actual values of the power are -40.0 dBm to 50.0 dBm in steps of 0.1 dB. The value of MaxDPCHtxPower divided by 10 yields the actual value of the power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MaxDPCHtxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-inter-freq-cell-g {
-    description
-      "Table containing the inter-frequency cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PCPICHTxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-inter-rat-cell-g {
-    description
-      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.25.331|Section 10.3.7.23}}";
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.MaxGSMEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSMNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.";
-  }
-
-  grouping umts-ran-neighbor-list-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GSM provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm 850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM 850";
-        }
-        enum "gsm 900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM 900";
-        }
-        enum "dcs 1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - DCS 1800";
-        }
-        enum "pcs 1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - PCS 1900";
-        }
-      }
-      config false;
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-g {
-    description
-      "This object contains parameters relating to the neighbor list used by the FAP based on its self-configuration capability and {{object|.CellConfig.UMTS.RAN.NeighborList.}} configuration of adding and excluding cells.";
-    leaf max-intra-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.MaxIntraFreqCellEntries";
-    }
-    leaf max-inter-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.MaxInterFreqCellEntries";
-    }
-    leaf intra-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCellNumberOfEntries";
-    }
-    leaf inter-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-intra-freq-cell-g {
-    description
-      "Table containing the intra-frequency cell list.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "C-ID of the intra-freq neighbour cell {{bibref|3GPP-TS.25.401|Section 6.1.5}}. If {{param|RNCID}} is larger than 4095, then {{param}} will be 12 bits (i.e. a range of [0:4095]), else {{param}} is 16 bits long (i.e. range of [4096:65535]). This is needed to facilitate Femto to Macro handover. Used in {{bibref|3GPP-TS.25.413|Section 9.2.1.28}} as part of Target Cell ID.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.URA";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.PCPICHScramblingCode";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-inter-freq-cell-g {
-    description
-      "Table containing the inter-frequency cell list.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "C-ID of the intra-freq neighbour cell {{bibref|3GPP-TS.25.401|Section 6.1.5}}. If {{param|RNCID}} is larger than 4095, then {{param}} will be 12 bits (i.e. a range of [0:4095]), else {{param}} is 16 bits long (i.e. range of [4096:65535]). This is needed to facilitate Femto to Macro handover. Used in {{bibref|3GPP-TS.25.413|Section 9.2.1.28}} as part of Target Cell ID.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.PCPICHScramblingCode";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-inter-rat-cell-g {
-    description
-      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.25.331|Section 10.3.7.23}}";
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.MaxGSMEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSMNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GSM.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm 850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM 850";
-        }
-        enum "gsm 900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM 900";
-        }
-        enum "dcs 1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - DCS 1800";
-        }
-        enum "pcs 1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - PCS 1900";
-        }
-      }
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-  }
-
-  grouping umts-rab-g {
-    description
-      "This object contains parameters relating to Radio Access layers {{bibref|3GPP-TS.32.405}}";
-    leaf rab-succ-estab-cs {
-      type uint64;
-      description
-        "The number of successfully established RABs (with or without queueing) for CS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABSuccEstabCS";
-    }
-    leaf rab-fail-estab-cs {
-      type uint64;
-      description
-        "The number of RAB establishment failures for CS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABFailEstabCS";
-    }
-    leaf rab-succ-estab-ps {
-      type uint64;
-      description
-        "The number of successfully established RABs for PS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABSuccEstabPS";
-    }
-    leaf rab-fail-estab-ps {
-      type uint64;
-      description
-        "The number of RABs failed to establish for PS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABFailEstabPS";
-    }
-    leaf rabcs-setup-time-mean {
-      type uint64;
-      units "milliseconds";
-      description
-        "The mean time in {{units}} for a FAP to establish a RAB CS connection. This measurement is obtained by accumulating the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for CS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs over a granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}). This end value of the time will then be divided by the number of successfully established RABs observed in the granularity period to give the arithmetic mean. The accumulator SHALL be reinitialized at the beginning of each granularity period.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABCSSetupTimeMean";
-    }
-    leaf rabcs-setup-time-max {
-      type uint64;
-      units "milliseconds";
-      description
-        "The maximum time in {{units}} for a FAP to establish a RAB CS connection. This measurement is obtained by monitoring the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for CS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs. The high tide mark of this time will be stored in a gauge; the gauge SHALL be reinitialized at the beginning of each granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABCSSetupTimeMax";
-    }
-    leaf rabps-setup-time-mean {
-      type uint64;
-      units "milliseconds";
-      description
-        "The mean time in {{units}} for a FAP to establish a RAB PS connection. This measurement is obtained by accumulating the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for PS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs over a granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}). This end value of the time will then be divided by the number of successfully established RABs observed in the granularity period to give the arithmetic mean. The accumulator SHALL be reinitialized at the beginning of each granularity period.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABPSSetupTimeMean";
-    }
-    leaf rabps-setup-time-max {
-      type uint64;
-      units "milliseconds";
-      description
-        "The maximum time in {{units}} for a FAP to establish a RAB PS connection. This measurement is obtained by monitoring the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for PS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs. The high tide mark of this time will be stored in a gauge; the gauge SHALL be reinitialized at the beginning of each granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABPSSetupTimeMax";
-    }
-    leaf fail-ho {
-      type uint64;
-      description
-        "The number of failed Handovers.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.FailHO";
-    }
-    leaf succ-ho {
-      type uint64;
-      description
-        "The number of successful Handovers.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.SuccHO";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.";
-  }
-
-  grouping lte-g {
-    description
-      "This object contains parameters relating to configuring the LTE FAP.";
-    leaf tunnel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.TunnelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.";
-  }
-
-  grouping lte-tunnel-g {
-    description
-      "This object contains a table of all tunnel instances configured for the LTE FAP.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.Alias";
-    }
-    leaf tunnel-ref {
-      type string {
-        length "0..256";
-      }
-      description
-        "This is the reference to an IPsec tunnel instance used by the LTE FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.TunnelRef";
-    }
-    leaf-list plmnid {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Optional list of PLMM IDs associated with the tunnel, which can be used for selecting the tunnel. Each PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.PLMNID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.";
-  }
-
-  grouping lte-epc-g {
-    description
-      "This object contains parameters relating to configuring LTE EPC.";
-    leaf-list allowed-ciphering-algorithm-list {
-      type enumeration {
-        enum "eea0" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - EEA0";
-        }
-        enum "128-eea1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - 128-EEA1";
-        }
-        enum "128-eea2" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - 128-EEA2";
-        }
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a ciphering algorithm allowed to be used for RRC and UP confidentiality protection as defined in {{bibref|3GPP-TS.33.401}}. If the list contains more than 1 item, it is in the order of the preferred algorithm to be used. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList";
-    }
-    leaf-list allowed-integrity-protection-algorithm-list {
-      type enumeration {
-        enum "128-eia1" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList - 128-EIA1";
-        }
-        enum "128-eia2" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList - 128-EIA2";
-        }
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a integrity protection algorithm allowed to be used for RRC as defined in {{bibref|3GPP-TS.33.401}}. If the list contains more than 1 item, it is in the order of the preferred algorithm to be used. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList";
-    }
-    leaf tac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "TAC (Tracking Area Code) for LTE FAP as specified in SystemInformationBlockType1 message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.TAC";
-    }
-    leaf eaid {
-      type uint32 {
-        range "0..16777216";
-      }
-      config false;
-      description
-        "Emergency Area ID that uniquely identifies the area of emergency for Earthquake and Tsunami Warning Services (ETWS). Corresponds to Emergency Area ID in {{bibref|3GPP-TS.36.413|Section 9.2.1.47}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.EAID";
-    }
-    leaf max-plmn-list-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.CellConfig.LTE.EPC.PLMNList.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.MaxPLMNListEntries";
-    }
-    leaf plmn-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNListNumberOfEntries";
-    }
-    leaf max-qo-s-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.EPC.QoS.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.MaxQoSEntries";
-    }
-    leaf qo-s-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoSNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.";
-  }
-
-  grouping lte-epc-plmn-list-g {
-    description
-      "This object contains parameters relating to list of PLMN identity specific to LTE EPC definition, called PLMN-IdentityList, as specified in SystemInformationBlockType1 message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Each instance in this object is a PLMN-IdentityInfo which consists of plmn-Identity and cellReservedForOperatorUse IEs. At minimum 1 item MUST be present in this list, and maximum of 6 items.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.Alias";
-    }
-    leaf is-primary {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this {{param|PLMNID}} is a primary PLMN or not. If there is more than one instance in {{object|.CellConfig.LTE.EPC.PLMNList.{i}.}} table, then ACS MUST set this {{param}} set to {{true}} in only one instance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.IsPrimary";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.PLMNID";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the cell is reserved for operator use or not. If {{true}}, it is reserved. If {{false}}, it is not reserved. Corresponds to \"reserved\" \"notReserved\" respectively as defined in PLMN-IdentityInfo in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.CellReservedForOperatorUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.";
-  }
-
-  grouping lte-epc-qo-s-g {
-    description
-      "This object contains parameters relating to configuring QoS in LTE EPC.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Alias";
-    }
-    leaf qci {
-      type uint8 {
-        range "1..20";
-      }
-      description
-        "QoS class identity as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.QCI";
-    }
-    leaf type {
-      type enumeration {
-        enum "gbr" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type - GBR";
-        }
-        enum "non-gbr" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type - Non-GBR";
-        }
-      }
-      config false;
-      description
-        "Defines the type of the QoS class as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type";
-    }
-    leaf priority {
-      type uint8 {
-        range "1..20";
-      }
-      config false;
-      description
-        "Priority of the QoS class as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Priority";
-    }
-    leaf packet-delay-budget {
-      type uint16 {
-        range "50 | 100 | 150 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 1000 | 1500 | 2000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the Packet delay budget, specified in {{units}}, as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.PacketDelayBudget";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.";
-  }
-
-  grouping lte-ran-g {
-    description
-      "This object contains parameters relating to the LTE RAN level configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.";
-  }
-
-  grouping lte-ran-common-g {
-    description
-      "This object contains parameters relating to the common configuration in LTE RAN.";
-    leaf cell-identity {
-      type uint32 {
-        range "0..268435455";
-      }
-      config false;
-      description
-        "Cell Identity as specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Common.CellIdentity";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Common.";
-  }
-
-  grouping lte-ran-s1-ap-g {
-    description
-      "This object contains parameters relating to the S1AP configuration.";
-    leaf-list t-reloc-prep {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a maximum time for the Handover Preparation procedure in the source LTE FAP, specified in seconds, with a numeric range between 0 and 300 inclusive. Only values in multiple of 5 are valid; use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The timer is started when the LTE FAP sends the HANDOVER REQUIRED message. Upon reception of the HANDOVER COMMAND message the LTE FAP shall stop the timer. Corresponds to parameter TS1RELOCprep defined in {{bibref|3GPP-TS.36.413|Section 8.4.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If the LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then the LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If the LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then the LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.TRelocPrep";
-    }
-    leaf-list t-reloc-overall {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a maximum time for the protection of the overall handover procedure in the source LTE FAP, specified in seconds, with a numeric range between 0 and 300 inclusive. Only values in multiple of 5 are valid; use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The timer is started reception of the HANDOVER COMMAND message. Corresponds to parameter TS1RELOCOverall defined in {{bibref|3GPP-TS.36.413|Section 8.4.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.TRelocOverall";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.";
-  }
-
-  grouping lte-ran-s1-u-g {
-    description
-      "This object contains parameters relating to the S1-U configuration.";
-    leaf gtpu-echo-interval {
-      type uint8 {
-        range "0 | 60..max";
-      }
-      units "seconds";
-      config false;
-      description
-        "Defines the interval in {{units}} between each GTP-U Echo Request that LTE FAP sends to the GTP-U peer, as specified in {{bibref|3GPP-TS.29.281|Section 7.2.1}}. If the value of {{param}} is equal to 0, then this functionality is supressed and thus LTE FAP does not send GTP-U Echo Request. If there is no GTP-U path in use, then no Echo Request is sent regardless of the value of {{param}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1U.GTPUEchoInterval";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1U.";
-  }
-
-  grouping lte-ran-rf-g {
-    description
-      "This object contains parameters relating to the RF, see {{bibref|3GPP-TS.32.592|Section 6.1.7.1}}.";
-    leaf-list earfcndl {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is an E-UTRA Absolute Radio Frequency Channel Number in the downlink direction. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter NDL specified in {{bibref|3GPP-TS.36.104|Table 5.7.3.1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.EARFCNDL";
-    }
-    leaf-list earfcnul {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is an E-UTRA Absolute Radio Frequency Channel Number in the uplink direction. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter NUL specified in {{bibref|3GPP-TS.36.104|Table 5.7.3.1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.EARFCNUL";
-    }
-    leaf freq-band-indicator {
-      type uint8 {
-        range "1..40";
-      }
-      config false;
-      description
-        "Frequency band indicator. Corresponds to parameter freqBandIndicator in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.FreqBandIndicator";
-    }
-    leaf-list dl-bandwidth {
-      type uint8 {
-        range "6 | 15 | 25 | 50 | 75 | 100";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a downlink transmission bandwidth, specified in number of Resource Blocks. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter dl_Bandwidth in MIB (Master Information Block) in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.DLBandwidth";
-    }
-    leaf-list ul-bandwidth {
-      type uint8 {
-        range "6 | 15 | 25 | 50 | 75 | 100";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is an uplink transmission bandwidth, specified in number of Resource Blocks. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter ul_Bandwidth in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.ULBandwidth";
-    }
-    leaf-list reference-signal-power {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a downlink reference-signal transmit power, specified in dBm, with a numeric range between -60 and 50 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.ReferenceSignalPower";
-    }
-    leaf-list phy-cell-id {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a physical cell ID with a numeric range between 0 and 503 inclusive. Represents the list of physical cell identities LTE FAP to choose from. In case there is more than one item in the list, the first item contains the most preferred value. As specified in {{bibref|3GPP-TS.36.211|Section 6.11}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PhyCellID";
-    }
-    leaf-list psch-power-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a power offset, specified in dB, of the Primary Synchronization Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PSCHPowerOffset";
-    }
-    leaf-list ssch-power-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a power offset, specified in dB, of the Secondary Synchronization Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.SSCHPowerOffset";
-    }
-    leaf-list pbch-power-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a power offset, specified in dB, of the Physical Broadcast Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PBCHPowerOffset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.";
-  }
-
-  grouping lte-ran-phy-g {
-    description
-      "This object contains parameters relating to the physical layer level configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.";
-  }
-
-  grouping lte-ran-phy-antenna-info-g {
-    description
-      "This object contains parameters relating to the antenna configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.1}}).";
-    leaf antenna-ports-count {
-      type uint8 {
-        range "1 | 2 | 4";
-      }
-      description
-        "Defines the number of cell specific antenna ports according to {{bibref|3GPP-TS.36.211|Section 6.2.1}}. A UE in IDLE mode acquires the information about the number of transmit antenna ports according to {{bibref|3GPP-TS.36.212|Section 5.3.1.1}}. Corresponds to antennaPortsCount IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.AntennaPortsCount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.";
-  }
-
-  grouping lte-ran-phy-pdsch-g {
-    description
-      "This object contains parameters relating to the PDSCH (Physical Downlink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.2}}).";
-    leaf-list pb {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a Eb/Ea value with a numeric range between 0 and 3 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of this parameter is the same for all UEs in the cell. Eb repsents EPRE of PDSCH REs type B, i.e. REs in OFDM symbols that include reference symbols, as specified in {{bibref|3GPP-TS.36.213|Section 5.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.Pb";
-    }
-    leaf-list pa {
-      type int64;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a Ea/Ers value. In case there is more than one item in the list, the first item contains the most preferred value. Ea represents EPRE of PDSCH REs type A, i.e. REs in OFDM symbols that do not include reference symbols. Ers represents EPRE of reference symbols REs. Specified in {{bibref|3GPP-TS.36.213|Section 5.2}}. Actual values of range are -6.00 to 3.00dB. The value of each item in {{param}} divided by 100 yields the actual value. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.Pa";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.";
-  }
-
-  grouping lte-ran-phy-srs-g {
-    description
-      "This object contains parameters relating to the UL SRS (Sounding Reference Signal) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.3}}).";
-    leaf srs-enabled {
-      type boolean;
-      config false;
-      description
-        "Indicates whether UL SRS (Sounding RS) is enabled or not. If {{true}}, UL Sounding RS is enabled. If {{false}}, UL Sounding RS is disabled. Corresponds to SoundingRS-UL-ConfigCommonIE defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSEnabled";
-    }
-    leaf-list srs-bandwidth-config {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a index into tables of cell specific SRS Bandwidth Configuration, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. SRS Bandwidth Configuration tables are specified in {{bibref|3GPP-TS.36.211|Table 5.5.3.2-1, 5.5.3.2-2, 5.5.3.2-3 and 5.5.3.2– 4}}. Corresponds to srs-BandwidthConfig IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSBandwidthConfig";
-    }
-    leaf srs-max-up-pts {
-      type boolean;
-      config false;
-      description
-        "Defines whether reconfiguration of SRS applies to UpPTS or not. If {{true}}, SRS applies to UpPTS. If {{false}}, SRS does not apply to UpPTS. Corresponds to srs-MaxUpPts specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and srsMaxUpPts specified in {{bibref|3GPP-TS.36.211|Section 5.5.3.2}}. This parameter is applicable to TDD mode only.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSMaxUpPTS";
-    }
-    leaf ack-nack-srs-simultaneous-transmission {
-      type boolean;
-      config false;
-      description
-        "Defines whether a UE can simultaneously transmit SRS and HARQ ACK/NACK or not. If {{true}}, simultaneous transmission is allowed. If {{false}}, simultaneous transmission is not allowed. Corresponds to ackNackSRS-SimultaneousTransmission specfied in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Simultaneous-AN-and-SRS specified in {{bibref|3GPP-TS.36.213|Section 8.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.AckNackSRSSimultaneousTransmission";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.";
-  }
-
-  grouping lte-ran-phy-prach-g {
-    description
-      "This object contains parameters relating to the PRACH (Physical Random Access Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.4}}).";
-    leaf-list root-sequence-index {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a Logical root sequence index with a numeric range between 0 and 837 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Logical root sequence index is used to determine 64 physical RACH preamble sequences available in the cell. Corresponds to RACH_ROOT_SEQUENCE parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Section 5.7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.RootSequenceIndex";
-    }
-    leaf-list configuration-index {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is an index to the table defining PRACH resources within the frame with a numeric range between 0 and 63 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to PRACH-Configuration-Index parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Section 5.7.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.ConfigurationIndex";
-    }
-    leaf high-speed-flag {
-      type boolean;
-      config false;
-      description
-        "Indicates whether restricted set or unrestricted set of preambles is used. If {{true}}, indicates restricted set. If {{false}}, indicates unrestricted set. Corresponds to highSpeedFlag parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and high-speed-flag parameter defined in {{bibref|3GPP-TS.36.211|Section 5.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.HighSpeedFlag";
-    }
-    leaf-list zero-correlation-zone-config {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a value used for preamble sequence generation with a numeric range between 0 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Each item corresponds to zeroCorrelationZoneConfig parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to NCS parameter defined in {{bibref|3GPP-TS.36.211|Section 5.7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.ZeroCorrelationZoneConfig";
-    }
-    leaf-list freq-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item represents the first available physical resource block number for PRACH. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to prach-FreqOffset parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and nPRBoffsetRA parameter defined {{bibref|3GPP-TS.36.211|Section 5.7.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.FreqOffset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.";
-  }
-
-  grouping lte-ran-phy-pucch-g {
-    description
-      "This object contains parameters relating to the PUCCH (Physical Uplink Control Channel) configuration. (see {{bibref|3GPP-TS.32.592|Section 6.1.1.5}})";
-    leaf delta-pucch-shift {
-      type enumeration {
-        enum "ds1" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds1";
-        }
-        enum "ds2" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds2";
-        }
-        enum "ds3" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds3";
-        }
-      }
-      config false;
-      description
-        "Defines the cyclic shift used for PUCCH formats 1/1a/1b in a resource block used for a mix of formats 1/1a/1b and 2/2a/2b. It is an integer multiple of deltaPUCCHShift within the range of {0, 1, ., 7} . Corresponds to deltaPUCCH-Shift parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Delta-shiftPUCCH parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift";
-    }
-    leaf-list nrbcqi {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a value that defines the bandwidth in terms of resource blocks available for use by PUCCH formats 2/2a/2b transmission in each slot, with a numeric range between 0 and 98 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to nRB-CQI parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRB(2) parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive.If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.NRBCQI";
-    }
-    leaf ncsan {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Defines the number of cyclic shift used for PUCCH formats 1/1a/1b in a resource block used for a mix of formats 1/1a/1b and 2/2a/2b. The value is an integer multiple of deltaPUCCHShift within the range of {0, 1, ., 7}. Corresponds to nCS-AN parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRB(1) parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.NCSAN";
-    }
-    leaf-list n1-pucchan {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value that determines resources used for transmission of PUCCH format 1/1a/1b and 2/2a/2b, with a numeric range between 0 and 2047 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to n1PUCCH-AN parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NPUCCH(1) parameter defined {{bibref|3GPP-TS.36.213|Section 10.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.N1PUCCHAN";
-    }
-    leaf-list cqipucch-resource-index {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value that indicates the position of PUCCH, with a numeric range between 0 and 1185 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. . Corresponds to the cqi-PUCCH-ResourceIndex IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. and to parameter nPUCCH(2) specified in {{bibref|3GPP-TS.36.213|Section 7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.CQIPUCCHResourceIndex";
-    }
-    leaf k {
-      type uint8 {
-        range "1..4";
-      }
-      units "Resource Blocks";
-      description
-        "Sub-band size for sub-band reporting mode expressed in units of physical {{units}}, see {{bibref|3GPP-TS.36.213|Section 7.2.2}}. This parameter corresponds to the K IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.K";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.";
-  }
-
-  grouping lte-ran-phy-pusch-g {
-    description
-      "This object contains parameters relating to the PUSCH (Physical Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.6}}).";
-    leaf nsb {
-      type uint8 {
-        range "1..4";
-      }
-      config false;
-      description
-        "Defines the number of sub-bands. This parameter corresponds to n-SB parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NSB parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.NSB";
-    }
-    leaf hopping-mode {
-      type enumeration {
-        enum "inter-sub-frame" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode - InterSubFrame";
-        }
-        enum "intra-and-inter-sub-frame" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode - IntraAndInterSubFrame";
-        }
-      }
-      config false;
-      description
-        "Indicates if hopping is \"inter-subframe\" or \"intra and inter-subframe\". Corresponds to hoppingMode parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Hopping-mode parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode";
-    }
-    leaf-list hopping-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a value to compute the set of physical resource blocks to be used for transmission on PUSCH if uplink frequency hopping mode is enabled, with a numeric range between 0 and 98 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. This parameter corresponds to pusch-HoppingOffset parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRBHO parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingOffset";
-    }
-    leaf enable64-qam {
-      type boolean;
-      description
-        "Indicates whether 64QAM is allowed or not. If {{true}}, 64QAM is allowed. If {{false}}, 64QAM is not allowed. Corresponds to enable64QAM parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.Enable64QAM";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.";
-  }
-
-  grouping lte-ran-phy-pusch-ulrs-g {
-    description
-      "This object contains parameters relating to the ULRS (Uplink Reference Signal) of PUSCH (Physical Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.6.1}}).";
-    leaf group-hopping-enabled {
-      type boolean;
-      config false;
-      description
-        "Indicates whether group hopping is enabled or not. If {{true}}, group hopping is enabled. If {{false}}, group hopping is not enabled. Corresponds to groupHoppingEnabled parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.and in {{bibref|3GPP-TS.36.211|Section 5.5.1.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.GroupHoppingEnabled";
-    }
-    leaf group-assignment-pusch {
-      type uint8 {
-        range "0..29";
-      }
-      description
-        "Corresponds to parameter groupAssignmentPUSCH specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.GroupAssignmentPUSCH";
-    }
-    leaf sequence-hopping-enabled {
-      type boolean;
-      config false;
-      description
-        "Indicates whether sequence hopping is enabled or not. If {{true}}, sequence hopping is enabled. If {{false}}, sequence hopping is not enabled. Corresponds to sequenceHoppingEnabled parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.and in {{bibref|3GPP-TS.36.211|Section 5.5.1.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.SequenceHoppingEnabled";
-    }
-    leaf cyclic-shift {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Corresponds to parameter cyclcShift specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.CyclicShift";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.";
-  }
-
-  grouping lte-ran-phy-ul-power-control-g {
-    description
-      "This object contains parameters relating to the uplink power control configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.7}}).";
-    leaf-list p0-nominal-pusch {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value to compute the UL UE transmit power for transmission on PUSCH for semi-persistant grants, with a numeric range between -126 and 24 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to p0-NominalPUSCH parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and PO_NOMINAL_PUSCH(0) parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.1.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.P0NominalPUSCH";
-    }
-    leaf-list alpha {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a value used to compute the UL UE transmit power for transmission on PUSCH, from the list of 0, 4, 5, 6, 7, 8, 9, 100. In case there is more than one item in the list, the first item contains the most preferred value. Actual values of range are from 0.00 to 1.00. The value of {{param}} divided by 100 yields the actual value. Corresponds to alpha parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to α parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.1.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.Alpha";
-    }
-    leaf-list p0-nominal-pucch {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value to compute the UL UE transmit power for transmission on PUCCH, with a numeric range between -126 and 24 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to p0-NominalPUCCH parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and PO_NOMINAL_PUCCH parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.2.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.P0NominalPUCCH";
-    }
-    leaf delta-fpucch-format1 {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format1 to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(1) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat1";
-    }
-    leaf delta-fpucch-format1b {
-      type uint8 {
-        range "1 | 3 | 5";
-      }
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format1b to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(1b) in {{units}} dB as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat1b";
-    }
-    leaf delta-fpucch-format2 {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format2 to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2";
-    }
-    leaf delta-fpucch-format2a {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format2a to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2a) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2a";
-    }
-    leaf delta-fpucch-format2b {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format2b to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2b) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2b";
-    }
-    leaf delta-preamble-msg3 {
-      type int64;
-      units "dB";
-      description
-        "Defines the parameter in {{units}} used to compute the UL UE transmit power for transmission of random access response grant. This parameter corresponds to deltaPreambleMsg3 parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to ?PREAMBLE_Msg3 parameter specified in {{bibref|3GPP-TS.36.213|Section 5.1.1.1}}. Actual value is 2x the value of this parameter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaPreambleMsg3";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.";
-  }
-
-  grouping lte-ran-phy-mbsfn-g {
-    description
-      "This object contains parameters relating to the MBSFN (Multimedia Broadcast multicast service Single Frequency Network) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.8}}).";
-    leaf neigh-cell-config {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Defines the information related to MBSFN and TDD UL/DL configuration of neighbour cells. Corresponds to NeighCellConfig IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Value 0: Not all neighbour cells have the same MBSFN sub-frame allocation as serving cell. Value 1: No MBSFN sub-frames are present in all neighbour cells. Value 2: The MBSFN sub-frame allocations of all neighbour cells are identical to or subsets of that in the serving cell. Value 3: Different UL/DL allocation in neighbouring cells for TDD compared to the serving cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.NeighCellConfig";
-    }
-    leaf max-sf-config-list-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.MaxSFConfigListEntries";
-    }
-    leaf sf-config-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.";
-  }
-
-  grouping lte-ran-phy-mbsfn-sf-config-list-g {
-    description
-      "This object contains parameters relating to the sub-frame that are reserved for MBSFN (Multimedia Broadcast multicast service Single Frequency Network) in downlink direction. For FDD mode, only one entry can exist in this table. For TDD mode, at most one entry can exist with a given value of stratumID (see {{bibref|3GPP-TS.32.592|Section 6.1.1.8}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.Alias";
-    }
-    leaf sync-stratum-id {
-      type uint8 {
-        range "1..8";
-      }
-      config false;
-      description
-        "This parameter is applicable to TDD mode only. Defines the synchronization stratum level to which the MBSFN configuration applies.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.SyncStratumID";
-    }
-    leaf radio-frame-allocation-period {
-      type uint8 {
-        range "1..2 | 4 | 8 | 16 | 32";
-      }
-      description
-        "Defines the period where MBSFN sub-frames occur in the radio frames. Radio frames contain MBSFN sub-frame when the following condition is met: ((SFN mod {{param}}) = {{param|RadioframeAllocationOffset}}). The value of 1 and 2 are only meaningful when the value of {{param|RadioFrameAllocationSize}} parameter is 1. Corresponds to radioFrameAllocationPeriod IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioFrameAllocationPeriod";
-    }
-    leaf radioframe-allocation-offset {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Defines the offset where MBSFN sub-frames occur in the radio frames. Radio frames contain MBSFN sub-frame when the following condition is met: ((SFN mod {{param|RadioFrameAllocationPeriod}}) = {{param}}). Corresponds to radioFrameAllocationOffset IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioframeAllocationOffset";
-    }
-    leaf radio-frame-allocation-size {
-      type uint8 {
-        range "1 | 4";
-      }
-      description
-        "Defines the number of connsecutive frames that the MBSFN allocation pertains to defined by the combination of {{param|RadioFrameAllocationPeriod}} and {{param|RadioframeAllocationOffset}} parameters.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioFrameAllocationSize";
-    }
-    leaf-list sub-frame-allocations {
-      type uint8 {
-        range "0 | 1";
-      }
-      config false;
-      max-elements "64";
-      description
-        "{{list}} The value of \"1\" indicates the position of sub-frames that is allocated to MBSFN within the radio frame. First item defines the MBSFN allocation for sub-frame #1, second item for #2, third item for #3, fourth item for #6, fifth item for #7, sixth item for #8. If the value of {{param|RadioFrameAllocationSize}} is 4, then this pattern repeats in the sequence of the four radio frames. The actual size of this parameter depends on the value of {{param|RadioFrameAllocationSize}} parameter. If the value of {{param|RadioFrameAllocationSize}} is 1, then the size of this parameter is 6; if the size {{param|RadioFrameAllocationSize}} is 4, then the size of this parameter is 24. Corresponds to subframeAllocation IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.SubFrameAllocations";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.";
-  }
-
-  grouping lte-ran-phy-prs-g {
-    description
-      "This object contains parameters relating to the PRS (Positioning Reference Signal) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.9}}).";
-    leaf num-prs-resource-blocks {
-      type uint64;
-      units "Resource Blocks";
-      config false;
-      description
-        "Defines the number of RBs ({{units}}) used for PRS. Corresponds to the parameter NRBPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.NumPRSResourceBlocks";
-    }
-    leaf prs-configuration-index {
-      type uint16 {
-        range "0..4095";
-      }
-      config false;
-      description
-        "Corresponds to the PRS configuration index defined as parameter IPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.3 and Table 6.10.4.3.-1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.PRSConfigurationIndex";
-    }
-    leaf num-consecutive-prs-subfames {
-      type uint8 {
-        range "1..2 | 4 | 6";
-      }
-      config false;
-      description
-        "Defines the number of consecutive positioning sub-frames. Corresponds to the parameter NPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.NumConsecutivePRSSubfames";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.";
-  }
-
-  grouping lte-ran-phy-tdd-frame-g {
-    description
-      "This object is applicable to TDD mode only. This object contains parameters relating to the TDD frame structure configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.10}}).";
-    leaf sub-frame-assignment {
-      type uint8 {
-        range "0..6";
-      }
-      config false;
-      description
-        "Defines the DL/UL sub-frame configuration. Corresponds to subframAssignment specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Table 4.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.SubFrameAssignment";
-    }
-    leaf special-subframe-patterns {
-      type uint8 {
-        range "0..8";
-      }
-      config false;
-      description
-        "Defines the configuration of the special sub-frame that contains the guard period between the downlink and uplink transmissions. Corresponds to the specialSubframePatterns specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Table 4.2.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.SpecialSubframePatterns";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.";
-  }
-
-  grouping lte-ran-mac-g {
-    description
-      "This object contains parameters relating to the MAC (Medium Access Control) configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.";
-  }
-
-  grouping lte-ran-mac-rach-g {
-    description
-      "This object contains parameters relating to the RACH (Random Access Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.1}}).";
-    leaf-list number-of-ra-preambles {
-      type uint8 {
-        range "4..64";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a number of non-dedicated random access preambles. Only values in multiple of 4 are valid (i.e. 4, 8, 12, 16,...64); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter numberOfRA-Preambles specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.NumberOfRaPreambles";
-    }
-    leaf-list size-of-ra-group-a {
-      type uint8 {
-        range "4..60";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a number of non-dedicated random access preambles in Random Acces Preambles group A. Only values in multiple of 4 are valid (i.e. 4, 8, 12, 16,...60); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter sizeOfRA-PreamblesGroupA specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.SizeOfRaGroupA";
-    }
-    leaf-list message-size-group-a {
-      type uint16 {
-        range "56 | 144 | 208 | 256";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a threshold for preamble selection, specified in bits. In case there is more than one item in the list, the first item contains the most preferred value. Defined in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. Corresponds to parameter messageSizeGroupA specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MessageSizeGroupA";
-    }
-    leaf-list message-power-offset-group-b {
-      type int64;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a threshold for preamble selection, specified in dB. In case there is more than one item in the list, the first item contains the most preferred value. Defined in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. Corresponds to parameter messagePowerOffsetGroupB specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. Value of -1 indicates \"minusinfinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MessagePowerOffsetGroupB";
-    }
-    leaf-list power-ramping-step {
-      type uint8 {
-        range "0 | 2 | 4 | 6";
-      }
-      config false;
-      min-elements 1;
-      max-elements "16";
-      description
-        "{{list}} Each item is a power increase factor between subsequent random access preamble transmissions, specified in dB. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter powerRampingStep specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PowerRampingStep";
-    }
-    leaf-list preamble-initial-received-target-power {
-      type int64;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a value used as the baseline for computation for random access transmission power, specified in dBm. Also used as a parameter in the criteria for preamble selection. Only even values are valid (i.e. -120, -118, -116,...-90); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter preambleInitialReceivedTargetPower specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. and section 5.1.3. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PreambleInitialReceivedTargetPower";
-    }
-    leaf-list preamble-trans-max {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a maximum number of random access preamble transmissions, from the list of 3, 4, 5, 6, 7, 8, 10, 20, 50, 100, 200. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter preambleTransMax specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.4 and section 5.1.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PreambleTransMax";
-    }
-    leaf-list response-window-size {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a duration of the random access response window, specified in sub-frames, with a numeric range between 2 and 10 inclusive (except value of 9). In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter ra-ResponseWindowSize specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.ResponseWindowSize";
-    }
-    leaf-list contention-resolution-timer {
-      type uint8 {
-        range "8..64";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a contention resolution timer, specified in sub-frames. Only values multiple of 8 are valid (i.e. 8, 16, 24,...64); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter mac-ContentionResolutionTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.ContentionResolutionTimer";
-    }
-    leaf-list max-harq-msg3-tx {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a maximum number of Msg3 HARQ transmissions by RRC, with a numeric range between 1 and 8 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter maxHARQ-Msg3Tx specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MaxHARQMsg3Tx";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.";
-  }
-
-  grouping lte-ran-mac-drx-g {
-    description
-      "This object contains parameters relating to the DRX (Discontinuous Reception) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.2}}).";
-    leaf drx-enabled {
-      type boolean;
-      config false;
-      description
-        "Specifies whether DRX operation is enabled or not. If {{true}}, DRX operation is enabled. If {{false}}, DRX operation is not enabled. Corresponds to drx-Configuration IE defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXEnabled";
-    }
-    leaf-list on-duration-timer {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is the DRX cycle during which UE actively monitors PDCCH, specified in number of PDCCH sub-frames, from the list of 1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50, 60, 80, 100, 200. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter onDurationTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.OnDurationTimer";
-    }
-    leaf-list drx-inactivity-timer {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item defines the number of inactive consecutive PDCCH sub-frame(s) that will activate short DRX cycle, specified in number of PDCCH sub-frames, from the list of 1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50, 60, 80, 100, 200, 300, 500, 750, 1280, 1920, 2560. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter drx-InactivityTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXInactivityTimer";
-    }
-    leaf-list drx-retransmission-timer {
-      type uint8 {
-        range "1 | 2 | 4 | 6 | 8 | 16 | 24 | 33";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item defines the maximum number of consecutive PDCCH sub-frame(s) UE MUST remain active expecting a DL retransmission, specified in number of PDCCH sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. The timer is started when a HARQ RTT Timer expires and the data in the soft buffer of the corresponding HARQ process was not successfully decoded. There is one timer for each active HARQ process. Corresponds to parameter drx-RetransmissionTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXRetransmissionTimer";
-    }
-    leaf-list long-drx-cycle {
-      type uint16 {
-        range "10 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 256 | 320 | 512 | 640 | 1024 | 1280 | 2048 | 2560";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is long DRX Cycle value, specified in number of sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. If shortDRX-Cycle is configured, this value MUST be a multiple of the {{param|ShortDRXCycle}} value. Corresponds to longDRX-Cycle parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}} and longDRX-CycleStartOffset specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.LongDRXCycle";
-    }
-    leaf-list drx-start-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item defines the starting frame of the DRX cycle within the long DRX cycle, with a numeric range between 0 and 2559 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The valid value range is dependent on {{param|LongDRXCycle}} parameter which defines the upper bound of this range, i.e., range definition is [0: ({{param|LongDRXCycle}}-1)]. Corresponds to drxStartOffset parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. Use of values bigger than ({{param|LongDRXCycle}}-1) MUST be rejected by the CPE. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXStartOffset";
-    }
-    leaf-list short-drx-cycle {
-      type uint16 {
-        range "2 | 5 | 8 | 10 | 16 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 256 | 320 | 512 | 640";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is the short DRX Cycle value, specified in number of sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. If shortDRX-Cycle is configured, the value of {{param|LongDRXCycle}} MUST be a multiple of the {{param}} value. Corresponds to shortDRX-Cycle parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.ShortDRXCycle";
-    }
-    leaf-list drx-short-cycle-timer {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item defined the duration of the short DRX cycle in multiples of {{param|ShortDRXCycle}} parameter, specified in number of sub-frames, with a numeric range between 1 and 16 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Denotes the number of consecutive sub-frame(s)the UE shall follow the short DRX cycle after the DRX Inactivity Timer has expired. Corresponds to drxShortCycleTimer parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXShortCycleTimer";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.";
-  }
-
-  grouping lte-ran-mac-ulsch-g {
-    description
-      "This object contains parameters relating to the ULSCH (Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.3}}).";
-    leaf max-harq-tx {
-      type uint8 {
-        range "1..8 | 10 | 12 | 16 | 20 | 24 | 28";
-      }
-      description
-        "Maximum number of UL HARQ transmissions. Corresponds to parameter maxHARQ-Tx specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.MaxHARQTx";
-    }
-    leaf periodic-bsr-timer {
-      type uint16 {
-        range "0 | 5 | 10 | 16 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 320 | 640 | 1280 | 2560";
-      }
-      units "subframes";
-      description
-        "Timer for Periodic BSR (Buffer Status Report) reporting, specified in number of {{units}}. UE transmits periodic BSR at the expiration of this timer. Corresponds to parameter periodicBSR-Timer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.5}}. Value of 0 indicates \"infinity.\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.PeriodicBSRTimer";
-    }
-    leaf retx-bsr-timer {
-      type uint16 {
-        range "320 | 640 | 1280 | 2560 | 5120 | 10240";
-      }
-      units "subframes";
-      description
-        "Timer for Regular BSR reporting, specified in number of {{units}}. UE transmits a Regular BSR at the expiration of this timer if data is available in the buffer. Corresponds to parameter retxBSR-Timer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.RetxBSRTimer";
-    }
-    leaf tti-bundling {
-      type boolean;
-      description
-        "Enables/disables TTI bundling. If {{true}}, TTI bundling is enabled. If {{false}}, TTI bundling is disabled. Corresponds to parameter ttiBundling specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.TTIBundling";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.";
-  }
-
-  grouping lte-ran-rlc-g {
-    description
-      "This object contains parameters relating to the RLC (Radio Link Control) configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.";
-  }
-
-  grouping lte-ran-rlc-srb1-g {
-    description
-      "This object contains parameters relating to the SRB1 (Signaling Radio Bearer 1) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.3.1}}).";
-    leaf default-configuration {
-      type boolean;
-      config false;
-      description
-        "Indicates the whether default RLC configuration for SRB1 is used or not. If {{true}}, the default RLC configuration is used as specified in {{bibref|3GPP-TS.36.331|Section 9.2.1.1}}. In this case, rest of the parameters defined under the current object are ignored by the CPE. If {{false}}, rest of the parameters defined under the current object are used by the CPE for RLC configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.DefaultConfiguration";
-    }
-    leaf-list t-poll-retransmit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a timer between successive poll transmissions, specified in milliseconds, specified in milliseconds, with a numeric range between 5 and 500 inclusive. Only the multiple of 5 are valid in the range between 5 and 250 inclusive (i.e. 5, 10, 15, 20,... 250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e., 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-PollRetransmit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TPollRetransmit";
-    }
-    leaf-list poll-pdu {
-      type uint16 {
-        range "0 | 4 | 8 | 16 | 32 | 64 | 128 | 256";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a counter of PDUs between successive poll transmissions, specified in the number of PDUs. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollPDU IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates \"infinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.PollPDU";
-    }
-    leaf-list poll-byte {
-      type uint16 {
-        range "0 | 25 | 50 | 75 | 100 | 125 | 250 | 375 | 500 | 750 | 1000 | 1250 | 1500 | 2000 | 3000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a counter of PDU bytes transmitted between successive poll transmissions, specified in kilobytes. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollByte IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates infinite amount of kilobytes. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.PollByte";
-    }
-    leaf-list max-retx-threshold {
-      type uint8 {
-        range "1..4 | 6 | 8 | 16 | 32";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item defines the maximum number of transmission retry used by the RLC entity to limit the number of retransmissions of an AMD PDU. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to maxRetxThreshold IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.MaxRetxThreshold";
-    }
-    leaf-list t-reordering {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an RLC entity in order to detect loss of RLC PDUs at lower layer, specified in milliseconds, with a numeric range between 0 and 200 inclusive. Only the multiple of 5 are valid in the range between 0 and 100 inclusive (i.e. 0, 5, 10, 15,...,100), and only the multiple of 10 are valid in the range between 110 and 200 inclusive (110, 120, 130,...,200). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-Reordering IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.1.2.2. and 5.1.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TReordering";
-    }
-    leaf-list t-status-prohibit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an AM RLC entity in order to prohibit transmission of a STATUS PDU, specified in milliseconds, with a numeric range between 0 and 500 inclusive. Only the multiple of 5 are valid in the range between 0 and 250 inclusive (i.e. 0, 5, 10, 15,...,250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e. 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-StatusProhibit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.3}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TStatusProhibit";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.";
-  }
-
-  grouping lte-ran-rlc-srb2-g {
-    description
-      "This object contains parameters relating to the SRB2 (Signaling Radio Bearer 2) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.3.1}}).";
-    leaf default-configuration {
-      type boolean;
-      config false;
-      description
-        "Indicates the whether default RLC configuration for SRB1 is used or not. If {{true}}, the default RLC configuration is used as specified in {{bibref|3GPP-TS.36.331|Section 9.2.1.1}}. In this case, rest of the parameters defined under the current object are ignored by the CPE. If {{false}}, rest of the parameters defined under the current object are used by the CPE for RLC configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.DefaultConfiguration";
-    }
-    leaf-list t-poll-retransmit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a timer between successive poll transmissions, specified in milliseconds, with a numeric range between 5 and 500 inclusive. Only the multiple of 5 are valid in the range between 5 and 250 inclusive (i.e. 5, 10, 15, 20,... 250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e., 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-PollRetransmit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TPollRetransmit";
-    }
-    leaf-list poll-pdu {
-      type uint16 {
-        range "0 | 4 | 8 | 16 | 32 | 64 | 128 | 256";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a counter of PDUs between successive poll transmissions, specified in the number of PDUs. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollPDU IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates \"infinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.PollPDU";
-    }
-    leaf-list poll-byte {
-      type uint16 {
-        range "0 | 25 | 50 | 75 | 100 | 125 | 250 | 375 | 500 | 750 | 1000 | 1250 | 1500 | 2000 | 3000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a counter of PDU bytes transmitted between successive poll transmissions, specified in kilobytes. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollByte IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates infinite amount of kilobytes. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.PollByte";
-    }
-    leaf-list max-retx-threshold {
-      type uint8 {
-        range "1..4 | 6 | 8 | 16 | 32";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item defines the maximum number of transmission retry used by the RLC entity to limit the number of retransmissions of an AMD PDU. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to maxRetxThreshold IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.MaxRetxThreshold";
-    }
-    leaf-list t-reordering {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an RLC entity in order to detect loss of RLC PDUs at lower layer, specified in milliseconds, with a numeric range between 0 and 200 inclusive. Only the multiple of 5 are valid in the range between 0 and 100 inclusive (i.e. 0, 5, 10, 15,...,100), and only the multiple of 10 are valid in the range between 110 and 200 inclusive (110, 120, 130,...,200). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-Reordering IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.1.2.2. and 5.1.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TReordering";
-    }
-    leaf-list t-status-prohibit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an AM RLC entity in order to prohibit transmission of a STATUS PDU, specified in milliseconds, with a numeric range between 0 and 500 inclusive. Only the multiple of 5 are valid in the range between 0 and 250 inclusive (i.e. 0, 5, 10, 15,...,250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e. 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-StatusProhibit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.3}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TStatusProhibit";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.";
-  }
-
-  grouping lte-ran-rrc-timers-g {
-    description
-      "This object contains parameters relating to the RRC timers and constants (see {{bibref|3GPP-TS.32.592|Section 6.1.6.1}}) and (see {{bibref|3GPP-TS.32.592|Section 6.1.6.2}}).";
-    leaf-list t300 {
-      type uint16 {
-        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is an interval, in milliseconds, between subsequent transmissions of RRCConnectionRequest. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t300 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T300";
-    }
-    leaf-list t301 {
-      type uint16 {
-        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is an interval, in milliseconds, between subsequent transmissions of RRCConnectionReestablishmentRequest. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t301 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T301";
-    }
-    leaf t302 {
-      type uint16 {
-        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Time to wait in {{units}} for cell re-selection or RRConnectionSetup after RRCConnectionReject. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T302";
-    }
-    leaf-list t304-eutra {
-      type uint16 {
-        range "50 | 100 | 150 | 200 | 500 | 1000 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a HO failure timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to t304 defined within IE MobilityControlInfo in RRCConnectionReconfiguration message in {{bibref|3GPP-TS.36.331|Section 5.3.5.4 and Section 6.3.4}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T304EUTRA";
-    }
-    leaf-list t304-irat {
-      type uint16 {
-        range "100 | 200 | 500 | 1000 | 2000 | 4000 | 8000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a HO failure timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to t304 defined within IE CellChangeOrder in MobilityFromEUTRACommand message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T304IRAT";
-    }
-    leaf-list t310 {
-      type uint16 {
-        range "0 | 50 | 100 | 200 | 500 | 1000 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a RLF declaration timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t310 specified in RLF-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T310";
-    }
-    leaf-list t311 {
-      type uint16 {
-        range "1000 | 3000 | 5000 | 10000 | 15000 | 20000 | 30000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a RLF recovery timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t311 specified in RLF-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T311";
-    }
-    leaf t320 {
-      type uint8 {
-        range "5 | 10 | 20 | 30 | 60 | 120 | 180";
-      }
-      units "minutes";
-      config false;
-      description
-        "Time in {{units}} after RRCConnection Release in which cell re-selection priority info supplied in RRCConnectionRelease MUST be observed. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. Corresponds to parameter t320 specified in RRCConnectionRelease message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. S";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T320";
-    }
-    leaf n310 {
-      type uint8 {
-        range "1..4 | 6 | 8 | 10 | 20";
-      }
-      config false;
-      description
-        "Number of consecutive \"out-of-sync\" indications received from lower layers that triggers timer T310. Corresponds to parameter n310 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6 and Section 7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.N310";
-    }
-    leaf n311 {
-      type uint8 {
-        range "1..6 | 8 | 10";
-      }
-      config false;
-      description
-        "Number of consecutive \"in-sync\" indications received from lower layers that stops timer T310. Corresponds to parameter n311 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6 and Section 7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.N311";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.";
-  }
-
-  grouping lte-ran-cell-restriction-g {
-    description
-      "This object contains parameters relating to the cell restriction configuration.";
-    leaf cell-barred {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the is barred or not. If {{true}}, the cell is barred. If {{false}}, the cell is not barred. Corresponds to parameter CellBarred specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.CellBarred";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the is reserved for operator's use or not. If {{true}}, the cell is reserved for operator use. If {{false}}, the cell is not reserved for operator use. Corresponds to parameter cellReservedForOperatorUse specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.CellReservedForOperatorUse";
-    }
-    leaf barring-for-emergency {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the is barred for Access Class 10 or not. If {{true}}, the cell is barred for Access Class 10. If {{false}}, the cell is not barred for Access Class 10. Corresponds to parameter ac-BarringForEmergency specified in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.BarringForEmergency";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.";
-  }
-
-  grouping lte-ran-mobility-g {
-    description
-      "This object contains parameters relating to the UE's mobility configuration. It covers both idle mode and connected mode.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-g {
-    description
-      "This object contains parameters relating to the UE's mobility while it is in idle mode (cell (re-)selection). Parameters under this object determines the content in the SIB (System Information Block) that is broadcast by LTE .";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-common-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration that is common to all cell re-selection scenarios (intra/inter-freq, inter-RAT to UTRA (UMTS), GERAN (GSM) and CDMA2000) (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.1}}).";
-    leaf-list qhyst {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a hysteresis value applied to serving cell for evaluating cell ranking criteria specified in dB, with a numeric range between 0 and 24 inclusive. For the value greater than 6, only even numbers are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter q-Hyst specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.Qhyst";
-    }
-    leaf q-hyst-sf-medium {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Speed-dependent scaling factor for Qhyst in Medium-mobility state, specified in {{units}}. Corresponds to parameter q-HystSF:sf-Medium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.QHystSFMedium";
-    }
-    leaf q-hyst-sf-high {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Speed-dependent scaling factor for Qhyst in High-mobility state, specified in {{units}}. Corresponds to parameter q-HystSF:sf-High specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.QHystSFHigh";
-    }
-    leaf t-evaluation {
-      type uint8 {
-        range "30 | 60 | 120 | 180 | 240";
-      }
-      units "seconds";
-      config false;
-      description
-        "Duration for evaluating allowed amount of cell re-selection(s) required to enter mobility states, specified in {{units}}. Corresponds to parameter t-Evaluation specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter TCRmax specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.TEvaluation";
-    }
-    leaf t-hyst-normal {
-      type uint8 {
-        range "30 | 60 | 120 | 180 | 240";
-      }
-      units "seconds";
-      config false;
-      description
-        "Additional duration for evaluating criteria to enter normal mobility state, specified in {{units}}. Specifies the additional time period for evaluating criteria to enter Normal-mobility state. Corresponds to parameter t-HystNormal specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter TCRmaxHyst specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.THystNormal";
-    }
-    leaf n-cell-change-medium {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "Defines the number of cell re-selections within TEvaluation to enter Medium-mobility state. Corresponds to parameter n-cellChangeMedium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter NCR_M specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.NCellChangeMedium";
-    }
-    leaf n-cell-change-high {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "Defines the number of cell re-selections within TEvaluation to enter High-mobility state. Corresponds to parameter n-cellChangeHigh specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter NCR_H specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.NCellChangeHigh";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-intra-freq-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for intra-freq re-selection scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.2}}).";
-    leaf-list q-rx-lev-min-sib1 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSRP level of a E-UTRA cell for cell selection, specified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinSIB1";
-    }
-    leaf-list q-rx-lev-min-sib3 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSRP level for intra-frequency E-UTRA cell re-selection, specified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinSIB3";
-    }
-    leaf q-rx-lev-min-offset {
-      type uint8 {
-        range "1..8";
-      }
-      units "dBm";
-      config false;
-      description
-        "Defines offset with respect to QrxLevMin, specified in {{units}}. This offset is taken into account in the computation of Srxlev for cell selection evaluation of cells detected during a periodic search for a higher priority PLMN while camped normally in a VPLMN. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMinOffset in SIB1 specified in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinOffset";
-    }
-    leaf-list s-intra-search {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a threshold for intra-frequency measurements, specified in dB, with a numeric range between 0 and 31 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter s-IntraSearch specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.SIntraSearch";
-    }
-    leaf-list t-reselection-eutra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for intra-frequency E-UTRA cell re-selection, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionEUTRA specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRA";
-    }
-    leaf-list s-non-intra-search {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a threshold for inter-frequency and inter-RAT measurements with lower or equal priority, specified in dB, with a numeric range between 0 and 31 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter s-NonIntraSearch specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.SNonIntraSearch";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of the E-UTRAN serving carrier frequency used in the inter-frequency and inter-RAT cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.CellReselectionPriority";
-    }
-    leaf p-max {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Used to limit the allowed UE uplink transmission power on the serving frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. Corresponds to parameter p-Max specified in SIB1 and SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1 and Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.PMax";
-    }
-    leaf thresh-serving-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold for serving frequency used in evaluation of re-selection towards lower priority E-UTRAN frequency or inter-RAT, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshServingLow specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.ThreshServingLow";
-    }
-    leaf t-reselection-eutrasf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for intra-frequency TreselectionEUTRA in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-Medium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRASFMedium";
-    }
-    leaf t-reselection-eutrasf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for intra-frequency TreselectionEUTRA in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-High specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRASFHigh";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-inter-freq-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-freq re-selection scenario .";
-    leaf max-carrier-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.MaxCarrierEntries";
-    }
-    leaf carrier-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.CarrierNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-inter-freq-carrier-g {
-    description
-      "This object contains parameters relating to the carrier information for inter-freq re-selection scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.3}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.Alias";
-    }
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Indicates the ARFCN of this frequency carrier. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.EUTRACarrierARFCN";
-    }
-    leaf-list q-rx-lev-min-sib5 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSRP level on this E-UTRA frequency carrier, spcified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.QRxLevMinSIB5";
-    }
-    leaf-list q-offset-freq {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is an offset applicable between serving and this frequency carrier, specified in dBm, with a numeric range between -24 and 24 inclusive. For values less than or equal to -6, or values greater than or equal to 6, only the even values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-OffsetFreq in SIB5 specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.4.2.6}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.QOffsetFreq";
-    }
-    leaf-list t-reselection-eutra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for inter-frequency cell re-selection to this E-UTRA frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionEUTRA specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRA";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this E-UTRA frequency carrier, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting from a lower priority E-UTRAN frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting from a higher priority E-UTRAN frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.ThreshXLow";
-    }
-    leaf p-max {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Used to limit the allowed UE uplink transmission power on this carrier frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. Corresponds to parameter p-Max specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.PMax";
-    }
-    leaf t-reselection-eutrasf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-Medium specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRASFMedium";
-    }
-    leaf t-reselection-eutrasf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-High specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRASFHigh";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection scenario.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-utra-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to UTRA (UMTS) scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.4}}).";
-    leaf-list t-reselection-utra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for re-selection to a UTRA frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionUTRA specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRA";
-    }
-    leaf t-reselection-utrasf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionUTRA for inter-RAT re-selection to UTRA in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionUTRA-SF:sf-Medium specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRASFMedium";
-    }
-    leaf t-reselection-utrasf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionUTRA-SF:sf-High specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRASFHigh";
-    }
-    leaf max-utranfdd-freq-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.MaxUTRANFDDFreqEntries";
-    }
-    leaf utranfdd-freq-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreqNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq-g {
-    description
-      "This object contains parameters relating to the channel frequncy related information of UTRA (UMTS) system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.5, 6.1.5.1.6}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.Alias";
-    }
-    leaf utra-carrier-arfcn {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "Indicates the ARFCN of the frequency carrier. Corresponds to parameter CarrierFreq in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.UTRACarrierARFCN";
-    }
-    leaf-list q-rx-lev-min {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSCP level on this UTRA frequency carrier, specified in dBm, with a numeric range between -60 and -13 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2 + 1) yields the actual value. Corresponds to parameter q-RxLevMin in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.QRxLevMin";
-    }
-    leaf-list q-qual-min {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a required minimum received Ec/Io level on this UTRA FDD carrier, specified in dB, with a numeric range between -24 and 0 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter q-QualMin in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.QQualMin";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this UTRA FDD frequency carrier, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a higher priority UTRA FDD frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a lower priority UTRA FDD frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.ThreshXLow";
-    }
-    leaf p-max-utra {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Used to limit the allowed UE uplink transmission power on this UTRA FDD carrier frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. Corresponds to parameter p-MaxUTRA specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.PMaxUTRA";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-geran-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to GERAN (GSM) scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.6}}).";
-    leaf-list t-reselection-geran {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for re-selection to a GERAN frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionGERAN specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to TreselectionGERA in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERAN";
-    }
-    leaf t-reselection-geransf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionGERAN for inter-RAT re-selection to GERAN in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionGERAN-SF:sf-Medium specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERANSFMedium";
-    }
-    leaf t-reselection-geransf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionGERAN for inter-RAT re-selection to GERAN in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionGERAN-SF:sf-High specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERANSFHigh";
-    }
-    leaf max-geran-freq-group-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.MaxGERANFreqGroupEntries";
-    }
-    leaf geran-freq-group-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroupNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-geran-geran-freq-group-g {
-    description
-      "This object contains parameters relating to the channel frequncy related information of GERAN (GSM) system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.7}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.Alias";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - GSM850";
-        }
-        enum "gsm900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - GSM900";
-        }
-        enum "dcs1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - DCS1800";
-        }
-        enum "pcs1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - PCS1900";
-        }
-      }
-      config false;
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BCCHARFCN";
-    }
-    leaf-list q-rx-lev-min {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSSI level on this GERAN frequency carrier for re-selection to this UTRA FDD carrier, specified in dBm, with a numeric range between 0 and 63 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2 - 115) yields the actual value. Corresponds to parameter q-rxLevMin in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to RXLEV_ACCESS_MIN in {{bibref|3GPP-TS.45.008}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.QRxLevMin";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this GERAN frequency group, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a higher priority GERAN frequency group than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a lower priority GERAN frequency group than current serving E-UTRA frequency, specified in {{units}} dB. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.ThreshXLow";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-cdma2000-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to CDMA2000 system scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.8}}).";
-    leaf-list search-window-size {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a CDMA2000 parameter affecting the search for neighbouring pilots, with a numeric range between 0 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter searchWindowSize in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP2-C.S0005-A|Table 2.6.6.2.1-1}} and {{bibref|3GPP2-C.S0024-A|Table 8.7.6.2-4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.SearchWindowSize";
-    }
-    leaf-list t-reselection-cdma2000 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for a CDMA2000 band, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionCDMA2000 specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to TreselectionCDMA_HRPD or TreselectionCDMA_1xRTT in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000";
-    }
-    leaf t-reselection-cdma2000-sf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TReselectionCDMA2000 for inter-RAT re-selection to CDMA2000 in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionCDMA2000-SF:sf-Medium specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000SFMedium";
-    }
-    leaf t-reselection-cdma2000-sf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TReselectionCDMA2000 for inter-RAT re-selection to CDMA2000 in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionCDMA2000-SF:sf-High specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000SFHigh";
-    }
-    leaf max-cdma2000-band-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.MaxCDMA2000BandEntries";
-    }
-    leaf cdma2000-band-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000BandNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band-g {
-    description
-      "This object contains parameters relating to the channel frequncy related information of CDMA2000 system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.8}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.Alias";
-    }
-    leaf band-class {
-      type uint8 {
-        range "0..17";
-      }
-      units "bandclass number";
-      description
-        "Defines the CDMA2000 band in which the CDMA2000 carrier frequency can be found, specified in {{units}}. BandClass is defined in 3GPP2 C.S0057-B Table 1.5-1. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.BandClass";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this CDMA2000 band used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a higher priority CDMA2000 band than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a lower priority CDMA2000 band than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.ThreshXLow";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.";
-  }
-
-  grouping lte-ran-mobility-conn-mode-g {
-    description
-      "This object contains parameters relating to the UE's mobility while it is in connected mode (handover). Parameters under this object determines the content in the SIB (System Information Block) that is broadcast by LTE .";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.";
-  }
-
-  grouping lte-ran-mobility-conn-mode-eutra-g {
-    description
-      "This object contains parameters relating to the connected mode mobility (handover) configuration within LTE system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.2.1}}).";
-    leaf-list filter-coefficient-rsrp {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for RSRP measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficientRSRP parameter specified in QuantityConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.FilterCoefficientRSRP";
-    }
-    leaf-list filter-coefficient-rsrq {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for RSRQ measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficientRSRQ parameter specified in QuantityConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.FilterCoefficientRSRQ";
-    }
-    leaf a1-threshold-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A1. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.4-1}}. Corresponds to parameter a1-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A1ThresholdRSRP";
-    }
-    leaf a1-threshold-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A1. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in 3GPP TS 36.133}} table 9.1.7-1. Corresponds to parameter a1-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A1ThresholdRSRQ";
-    }
-    leaf a2-threshold-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A2. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.4-1}}. Corresponds to parameter a2-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A2ThresholdRSRP";
-    }
-    leaf a2-threshold-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A2. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.7-1}}. Corresponds to parameter a2-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A2ThresholdRSRQ";
-    }
-    leaf-list a3-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is an offset to be used in evaluation of EUTRA measurement report triggering condition for event A3, with a numeric range between -30 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a3-Offset specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A3Offset";
-    }
-    leaf report-on-leave {
-      type boolean;
-      config false;
-      description
-        "Indicates whether or not the UE shall initiate the measurement reporting procedure when the leaving condition is met for event A3 for a cell in cellsTriggeredList, as specified in {{bibref|3GPP-TS.36.331|Section 5.5.4.1 and Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportOnLeave";
-    }
-    leaf a4-threshold-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A4. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a4-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A4ThresholdRSRP";
-    }
-    leaf a4-threshold-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A4. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a4-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A4ThresholdRSRQ";
-    }
-    leaf a5-threshold1-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold1 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold1:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold1RSRP";
-    }
-    leaf a5-threshold1-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold1 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold1:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold1RSRQ";
-    }
-    leaf a5-threshold2-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold2 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold2:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold2RSRP";
-    }
-    leaf a5-threshold2-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold2 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold2:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold2RSRQ";
-    }
-    leaf-list hysteresis {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a hysteresis value applied to entry and leave condition of a report triggering event, with a numeric range between 0 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter hysteresis specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.Hysteresis";
-    }
-    leaf-list time-to-trigger {
-      type uint16 {
-        range "0 | 40 | 64 | 80 | 100 | 128 | 160 | 256 | 320 | 480 | 512 | 640 | 1024 | 1280 | 2560 | 5120";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a time period during which measurement report triggering condition needs to be met in order to trigger a measurement report, specified in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter timeToTrigger specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TimeToTrigger";
-    }
-    leaf trigger-quantity {
-      type enumeration {
-        enum "rsrp" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity - RSRP";
-        }
-        enum "rsrq" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity - RSRQ";
-        }
-      }
-      config false;
-      description
-        "Quantities used to evaluate a measurement report triggering condition. Corresponds to parameter triggerQuantity specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity";
-    }
-    leaf report-quantity {
-      type enumeration {
-        enum "same-as-trigger-quantity" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity - SameAsTriggerQuantity";
-        }
-        enum "both" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity - Both";
-        }
-      }
-      config false;
-      description
-        "Measrument quantities to be included in the measurement report. Corresponds to parameter reportQuantity specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The value {{enum|Both}} specifies that both the RSRP and RSRQ quantities are to be included in the measurement report.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity";
-    }
-    leaf max-report-cells {
-      type uint8 {
-        range "1..8";
-      }
-      description
-        "Maximum number of cells that can be included in a measurement report. Corresponds to parameter maxReportCells specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.MaxReportCells";
-    }
-    leaf report-interval {
-      type uint32 {
-        range "120 | 240 | 480 | 640 | 1024 | 2048 | 5120 | 10240 | 60000 | 360000 | 720000 | 1800000 | 3600000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Interval between successive measurement reports, specified in {{units}}. Corresponds to parameter reportInterval specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportInterval";
-    }
-    leaf report-amount {
-      type uint8 {
-        range "0..2 | 4 | 8 | 16 | 32 | 64";
-      }
-      config false;
-      description
-        "Number of times a measurement report is sent. Corresponds to parameter reportAmount specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. Value of 0 indicates \"infinity.\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportAmount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.";
-  }
-
-  grouping lte-ran-mobility-conn-mode-irat-g {
-    description
-      "This object contains parameters relating to the connected mode mobility (handover) configuration that is common to all inter-RAT handover scenarios (UTRA (UMTS), GERAN (GSM) and CDMA2000) (see {{bibref|3GPP-TS.32.592|Section 6.1.5.2.2}}).";
-    leaf-list qoffsett-utra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a UTRA-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectUTRA specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsettUTRA";
-    }
-    leaf-list filter-coefficient-utra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for UTRA measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficient parameter specified in QuantityConfigUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.FilterCoefficientUTRA";
-    }
-    leaf meas-quantity-utrafdd {
-      type enumeration {
-        enum "cpich-rscp" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD - CPICH-RSCP";
-        }
-        enum "cpich-ec-n0" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD - CPICH-EcN0";
-        }
-      }
-      config false;
-      description
-        "Measurement quantity used for UTRA measurements. Corresponds to measQuantityUTRA-FDD parameter specified in QuantityConfigUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD";
-    }
-    leaf b1-threshold-utrarscp {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "RSCP threshold to be used in UTRA measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b1-ThresholdUTRA:utra-RSCP specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdUTRARSCP";
-    }
-    leaf b1-threshold-utra-ec-n0 {
-      type uint8 {
-        range "0..49";
-      }
-      units "dBm";
-      config false;
-      description
-        "EcNo threshold to be used in UTRA measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b1-ThresholdUTRA:utra-EcNo specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdUTRAEcN0";
-    }
-    leaf-list qoffset-geran {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a GERAN-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectGERAN specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsetGERAN";
-    }
-    leaf-list filter-coefficient-geran {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for GERAN measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficient parameter specified in QuantityConfigGERAN IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.FilterCoefficientGERAN";
-    }
-    leaf b1-threshold-geran {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in GERAN measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b1-ThresholdGERAN specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdGERAN";
-    }
-    leaf-list qoffset-cdma2000 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a CDMA2000-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectCDMA2000 specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsetCDMA2000";
-    }
-    leaf meas-quantity-cdma2000 {
-      type enumeration {
-        enum "pilot-strength" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000 - PilotStrength";
-        }
-        enum "pilot-pn-phase-and-pilot-strength" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000 - PilotPnPhaseAndPilotStrength";
-        }
-      }
-      config false;
-      description
-        "Measurement quantity used for CDMA2000 measurements. Corresponds to measQuantityCDMA2000 parameter specified in QuantityConfigCDMA2000 IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000";
-    }
-    leaf b1-threshold-cdma2000 {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in CDMA2000 measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in {{bibref|3GPP-TS.45.008}}. Corresponds to parameter b1-ThresholdCDMA2000 specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdCDMA2000";
-    }
-    leaf b2-threshold2-utrarscp {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "RSCP threshold to be used in UTRA measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in {{bibref|3GPP-TS.25.133}}. Corresponds to parameter b2-Threshold2UTRA:utra-RSCP specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2UTRARSCP";
-    }
-    leaf b2-threshold2-utra-ec-n0 {
-      type uint8 {
-        range "0..49";
-      }
-      units "dBm";
-      config false;
-      description
-        "EcNo threshold to be used in UTRA measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b2-Threshold2UTRA:utra-EcNo specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2UTRAEcN0";
-    }
-    leaf b2-threshold2-geran {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in GERAN measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b2-Threshold2GERAN specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2GERAN";
-    }
-    leaf b2-threshold2-cdma2000 {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in CDMA2000 measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b2-Threshold2CDMA2000 specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2CDMA2000";
-    }
-    leaf-list hysteresis {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a hysteresis value applied to entry and leave condition of an IRAT report triggering event, with a numeric range between 0 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter hysteresis specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.Hysteresis";
-    }
-    leaf-list time-to-trigger {
-      type uint16 {
-        range "0 | 40 | 64 | 80 | 100 | 128 | 160 | 256 | 320 | 480 | 512 | 640 | 1024 | 1280 | 2560 | 5120";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a time period during which IRAT measurement report triggering condition needs to be met in order to trigger IRAT measurement report, specified in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value.. Corresponds to parameter timeToTrigger specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.TimeToTrigger";
-    }
-    leaf max-report-cells {
-      type uint8 {
-        range "1..8";
-      }
-      description
-        "Maximum number of IRAT cells that can be included in a measurement report. Corresponds to parameter maxReportCells specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MaxReportCells";
-    }
-    leaf report-interval {
-      type uint32 {
-        range "120 | 240 | 480 | 640 | 1024 | 2048 | 5120 | 10240 | 60000 | 360000 | 720000 | 1800000 | 3600000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Interval between successive IRAT measurement reports, specified in {{units}}. Corresponds to parameter reportInterval specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.ReportInterval";
-    }
-    leaf report-amount {
-      type uint8 {
-        range "0..2 | 4 | 8 | 16 | 32 | 64";
-      }
-      config false;
-      description
-        "Number of times an IRAT measurement report is sent. Corresponds to parameter reportAmount specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. Value of 0 indicates \"infinity.\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.ReportAmount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.";
-  }
-
-  grouping lte-ran-neighbor-list-g {
-    description
-      "This object contains parameters relating to the neighbor list.";
-    leaf max-lte-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.MaxLTECellEntries";
-    }
-    leaf lte-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.";
-  }
-
-  grouping lte-ran-neighbor-list-lte-cell-g {
-    description
-      "Table containing the E-UTRA (i.e. intra-RAT) cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.PLMNID";
-    }
-    leaf cid {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Cell Identity. {{bibref|3GPP-TS.36.331|Section 6.3.4}}. Combination of {{param|PLMNID}} and {{param}} constitutes the Cell Global ID (CGI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.CID";
-    }
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If the value of {{param}} is the same with the one currently being used by the, then it implies that this neighbor cell is an intra-frequency cell; otherwise, it is an inter-frequency cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.EUTRACarrierARFCN";
-    }
-    leaf phy-cell-id {
-      type uint16 {
-        range "0..503";
-      }
-      config false;
-      description
-        "Physical cell ID, as specified in {{bibref|3GPP-TS.36.211|Section 6.11}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.PhyCellID";
-    }
-    leaf q-offset {
-      type int64;
-      config false;
-      description
-        "Indicate a cell-specific offset applicable to a specific neighbouring cell. It is used for evaluating the cell as a candidate for cell re-selection in idle mode. Corresponds to parameter q-OffsetCell broadcast in SIB4 for intra-frequency cells and in SIB5 for inter-frequency cells, specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. For the value less than or equal to -8, and bigger than or equal to 8, only even numbers are valid. If the value is other than these, the CPE MUST reject the value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.QOffset";
-    }
-    leaf cio {
-      type int64;
-      config false;
-      description
-        "Cell individual offset applicable to a specific neighbouring cell. It is used for evaluating triggering conditions for measurement reporting in connected mode. Specified by cellIndividualOffset in MeasObjectEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. For the value less than or equal to -8, and bigger than or equal to 8, only even numbers are valid. If the value is other than these, the CPE MUST reject the value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.CIO";
-    }
-    leaf rs-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.RSTxPower";
-    }
-    leaf blacklisted {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this neighbor cell is allowed for UEs as handover target or not. If {{true}}, handover is prohibited towards this cell. If {{false}}, handover is allowed toward this cell. The {{param}} parameter allows this cell to be prohibited as a handover target, while still allowing this cell to be included in the BCCH SIB4 or 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Blacklisted";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-g {
-    description
-      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.36.331|Section 6.3.1 (SIB6, 7, 8)}}.";
-    leaf max-umts-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.}} table. There can be maximum of 16 UTRAN (UMTS) neighbor cells, as specified by carrierFreqListUTRA-FDD in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxUMTSEntries";
-    }
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.}} table. There can be maximum of 16 GERAN (GSM) neighbor cells, as specified by carrierFreqsInfoList in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxGSMEntries";
-    }
-    leaf max-cdma2000-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.}} table. There can be maximum of 32 bandclasses. In each bandclass, there can be maximum of 16 CDMA2000 carrier frequencies. In each carrier, there can be maximum of 16 CDMA2000 neighbor cells (PN offset). It is specified by neighCellList in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxCDMA2000Entries";
-    }
-    leaf umts-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTSNumberOfEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSMNumberOfEntries";
-    }
-    leaf cdma2000-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000NumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-umts-g {
-    description
-      "Table containing the inter-RAT cell list for UTRA (UMTS) provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID of an intra-RAT UMTS neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      config false;
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PCPICHTxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GERAN (GSM) provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM850";
-        }
-        enum "gsm900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM900";
-        }
-        enum "dcs1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - DCS1800";
-        }
-        enum "pcs1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - PCS1900";
-        }
-      }
-      config false;
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      config false;
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-cdma2000-g {
-    description
-      "Table containing the inter-RAT cell list for CDMA2000 provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.MustInclude";
-    }
-    leaf band-class {
-      type uint8 {
-        range "0..17";
-      }
-      config false;
-      description
-        "Defines the CDMA2000 band in which the CDMA2000 frequency carrier can be found, specified in bandclass number. BandClass is defined in {{bibref|3GPP2-C.S0057-B}} Table 1.5-1. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.BandClass";
-    }
-    leaf arfcn {
-      type uint16 {
-        range "0..2047";
-      }
-      config false;
-      description
-        "Defines the CDMA2000 frequency carrier within a CDMA2000 band, as specified by ARFCN-ValueCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and {{bibref|3GPP2-C.S0002-A}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.ARFCN";
-    }
-    leaf pn-offset {
-      type uint16 {
-        range "0..511";
-      }
-      config false;
-      description
-        "Defines the PN offset that represents the \"Physical cell identity\" in CDMA2000 system, as specified by PhysCellIdCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.PNOffset";
-    }
-    leaf type {
-      type enumeration {
-        enum "1x-rtt" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type - 1xRTT";
-        }
-        enum "hrpd" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type - HRPD";
-        }
-      }
-      config false;
-      description
-        "Indicates the type of the cell. This parameter determines the length of the CID parameter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type";
-    }
-    leaf cid {
-      type string {
-        length "0..16";
-      }
-      description
-        "Defines the global cell identity of the cell. For a 1xRTT cell, the cell identity is a binary string 47 bits long. For a HRPD cell, the cell identity is a binary string 128 bits long. The value of {{param}} parameter is interpreted as 128-bit long unsigned integer. If {{param|Type}} is {{enum|1xRTT|Type}}, the first 47 bits (6 octet) is used and the rest of this {{param}} parameter MUST be ignored by the CPE. If {{param|Type}} is {{enum|HRPD|Type}}, the entire 16 octet is used as {{param}}. Corresponds to IE CellGlobalIdCDMA2000 specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.CID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-g {
-    description
-      "This object contains parameters relating to the neighbor list used by the FAP based on its self-configuration capability and {{object|.CellConfig.LTE.RAN.NeighborList.}} configuration of adding and excluding cells.";
-    leaf max-lte-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.MaxLTECellEntries";
-    }
-    leaf lte-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-lte-cell-g {
-    description
-      "Table containing the LTE EUTRA (i.e. intra-RAT) cell list.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.PLMNID";
-    }
-    leaf cid {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Cell Identity. {{bibref|3GPP-TS.36.331|Section 6.3.4}}. Combination of {{param|PLMNID}} and {{param}} constitutes the Cell Global ID (CGI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.CID";
-    }
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If the value of {{param}} is the same with the one currently being used by the, then it implies that this neighbor cell is an intra-frequency cell; otherwise, it is an inter-frequency cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.EUTRACarrierARFCN";
-    }
-    leaf phy-cell-id {
-      type uint16 {
-        range "0..503";
-      }
-      description
-        "Physical cell ID, as specified in {{bibref|3GPP-TS.36.211|Section 6.11}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.PhyCellID";
-    }
-    leaf q-offset {
-      type int64;
-      description
-        "Indicate a cell-specific offset applicable to a specific neighbouring cell. It is used for evaluating the cell as a candidate for cell re-selection in idle mode. Corresponds to parameter q-OffsetCell broadcast in SIB4 for intra-frequency cells and in SIB5 for inter-frequency cells, specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.QOffset";
-    }
-    leaf cio {
-      type int64;
-      description
-        "Cell individual offset applicable to a specific neighbouring cell. It is used for evaluating triggering conditions for measurement reporting in connected mode. Specified by cellIndividualOffset in MeasObjectEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.CIO";
-    }
-    leaf rs-tx-power {
-      type int64;
-      units "dBm";
-      description
-        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.RSTxPower";
-    }
-    leaf blacklisted {
-      type boolean;
-      description
-        "Indicates whether this neighbor cell is allowed for UEs as handover target or not. If {{true}}, handover is prohibited towards this cell. If {{false}}, handover is allowed toward this cell. The {{param}} parameter allows this cell to be prohibited as a handover target, while still allowing this cell to be included in the BCCH SIB4 or 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.Blacklisted";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-g {
-    description
-      "Table containing the inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.36.331|Section 6.3.1 (SIB6, 7, 8)}}.";
-    leaf max-umts-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.}} table. There can be maximum of 16 UTRAN (UMTS) neighbor cells, as specified by carrierFreqListUTRA-FDD in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxUMTSEntries";
-    }
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.}} table. There can be maximum of 16 GERAN (GSM) neighbor cells, as specified by carrierFreqsInfoList in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxGSMEntries";
-    }
-    leaf max-cdma2000-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.}} table. There can be maximum of 32 banclasses. In each bandclass, there can be maximum of 16 CDMA2000 carrier frequencies. In each carrier, there can be maximum of 16 CDMA2000 neighbor cells (PN offset). It is specified by neighCellList in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxCDMA2000Entries";
-    }
-    leaf umts-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTSNumberOfEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSMNumberOfEntries";
-    }
-    leaf cdma2000-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000NumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-umts-g {
-    description
-      "Table containing the inter-RAT cell list for UTRA (UMTS) cell.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "RNC-ID of an intra-RAT UMTS neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PCPICHTxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GERAN (GSM) cell.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM850";
-        }
-        enum "gsm900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM900";
-        }
-        enum "dcs1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - DCS1800";
-        }
-        enum "pcs1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - PCS1900";
-        }
-      }
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000-g {
-    description
-      "Table containing the inter-RAT cell list for CDMA2000 cell.";
-    leaf band-class {
-      type uint8 {
-        range "0..17";
-      }
-      description
-        "Defines the CDMA2000 band in which the CDMA2000 frequency carrier can be found, specified in bandclass number. BandClass is defined in {{bibref|3GPP2-C.S0057-B|Table 1.5-1}}. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.BandClass";
-    }
-    leaf arfcn {
-      type uint16 {
-        range "0..2047";
-      }
-      description
-        "Defines the CDMA2000 frequency carrier within a CDMA2000 band, as specified by ARFCN-ValueCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and {{bibref|3GPP2-C.S0002-A}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.ARFCN";
-    }
-    leaf pn-offset {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Defines the PN offset that represents the \"Physical cell identity\" in CDMA2000 system, as specified by PhysCellIdCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.PNOffset";
-    }
-    leaf type {
-      type enumeration {
-        enum "1x-rtt" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type - 1xRTT";
-        }
-        enum "hrpd" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type - HRPD";
-        }
-      }
-      description
-        "Indicates the type of the cell. This parameter determines the length of the CID parameter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type";
-    }
-    leaf cid {
-      type string {
-        length "0..16";
-      }
-      description
-        "Defines the global cell identity of the cell. For a 1xRTT cell, the cell identity is a binary string 47 bits long. For a HRPD cell, the cell identity is a binary string 128 bits long. The value of {{param}} parameter is interpreted as 128-bit long unsigned integer. If {{param|Type}} is {{enum|1xRTT|Type}}, the first 47 bits (6 octet) is used and the rest of this {{param}} parameter MUST be ignored by the CPE. If {{param|Type}} is {{enum|HRPD|Type}}, the entire 16 octet is used as {{param}}. Corresponds to IE CellGlobalIdCDMA2000 specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.CID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.";
-  }
-
-  grouping cdma2000-g {
-    description
-      "This object contains parameters relating to configuring the CDMA2000 FAP.";
-    leaf tunnel-instance {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "This is the reference to the IPsec tunnel instance used by the CDMA2000 FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.TunnelInstance";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.";
-  }
-
-  grouping cdma2000-one-x-g {
-    description
-      "This object contains parameters relating to configuring the CDMA2000 1x FAP.";
-    leaf pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSNNumberOfEntries";
-    }
-    leaf max-batch-pcfpdsn-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.MaxBatchPCFPDSNEntries";
-    }
-    leaf batch-pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSNNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.";
-  }
-
-  grouping cdma2000-one-x-ran-g {
-    description
-      "This object contains parameters relating to RAN configuring the CDMA2000 1x FAP.";
-    leaf one-x-sector-nid {
-      type int64;
-      config false;
-      description
-        "SID for 1x. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXSectorNID";
-    }
-    leaf one-x-sector-sid {
-      type int64;
-      config false;
-      description
-        "NID for 1x . See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXSectorSID";
-    }
-    leaf one-xpzid {
-      type int64;
-      config false;
-      description
-        "packet Zone ID for 1x packet calls";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXPZID";
-    }
-    leaf base-id {
-      type int64;
-      config false;
-      description
-        "Base station ID (needed in SPM). This is also the CellID. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.BaseID";
-    }
-    leaf max-neighbor-list-entries {
-      type uint64;
-      description
-        "Maximum number of entries avaiable in {{object|.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.MaxNeighborListEntries";
-    }
-    leaf neighbor-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.";
-  }
-
-  grouping cdma2000-one-x-ran-rf-g {
-    description
-      "This object contains parameters relating to RF configuration of the FAP.";
-    leaf-list rfcnfl {
-      type string {
-        length "0..256";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a pair of 2-digit Band class number (as defined in {{bibref|3GPP2-C.S0057}}) followed by 4-digit FL Radio Frequency Channel Number (RFCN). Self-configuration for RFCN is controlled by {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}}. If the FAP's self-configuration capability for RFCN is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for RFCNFLInUse. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. An example value is \"010001, 030500\". If multiple items are specified, they are done in the order of preference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL";
-    }
-    leaf rfcnfl-band-in-use {
-      type string {
-        length "0..16";
-      }
-      description
-        "The FL Band being used by the FAP. Self-configuration for Band and RFCN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in RFCNFL. If the self-configuration capability is not available or not enabled, then this parameter contains the first band class value in RFCNFL.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFLBandInUse";
-    }
-    leaf rfcnfl-in-use {
-      type uint64;
-      description
-        "The FL RFCN being used by the FAP. Self-configuration for RFCN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in RFCNFL. If the self-configuration capability is not available or not enabled, then this parameter contains the first RFCN value in RFCNFL.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFLInUse";
-    }
-    leaf-list pilot-pn {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a pilot PN offset in units of 64 PN chips. Self-configuration for pilot PN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for Pilot PN Offset is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for PilotPNInUse. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PN offset values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The order of the items has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN";
-    }
-    leaf pilot-pn-in-use {
-      type uint16 {
-        range "0..511";
-      }
-      units "64 PN chips";
-      description
-        "The Pilot PN Offset being used by the FAP in {{units}}. Self-configuration for Pilot PN Offset is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in PilotPN. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in PilotPN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPNInUse";
-    }
-    leaf maxfap-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power allowed on the FAP. MaxFAPTxPower is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>;..<Pmax_high>;\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low>; and <Pmax_high>; are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower";
-    }
-    leaf maxfap-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      description
-        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPowerInUse";
-    }
-    leaf pch-pwr-percentage {
-      type uint32 {
-        range "1000..1000000";
-      }
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Paging Channel (expressed in {{units}}). For example, 93333 means 93.333% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PchPwrPercentage";
-    }
-    leaf pilot-pwr-percentage {
-      type uint32 {
-        range "1000..1000000";
-      }
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Pilot Channel (expressed in {{units}}). For example, 19950 means 19.95% of total.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPwrPercentage";
-    }
-    leaf sync-pwr-percentage {
-      type uint32 {
-        range "1000..1000000";
-      }
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Sync Channel (expressed in {{units}}). For example, 23458 means 23.4% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.SyncPwrPercentage";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.";
-  }
-
-  grouping cdma2000-one-x-ran-network-listen-mode-config-g {
-    description
-      "This object contains parameters relating to self-configuration of the MaxFAPTxPower of the FAP.";
-    leaf rfcnfl-margin {
-      type uint64;
-      config false;
-      description
-        "If self-configuration of RFCNFL is enabled, this value indicates the total received signal strength margin to be applied to the entries in RFCNFL when the FAP decides on the RFCNInUse in order to bias the selection of the most preferred frequency.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.RFCNFLMargin";
-    }
-    leaf fap-coverage-target {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Defines the target value measured in dB for the range of the FAP's FL coverage, in terms of RF propagation loss. This value can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. {{param}} is expressed as a range of the minimum coverage path loss and the maximum coverage path loss with \"..\" (two periods) between the minimum and maximum values, i.e., \"<FAPCoverageTarget_min>..<FAPCoverageTarget_max>\". These values can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. <FAPCoverageTarget_min> and <FAPCoverageTarget_max> are measured in dB and have a range of [50,150] incremented by 1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPCoverageTarget";
-    }
-    leaf fap-beacon-coverage-target {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Defines the target value measured in dB for the range of the FAP's FL Beacon coverage, in terms of RF propagation loss. This value can be used by the FAP's selfconfiguration algorithms to help derive beacon transmit power levels. {{param}} is expressed as a range of the minimum coverage path loss and the maximum coverage path loss with \"..\" (two periods) between the minimum and maximum values, i.e., \"<BeaconCoverageTarget_min>..<BeaconCoverageTarget_max>\". These values can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels for the beacon(s) in the presence of co-channel and adjacent channel interference.\" <BeaconCoverageTarget_min> and <BeaconCoverageTarget_max> are measured in dB and have a range of [50,150] incremented by 1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPBeaconCoverageTarget";
-    }
-    leaf max-coverage-edge-pilot-strength {
-      type int64;
-      units "0.1 dB";
-      config false;
-      description
-        "The maximum strength of the received pilot energy per chip, Ec, to total received spectral density, Io (signal and noise) desired for FAP users at the edge of the FAP coverage target in units of {{units}}. This value can be used by the FAP's self configuration algorithms to help prevent aggressive transmit power level settings .";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.MaxCoverageEdgePilotStrength";
-    }
-    leaf max-allowable-pilot-strength-degradation {
-      type int64;
-      units "0.1 dB";
-      config false;
-      description
-        "The maximum amount in dB by which the strength of the received pilot energy per chip, Ec, to total received spectral density, Io (signal and noise) for alien users can be degraded in the presence of FAP interference at the edge of FAP coverage, in {{units}} units.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.MaxAllowablePilotStrengthDegradation";
-    }
-    leaf-list rfcnfl-to-protect {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a FL RFCN corresponding to a CDMA2000 carrier that is adjacent to the RFCNFLInUse to be protected from adjacent channel interference. If any of the items in the list are adjacent to the FAP's own FL channel, the FAP MUST take the PilotStrength and total received power spectral density (Io) measured on these channels into account as part of its maximum transmit power selfconfiguration. The RFCNs in the list can belong to any operator, allowing for protection of the FAP operator's own macro layer as well as that of other operators. The list should take into account the ability of the FAP to self-configure its own FL RFCN and so SHOULD include any channels (requiring protection) which can potentially be adjacent to the RFCN selected by the FAP. For example, if only adjacent operator protection is needed and the FAP has the ability to self-configure to any channel owned by its operator, this list would be populated with the RFCNs immediately above and below the range of channels owned by the FAP operator. If an empty string then it indicates that there are no channels adjacent to the FAP that require protection, or that self-configuration of the FAP transmit power is not enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.RFCNFLToProtect";
-    }
-    leaf fap-allowed-adj-chan-coverage-hole {
-      type uint8 {
-        range "30..150";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines the maximum allowed coverage hole created on carriers listed in RFCNFLToProtect by the FAP transmission, measured in {{units}}, in terms of RF propagation loss such that the {{param|MaxAllowablePilotStrengthDegradation}} is maintained outside the {{param}} for MS on that {{param|RFCNFLToProtect}}. This value can be used by the FAP's self configuration algorithms to help derive transmit power levels.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPAllowedAdjChanCoverageHole";
-    }
-    leaf acir {
-      type uint64;
-      units "dB";
-      config false;
-      description
-        "AdjacentChannelInterferenceRatio value in {{units}} to be used when determining the coverage hole created on adjacent channels due to leakage.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.ACIR";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.";
-  }
-
-  grouping cdma2000-one-x-ran-access-parameters-g {
-    description
-      "The object used for configuring access parameter messages for 1x. See {{bibref|3GPP2-C.S0005}}.";
-    leaf nom-pwr {
-      type int64;
-      config false;
-      description
-        "Nominal power correction factor used by the mobile in open loop power adjustment. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NomPwr";
-    }
-    leaf init-pwr {
-      type int64;
-      config false;
-      description
-        "Initial power offset used by the mobile in open loop power adjustment. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.InitPwr";
-    }
-    leaf pwr-step-indb {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Power step increment in successive access probes. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PwrStepIndb";
-    }
-    leaf nom-pwr-ext {
-      type uint8 {
-        range "0..1";
-      }
-      units "dBm";
-      config false;
-      description
-        "{{param}} should be zero for BC0 and BC1. For other band classes, {{param}} is 1 if Mobile's correction factor is between -24dBm and -9dBm. Otherwise {{param}} is zero. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NomPwrExt";
-    }
-    leaf apm-auth {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Enabling/disabling global authentication. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.APMAuth";
-    }
-    leaf apm-rand-update-prd {
-      type uint16 {
-        range "16..14400";
-      }
-      units "seconds";
-      config false;
-      description
-        "The period (in {{units}}) that the BSS updates the RAND value sent via APM. Only 2 second multiples accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.APMRandUpdatePrd";
-    }
-    leaf initialpwr {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Initial power offset for access. The base station shall set this field to the correction factor to be used by mobile stations in the open loop power estimate for the initial transmission on an Access Channel, expressed as a two's complement value in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Initialpwr";
-    }
-    leaf pwr-step {
-      type uint8 {
-        range "0..7";
-      }
-      units "dB";
-      config false;
-      description
-        "Power increment. The base station shall set this field to the value by which mobile stations are to increase their transmit power between successive access probes in an access probe sequence, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PwrStep";
-    }
-    leaf num-step {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Number of access probes. The base station shall set this field to one less than the maximum number of access probes mobile stations are to transmit in a single access probe sequence.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NumStep";
-    }
-    leaf max-cap-size {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Maximum Access Channel message capsule size. The base station shall set this field to the value in the range 0 to 7. {{param}} is set to three less than the maximum number of Access Channel frames in an Access Channel message capsule.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxCapSize";
-    }
-    leaf preamble-size {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Access Channel preamble length. The base station shall set this field to one less than the number of Access Channel frames that mobile stations are to transmit in each Access Channel preamble.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PreambleSize";
-    }
-    leaf psist09 {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 0 - 9. A value of 63 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist09";
-    }
-    leaf psist10 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 10 (test Mobile). A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist10";
-    }
-    leaf psist11 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 11 (emergency Mobile). A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist11";
-    }
-    leaf psist12 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 12. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist12";
-    }
-    leaf psist13 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 13. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist13";
-    }
-    leaf psist14 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 14. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist14";
-    }
-    leaf psist15 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 15. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist15";
-    }
-    leaf msg-psist {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence modifier for access channel attempts transmitting a message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MsgPsist";
-    }
-    leaf reg-psist {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence modifier for registration message transmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.RegPsist";
-    }
-    leaf probe-pn-ran {
-      type uint8 {
-        range "0..9";
-      }
-      config false;
-      description
-        "Time randomization for access channel probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.ProbePNRan";
-    }
-    leaf acc-tmo {
-      type uint8 {
-        range "0..15";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "Access transmission timeout. Two less than the time the mobile has to wait before determining that the probe is not received by the BSS. It is in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.AccTmo";
-    }
-    leaf probe-bkoff {
-      type uint8 {
-        range "0..15";
-      }
-      units "frames";
-      config false;
-      description
-        "One less than maximum number for randomized delay between successive access probes in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.ProbeBkoff";
-    }
-    leaf bkoff {
-      type uint8 {
-        range "0..15";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "One less than maximum number for randomized delay between successive access sequences in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Bkoff";
-    }
-    leaf max-req-seq {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Maximum number of access probe sequences for an access request.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxReqSeq";
-    }
-    leaf max-rsp-seq {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Maximum number of access probe sequences for an access response";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxRspSeq";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.";
-  }
-
-  grouping cdma2000-one-x-ran-system-parameters-g {
-    description
-      "The object used for configuring system parameter messages for 1x";
-    leaf reg-zone {
-      type uint16 {
-        range "0..4095";
-      }
-      config false;
-      description
-        "registration zone number (refer to Section 2.6.5.1.5 of {{bibref|3GPP2-C.S0005}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.RegZone";
-    }
-    leaf total-zones {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Total number of zones the mobile shall retain for zone based registration. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.TotalZones";
-    }
-    leaf zone-timer {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "timer value to be used by the mobile in the zone registration timer. Refer to table 3.7.2.3.2.1-1 of the standard {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.ZoneTimer";
-    }
-    leaf reg-period {
-      type uint8 {
-        range "29..85";
-      }
-      config false;
-      description
-        "Registration period for timer based registration. Registration period is calculated from the formula 2^(REG_PRD/4) x 0.08 seconds. Thus a value of 59 corresponds to 1853.6 seconds (~ 1/2 hour). See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.RegPeriod";
-    }
-    leaf srch-win-a {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Search window size to be used ny the mobile for active set and candidate set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 11 corresponds to 130 chips";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinA";
-    }
-    leaf srch-win-n {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Search window size to be used by the mobile for neighbor set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 8 corresponds to 60 chips";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinN";
-    }
-    leaf srch-win-r {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Search window size to be used by the mobile for remaining set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 8 corresponds to 60 chips";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinR";
-    }
-    leaf nghbr-max-age {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "neighbor set maximum age beyond which the mobiles are supposed to drop a neighbor. This is the count of neighbout list updat or extended neighbor list updates a mobile shall receive before removing a neighbor from the neighbor list. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.NghbrMaxAge";
-    }
-    leaf pwr-rep-thresh {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Power control reporting threshold. Number of bad frames a mobile should receive before sending a PMRM message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepThresh";
-    }
-    leaf pwr-rep-frames {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Duration (in number of frames) for measuring bad frames - given by equation 2^(PWR_REP_FRAMES/2) x 5 frames. For example, 6 corresponds to 40 frames. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepFrames";
-    }
-    leaf pwr-thresh-enable {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "enable/disable power measurement report message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrThreshEnable";
-    }
-    leaf pwr-period-enable {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "enable/disable periodic power measurement report message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrPeriodEnable";
-    }
-    leaf pwr-rep-delay {
-      type uint8 {
-        range "0..32";
-      }
-      config false;
-      description
-        "Delay (in unit of four frames) following a PMRM before the mobile restarts counting bad frames for power control measuremnt. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepDelay";
-    }
-    leaf rescan {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "If {{param}} is set to 1, the mobiles should restart and reinitialize the System Parameters message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Rescan";
-    }
-    leaf tadd {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Power threshold (in {{units}}) for transferring a neighbor from neighbor set or remaining set to active set. For example, a value of 26 corresponds to -13 dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tadd";
-    }
-    leaf tdrop {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Drop threshold (in {{units}}) to start a handoff timer to drop a neighbor from active or candidate set. For example, 30 corresponds to -15dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tdrop";
-    }
-    leaf tcomp {
-      type uint8 {
-        range "0..15";
-      }
-      units "0.5 dB";
-      config false;
-      description
-        "If a pilot in condidate set exceeds the power of a pilot in active set by threshold, the mobile shall send a power strenght measurement report message. This threshold is defined in unit of {{units}}. For example, 5 corresponds to a threshold of 2.5 dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tcomp";
-    }
-    leaf t-tdrop {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Timer value for which an action is taken by the mobile for a neighbor in candidate set or in active set. Refer to Table 2.6.6.2.3-1 of the {{bibref|3GPP2-C.S0005}} for details. For example, 3 corresponds to four seconds";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.TTdrop";
-    }
-    leaf in-traffic-tadd {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "T-ADD value (in {{units}}) used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTadd";
-    }
-    leaf in-traffic-tdrop {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "T-Drop value (in {{units}}) used in in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTdrop";
-    }
-    leaf in-traffic-tcomp {
-      type uint8 {
-        range "0..15";
-      }
-      units "dB";
-      config false;
-      description
-        "T_Comp value (in {{units}}) used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTcomp";
-    }
-    leaf in-traffic-ttdrop {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "T_Tdrop timer value value used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTtdrop";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.";
-  }
-
-  grouping cdma2000-one-x-ran-extended-system-parameters-g {
-    description
-      "The object used for configuring extended system parameter messages for 1x";
-    leaf prev {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "protocol revision";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.Prev";
-    }
-    leaf p-min-rev {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "minimum protocol revision";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PMinRev";
-    }
-    leaf delete-for-tmsi {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Delete Foreign TMSI. The base station shall set this field to '1' to cause the mobile station to delete its TMSI if the TMSI was assigned in a different TMSI zone from that specified by the TMSI_ZONE field of this message; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.DeleteForTMSI";
-    }
-    leaf use-tmsi {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Use TMSI indicator. The base station shall set this field to the value shown next field corresponding to the type of MSID that the mobile station is to use on the Access Channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.UseTMSI";
-    }
-    leaf pref-msid-type {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Preferred Access Channel Mobile Station Identifier Type. F294. The base station shall set this field to the value shown as below corresponding to the type of MSDI that the mobile station is to use on the Access Channel. [useTMSI] [prefMSIDType] [description] 0 00 IMSI_S and ESN 0 10 IMSI 0 11 IMSI and ESN 1 10 TMSI; IMSI 1 11 TMSI; IMSI and ESN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PrefMSIDType";
-    }
-    leaf mcc {
-      type uint16 {
-        range "0..1023";
-      }
-      config false;
-      description
-        "Mobile Country Code. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MCC";
-    }
-    leaf imsi1112 {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "11th and 12th digits of IMSI. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.IMSI1112";
-    }
-    leaf tmsi-zone-len {
-      type uint8 {
-        range "1..8";
-      }
-      config false;
-      description
-        "TMSI zone length. The base station shall set this field to the number of octets included in the TMSI_ZONE. The base station shall set this field to a value in the range 1 to 8 inclusive.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.TMSIZoneLen";
-    }
-    leaf tmsi-zone {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "TMSI zone. The base station shall set this field to the TMSI zone number as specified in {{bibref|3GPP2-N.S0010}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.TMSIZone";
-    }
-    leaf bcast-index {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Broadcast slot cycle index. To enable periodic broadcast paging, the base station shall set this field to and unsigned 3-bit number in the range 1-7, equal to the broadcast slot cycle index. To disable periodic broadcast paging, the base station shall set this field to '000'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.BcastIndex";
-    }
-    leaf imsit-supported {
-      type int64;
-      config false;
-      description
-        "1: IMISI_T is supported, 0: IMSI_T is not supported. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.IMSITSupported";
-    }
-    leaf soft-slope {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "The slope in the inequality criterion for adding a pilot to the Active Set, or dropping a pilot from the Active Set. The base station shall set this field as an unsigned binary number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.SoftSlope";
-    }
-    leaf add-intercept {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "The intercept in the inequality criterion for adding a pilot to the Active Set. The base station shall set this field as a two's complement signed binary number, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AddIntercept";
-    }
-    leaf drop-intercept {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "The intercept in the inequality criterion for dropping a pilot from the Active Set. The base station shall set this field as a two's complement signed binary number, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.DropIntercept";
-    }
-    leaf max-num-alt-so {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Maximum number of alternative service options. The base station shall set this field to the maximum number of alternative service option numbers that the mobile station is allowed to include in the Origination Message or the Page Response Message. For mobile stations with MOB_P_REVs less than seven, the alternative service options are those service options defined in TSB-58B and related to SERVICE_OPTION in Origination Message and the Page Response Message. For mobile stations with MOB_P_REVs equal to or greater than seven, the alternative service options are those service options defined in TSB-58B without service group number assigned and related to SERVICE_OPTION in Origination Message and the Page Response Message. The base station sets this field to a value greater than zero, in addition, the base station shall allow the mobile station with MOB_P_REVs equal to or greater than 7 to include - a 4 or 8-bit service option bitmap in the Origination Message and the Page Response Message; - alternative service option numbers, not limited to MAX_ALT_SO_NUM, in the Enhanced Origination Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MaxNumAltSo";
-    }
-    leaf reselected-included {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "System reselection parameters included. If the base station is including system reselection parameters, the base station shall set this field to '1'; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.ReselectedIncluded";
-    }
-    leaf ec-thresh {
-      type uint64;
-      units "dBm";
-      config false;
-      description
-        "Pilot power threshold. If RESELECTINCLUDED is set to '1', the base station shall include the field EC_THRESH and set this field to: [ (pilot_power_threshold + 115 ) ] where pilot_power_threshold is the pilot power, Ec, in {{units}}/1.23 MHz, below which the mobile station is to perform system reselection; otherwise, the base station shall omit this field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.EcThresh";
-    }
-    leaf ec-io-thresh {
-      type uint64;
-      config false;
-      description
-        "Pilot Ec / Io threshold. If RESELECTINCLUDED is set to '1', the base station shall include the field EC_I0_THRESH and set this field to: [ - 20 x log10 (pilot_threshold) ] where pilot_threshold is the pilot Ec/Io below which the mobile station is to perform system reselection; otherwise, the base station shall omit this field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.EcIoThresh";
-    }
-    leaf pilot-report {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Pilot reporting indicator. The base station shall set this field to '1' if the mobile station is to report the additional pilots which have pilot strength exceeding T_ADD in all Access Channel messages. The base station shall set this field to '0' if the mobile station is to report the additional pilots which have pilot strengths exceeding T_ADD only in the Origination Message and the Page Response Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PilotReport";
-    }
-    leaf nghbr-set-entry-info {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Neighbor Set access entry handoff information included indicator. If the base station is including information on the Neighbor Set access entry handoff, the base station shall set this field to '1'; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NghbrSetEntryInfo";
-    }
-    leaf access-ho-order {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access entry handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access entry handoff after receiving a message while performing the Mobile Station Order and Message Processing Operation in the Mobile Station Idle State; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHOOrder";
-    }
-    leaf nghbr-set-access-info {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Neighbor Set access handoff included indicator. If the base station is including information on the Neighbor Set access handoff or access probe handoff, the base station shall set this field to '1', otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NghbrSetAccessInfo";
-    }
-    leaf access-ho {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access handoff; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHO";
-    }
-    leaf access-ho-msg-rsp {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access handoff permitted for message response indicator. If AccessHO is set to '1', the base station shall include this field and set it as described below; otherwise, the base station shall omit this field. The base station shall set this field to '1' if the mobile station is permitted to perform an access handoff after receiving a message and before responding to that message in the System Access State; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHOMsgRsp";
-    }
-    leaf access-probe-ho {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access probe handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the base station is permitted to perform an access probe handoff; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessProbeHO";
-    }
-    leaf acc-ho-list-upd {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access handoff list update permitted indicator. If AccessProbeHO is included and is set to '1', the base station shall set this field to '1' if the mobile station is permitted to update the access handoff list during an access attempt; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccHOListUpd";
-    }
-    leaf acc-probe-ho-other-msg {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access probe handoff permitted for messages other than the Origination Message and the Page Response Message. If AccessProbeHO is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access probe handoff for messages other than the Origination Message and the Page Response. The base station shall set this field to '0' if the mobile station is permitted to perform an access probe handoff only for the Origination Message and the Page Response Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccProbeHOOtherMsg";
-    }
-    leaf max-num-probe-ho {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Maximum number of times that mobile station is permitted to perform an access probe handoff. If AccessProbeHO is set to '1', the base station shall set this field to the maximum number of times the mobile station is allowed to perform an access probe handoff within an access attempt minus one.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MaxNumProbeHO";
-    }
-    leaf brdcast-gps-assit {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "If {{param}} is set to 1, then Braodcast GPS assist is supported. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.BrdcastGPSAssit";
-    }
-    leaf qpch-supported {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Quick Paging Channel Supported Indication. If the base station supports Quick Paging Channel operation, the base station shall set this field to '1'; otherwise the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHSupported";
-    }
-    leaf num-qpch {
-      type uint8 {
-        range "1..3";
-      }
-      config false;
-      description
-        "Number of Quick Paging Channels. If the base station sets QPCHSUPPORTED to '1', the base station shall include this field and set it as described below; otherwise, the base station shall omit this field. The base station shall set this field to the number of Quick Paging Channels on this CDMA Channel. The base station shall not set this field to '00'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NumQPCH";
-    }
-    leaf qpch-rate {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Quick Paging Channel indicator rate. See {{bibref|3GPP2-C.S0005}}. {{param}} is set as follows: 0: 4800bps; 1: 9600bps.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHRate";
-    }
-    leaf qpch-pwr-level-page {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Quick Paging Channel paging indicator transmit power level. {{param}} is set as follows: 0: 5 dB below; 1: 4 dB below; 2: 3 dB below; 3: 2 dB below; 4: 1 dB below; 5: Same; 6: 1 dB above; 7: 2dB above.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHPwrLevelPage";
-    }
-    leaf qpc-hcci-supported {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Quick Paging Channel configuration change indicator supported. {{param}} is set as follows: if the base station is to support configuration change indicators on the Quick Paging Channel, {{param}} to '1'; otherwise {{param}} is set to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHcciSupported";
-    }
-    leaf qpch-pwr-level-config {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Quick Paging Channel configuration change indicator CONFIG transmit power level. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHPwrLevelConfig";
-    }
-    leaf sdb-supported {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Short Data Burst supported indicator. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.SDBSupported";
-    }
-    leaf r-lgain-traffic-pilot {
-      type uint8 {
-        range "0..63";
-      }
-      units "0.125 dB";
-      config false;
-      description
-        "Gain adjustment of the Reverse Traffic Channel relative to the Reverse Pilot Channel for Radio Configurations greater than 2. {{param}} is set to the correction factor to be used by mobile stations in setting the power of a reverse traffic channel, expressed as a two's complement value in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RLgainTrafficPilot";
-    }
-    leaf rvs-pwr-ctrl-delay-incl {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Reverse Power Control Delay included indicator. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RvsPwrCtrlDelayIncl";
-    }
-    leaf rvs-pwr-ctrl-delay {
-      type uint8 {
-        range "0..3";
-      }
-      units "1.25 ms";
-      config false;
-      description
-        "The reverse power control delay. {{param}} is setto the closed-loop reverse power control delay minus one (the closed-loop reverse power control delay is the time between the end of a gated-on reverse PCG and the beginning of the Forward Power Control Subchannel in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RvsPwrCtrlDelay";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.";
-  }
-
-  grouping cdma2000-one-x-ran-forward-pwr-ctr-g {
-    description
-      "The object used for configuring extended channel assignment messages for 1x";
-    leaf fpcfch-init-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Initial Fundamental Channel outer loop Eb/Nt setpoint in {{units}}. For example, 56 corresponds to 7 dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHInitSetpt";
-    }
-    leaf fpc-subchan-gain {
-      type int64;
-      units "0.25 dB";
-      config false;
-      description
-        "Forward power control subchannel relative to fwd traffic channel in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCSubchanGain";
-    }
-    leaf rl-gain-adj {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Reverse Traffic Channel power relative to access power in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.RLGainAdj";
-    }
-    leaf fpcfchfer {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Fundamental Channel target frame error rate. Refer to table 3.7.3.3.2.25-2 of {{bibref|3GPP2-C.S0005}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHFER";
-    }
-    leaf fpcfch-min-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Minimum Fundamental Channel Outer Loop Eb/Nt setpoint in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHMinSetpt";
-    }
-    leaf fpcfch-max-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Maximum Fundamental Channel Outer Loop Eb/Nt setpoint in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHMaxSetpt";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.";
-  }
-
-  grouping cdma2000-one-x-ran-hard-handoff-g {
-    description
-      "This object provides configurable parameters for 1x Handout";
-    leaf handout-enable {
-      type boolean;
-      config false;
-      description
-        "Enabling handout operation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HandoutEnable";
-    }
-    leaf ho-pilot-power-thresh {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Pilot power threshold (in {{units}} relative to the FAP pilot power) for handout declaration";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HOPilotPowerThresh";
-    }
-    leaf ho-pilot-duration {
-      type uint8 {
-        range "20..50";
-      }
-      units "100ms";
-      config false;
-      description
-        "Timethreshold for handout declaration (in {{units}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HOPilotDuration";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.";
-  }
-
-  grouping cdma2000-one-x-ran-hard-handoff-stats-g {
-    description
-      "This object contains statistics for all Handouts of the 1x FAP.";
-    leaf tx-ho-required {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of Handout Required messages sent to the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxHORequired";
-    }
-    leaf rx-ho-command {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of Handout Command messegaes received from the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxHOCommand";
-    }
-    leaf ho-required-rejected {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of HO required requests rejected by the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HORequiredRejected";
-    }
-    leaf ho-required-unanswered {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of HO required requests for which no response received from the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HORequiredUnanswered";
-    }
-    leaf tx-uhdm {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number UHDMs sent to mobiles";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxUHDM";
-    }
-    leaf rx-ns-ack {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of MSAcks received from the mobile in response to UHDM";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxNSAck";
-    }
-    leaf ho-failure-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of Handout attempts declared as failure";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HOFailureCount";
-    }
-    leaf call-drop-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total numer of call drops after a HO attempt. RTC lost without MSack";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.CallDropCount";
-    }
-    leaf tx-ho-commence {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of Handout Commenced messages sent to MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxHOCommence";
-    }
-    leaf rx-ho-session-clear {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of session clear commands received form the core";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxHOSessionClear";
-    }
-    leaf return-on-failure-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of times a Return On Handoff failure was declared";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.ReturnOnFailureCount";
-    }
-    leaf one-pilot-report-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of times only one pilot was reported in HO Required message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.OnePilotReportCount";
-    }
-    leaf two-pilot-report-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of times only two pilot was reported in HO Required message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TwoPilotReportCount";
-    }
-    leaf three-pilot-report-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of times only three pilot was reported in HO Required message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.ThreePilotReportCount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.";
-  }
-
-  grouping cdma2000-one-x-ran-power-control-g {
-    description
-      "Configuration Managed Object for OTA power control attribute.";
-    leaf one-xpcfpc-incl {
-      type int64;
-      config false;
-      description
-        "Whether Forward power control information included in Power Control message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCIncl";
-    }
-    leaf one-xpcfpcfch-min-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "The value for the minimum Fundamental Channel Outer Loop Eb/Nt setpoint, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCFCHMinSetpt";
-    }
-    leaf one-xpcfpcfch-max-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "The value for the maximum Fundamental Channel Outer Loop Eb/Nt setpoint, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCFCHMaxSetpt";
-    }
-    leaf one-xpcrpc-incl {
-      type int64;
-      config false;
-      description
-        "Whether reverse Power control information included in the Power Control Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCRPCIncl";
-    }
-    leaf one-xpcfch-chan-adj-gain {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Channel adjustment gain (in {{units}}) for Reverse Fundamental Channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFCHChanAdjGain";
-    }
-    leaf one-xpc-pwr-rep-thresh {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The number of bad frames to be received in a measurement period on the channel which carries the Power Control Subchannel before mobile stations are to generate a Power easurement Report Message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepThresh";
-    }
-    leaf one-xpc-pwr-rep-frames {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Power control reporting frame count. Number of frames over which the mobile station measures frame errors. For example, 7 corresponds to 55 frames. Refer to {{bibref|3GPP2-C.S0005}} for mapping between this value and the actual frame count.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepFrames";
-    }
-    leaf one-x-pwr-thresh-enable {
-      type int64;
-      config false;
-      description
-        "Threshold report mode indicator. If the mobile station is to generate threshold Power Measurement Report Messages, the base station shall set this field to '1'. If the mobile station is not to generate threshold Power Measurement Report Messages, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPwrThreshEnable";
-    }
-    leaf one-xpc-pwr-period-enable {
-      type int64;
-      config false;
-      description
-        "Periodic report mode indicator. If the mobile station is to generate periodic Power Measurement Report Messages, the base station shall set this field to '1'. If the mobile station is not to generate periodic Power Measurement Report Messages, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrPeriodEnable";
-    }
-    leaf one-xpc-pwr-rep-delay {
-      type uint8 {
-        range "0..31";
-      }
-      units "4 frames";
-      config false;
-      description
-        "Power report delay. The period that the mobile station waits following a Power Measurement Report Message before restarting frame counting for power control purposes. The base station shall set this field to the power report delay values in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepDelay";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.";
-  }
-
-  grouping cdma2000-one-x-ran-neighbor-list-g {
-    description
-      "This object contains information common to all neighbors of a sector. This object has only one instance.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.Alias";
-    }
-    leaf pilot-inc {
-      type int64;
-      config false;
-      description
-        "pilot increment policy for this network. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.PilotInc";
-    }
-    leaf one-x-neighbor-index {
-      type int64;
-      description
-        "Macro neighbour index. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborIndex";
-    }
-    leaf neighbor-config {
-      type enumeration {
-        enum "same-config" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - SameConfig";
-        }
-        enum "same-paging" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - SamePaging";
-        }
-        enum "diff-paging" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - DiffPaging";
-        }
-        enum "unknown" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - Unknown";
-        }
-      }
-      config false;
-      description
-        "Neighbor configuration in terms of number of frequencies having paging channels as defined in Section 3.7.2.3.2 of the {{bibref|3GPP2-C.S0005}} standard";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig";
-    }
-    leaf neighbor-pn {
-      type int64;
-      description
-        "PN offset of the neighbor. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborPN";
-    }
-    leaf search-priority {
-      type enumeration {
-        enum "low" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - Low";
-        }
-        enum "medium" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - Medium";
-        }
-        enum "high" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - High";
-        }
-        enum "very-high" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - VeryHigh";
-        }
-      }
-      config false;
-      description
-        "priority level for serching this neighbor. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority";
-    }
-    leaf neighbor-band {
-      type enumeration {
-        enum "0" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 0";
-        }
-        enum "1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 1";
-        }
-        enum "2" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 2";
-        }
-        enum "3" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 3";
-        }
-        enum "4" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 4";
-        }
-        enum "5" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 5";
-        }
-        enum "6" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 6";
-        }
-      }
-      config false;
-      description
-        "Neighbor band class. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand";
-    }
-    leaf neighbor-frequency {
-      type int64;
-      config false;
-      description
-        "frequency of neighbor. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborFrequency";
-    }
-    leaf frequency-included {
-      type int64;
-      config false;
-      description
-        "Flag to indicate if the channel id included. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.FrequencyIncluded";
-    }
-    leaf in-traffic {
-      type int64;
-      config false;
-      description
-        "whether this neighbor can be used for in-traffic neighborlist message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.InTraffic";
-    }
-    leaf overhead-msg {
-      type int64;
-      config false;
-      description
-        "whether this neighbor can be used for overhead neighborlist message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OverheadMsg";
-    }
-    leaf base-identifier {
-      type int64;
-      config false;
-      description
-        "unique identifire of the neighboring cell (optional)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.BaseIdentifier";
-    }
-    leaf air-interface {
-      type enumeration {
-        enum "one-x" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - OneX";
-        }
-        enum "is95" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - IS95";
-        }
-        enum "hrpd" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - HRPD";
-        }
-        enum "other" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - Other";
-        }
-      }
-      config false;
-      description
-        "Air interface technology of the neighbor.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface";
-    }
-    leaf hand-out-capable {
-      type int64;
-      config false;
-      description
-        "Flag to indicate if the handOutCapability is possible.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.HandOutCapable";
-    }
-    leaf one-x-neighbor-longitude {
-      type string {
-        length "0..16";
-      }
-      config false;
-      description
-        "Longitude for this neighbor. Parameter is a string representing a floating point real number (+/- XXX.YY). Where + for East, - for West, XXX.Y ranges between 0.0 and 180.0 .";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborLongitude";
-    }
-    leaf one-x-neighbor-latitude {
-      type string {
-        length "0..16";
-      }
-      config false;
-      description
-        "Lattitude for this neighbor. Parameter is a string representing a floating point number (+/-XX.Y). + for North, - for South, XX.Y ranges between 0.0 and 90.0.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborLatitude";
-    }
-    leaf one-x-neighbor-msc-id {
-      type uint32 {
-        range "0..16777215";
-      }
-      config false;
-      description
-        "IOS MSCID of the neighbors. See {{bibref|3GPP2-A.S0014}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborMSCId";
-    }
-    leaf one-x-neighbor-ios-cell-id {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell Identifier of the neighbor (formatted according to Cell Identification Discriminator = '0000 0010', i.e., 12-bit cell value and 4-bit sector value). See {{bibref|3GPP2-A.S0014}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborIOSCellId";
-    }
-    leaf force-in-overhead {
-      type boolean;
-      config false;
-      description
-        "If {{param}} is set to {{true}}, the FAP SHOULD include this Neighbor List entry in the Neighbor List overhead messages (see {{bibref|3GPP2-C.S0005}}. Otherwise, {{param}} is set to {{false}}, in which case the FAP MAY include this Neighbor List entry in the Neighbor List overhead messages.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.ForceInOverhead";
-    }
-    leaf included-in-overhead {
-      type boolean;
-      description
-        "If {{param}} is set to {{true}}, the FAP is currently including this Neighbor List entry in the Neighbor List overhead messages (see {{bibref|3GPP2-C.S0005}}. Otherwise, {{param}} is set to {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.IncludedInOverhead";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.";
-  }
-
-  grouping cdma2000-one-x-ran-apidm-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf association-type {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "The FAP shall set this field to the value shown in {{bibref|3GPP2-C.S0005}} corresponding to the configuration of the base station.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.AssociationType";
-    }
-    leaf apidlen {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "The FAP shall set this field to the length of the access point identification in units of 16 bits. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APIDLEN";
-    }
-    leaf apid {
-      type binary {
-        length "0..16";
-      }
-      config false;
-      description
-        "Access Point Identification. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APID";
-    }
-    leaf apidmask {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Access Point identification Mask. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APIDMASK";
-    }
-    leaf iosmscid {
-      type uint32 {
-        range "0..16777215";
-      }
-      config false;
-      description
-        "MSC_ID of the base station. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.IOSMSCID";
-    }
-    leaf ioscellid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "CELL_ID of the base station. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.IOSCELLID";
-    }
-    leaf intrafreqhohysincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTRAFREQHOHYS field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOHYSINCL";
-    }
-    leaf intrafreqhohys {
-      type uint8 {
-        range "0..127";
-      }
-      config false;
-      description
-        "Intra Frequency Handoff Hysteresis. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOHYS";
-    }
-    leaf intrafreqhoslopeincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTRAFREQHOSLOPE field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOSLOPEINCL";
-    }
-    leaf intrafreqhoslope {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "Intra Frequency Handoff Slope. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOSLOPE";
-    }
-    leaf interfreqhohysincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTERFREQHOHYS field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOHYSINCL";
-    }
-    leaf interfreqhohys {
-      type uint8 {
-        range "0..127";
-      }
-      config false;
-      description
-        "Inter frequency handoff hysteresis. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOHYS";
-    }
-    leaf interfreqhoslopeincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTERFREQHOSLOPE field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOSLOPEINCL";
-    }
-    leaf interfreqhoslope {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "Inter frequency handoff slope. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOSLOPE";
-    }
-    leaf interfreqsrchthincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTERFREQSRCHTH field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQSRCHTHINCL";
-    }
-    leaf interfreqsrchth {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Inter-frequency search threshold. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQSRCHTH";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.";
-  }
-
-  grouping cdma2000-one-x-ran-apidtm-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf apidtextcha-ri-len {
-      type uint16 {
-        range "0..256";
-      }
-      config false;
-      description
-        "Access Point identification Text CHARi field Length ({{param|APIDTEXTCHARi}}). Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTCHARiLEN";
-    }
-    leaf apidtextmsgencoding {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Access Point identification Text message encoding. Refer {{bibref|3GPP2-C.S0005}} and {{bibref|3GPP2-C.R1001}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTMSGENCODING";
-    }
-    leaf apidtextcha-ri {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "Access Point Identification Text. Refer {{bibref|3GPP2-C.S0005}} and {{bibref|3GPP2-C.R1001}} for definitions.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTCHARi";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.";
-  }
-
-  grouping cdma2000-one-x-ran-appim-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf lifetime {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Lifetime of the information in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.LIFETIME";
-    }
-    leaf numappirec {
-      type uint16 {
-        range "0..511";
-      }
-      config false;
-      description
-        "The number of entries for {{object|.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.NUMAPPIREC";
-    }
-    leaf appirec-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIRECNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.";
-  }
-
-  grouping cdma2000-one-x-ran-appim-appirec-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.Alias";
-    }
-    leaf apassntype {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Access point association type the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APASSNTYPE";
-    }
-    leaf apsidsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "SID same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APSIDSAMEASPREVIOUS";
-    }
-    leaf apnidsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "NID same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APNIDSAMEASPREVIOUS";
-    }
-    leaf apbandsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Bandclass same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APBANDSAMEASPREVIOUS";
-    }
-    leaf apfreqsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Frequency same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APFREQSAMEASPREVIOUS";
-    }
-    leaf appnrecsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "PN offset same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECSAMEASPREVIOUS";
-    }
-    leaf apsid {
-      type uint16 {
-        range "0..32767";
-      }
-      description
-        "Access point SID in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APSID";
-    }
-    leaf apnid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Access point NID in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APNID";
-    }
-    leaf apband {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Access point bandclass in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APBAND";
-    }
-    leaf apfreq {
-      type uint16 {
-        range "0..2047";
-      }
-      description
-        "Access point frequency in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APFREQ";
-    }
-    leaf appnrectype {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Access point PN offset in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECTYPE";
-    }
-    leaf appnreclen {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Length in octets of the access point PN record ({{param|APPNREC}}) in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECLEN";
-    }
-    leaf appnrec {
-      type binary {
-        length "0..31";
-      }
-      description
-        "Access point PN Record in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNREC";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.";
-  }
-
-  grouping cdma2000-one-x-pcf-config-g {
-    description
-      "CDMA2000 1x PCF configuration information.";
-    leaf pcfpdsn-health-monitor-interval {
-      type uint8 {
-        range "0..180";
-      }
-      units "seconds";
-      config false;
-      description
-        "PDSN health check monitor interval in {{units}}. Setting the value to 0 disables the PDSN Health Monitoring Feature. Setting any non-zero value enables the PDSN Health Monitoring Feature and sets that non-zero value as the timer interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPDSNHealthMonitorInterval";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.";
-  }
-
-  grouping cdma2000-one-x-pcf-config-pcf-performance-stats-g {
-    description
-      "This object is used in obtaining the PCF stats";
-    leaf a10-setup-failure-no-reason {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with an unspecified reason (A11 error code : 0x80)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureNoReason";
-    }
-    leaf a10-setup-failure-admin-prohibit {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Admin Prohibited\" (A11 error code : 0x81).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureAdminProhibit";
-    }
-    leaf a10-setup-failure-insuff-resources {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Insufficient Resources\" (A11 error code: 0x82).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureInsuffResources";
-    }
-    leaf a10-setup-failure-failed-auth {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureFailedAuth";
-    }
-    leaf a10-setup-failure-id-mismatch {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Id Mismatch\" (A11 error code: 0x85)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureIdMismatch";
-    }
-    leaf a10-setup-failure-malformed-req {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Malformed Request\" (A11 error code: 0x86)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureMalformedReq";
-    }
-    leaf a10-setup-failure-unknown-pdsn {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unknown PDSN\" (A11 error code: 0x88)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureUnknownPDSN";
-    }
-    leaf a10-setup-failure-unsupp-vend-id {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unsupported Vendor Id\" (A11 error code: 0x89)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureUnsuppVendId";
-    }
-    leaf total-a10-closed-by-rnc {
-      type uint64;
-      description
-        "Number of A10 closed by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10ClosedByRnc";
-    }
-    leaf total-a10-closed-by-pdsn {
-      type uint64;
-      description
-        "Number of A10 closed by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10ClosedByPDSN";
-    }
-    leaf total-a10-success-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCFsucceeded.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10SuccessPages";
-    }
-    leaf total-a10-failed-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCF failed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10FailedPages";
-    }
-    leaf total-a10-ingress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} received from the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10IngressBytes";
-    }
-    leaf total-a10-egress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} transmitted to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10EgressBytes";
-    }
-    leaf a10-reg-update-received {
-      type uint64;
-      description
-        "Number of A10 Registration updates received by the FAP PCF";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10RegUpdateReceived";
-    }
-    leaf total-a10-dropped-pages {
-      type uint64;
-      description
-        "Number of A10 Pages initiated by PCF dropped";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10DroppedPages";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.";
-  }
-
-  grouping cdma2000-one-x-batch-pcfpdsn-g {
-    description
-      "The Batch configuration Object used to configure PDSN table using a start and end IP address. The order of the address is used as part of PDSN selection algorithm, e.g., the first element is considered PDSN number 0. (Refer to {{bibref|3GPP2-A.S0013}}). To get individual PDSN entries use the {{object|.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.Alias";
-    }
-    leaf batch-table-number {
-      type int64;
-      description
-        "The BatchTable Number should be given only once during the creation of a Batch Table. This is the Key Attribute that uniquely identifies a BatchTable entry. This number indicates the index of this batch to determine the PDSN number in the PDSN selection algorithm ({{bibref|3GPP2-A.S0013}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableNumber";
-    }
-    leaf batch-table-start-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "Start IP address of the range of PDSNs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableStartIPAddress";
-    }
-    leaf batch-table-end-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "End IP address of the range of PDSNs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableEndIPAddress";
-    }
-    leaf batch-table-security-parameter-index {
-      type uint32 {
-        range "0 | 256..4294967295";
-      }
-      config false;
-      description
-        "Security Parameter Index to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableSecurityParameterIndex";
-    }
-    leaf batch-table-secret-key {
-      type binary {
-        length "0..16";
-      }
-      config false;
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableSecretKey";
-    }
-    leaf batch-table-ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "IOS Version of this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion";
-    }
-    leaf batch-table-pdsn-admin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTablePDSNAdminStatus";
-    }
-    leaf pdsn-type {
-      type enumeration {
-        enum "one-x" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - OneX";
-        }
-        enum "hrpd-rev0" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - HRPDRev0";
-        }
-        enum "hrpd-rev-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - HRPDRevA";
-        }
-      }
-      config false;
-      description
-        "Indicates the PDSN type for this batch.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-one-x-pcfpdsn-g {
-    description
-      "PCFPDSN Object configured for 1x. {{object|.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.}} table should be used to configure PDSN details.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.Alias";
-    }
-    leaf pdsn-number {
-      type int64;
-      description
-        "Index of this PDSN object in the PCFPDSNCollection array. The index is used as PDSN number in PDSN selection algorithm. ({{bibref|3GPP2-A.S0013}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNNumber";
-    }
-    leaf security-parameter-index {
-      type uint32 {
-        range "0 | 256..4294967295";
-      }
-      description
-        "Security Parameter Index used";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.SecurityParameterIndex";
-    }
-    leaf security-key {
-      type binary {
-        length "0..16";
-      }
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.SecurityKey";
-    }
-    leaf ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "HRPD IOS Version of this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion";
-    }
-    leaf pds-nadmin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNadminStatus";
-    }
-    leaf pdsn-health-status {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Reachability status of this PDSN. 0-unreachable, 1-reachable.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNHealthStatus";
-    }
-    leaf pdsnip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "IP address of the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNIPAddress";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-one-x-pcfpdsn-a11-reg-update-stats-g {
-    description
-      "This object is used in obtaining the A11 Registration Update stats for each PDSN";
-    leaf pdsn-number-reg-update-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.PDSNNumberRegUpdatePerf";
-    }
-    leaf pdsnip-address-reg-update-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the A11 Reg Update stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.PDSNIPAddressRegUpdatePerf";
-    }
-    leaf a11-reg-update-received-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-update messages receieved from a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateReceivedPDSN";
-    }
-    leaf a11-reg-update-id-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages receieved from a PDSN that failed ID validation";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateIDCheckFailPDSN";
-    }
-    leaf a11-reg-update-auth-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN that failed Authentication";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAuthCheckFailPDSN";
-    }
-    leaf a11-reg-update-for-unknown-psipdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unknown PSI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateForUnknownPSIPDSN";
-    }
-    leaf a11-reg-update-unspecified-reason-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unspecified reason code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnspecifiedReasonPDSN";
-    }
-    leaf a11-reg-update-ppp-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PPP Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePppTimeoutPDSN";
-    }
-    leaf a11-reg-update-registration-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Registration Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateRegistrationTimeoutPDSN";
-    }
-    leaf a11-reg-update-pdsn-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNErrorPDSN";
-    }
-    leaf a11-reg-update-inter-pcf-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PCF Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPCFHandoffPDSN";
-    }
-    leaf a11-reg-update-inter-pdsn-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PDSN Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPDSNHandoffPDSN";
-    }
-    leaf a11-reg-update-pdsnoamp-intervention-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN OAMP Intervention\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNOAMPInterventionPDSN";
-    }
-    leaf a11-reg-update-accounting-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Accounting Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAccountingErrorPDSN";
-    }
-    leaf a11-reg-update-user-failed-authentication-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"User Failed Authentication\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUserFailedAuthenticationPDSN";
-    }
-    leaf a11-reg-update-unknown-cause-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with Unknown Cause Code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnknownCauseCodePDSN";
-    }
-    leaf a11-reg-update-without-reason-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with PDSN Code Not Included";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateWithoutReasonCodePDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.";
-  }
-
-  grouping cdma2000-one-x-pcfpdsn-pcfpdsn-stats-g {
-    description
-      "This object is used in obtaining the PCF PDSN stats for each PDSN";
-    leaf a10-setup-attempts-pdsn {
-      type uint64;
-      description
-        "Number of attempts the PCF made to establish an A10 connection with PDSN. If PCF fails establishing such a connection on this PDSN and goes on to use another PDSN for that connection, it will be counted as two setup attempts.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupAttemptsPDSN";
-    }
-    leaf a10-setup-successes-pdsn {
-      type uint64;
-      description
-        "Number of times PCF succeeded in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupSuccessesPDSN";
-    }
-    leaf a10-setup-blocks-pdsn {
-      type uint64;
-      description
-        "Number of times PCF was blocked in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupBlocksPDSN";
-    }
-    leaf a11-reg-req-denied-id-mismatch-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Id Mismatch\" (A11 error code: 0x85) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedIdMismatchPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-pdsnpdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Unknown PDSN\" (A11 error code: 0x88)by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownPDSNPDSN";
-    }
-    leaf a11-reg-req-denied-no-reason-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with no reason code by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedNoReasonPDSN";
-    }
-    leaf a11-reg-req-denied-admin-prohibit-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Admin Prohibited\" (A11 error code : 0x81) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedAdminProhibitPDSN";
-    }
-    leaf a11-reg-req-denied-insuff-resources-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Insufficient Resources\" (A11 error code: 0x82) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedInsuffResourcesPDSN";
-    }
-    leaf a11-reg-req-denied-failed-auth-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedFailedAuthPDSN";
-    }
-    leaf a11-reg-req-denied-malformed-req-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Malformed Request\" (A11 error code: 0x86) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedMalformedReqPDSN";
-    }
-    leaf a11-reg-req-denied-unsupp-vend-id-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Unsupported Vendor Id\" (A11 error code: 0x8D)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnsuppVendIdPDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-unavailable-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Unavailable\" (A11 error code: 0x89)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelUnavailablePDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-tbit-not-set-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Tbit Not Set\" (A11 error code: 0x8A)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelTbitNotSetPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-error-code-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with an unspecified reason (A11 error code : 0x80) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownErrorCodePDSN";
-    }
-    leaf a10-reg-req-for-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 setup";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-re-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 reregistration";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-release-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 realease";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReleaseRetransmissionsPDSN";
-    }
-    leaf pdsn-number-pdsn-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.PDSNNumberPDSNPerf";
-    }
-    leaf pds-nip-address-pdsn-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.PDSNipAddressPDSNPerf";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.";
-  }
-
-  grouping cdma2000-one-x-stats-g {
-    description
-      "This object contains 1x FAP statistics aggregated over all connections of all users over all sectors.";
-    leaf registration-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of registration attempts";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationAttempts";
-    }
-    leaf registration-fails {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of registrations failed";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationFails";
-    }
-    leaf registrations-blocked {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Unauthorized registrations blocked by admission control";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationsBlocked";
-    }
-    leaf page-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of attemots to page requests received from the core";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.PageAttempts";
-    }
-    leaf page-fails {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of page requests rejected or not responded";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.PageFails";
-    }
-    leaf voice-call-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of voice call attempts";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallAttempts";
-    }
-    leaf voice-call-failures {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of voice call attempts which failed for various reasons";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallFailures";
-    }
-    leaf voice-calls-blocked {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of voice calls blocked due to lack of authorization";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallsBlocked";
-    }
-    leaf voice-calls-dropped {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of voice calls dropped due to various reasons other than a normal call release";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallsDropped";
-    }
-    leaf data-call-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data call attempts";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallAttempts";
-    }
-    leaf data-call-failures {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data call attemots failed for various reasons";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallFailures";
-    }
-    leaf data-calls-blocked {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data calls failed due to lack of authorization";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallsBlocked";
-    }
-    leaf data-calls-dropped {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data calls dropped due to reasons other than a normal release.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallsDropped";
-    }
-    leaf average-voice-call {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "milliseconds";
-      description
-        "Average voice call duration in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageVoiceCall";
-    }
-    leaf average-data-call {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "milliseconds";
-      description
-        "Average data call duration in {{units}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageDataCall";
-    }
-    leaf average-session-in-sec {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "seconds";
-      description
-        "Average session duration in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageSessionInSec";
-    }
-    leaf total-voice-calls {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "seconds";
-      description
-        "Total number of successful voice calls";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.TotalVoiceCalls";
-    }
-    leaf total-data-calls {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of successful data calls";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.TotalDataCalls";
-    }
-    leaf fwd-voice-packet-drop-percentage {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Percentage of voice packets dropped in MAC due to signaling";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.FwdVoicePacketDropPercentage";
-    }
-    leaf rev-voice-packet-drop-percentage {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Percentage of voice packets received with bad FQI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RevVoicePacketDropPercentage";
-    }
-    leaf fwd-avg-data-rate {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Average data rate of the scheduler on the forward link";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.FwdAvgDataRate";
-    }
-    leaf rev-avg-data-rate {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Average data rate of the scheduler on reverse link";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RevAvgDataRate";
-    }
-    leaf bc-index-zero-to-one-transitions {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Num of times the bcIndex was changed from 0 to 1 in the Extended System Parameters Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.BcIndexZeroToOneTransitions";
-    }
-    leaf bc-index-one-to-zero-transitions {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Num of times the bcIndex was changed from 0 to 1 in the Extended System Parameters Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.BcIndexOneToZeroTransitions";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.";
-  }
-
-  grouping cdma2000-one-x-redirect-g {
-    description
-      "CDMA2000 1x service redirection parameters.";
-    leaf redirect-channel-number {
-      type uint16 {
-        range "0..2047";
-      }
-      config false;
-      description
-        "The channel number set from ACS that the FAP uses to redirect the MS in case of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..2047.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.RedirectChannelNumber";
-    }
-    leaf redirect-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The bandclass set from ACS that the FAP uses to redirect the MS incase of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the MS. The supported range is 0..9.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.RedirectBandClass";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.";
-  }
-
-  grouping cdma2000-hrpd-g {
-    description
-      "The object contains attributes related to HRPD.";
-    leaf pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSNNumberOfEntries";
-    }
-    leaf max-batch-pcfpdsn-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.MaxBatchPCFPDSNEntries";
-    }
-    leaf batch-pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSNNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.";
-  }
-
-  grouping cdma2000-hrpd-ran-g {
-    description
-      "The object contains attributes related to HRPD RAN.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.";
-  }
-
-  grouping cdma2000-hrpd-ran-rf-g {
-    description
-      "Contains the details related to HRPD RF";
-    leaf hrpd-car-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The Band Class this HRPD Carrier object is to operate on. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDCarBandClass";
-    }
-    leaf-list rfcnfl {
-      type string {
-        length "0..64";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a FL Radio Frequency Channel Number (RFCN). Self-configuration for RFCNFL is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for RFCNFL is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|RFCNFLInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. If multiple items are specified, they are done in the order of preference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL";
-    }
-    leaf rfcnfl-in-use {
-      type uint64;
-      description
-        "The FL RFCN being used by the FAP. Self-configuration for RFCNFL is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|RFCNFL}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|RFCNFL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFLInUse";
-    }
-    leaf-list pilot-pn {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "{{list}} (maximum length 32) (minimum 1 items) of strings. Each item is a pilot PN offset in units of 64 PN chips. Self-configuration for pilot PN is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for Pilot PN Offset is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|PilotPNInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PN offsets values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The order of the items has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN";
-    }
-    leaf pilot-pn-in-use {
-      type uint64;
-      config false;
-      description
-        "The Pilot PN Offset being used by the FAP. Self-configuration for Pilot PN Offset is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|PilotPN}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|PilotPN}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPNInUse";
-    }
-    leaf maxfap-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power allowed on the FAP. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<;Pmax_low>..<;Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. <;Pmax_low> and <;Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower";
-    }
-    leaf maxfap-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      config false;
-      description
-        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of {{units}}. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPowerInUse";
-    }
-    leaf control-channel-rate {
-      type int64;
-      config false;
-      description
-        "The data rate of the Control Channel of this HRPD SectorElement object. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-10.4.1.3.2.4";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ControlChannelRate";
-    }
-    leaf sync-capsule-offset {
-      type int64;
-      config false;
-      description
-        "The offset from the control channel cycle boundary at which the synchronous capsules are to be transmitted for this HRPD SectorElement object. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-9.2.6.1.4.1.2";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SyncCapsuleOffset";
-    }
-    leaf rab-length {
-      type int64;
-      config false;
-      description
-        "The Reverse Activity Bit (RAB) length measured in slots for this HRPD SectorElement object. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-7.8.6.2.2, Table 9.7.6.2-2.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RabLength";
-    }
-    leaf rab-offset {
-      type int64;
-      config false;
-      description
-        "The Reverse Activity Bit (RAB) offset for this HRPD SectorElement object. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-7.8.6.2.2.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RabOffset";
-    }
-    leaf sector-id {
-      type binary {
-        length "16";
-      }
-      config false;
-      description
-        "The 128 bit Sector ID for this HRPD SectorElement object. The Sector ID is used in the computation of the long code mask. See {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SectorID";
-    }
-    leaf color-code {
-      type int64;
-      config false;
-      description
-        "The HRPD color code associated with this sector-element. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ColorCode";
-    }
-    leaf subnet-mask-length {
-      type int64;
-      units "bits";
-      config false;
-      description
-        "{{param}} is the length of the HRPD SubnetMask in {{units}}. See {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SubnetMaskLength";
-    }
-    leaf hrpd-sec-el-reverse-link-silence-duration {
-      type int64;
-      units "frames";
-      config false;
-      description
-        "Duration of the Reverse Link Silence Interval in units of {{units}}. The duration of the silence interval to be maintained on the reverse link. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.1.4.1.1.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDSecElReverseLinkSilenceDuration";
-    }
-    leaf hrpd-sec-el-reverse-link-silence-period {
-      type int64;
-      units "frames";
-      config false;
-      description
-        "The Reverse Link Silence Interval is defined as the time interval of duration ReverseLinkSilenceDuration frames that starts at times T where T is the CDMA System Time in units of {{units}} and it satisfies the following equation: T mod (2048 x 2^(ReverseLinkSilencePeriod) - 1) = 0. The period in the access cycle duration for which the silence interval shall be maintained on the reverse link. {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.1.4.1.1.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDSecElReverseLinkSilencePeriod";
-    }
-    leaf open-loop-adjust {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "The open loop adjustment (in {{units}}) for the access parameters of this sector-element. FAP sets this field to the negative of the nominal power to be used by ATs in the open loop power estimate, expressed as an unsigned value in units of 1 dB. The value used by the AT is -1 times the value of this field. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.OpenLoopAdjust";
-    }
-    leaf probe-initial-adjust {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "The probe initial adjustment (in {{units}}) for the access parameters of this sector-element. FAP sets this field to the correction factor to be used by ATs in the open loop power estimate for the initial transmission on the Access Channel, expressed as a two's complement value in units of 1 dB. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbeInitialAdjust";
-    }
-    leaf probe-num-steps {
-      type int64;
-      config false;
-      description
-        "The number of power level steps for access probes for the access parameters of this sector-element. FAP sets this field to the maximum number of access probes ATs are to transmit in a single access probe sequence. The access network shall set this field to a value in the range [1 ... 15]. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbeNumSteps";
-    }
-    leaf probe-power-step {
-      type int64;
-      units "0.5 dB";
-      config false;
-      description
-        "The power step size (in {{units}}) applied to successive probes on the access channel associated with this sector-element. Probe power increase step. FAPsets this field to the increase in power between probes, in resolution of 0.5 dB. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbePowerStep";
-    }
-    leaf a-persistence {
-      type string {
-        length "0..16";
-      }
-      config false;
-      description
-        "The A-Persistence vector, as per HRPD specification, for controlling contention access on the access channel associated with this sector-element. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6. Format is \"0xAABBCCDD\", where AA, BB, CC, DD are in the range \"01\" through \"3F\" hex.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.APersistence";
-    }
-    leaf rssirab-threshold {
-      type int64;
-      units "0.125 dBm";
-      config false;
-      description
-        "RAB threshold for RSSI based RAB algorithm.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RSSIRABThreshold";
-    }
-    leaf load-rab-threshold {
-      type uint16 {
-        range "0..480";
-      }
-      units "0.125 dB";
-      config false;
-      description
-        "RAB threshold for Load based RAB algorithm in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.LoadRABThreshold";
-    }
-    leaf connection-rate-limit {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "4 different configurations.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ConnectionRateLimit";
-    }
-    leaf rfe-rl-balance-ratio {
-      type uint8 {
-        range "1..20";
-      }
-      config false;
-      description
-        "Config Parameter for DRC based rate control";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RfeRLBalanceRatio";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.";
-  }
-
-  grouping cdma2000-hrpd-pcf-config-g {
-    description
-      "CDMA2000 HRPD PCF configuration parameters.";
-    leaf pcfpdsn-health-monitor-interval {
-      type uint8 {
-        range "0..180";
-      }
-      units "seconds";
-      config false;
-      description
-        "PDSN health check monitor interval in {{units}}. Setting the value to 0 disables the PDSN Health Monitoring Feature. Setting any non-zero value enables the PDSN Health Monitoring Feature and sets that non-zero value as the timer interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPDSNHealthMonitorInterval";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.";
-  }
-
-  grouping cdma2000-hrpd-pcf-config-pcf-performance-stats-g {
-    description
-      "This object is used in obtaining the PCF stats";
-    leaf a10-setup-failure-no-reason {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with an unspecified reason (A11 error code : 0x80)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureNoReason";
-    }
-    leaf a10-setup-failure-admin-prohibit {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Admin Prohibited\" (A11 error code : 0x81).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureAdminProhibit";
-    }
-    leaf a10-setup-failure-insuff-resources {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Insufficient Resources\" (A11 error code: 0x82).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureInsuffResources";
-    }
-    leaf a10-setup-failure-failed-auth {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureFailedAuth";
-    }
-    leaf a10-setup-failure-id-mismatch {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Id Mismatch\" (A11 error code: 0x85)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureIdMismatch";
-    }
-    leaf a10-setup-failure-malformed-req {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Malformed Request\" (A11 error code: 0x86)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureMalformedReq";
-    }
-    leaf a10-setup-failure-unknown-pdsn {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unknown PDSN\" (A11 error code: 0x88)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureUnknownPDSN";
-    }
-    leaf a10-setup-failure-unsupp-vend-id {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unsupported Vendor Id\" (A11 error code: 0x89)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureUnsuppVendId";
-    }
-    leaf total-a10-closed-by-rnc {
-      type uint64;
-      description
-        "Number of A10 closed by the FAP RNC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10ClosedByRnc";
-    }
-    leaf total-a10-closed-by-pdsn {
-      type uint64;
-      description
-        "Number of A10 closed by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10ClosedByPDSN";
-    }
-    leaf total-a10-success-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCFsucceeded";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10SuccessPages";
-    }
-    leaf total-a10-failed-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCF failed";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10FailedPages";
-    }
-    leaf total-a10-ingress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} received from the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10IngressBytes";
-    }
-    leaf total-a10-egress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} transmitted to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10EgressBytes";
-    }
-    leaf a10-reg-update-received {
-      type uint64;
-      description
-        "Number of A10 Registration updates received by the FAP PCF";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10RegUpdateReceived";
-    }
-    leaf total-a10-dropped-pages {
-      type uint64;
-      description
-        "Number of A10 Pages initiated by PCF dropped";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10DroppedPages";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.";
-  }
-
-  grouping cdma2000-hrpd-batch-pcfpdsn-g {
-    description
-      "The Batch configuration Object used to configure PDSN table using a start and end IP address. The order of the address is used as part of PDSN selection algorithm, e.g., the first element is considered PDSN number 0 (refer to {{bibref|3GPP2-A.S0008}} and {{bibref|3GPP2-A.S0009}}). To get individual PDSN entries use the {{object|.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.Alias";
-    }
-    leaf batch-table-number {
-      type int64;
-      description
-        "The BatchTable Number should be given only once during the creation of a Batch Table. This is the Key Attribute that uniquely identifies a BatchTable entry";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableNumber";
-    }
-    leaf batch-table-start-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "Start IP address of the range of PDSNs";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableStartIPAddress";
-    }
-    leaf batch-table-end-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "End IP address of the range of PDSNs";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableEndIPAddress";
-    }
-    leaf batch-table-security-parameter-index {
-      type uint32 {
-        range "0 | 256..4294967295";
-      }
-      description
-        "Security Parameter Index to be used";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableSecurityParameterIndex";
-    }
-    leaf batch-table-secret-key {
-      type binary {
-        length "0..16";
-      }
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableSecretKey";
-    }
-    leaf batch-table-ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "HRPD IOS Version of this PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion";
-    }
-    leaf batch-table-pdsn-admin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTablePDSNAdminStatus";
-    }
-    leaf pdsn-type {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Indicates the PDSN type for this batch.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.PDSNType";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-g {
-    description
-      "PCFPDSN Object configured for HRPD. {{object|.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.}} table should be used to configure PDSN details.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.Alias";
-    }
-    leaf pdsn-number {
-      type int64;
-      description
-        "Index of this PDSN object in the PCFPDSNCollection array. The index is used as PDSN number in PDSN selection algorithm (refer to {{bibref|3GPP2-A.S0008}} and {{bibref|3GPP2-A.S0009}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNNumber";
-    }
-    leaf security-parameter-index {
-      type uint32 {
-        range "256..4294967295";
-      }
-      description
-        "Security Parameter Index used";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.SecurityParameterIndex";
-    }
-    leaf security-key {
-      type binary {
-        length "0..16";
-      }
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.SecurityKey";
-    }
-    leaf ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "HRPD IOS Version of this PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion";
-    }
-    leaf pds-nadmin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNadminStatus";
-    }
-    leaf pdsn-health-status {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Reachability status of this PDSN. 0-unreachable, 1-reachable.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNHealthStatus";
-    }
-    leaf pdsnip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "IP address of the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNIPAddress";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-a11-session-update-stats-g {
-    description
-      "This object is used in obtaining the A11 Session Update stats for each PDSN";
-    leaf pdsn-number-session-update-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.PDSNNumberSessionUpdatePerf";
-    }
-    leaf pdsnip-address-session-update-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the A11 Session Update stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.PDSNIPAddressSessionUpdatePerf";
-    }
-    leaf a11-session-update-received-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateReceivedPDSN";
-    }
-    leaf a11-session-update-accepted-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates accepted for a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateAcceptedPDSN";
-    }
-    leaf a11-session-update-extended-apipdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN that contained extended API";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateExtendedAPIPDSN";
-    }
-    leaf a11-session-update-for-unknown-psipdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN that conatained unknown PSI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateForUnknownPSIPDSN";
-    }
-    leaf a11-session-update-denied-id-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"ID Check Failed \"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedIDCheckFailPDSN";
-    }
-    leaf a11-session-update-denied-auth-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code\"Auth Check Failed\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedAuthCheckFailPDSN";
-    }
-    leaf a11-session-update-denied-reason-unspecified-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Unspecified Reason\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedReasonUnspecifiedPDSN";
-    }
-    leaf a11-session-update-denied-poorly-formed-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Poorly Formed\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedPoorlyFormedPDSN";
-    }
-    leaf a11-session-update-denied-session-params-not-updated-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Parameters Not Updated\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedSessionParamsNotUpdatedPDSN";
-    }
-    leaf a11-session-update-denied-qo-s-profile-id-not-supported-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"QoS Profile Id Not Updated\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedQoSProfileIdNotSupportedPDSN";
-    }
-    leaf a11-session-update-denied-insufficient-resources-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Insufficient Resources\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedInsufficientResourcesPDSN";
-    }
-    leaf a11-session-update-denied-handoff-in-progress-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code\"Handoff In Progress\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedHandoffInProgressPDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-a11-reg-update-stats-g {
-    description
-      "This object is used in obtaining the A11 Registration Update stats for each PDSN.";
-    leaf pdsn-number-reg-update-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.PDSNNumberRegUpdatePerf";
-    }
-    leaf pdsnip-address-reg-update-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the A11 Reg Update stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.PDSNIPAddressRegUpdatePerf";
-    }
-    leaf a11-reg-update-received-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-update messages receieved from a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateReceivedPDSN";
-    }
-    leaf a11-reg-update-id-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages receieved from a PDSN that failed ID validation";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateIDCheckFailPDSN";
-    }
-    leaf a11-reg-update-auth-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN that failed Authentication";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAuthCheckFailPDSN";
-    }
-    leaf a11-reg-update-for-unknown-psipdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unknown PSI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateForUnknownPSIPDSN";
-    }
-    leaf a11-reg-update-unspecified-reason-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unspecified reason code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnspecifiedReasonPDSN";
-    }
-    leaf a11-reg-update-ppp-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PPP Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePppTimeoutPDSN";
-    }
-    leaf a11-reg-update-registration-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Registration Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateRegistrationTimeoutPDSN";
-    }
-    leaf a11-reg-update-pdsn-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNErrorPDSN";
-    }
-    leaf a11-reg-update-inter-pcf-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PCF Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPCFHandoffPDSN";
-    }
-    leaf a11-reg-update-inter-pdsn-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PDSN Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPDSNHandoffPDSN";
-    }
-    leaf a11-reg-update-pdsnoamp-intervention-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN OAMP Intervention\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNOAMPInterventionPDSN";
-    }
-    leaf a11-reg-update-accounting-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Accounting Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAccountingErrorPDSN";
-    }
-    leaf a11-reg-update-user-failed-authentication-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"User Failed Authentication\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUserFailedAuthenticationPDSN";
-    }
-    leaf a11-reg-update-unknown-cause-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with Unknown Cause Code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnknownCauseCodePDSN";
-    }
-    leaf a11-reg-update-without-reason-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with PDSN Code Not Included";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateWithoutReasonCodePDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-aux-a10-stats-g {
-    description
-      "This object is used in obtaining the Auxillary A10 Connection stats for each PDSN";
-    leaf pdsn-number-aux-a10-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.PDSNNumberAuxA10Perf";
-    }
-    leaf pdsnip-address-aux-a10-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.PDSNIPAddressAuxA10Perf";
-    }
-    leaf aux-a10-connections-created-in-first-reg-req-pdsn {
-      type uint64;
-      description
-        "Number of Auxillary A10 Connections Created in the First Registration Request Message to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10ConnectionsCreatedInFirstRegReqPDSN";
-    }
-    leaf aux-a10-connections-created-in-subsequent-reg-req-pdsn {
-      type uint64;
-      description
-        "Number of Auxillary A10 Connections Created in Subsequent Registration Request Messages to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10ConnectionsCreatedInSubsequentRegReqPDSN";
-    }
-    leaf aux-a10-fwd-ip-flows-created-pdsn {
-      type uint64;
-      description
-        "Number of Forward IP Flows created with this PDSN for the Auxillary A10s";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10FwdIpFlowsCreatedPDSN";
-    }
-    leaf aux-a10-rev-ip-flows-created-pdsn {
-      type uint64;
-      description
-        "Number of Forward IP Flows created with this PDSN for the Auxillary A10s";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10RevIpFlowsCreatedPDSN";
-    }
-    leaf aux-a10-ip-flow-accounting-reg-requests-pdsn {
-      type uint64;
-      description
-        "Number of IP flow Accounting Reg Requests sent to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10IpFlowAccountingRegRequestsPDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-pcfpdsn-stats-g {
-    description
-      "This object is used in obtaining the PCF PDSN stats for each PDSN";
-    leaf a10-setup-attempts-pdsn {
-      type uint64;
-      description
-        "Number of attempts the PCF made to establish an A10 connection with PDSN. If PCF fails establishing such a connection on this PDSN and goes on to use another PDSN for that connection, it will be counted as two setup attempts.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupAttemptsPDSN";
-    }
-    leaf a10-setup-successes-pdsn {
-      type uint64;
-      description
-        "Number of times PCF succeeded in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupSuccessesPDSN";
-    }
-    leaf a10-setup-blocks-pdsn {
-      type uint64;
-      description
-        "Number of times PCF was blocked in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupBlocksPDSN";
-    }
-    leaf a11-reg-req-denied-id-mismatch-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Id Mismatch\" (A11 error code: 0x85) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedIdMismatchPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-pdsnpdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Unknown PDSN\" (A11 error code: 0x88)by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownPDSNPDSN";
-    }
-    leaf a11-reg-req-denied-no-reason-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with no reason code by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedNoReasonPDSN";
-    }
-    leaf a11-reg-req-denied-admin-prohibit-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Admin Prohibited\" (A11 error code : 0x81) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedAdminProhibitPDSN";
-    }
-    leaf a11-reg-req-denied-insuff-resources-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Insufficient Resources\" (A11 error code: 0x82) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedInsuffResourcesPDSN";
-    }
-    leaf a11-reg-req-denied-failed-auth-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedFailedAuthPDSN";
-    }
-    leaf a11-reg-req-denied-malformed-req-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Malformed Request\" (A11 error code: 0x86) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedMalformedReqPDSN";
-    }
-    leaf a11-reg-req-denied-unsupp-vend-id-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Unsupported Vendor Id\" (A11 error code: 0x8D)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnsuppVendIdPDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-unavailable-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Unavailable\" (A11 error code: 0x89)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelUnavailablePDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-tbit-not-set-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Tbit Not Set\" (A11 error code: 0x8A)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelTbitNotSetPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-error-code-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with an unspecified reason (A11 error code : 0x80) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownErrorCodePDSN";
-    }
-    leaf a10-reg-req-for-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 setup";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-re-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 reregistration";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-release-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 realease";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReleaseRetransmissionsPDSN";
-    }
-    leaf pdsn-number-pdsn-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.PDSNNumberPDSNPerf";
-    }
-    leaf pds-nip-address-pdsn-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.PDSNipAddressPDSNPerf";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.";
-  }
-
-  grouping cdma2000-hrpd-redirect-g {
-    description
-      "CDMA2000 HRPD service redirection parameters.";
-    leaf redirect-channel-number {
-      type uint16 {
-        range "0..2047";
-      }
-      config false;
-      description
-        "The channel number set from ACS that the FAP uses to redirect the AT in case of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..2047.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.RedirectChannelNumber";
-    }
-    leaf redirect-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The bandclass set from ACS that the FAP uses to redirect the AT incase of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..9.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.RedirectBandClass";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.";
-  }
-
-  grouping cdma2000-hrpd-call-control-stats-g {
-    description
-      "Details on call control stats";
-    leaf num-session-setup-attempts {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of session instances that are created on a specific FAP when a regular session setup attempt is initiated with an unknown RATI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupAttempts";
-    }
-    leaf num-session-setup-successful {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of successful regular session setup attempts that are initiated with an unknown RATI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupSuccessful";
-    }
-    leaf num-current-sessions-established {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of successfully established HRPD Sessions that exists on a specific picasso";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumCurrentSessionsEstablished";
-    }
-    leaf num-page-messages-to-at {
-      type uint64;
-      description
-        "The number of times a Page Message was sent to the AT to facilitate the setup of a connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumPageMessagesToAt";
-    }
-    leaf num-pages-succeeded {
-      type uint64;
-      description
-        "The total number of pages succeeded";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumPagesSucceeded";
-    }
-    leaf num-connections-opened {
-      type uint64;
-      description
-        "Total HRPD Connections Opened";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumConnectionsOpened";
-    }
-    leaf num-session-setups-failed-to-term-auth {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of HRPD session setups that are aborted due to various failure reasons";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupsFailedToTermAuth";
-    }
-    leaf num-forward-rlp-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of HRPD packets(bytes) sent from PDSN to AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumForwardRLPBytes";
-    }
-    leaf num-reverse-rlp-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "No. of HRPD packets(bytes) sent from AT to PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumReverseRLPBytes";
-    }
-    leaf average-session-setup-time {
-      type uint64;
-      units "10 ms";
-      description
-        "This parameter maintains a record of the average session setup time for all successfully setup sessions on a specific FAP. The average session setup time is in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.AverageSessionSetupTime";
-    }
-    leaf average-page-setup-time {
-      type uint64;
-      description
-        "The average connection setup time in response to a FAP initiated page. The time is from initiation of Page to the time the connection is declared open";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.AveragePageSetupTime";
-    }
-    leaf num-conn-setups-aborted {
-      type uint64;
-      description
-        "The number of connection setups that were aborted";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumConnSetupsAborted";
-    }
-    leaf num-forward-pre-rlp-dropped-pkts {
-      type uint64;
-      description
-        "Number of packets dropped at Pre-RLP queue due to overflow in forward direction. This counter will also be written to the performance log.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumForwardPreRLPDroppedPkts";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.";
-  }
-
-  grouping cdma2000-hrpd-qo-s-stats-g {
-    description
-      "This object is used in obtaining the QoS Common Performance stats";
-    leaf num-qo-s-subscriber-profile-updates-rcvd {
-      type uint64;
-      description
-        "Number of subscriber QoS profile updates received from the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSubscriberProfileUpdatesRcvd";
-    }
-    leaf num-pdsnip-flow-updates-msg-rcvd {
-      type uint64;
-      description
-        "Number of PDSN IP flow update messages received from PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumPDSNIPFlowUpdatesMsgRcvd";
-    }
-    leaf num-pdsnip-flow-updates-msg-failed {
-      type uint64;
-      description
-        "Number of PDSN IP Flow updates messages that failed per RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumPDSNIPFlowUpdatesMsgFailed";
-    }
-    leaf num-qo-s-setup-requests-received {
-      type uint64;
-      description
-        "Number of QoS setup requests received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsReceived";
-    }
-    leaf num-qo-s-setup-requests-accepted {
-      type uint64;
-      description
-        "Number of QoS setup requests received from the AT that the FAP RNC accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsAccepted";
-    }
-    leaf num-qo-s-setup-requests-rejected {
-      type uint64;
-      description
-        "Number of QoS setup requests from the AT that the FAP RNC rejected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsRejected";
-    }
-    leaf num-reservation-on-requests-received {
-      type uint64;
-      description
-        "Number of ReservationOnRequest messages received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsReceived";
-    }
-    leaf num-reservation-on-requests-accepted {
-      type uint64;
-      description
-        "Number of ReservationOnRequest messages received from the AT that the FAP RNC accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsAccepted";
-    }
-    leaf num-reservation-on-requests-rejected {
-      type uint64;
-      description
-        "Number of ReservationOnRequest message received from the AT that the FAP RNC rejected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsRejected";
-    }
-    leaf num-reservation-on-requests-failed {
-      type uint64;
-      description
-        "Number of ReservationOnRequest message received from the AT that the FAP RNC failed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsFailed";
-    }
-    leaf num-fwd-reservation-on-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a FwdReservationOn message to the AT to activate a forward Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumFwdReservationOnMessagesSent";
-    }
-    leaf num-rev-reservation-on-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a RevReservationOn message to the AT to activate a reverse Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumRevReservationOnMessagesSent";
-    }
-    leaf num-reservation-off-requests-received {
-      type uint64;
-      description
-        "Number of ReservationOffRequest message is received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsReceived";
-    }
-    leaf num-reservation-off-requests-accepted {
-      type uint64;
-      description
-        "Number of ReservationOffRequest messages received from the AT that the FAP RNC accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsAccepted";
-    }
-    leaf num-reservation-off-requests-rejected {
-      type uint64;
-      description
-        "Number of ReservationOffRequest messages received from the AT that the FAP RNC rejected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsRejected";
-    }
-    leaf num-fwd-reservation-off-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a FwdReservationOff message to the AT to deactivate a forward Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumFwdReservationOffMessagesSent";
-    }
-    leaf num-rev-reservation-off-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a RevReservationOff message to the AT to deactivate a reverse Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumRevReservationOffMessagesSent";
-    }
-    leaf num-qo-s-release-requests-received {
-      type uint64;
-      description
-        "Number of QoS release requests received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSReleaseRequestsReceived";
-    }
-    leaf num-connection-close-initiated-no-ran-rsr {
-      type uint64;
-      description
-        "Number of times FAP RNC initiated a connection close in response to the ReservationOnRequest because it did not have the RAN resources to satisfy one or more Reservations included in the request.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumConnectionCloseInitiatedNoRANRsr";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.";
-  }
-
-  grouping cdma2000-hrpd-rnc-sig-apps-stats-g {
-    description
-      "Stats for HRPD RNC signaling procedures.";
-    leaf c-num-page-requests {
-      type uint64;
-      description
-        "Number of HRPD Page requests made after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumPageRequests";
-    }
-    leaf s-num-page-requests {
-      type uint64;
-      description
-        "Number of HRPD Page requests made before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumPageRequests";
-    }
-    leaf s-num-connection-setup-attempts {
-      type uint64;
-      description
-        "Number of HRPD Connection setups attempted before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumConnectionSetupAttempts";
-    }
-    leaf c-num-connection-setup-attempts {
-      type uint64;
-      description
-        "Number of HRPD Connection setups attempted after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumConnectionSetupAttempts";
-    }
-    leaf s-num-connection-setup-success {
-      type uint64;
-      description
-        "Number of HRPD Connection setups succeeded before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumConnectionSetupSuccess";
-    }
-    leaf c-num-connection-setup-success {
-      type uint64;
-      description
-        "Number of HRPD Connection setups succeeded after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumConnectionSetupSuccess";
-    }
-    leaf s-num-normal-connection-closes {
-      type uint64;
-      description
-        "The number of HRPD connections that were closed normally before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNormalConnectionCloses";
-    }
-    leaf c-num-normal-connection-closes {
-      type uint64;
-      description
-        "The number of HRPD connections that were closed normally after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNormalConnectionCloses";
-    }
-    leaf s-num-total-connection-closes {
-      type uint64;
-      description
-        "The total number of HRPD connections closed, normally or abnormally, data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumTotalConnectionCloses";
-    }
-    leaf c-num-total-connection-closes {
-      type uint64;
-      description
-        "The total number of HRPD connections closed, normally or abnormally, after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumTotalConnectionCloses";
-    }
-    leaf s-num-rf-related-drops {
-      type uint64;
-      description
-        "Number of HRPD connection close because of RTC loss or No FTC before data has flowed on the A10 connection";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDrops";
-    }
-    leaf c-num-rf-related-drops {
-      type uint64;
-      description
-        "Number of HRPD connection close because of RTC loss or No FTC after data has flowed on the A10 connection";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDrops";
-    }
-    leaf s-num-page-responses {
-      type uint64;
-      description
-        "Total number of successful responses to HRPD page requests that were received from the AT before the final page timeout and before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumPageResponses";
-    }
-    leaf c-num-page-responses {
-      type uint64;
-      description
-        "Total number of successful responses to HRPD page requests that were received from the AT before the final page timeout and after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumPageResponses";
-    }
-    leaf s-num-rf-related-drops-rtc-lost {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped before data has flowed on the A10 connection because a Reverse Traffic Channel (RTC) lost indication was received, and as a result, no reverse link for the connection were available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDropsRTCLost";
-    }
-    leaf c-num-rf-related-drops-rtc-lost {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped after data has flowed on the A10 connection because a Reverse Traffic Channel (RTC) lost indication was received, and as a result, no reverse link for the connection were available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDropsRTCLost";
-    }
-    leaf s-num-rf-related-drops-no-ftc {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection because of indications that there is no active Forward Traffic Channel (FTC) available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDropsNoFTC";
-    }
-    leaf c-num-rf-related-drops-no-ftc {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection because of indications that there is no active Forward Traffic Channel (FTC) available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDropsNoFTC";
-    }
-    leaf s-num-network-error-drops {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the open A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDrops";
-    }
-    leaf c-num-network-error-drops {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the open A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDrops";
-    }
-    leaf s-num-network-error-drops-rnc-internal {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the A10 connection due to internal failures.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsRNCInternal";
-    }
-    leaf c-num-network-error-drops-rnc-internal {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the A10 connection due to internal failures.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsRNCInternal";
-    }
-    leaf s-num-network-error-drops-rnc-external {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the A10 connection due to the PDSN unreachablity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsRNCExternal";
-    }
-    leaf c-num-network-error-drops-rnc-external {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the A10 connection due to the PDSN unreachablity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsRNCExternal";
-    }
-    leaf s-num-network-error-drops-a10-setup-fail {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because there was failure in the A10 connection set-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsA10SetupFail";
-    }
-    leaf c-num-network-error-drops-a10-setup-fail {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because there was failure in the A10 connection set-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsA10SetupFail";
-    }
-    leaf s-num-misc-drops-sector-down {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection because there is only one pilot available for the connection and a sector down indication has been received for that pilot.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsSectorDown";
-    }
-    leaf c-num-misc-drops-sector-down {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection because there is only one pilot available for the connection and a sector down indication has been received for that pilot.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsSectorDown";
-    }
-    leaf s-num-misc-drops-internal-error {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection due to internal software errors.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsInternalError";
-    }
-    leaf c-num-misc-drops-internal-error {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection due to internal software errors.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsInternalError";
-    }
-    leaf c-num-misc-drops-state-mismatch {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection when the FAP finds a state mismatch between itself andthe AT. Such a mismatch is found when a connection request message is received from the AT, and the connection is already open as perceived by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsStateMismatch";
-    }
-    leaf s-num-misc-drops-state-mismatch {
-      type uint64;
-      description
-        "This statistic counts the number of connections that were dropped before the demarcation point when the FAP finds a state mismatch between itself and the AT. Such a mismatch is found when a connection request message is received from the AT, and the connection is already open as perceived by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsStateMismatch";
-    }
-    leaf s-num-misc-drops-due-to-rlp {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped before data has flowed on the A10 connection at the request of the Radio Link Protocol. This request is generated when the HDR Fast Path component finds that the reset acknowledgment timeout has expired for the connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsDueToRLP";
-    }
-    leaf c-num-misc-drops-due-to-rlp {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped after data has flowed on the A10 connection at the request of the Radio Link Protocol. This request is generated when the HDR Fast Path component finds that the reset acknowledgment timeout has expired for the connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsDueToRLP";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.";
-  }
-
-  grouping cdma2000-hrpd-access-auth-config-g {
-    description
-      "HRPD A12-related service stats.";
-    leaf a12-access-authentication-enable {
-      type int64;
-      config false;
-      description
-        "Flag to enable/Disable HRPD Access Authentication. {{true}} - Enabled, {{false}} - Disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.A12AccessAuthenticationEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.";
-  }
-
-  grouping cdma2000-hrpd-access-auth-stats-g {
-    description
-      "This object is used in obtaining the Access Authentication related stats.";
-    leaf an-ppp-authentication-attempts-by-node {
-      type uint64;
-      description
-        "Number of AnPppAuthentications attempted by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AnPppAuthenticationAttemptsByNode";
-    }
-    leaf a12-requests-sent-from-node {
-      type uint64;
-      description
-        "Number of A12 Access Requests Sent from the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RequestsSentFromNode";
-    }
-    leaf a12-rejects-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Rejects received from the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RejectsReceivedByNode";
-    }
-    leaf a12-accepts-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Accepts received by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12AcceptsReceivedByNode";
-    }
-    leaf a12-access-challenges-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Challenges received by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12AccessChallengesReceivedByNode";
-    }
-    leaf a12-retransmits-sent-from-node {
-      type uint64;
-      description
-        "Number of A12 Access Requests retransmitted from the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RetransmitsSentFromNode";
-    }
-    leaf a12-timeouts-events-for-node {
-      type uint64;
-      description
-        "Number of A12 Timeout events occurred at the FAP due to unreachability of the AAA server/ no response from the AAA server.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TimeoutsEventsForNode";
-    }
-    leaf a12-malformedresponse-received-by-node {
-      type uint64;
-      description
-        "Number of Malformed A12 Access Response received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12MalformedresponseReceivedByNode";
-    }
-    leaf a12-bad-authenticator-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Response with Bad Authenticator received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12BadAuthenticatorReceivedByNode";
-    }
-    leaf a12-unknown-type-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Packet of unknown type received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownTypeReceivedByNode";
-    }
-    leaf a12-unknown-pkt-received-by-node {
-      type uint64;
-      description
-        "Number of unknown A12 packets received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownPktReceivedByNode";
-    }
-    leaf a12-unknown-server-received-by-node {
-      type uint64;
-      description
-        "Number of A12 packets received from unknown AAA server by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownServerReceivedByNode";
-    }
-    leaf a12-other-failure-occurences-in-node {
-      type uint64;
-      description
-        "Number of A12 packets failed due to other failure occurences in the AAA server.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12OtherFailureOccurencesInNode";
-    }
-    leaf a12-by-pass-num-ats-with-unknown-mfr-code-by-node {
-      type uint64;
-      description
-        "Number of ATs with UnknowMfrCode detected in the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12ByPassNumAtsWithUnknownMfrCodeByNode";
-    }
-    leaf a12-tx-path-fail-due-to-an-ppp-error-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"AnPPP Error\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToAnPppErrorByNode";
-    }
-    leaf a12-tx-path-fail-due-to-no-server-available-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"No Server Available\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToNoServerAvailableByNode";
-    }
-    leaf a12-tx-path-fail-due-to-internal-error-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"internal error\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToInternalErrorByNode";
-    }
-    leaf a12-tx-path-fail-due-to-no-packet-id-available-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"No packet id available\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToNoPacketIdAvailableByNode";
-    }
-    leaf a12-tx-path-fail-due-to-transmit-error-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"Transmit Error\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToTransmitErrorByNode";
-    }
-    leaf a12-svr-timeouts-for-node {
-      type uint64;
-      description
-        "Number of A12 server timeouts happened in the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12SvrTimeoutsForNode";
-    }
-    leaf a12-enh-ta-bypass-lcp-timeout-by-node {
-      type uint64;
-      description
-        "Number of LCP timeouts happened in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassLcpTimeoutByNode";
-    }
-    leaf a12-enh-ta-bypass-chap-timeout-by-node {
-      type uint64;
-      description
-        "Number of CHAP timeouts happened in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapTimeoutByNode";
-    }
-    leaf a12-enh-ta-bypass-chap-invalid-by-node {
-      type uint64;
-      description
-        "Number of CHAP Challenge response received from the AT when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapInvalidByNode";
-    }
-    leaf a12-enh-ta-bypass-chap-nai-matches-a12-bypass-list-by-node {
-      type uint64;
-      description
-        "Number of times the CHAP NAI received from the AT matches with A12Bypass List in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapNaiMatchesA12BypassListByNode";
-    }
-    leaf a12-session-ta-timeout-by-node {
-      type uint64;
-      description
-        "Number of times Session timeouts occurred due to TA.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12SessionTaTimeoutByNode";
-    }
-    leaf access-auth-failed-due-to-session-close-total {
-      type uint64;
-      description
-        "Number of times the Access Authenticaiton failed due to Sesion close.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AccessAuthFailedDueToSessionCloseTotal";
-    }
-    leaf access-auth-succeeded {
-      type uint64;
-      description
-        "Number of times the Access Authenticaiton succeeded.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AccessAuthSucceeded";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.";
-  }
-
-  grouping cdma2000-beacon-g {
-    description
-      "This object models the attributes to control the generalized beacon. The beacon is modeled as a beacon frame composed of multiple beacon intervals. The beacon frame start is time-aligned to the instant when 1x 80ms paging frames and HRPD control channel frames align (occurs once every 1.28s).";
-    leaf beacon-admin-status {
-      type enumeration {
-        enum "locked" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus - Locked";
-        }
-        enum "unlocked" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus - Unlocked";
-        }
-      }
-      config false;
-      description
-        "Allows administrative control of beacon.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus";
-    }
-    leaf beacon-oper-status {
-      type enumeration {
-        enum "locked" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Locked";
-        }
-        enum "unlocked" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Unlocked";
-        }
-        enum "fault" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Fault";
-        }
-      }
-      description
-        "Reports operational status of beacon.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus";
-    }
-    leaf hrpd-beacon-enable {
-      type boolean;
-      config false;
-      description
-        "If set to {{true}} the HRPD-specific beacon described by {{object|HRPDBeaconList}} object is enabled. If set to {{false}}, all HRPD beacons (if any) are contained in the BeaconList object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconEnable";
-    }
-    leaf period {
-      type uint16 {
-        range "0..32767";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "Length and periodicity of the beacon frame in {{units}}. Reference - {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.Period";
-    }
-    leaf maxfap-beacon-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Maximum transmission power allowed on the FAP Beacon frequencies. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<;Pmax_low>..<;Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum beacon transmit power. Self-configuration for maximum beacon transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable}} from an enabled perspective. <;Pmax_low> and <;Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower";
-    }
-    leaf maxfap-beacon-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      description
-        "Maximum beacon transmission power measured in {{units}} currently used by the FAP on any beacon frequency. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPowerInUse";
-    }
-    leaf beacon-pch-pwr-percentage {
-      type int64;
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Paging Channel (expressed in {{units}}). For example, 93333 means 93.333% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconPchPwrPercentage";
-    }
-    leaf max-hrpd-beacon-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Maximum transmission power allowed on the dedicated HRPD beacon. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". MaxHRPDBeaconTxPower identifies the limits between which the FAP can self-configure its maximum beacon transmit power. Self-configuration for maximum beacon transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPower";
-    }
-    leaf max-hrpd-beacon-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      description
-        "Maximum beacon transmission power measured in dBm currently used by the FAP on any beacon frequency. Actual values of the maximum transmission power are -40.0 dBm to 20.0 in units of {{units}}. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPowerInUse";
-    }
-    leaf beacon-pilot-pwr-percentage {
-      type int64;
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Pilot Channel (expressed in {{units}}). For example, 19950 means 19.950% of total.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconPilotPwrPercentage";
-    }
-    leaf beacon-sync-pwr-percentage {
-      type int64;
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Sync Channel (expressed in {{units}}). For example, 23458 means 23.458% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconSyncPwrPercentage";
-    }
-    leaf max-beacon-list-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.Beacon.BeaconList.{i}.}} object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxBeaconListEntries";
-    }
-    leaf beacon-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconListNumberOfEntries";
-    }
-    leaf max-hrpd-beacon-list-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.}} object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconListEntries";
-    }
-    leaf hrpd-beacon-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.";
-  }
-
-  grouping cdma2000-beacon-beacon-list-g {
-    description
-      "This object models an individual beacon intervals. It may be used to model both 1x and HRPD beacons with offset from start of beacon frame measured in 80ms slots.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Alias";
-    }
-    leaf beacon-index {
-      type int64;
-      description
-        "Instance identifier for this beacon interval. Allowed range is 0..(BeaconListNumberOfEntries-1).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconIndex";
-    }
-    leaf offset {
-      type uint16 {
-        range "0..32767";
-      }
-      config false;
-      description
-        "Offset from the start of the beacon frame in 80ms slots.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Offset";
-    }
-    leaf duration {
-      type uint16 {
-        range "0..32767";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "Duration of this beacon interval in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Duration";
-    }
-    leaf transmission-format {
-      type enumeration {
-        enum "0" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat - 0";
-        }
-        enum "1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat - 1";
-        }
-      }
-      config false;
-      description
-        "Determines if this beacon interval shall transmit HRPD (HRPD) or CDMA2000 1x.{HRPD=\"0\", 1x=\"1\"}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat";
-    }
-    leaf beacon-band-class {
-      type int64;
-      config false;
-      description
-        "Band class for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconBandClass";
-    }
-    leaf beacon-channel-freq {
-      type uint16 {
-        range "0..2016";
-      }
-      config false;
-      description
-        "Channel number for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconChannelFreq";
-    }
-    leaf-list beacon-pn-offset {
-      type string {
-        length "0..32";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a pilot PN offset of the pilot beacon for this channel in units of 64 PN chips. If this parameter contains more than one item, then the FAP is expected to select one from the list as the PilotPN to be used for this channel. If the self-configuration capability is not to be used, then this parameter SHALL contain only a single item.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconPNOffset";
-    }
-    leaf tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "TX power for the beacon interval (in {{units}}). If self-configuration of the Beacon Tx Power is enabled, then this value is determined by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TxPower";
-    }
-    leaf beacon-sid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "SID for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconSID";
-    }
-    leaf beacon-nid {
-      type uint16 {
-        range "0..32767";
-      }
-      config false;
-      description
-        "NID for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconNID";
-    }
-    leaf beacon-pzid {
-      type uint64;
-      config false;
-      description
-        "PZID for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconPZID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.";
-  }
-
-  grouping cdma2000-beacon-hrpd-beacon-list-g {
-    description
-      "This object models individual HRPD beacon intervals where the beacon start is expressed as a number of HRPD control channel slots from the start of the beacon frame.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Alias";
-    }
-    leaf beacon-index {
-      type int64;
-      description
-        "Instance identifier for this beacon interval. Allowed range is 0..(HRPDBeaconListNumberOfEntries-1).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconIndex";
-    }
-    leaf c-coffset {
-      type uint16 {
-        range "0..2048";
-      }
-      config false;
-      description
-        "Offset of the current beacon interval from the start of the beacon frame, in Control Channel cycles. The HRPDBeaconList interval SHOULD not overlap in time with any beacon interval for the same channel defined in the BeaconList object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.CCoffset";
-    }
-    leaf offset {
-      type int64;
-      config false;
-      description
-        "Start of beacon transmission with respect to the Control Channel boundary.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Offset";
-    }
-    leaf duration {
-      type uint16 {
-        range "0..256";
-      }
-      config false;
-      description
-        "Duration of the beacon transmission within a Control Channel cycle, in slots. Beacon is transmitted starting offset from the CC boundary for duration. Transmission restarts offset from the next CC boundary, given that beacon interval spans more than 1 CC cycles.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Duration";
-    }
-    leaf num-c-ccycles {
-      type uint8 {
-        range "0..48";
-      }
-      config false;
-      description
-        "Number of Control Channel Cycles this beacon interval spans.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.NumCCcycles";
-    }
-    leaf beacon-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Band class for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconBandClass";
-    }
-    leaf beacon-channel-freq {
-      type uint16 {
-        range "0..2016";
-      }
-      config false;
-      description
-        "Channel number for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconChannelFreq";
-    }
-    leaf-list beacon-pn-offset {
-      type string {
-        length "0..256";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a pilot PN offset of the pilot beacon for this channel in units of 64 PN chips. If this parameter contains more than one item, then the FAP is expected to select one from the list as the PilotPN to be used for this channel. If the self-configuration capability is not to be used, then this parameter SHALL contain only a single item.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconPNOffset";
-    }
-    leaf tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "TX power for the beacon interval. If self-configuration of the HRPD Beacon Tx Power is enabled, then this value is determined by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.TxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.";
-  }
-
-  grouping rem-g {
-    description
-      "This object contains parameters relating to REM (Radio Environment Measurement).";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.";
-  }
-
-  grouping rem-umts-g {
-    description
-      "This object contains Radio Environment Measurement parameters for UMTS FAP.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.";
-  }
-
-  grouping rem-umts-wcdma-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the UMTS system.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling - Delayed";
-        }
-      }
-      default "immediate";
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      default "true";
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanOnBoot";
-    }
-    leaf scan-periodically {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enable Periodic Radio Environment Measurement on all enabled RAT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.PeriodicTime";
-    }
-    leaf-list remplmn-list {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each item is a PLMN ID to measure. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. If {{empty}}, then no specific PLMN ID is provided, meaning that the FAP is required to scan all available PLMN IDs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.REMPLMNList";
-    }
-    leaf-list rem-band-list {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "{{list}} Each item is a UMTS Band to measure. Each band is identified in by a roman numeral {{bibref|3GPP-TS.25.104}}. If {{empty}} then no specific UMTS band is provided, meaning that the FAP is required to scan all available bands. The order of the band indicator has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.REMBandList";
-    }
-    leaf-list uarfcndl-list {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each entry is a UARFCN in the DL direction to measure. If {{empty}}, then no specific UARFCN is provided, meaning that the FAP is required to scan all UARFCNs that it is aware of.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.UARFCNDLList";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last UMTS system radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.LastScanTime";
-    }
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.UMTS.WCDMA.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.CellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.";
-  }
-
-  grouping rem-umts-wcdma-cell-g {
-    leaf rem-umts-wcdma-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.";
-  }
-
-  grouping rem-umts-wcdma-cell-rf-g {
-    description
-      "Table indicating the RF aspect of the discovered cells.";
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The UTRA Absolute Radio Frequency Channel Number (UARFCN) in the DL direction of an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.UARFCNDL";
-    }
-    leaf cpichrscp {
-      type int64;
-      units "dBm";
-      description
-        "Received signal level in {{units}} of the CPICH channel. (Ref. 3GPP TS 25.133)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.CPICHRSCP";
-    }
-    leaf cpich-ec-no {
-      type int64;
-      units "dB";
-      description
-        "Measured EcNo. (energy per chip to interference power density) in {{units}} received in the downlink pilot channel. Actual values of the range are -24.0 {{units}} to 0.0 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.133|Section 9.1.2.3}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.CPICHEcNo";
-    }
-    leaf rssi {
-      type int64;
-      units "dBm";
-      description
-        "This measurement is for Inter-frequency handover evaluation, measured in total {{units}} in the band. {{bibref|3GPP-TS.25.133|Section9.1.3}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.RSSI";
-    }
-    leaf primary-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.PrimaryScramblingCode";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.";
-  }
-
-  grouping rem-umts-wcdma-cell-bcch-g {
-    description
-      "Table containing the system information broadcast in the BCCH logical channel.";
-    leaf plmn-type {
-      type enumeration {
-        enum "gsm-map" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType - GSM-MAP";
-        }
-        enum "ansi-41" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType - ANSI-41";
-        }
-      }
-      description
-        "Type of Public Land Mobile Network (PLMN).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC) as defined in SIB 1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the LAI (Location Area ID) {{bibref|3GPP-TS.23.003}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC) as defined in SIB 1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the RAI (Routing Area ID) {{bibref|3GPP-TS.23.003}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.RAC";
-    }
-    leaf cell-id {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Cell Identity as defined in SIB3 {{bibref|3GPP-TS.25.331|Section10.3.2.2}}. {{bibref|3GPP-TS.24.008}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CellID";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      description
-        "Primary Common Pilot Channel (CPICH) power level on SIB 5/6 {{bibref|3GPP-TS.25.331|Section10.3.6.55}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PCPICHTxPower";
-    }
-    leaf csg-indicator {
-      type boolean;
-      description
-        "The CSG-indicator Information Element (IE) in the Master Information Block reflects the access mode of the CSG cell. It is hence dependent on the value of {{param|.AccessMgmt.UMTS.AccessMode}}. If {{true}} the CSG-indicator IE is present, reflecting closed access to the CSG cell. If {{false}} the CSG-indicator IE is absent, reflecting the access mode as \"not a closed-access\". {{bibref|3GPP-TS.25.331|Section 10.2.48.8.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGIndicator";
-    }
-    leaf csgid {
-      type uint32 {
-        range "0..134217727";
-      }
-      description
-        "Defines the Closed Subscriber Group of the Access Control List. FAP broadcasts this CSG ID in SIB3 {{bibref|3GPP-TS.25.331|Section10.3.2.8}} depending on the AccessMode.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGID";
-    }
-    leaf-list uarfcndl-list {
-      type uint16 {
-        range "0..16383";
-      }
-      max-elements "128";
-      description
-        "{{list}} Each item is a UTRA Absolute Radio Frequency Channel Number (UARFCN} in the DL direction dedicated to the CSG cells. {{param}} is broadcast in SIB 11bis {{bibref|3GPP-TS.25.331|Section 10.2.48.8.14a}}. The corresponding UTRA Absolute Radio Frequency Channel Number (UARFCN} in the UL direction is derived based on the fixed offset applicable for the frequency band.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.UARFCNDLList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.";
-  }
-
-  grouping rem-umts-wcdma-cell-bcch-csgpsc-split-info-g {
-    description
-      "This object contains parameters relating to the Primary Scambling Code (PSC) split information for the CSG. Defined in SIB3/11bis {{bibref|3GPP-TS.25.331|Section 10.3.2.8 and 10.3.2.9}}.";
-    leaf start-psc-range1-coefficient {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "The value of this Information Element (IE) multiplied by 8 specifies the start PSC value of the first PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.StartPSCRange1Coefficient";
-    }
-    leaf number-of-ps-cs {
-      type enumeration {
-        enum "5" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 5";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 10";
-        }
-        enum "15" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 15";
-        }
-        enum "20" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 20";
-        }
-        enum "30" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 30";
-        }
-        enum "40" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 40";
-        }
-        enum "50" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 50";
-        }
-        enum "64" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 64";
-        }
-        enum "80" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 80";
-        }
-        enum "120" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 120";
-        }
-        enum "160" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 160";
-        }
-        enum "256" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 256";
-        }
-        enum "alltherest" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - alltherest";
-        }
-        enum "spare3" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare3";
-        }
-        enum "spare2" {
-          value 15;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare2";
-        }
-        enum "spare1" {
-          value 16;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare1";
-        }
-      }
-      description
-        "This Information Element (IE) specifies the number of PSCs reserved for CSG cells in each PSC range.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs";
-    }
-    leaf psc-range2-offset {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "If this Information Element (IE) is included, the UE shall calculate the second PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}. If this Information Element (IE) is not included, the UE shall consider the second PSC range to be not present.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.PSCRange2Offset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.";
-  }
-
-  grouping rem-umts-wcdma-cell-bcch-reference-position-g {
-    description
-      "This object defines parameters related to the surface point of the ellipsoid. {{bibref|3GPP-TS.23.032|Section 5}} It is characterized by the co-ordinates of an ellipsoid point with altitude, distances, and an angle of orientation. This information is used to refer to a point on the Earth's surface, or close to the Earth's surface, with the same longitude and latitude.";
-    leaf latitude {
-      type int64;
-      description
-        "This parameter specifies the latitude of the device's position in degrees, multiplied by 1 million. The positive value signifies the direction, north of the equator. The negative value signifies the direction, south of the equator. Range is from: 90.00.00' South (-90,000,000) to 90.00.00' North (90,000,000). Example: A latitude of 13.19.43' N would be represented as 13,323,833, derived as (13*1,000,000)+((19.43*1,000,000)/60). Latitude of 50.00.00' S would be represented as value -50,000,000. If 0 then SIB15 is not detected in the specific cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Latitude";
-    }
-    leaf longitude {
-      type int64;
-      description
-        "This parameter specifies the longitude of the device's position in degrees, multiplied by 1 million. The positive value signifies the direction, east of the prime meridian. The negative value signifies the direction, west of the prime meridian. Range is from: 180.00.00' West (-180,000,000) to 180.00.00' East (180,000,000). Example: A longitude of 13.19.43' E would be represented as 13,323,833, derived as (13*1,000,000)+((19.43*1,000,000)/60). A longitude of 50.00'0'' W would be represented as value -50,000,000. If 0 then SIB15 is not detected in the specific cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Longitude";
-    }
-    leaf uncertainty-semi-major {
-      type uint8 {
-        range "0..127";
-      }
-      description
-        "The uncertainty r is derived from the \"uncertainty code\" k by r = 10 x ( 1.1 <power> (k-1) ) {{bibref|3GPP-TS.23.032|Section6.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.UncertaintySemiMajor";
-    }
-    leaf uncertainty-semi-minor {
-      type uint8 {
-        range "0..127";
-      }
-      description
-        "The uncertainty r is derived from the \"uncertainty code\" k by r = 10 x ( 1.1 <power> (k-1) ) {{bibref|3GPP-TS.23.032|Section6.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.UncertaintySemiMinor";
-    }
-    leaf orientation-of-major-axis {
-      type uint8 {
-        range "0..89";
-      }
-      description
-        "The Information Element (IE) value 'N' is derived by this formula: 2N <= a < 2(N+1) Where 'a' is the orientation in degrees (0..179).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.OrientationOfMajorAxis";
-    }
-    leaf confidence {
-      type uint8 {
-        range "0..100";
-      }
-      units "percent";
-      description
-        "The degree of confidence in the ellipsoid's points expressed in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Confidence";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.";
-  }
-
-  grouping rem-umts-gsm-g {
-    description
-      "This object contains parameters relating to GSM REM capabilities.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling - Delayed";
-        }
-      }
-      default "immediate";
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      default "true";
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanOnBoot";
-    }
-    leaf scan-periodically {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enable Periodic Radio Environment Measurement on all enabled RAT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.PeriodicTime";
-    }
-    leaf-list remplmn-list {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "{{list}} Each item is a PLMNID. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5. If {{empty}} no specific PLMN ID is provided, meaning that the FAP is required to report all available PLMN IDs. If a list is provided, the FAP is expected to limit the REM measurement to the PLMN(s) specified in this list only and ignore others even if they are detected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMPLMNList";
-    }
-    leaf-list rem-band-list {
-      type enumeration {
-        enum "t-gsm380" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM380";
-        }
-        enum "t-gsm410" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM410";
-        }
-        enum "gsm450" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM450";
-        }
-        enum "gsm480" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM480";
-        }
-        enum "gsm710" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM710";
-        }
-        enum "gsm750" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM750";
-        }
-        enum "t-gsm810" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM810";
-        }
-        enum "gsm850" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM850";
-        }
-        enum "p-gsm900" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - P-GSM900";
-        }
-        enum "e-gsm900" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - E-GSM900";
-        }
-        enum "r-gsm900" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - R-GSM900";
-        }
-        enum "t-gsm900" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM900";
-        }
-        enum "dcs1800" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - DCS1800";
-        }
-        enum "pcs1900" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - PCS1900";
-        }
-      }
-      config false;
-      description
-        "{{list}} Each item is a GSM Band to measure. {{enum}} If {{empty}} then no specific GSM band is provided, meaning that the FAP MUST scan all bands. If a list is provided, the FAP is expected to limit the REM measurement to the band(s) specified in this list only and ignore others even if they are detected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList";
-    }
-    leaf-list arfcn-list {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each item is a GSM ARFCN to measure. If {{empty}} then no specific ARFCN is provided, meaning that the FAP is required to scan all ARFCNs. If a list is provided, the FAP is expected to limit the REM measurement to the ARFCN(s) specified in this list only and ignore others even if they are detected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ARFCNList";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last GSM radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.LastScanTime";
-    }
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries allowed in the {{object|.REM.UMTS.GSM.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.CellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.";
-  }
-
-  grouping rem-umts-gsm-cell-g {
-    description
-      "Table indicating the components of the discovered cells.";
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm 850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - GSM 850";
-        }
-        enum "gsm 900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - GSM 900";
-        }
-        enum "dcs 1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - DCS 1800";
-        }
-        enum "pcs 1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - PCS 1900";
-        }
-      }
-      description
-        "Indicates how to interpret the BCCH ARFCN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator";
-    }
-    leaf arfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "Absolute Radio Frequency Channel Number (ARFCN) {{bibref|3GPP-TS.05.05}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.ARFCN";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "Base Station Identity Code {{bibref|3GPP-TS.03.03}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BSIC";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65535";
-      }
-      description
-        "Location Area Code (LAC) as defined in SIB1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the LAI (Location Area ID) {{bibref|3GPP-TS.23.003}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC) consists of up to 3 numerical characters. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.RAC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..63535";
-      }
-      description
-        "Cell Identity. {{bibref|3GPP-TS.25.331|Section 10.3.2.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.CI";
-    }
-    leaf rssi {
-      type int64;
-      units "dBm";
-      description
-        "Received signal level in {{units}} of the BCCH carrier.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.RSSI";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.";
-  }
-
-  grouping rem-lte-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the LTE system.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling - Delayed";
-        }
-      }
-      default "immediate";
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      default "true";
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanOnBoot";
-    }
-    leaf scan-periodically {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enable Periodic Radio Environment Measurement on LTE EUTRAN bands.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.PeriodicTime";
-    }
-    leaf-list remplmn-list {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each item is a PLMN ID to measure. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. If {{empty}}, then no specific PLMN ID is provided, meaning that the FAP is required to scan all available PLMN IDs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.REMPLMNList";
-    }
-    leaf-list rem-band-list {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "{{list}} Each item is a LTE Band to measure. Corresponds to frequency band indicator defined in {{bibref|3GPP-TS.36.101|Table 5.5-1}}. If {{empty}} then no specific LTE band is provided, meaning that the FAP is required to scan all available bands. The order of the band indicator has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.REMBandList";
-    }
-    leaf-list eutra-carrier-arfcndl-list {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each entry is a EUTRA ARFCN in the DL direction to measure. Corrsponds to the parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If {{empty}}, then no specific EUTRA ARFCN is provided, meaning that the FAP is required to scan all ARFCNs that it is aware of.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.EUTRACarrierARFCNDLList";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last LTE system radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.LastScanTime";
-    }
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.LTE.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CellNumberOfEntries";
-    }
-    leaf max-carrier-meas-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.LTE.CarrierMeas.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.MaxCarrierMeasEntries";
-    }
-    leaf carrier-meas-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeasNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.";
-  }
-
-  grouping rem-lte-cell-g {
-    leaf rem-lte-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.";
-  }
-
-  grouping rem-lte-cell-rf-g {
-    description
-      "Table indicating the RF aspect of the discovered cells.";
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.EUTRACarrierARFCN";
-    }
-    leaf phy-cell-id {
-      type uint16 {
-        range "0..503";
-      }
-      description
-        "Physical cell ID of the detected EUTRAN cell, as specified in {{bibref|3GPP-TS.36.101|Section 5.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.PhyCellID";
-    }
-    leaf rsrp {
-      type int64;
-      units "dBm";
-      description
-        "Received RSRP level of the detected EUTRA cell, specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.1}}. The reporting range is specified in {{bibref|3GPP-TS.36.133|Section 9.1.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSRP";
-    }
-    leaf rsrq {
-      type int64;
-      units "dB";
-      description
-        "Received RSRQ level of the detected EUTRA cell, specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.3}}. Actual measured values range between -24.0 {{units}} and 0.0 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 10 yields the actual measured value. Only values in multiple of 5 are valid.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSRQ";
-    }
-    leaf rssi {
-      type int64;
-      units "dBm";
-      description
-        "E-UTRA Carrier Received Signal Strength Indicator (RSSI), specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.3}}. It comprises the linear average of the total received power (in [W]) observed only in OFDM symbols containing reference symbols for antenna port 0, in the measurement bandwidth, over N number of resource blocks by the UE from all sources, including co-channel serving and non-serving cells, adjacent channel interference, thermal noise etc.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSSI";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.";
-  }
-
-  grouping rem-lte-cell-bcch-g {
-    description
-      "Table containing the system information broadcast in the BCCH logical channel.";
-    leaf dl-bandwidth {
-      type uint8 {
-        range "6 | 15 | 25 | 50 | 75 | 100";
-      }
-      units "resource blocks";
-      description
-        "Downlink transmission bandwidth, specified in number of {{units}}. Corresponds to parameter dl_Bandwidth in Master Information Block in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.DLBandwidth";
-    }
-    leaf ul-bandwidth {
-      type uint8 {
-        range "6 | 15 | 25 | 50 | 75 | 100";
-      }
-      units "resource blocks";
-      description
-        "Uplink transmission bandwidth, specified in number of {{units}}. Corresponds to parameter ul_Bandwidth in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.ULBandwidth";
-    }
-    leaf rs-tx-power {
-      type int64;
-      units "dBm";
-      description
-        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.RSTxPower";
-    }
-    leaf tac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Tracking Area Code that is common for all the PLMNs listed. Corresponds to trackingAreaCode as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.TAC";
-    }
-    leaf cell-id {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Defines the cell identify, defines as a 28-bit binary number. Corresponds to cellIdentity as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2 and Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CellID";
-    }
-    leaf cell-barred {
-      type boolean;
-      description
-        "Indicates whether the cell is barred or not. If {{true}}, the cell is barred. If {{false}}, the cell is not barred. Corresponds to cellBarred as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and {{bibref|3GPP-TS.36.304}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CellBarred";
-    }
-    leaf csg-indication {
-      type boolean;
-      description
-        "Indicates whether CSG is used in this cell or not. If {{true}}, the UE is only allowed to access the cell if the CSG identity matches an entry in the allowed CSG list that the UE has stored. Corresponds to csg-Indication as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CSGIndication";
-    }
-    leaf csg-identity {
-      type uint32 {
-        range "0..134217727";
-      }
-      description
-        "Defines the CSG ID value if {{param|CSGIndication}} parameter indicates that CSG is used in this cell. Corresponds to csg-Identity as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CSGIdentity";
-    }
-    leaf max-plmn-list-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.MaxPLMNListEntries";
-    }
-    leaf plmn-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.";
-  }
-
-  grouping rem-lte-cell-bcch-plmn-list-g {
-    description
-      "Table containing the PLMN list in the system information broadcast in the BCCH logical channel. Correspnds to plmn-IdentityList as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Each instance in this object is a PLMN-IdentityInfo which consists of plmn-Identity and cellReservedForOperatorUse IEs.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.PLMNID";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      description
-        "Indicates whether the cell is reserved for operator use or not. If {{true}}, it is reserved. If {{false}}, it is not reserved. Corresponds to \"reserved\" \"notReserved\" respectively as defined in PLMN-IdentityInfo in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.CellReservedForOperatorUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.";
-  }
-
-  grouping rem-lte-carrier-meas-g {
-    description
-      "Table indicating the measurement of the discovered carrier. The information stored in this object is strictly in the physical layer level and may not necessarily be associated with any particular E-UTRAN cell (e.g. interference level generated by sources other than E-UTRAN cell).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the CarrierMeas entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.Alias";
-    }
-    leaf carrier-arfcndl {
-      type int64;
-      units "MHz";
-      description
-        "Lower bound of the EUTRA ARFCN as specified in {{bibref|3GPP-TS.36.101|Section 5.7.3}} in the DL direction that is requested to measure. Unit in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierARFCNDL";
-    }
-    leaf carrier-ch-width {
-      type int64;
-      units "ARFCN";
-      description
-        "Number of {{units}} in DL direction, as specified in {{bibref|3GPP-TS.36.101|Section 5.6}}, that is requested to measure. The range bounded by {{param|CarrierARFCNDL}} as the lower bound and the value of ({{param|CarrierARFCNDL}} + {{param}}) as the upper bound expresses the total carrier frequency range to be measured.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierChWidth";
-    }
-    leaf carrier-rssi {
-      type int64;
-      units "ARFCN";
-      description
-        "Received Signal Strength Indicator (RSSI) as specified in {{bibref|3GPP-TS.36.214|Sec 5.1.3}} over the carrier frequency range from {{param|CarrierARFCNDL}} as the lower bound and the value of ({{param|CarrierARFCNDL}} + {{param|CarrierChWidth}}) as the upper bound.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierRSSI";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.";
-  }
-
-  grouping rem-cdma2000-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the CDMA2000 system.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling - Delayed";
-        }
-      }
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanOnBoot";
-    }
-    leaf scan-now {
-      type boolean;
-      config false;
-      description
-        "Directs FAP to perform radio environment measurements immediately (but respecting the setting of {{param|InServiceHandling}}) and report back. After performing the action, the FAP resets the ScanNow value to \"0\" ({{false}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanNow";
-    }
-    leaf return-timer {
-      type uint64 {
-        range "1..max";
-      }
-      units "seconds";
-      config false;
-      description
-        "Time in {{units}} within which the action should be performed by the FAP. Only applies if {{param|InServiceHandling}} is set to Delayed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReturnTimer";
-    }
-    leaf scan-periodically {
-      type boolean;
-      config false;
-      description
-        "Enables periodic reporting of radio environment measurements.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64 {
-        range "1..max";
-      }
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.PeriodicTime";
-    }
-    leaf report-overheads {
-      type enumeration {
-        enum "all" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - All";
-        }
-        enum "one-x" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - OneX";
-        }
-        enum "hrpd" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - HRPD";
-        }
-        enum "none" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - None";
-        }
-      }
-      config false;
-      description
-        "If {{param}} is set to {{enum|All}}, the FAP shall report the overheads from the sectors as well.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either \"Error\" or \"Error_TIMEOUT\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last system radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.LastScanTime";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.";
-  }
-
-  grouping rem-cdma2000-one-x-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the 1x system.";
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.CDMA2000.OneX.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.CellNumberOfEntries";
-    }
-    leaf max-channel-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.CDMA2000.OneX.Channel.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.MaxChannelEntries";
-    }
-    leaf channel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.ChannelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.";
-  }
-
-  grouping rem-cdma2000-one-x-channel-g {
-    description
-      "REM specific configuration and reporting.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.Alias";
-    }
-    leaf sniffing-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Config parameter to set band class. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.SniffingBandClass";
-    }
-    leaf sniffing-channel-number {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the forward direction.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.SniffingChannelNumber";
-    }
-    leaf-list pn-list {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment> If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.PNList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.";
-  }
-
-  grouping rem-cdma2000-one-x-cell-g {
-    leaf rem-cdma2000-one-x-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.";
-  }
-
-  grouping rem-cdma2000-one-x-cell-rf-g {
-    description
-      "RF REM results for each detected cell.";
-    leaf band {
-      type int64;
-      description
-        "CDMA band for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.Band";
-    }
-    leaf rfcnfl {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the FL direction for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.RFCNFL";
-    }
-    leaf io {
-      type int64;
-      units "dBm";
-      description
-        "The total received power spectral density in {{units}}, including signal and interference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.Io";
-    }
-    leaf p-ilot-pn {
-      type uint16 {
-        range "0..511";
-      }
-      units "64 PN chips";
-      description
-        "Pilot PN Offset (in units of {{units}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PIlotPN";
-    }
-    leaf p-ilot-pn-phase {
-      type uint64;
-      units "chips";
-      description
-        "Pilot PN phase in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PIlotPNPhase";
-    }
-    leaf pilot-strength-ecp {
-      type int64;
-      units "dBm";
-      description
-        "The strength estimate of the received pilot energy per chip, Ecp, in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PilotStrengthEcp";
-    }
-    leaf pilot-strength-ecp-io {
-      type int64;
-      units "dB";
-      description
-        "The strength estimate of the received pilot energy per chip, Ecp, to total received spectral density, Io (signal and noise) in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PilotStrengthEcpIo";
-    }
-    leaf overheads-available {
-      type boolean;
-      description
-        "If set to {{true}}, the overhead messages for this particular cell is included in {{object|.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.OverheadsAvailable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.";
-  }
-
-  grouping rem-cdma2000-one-x-cell-control-channel-g {
-    description
-      "Table containing information broadcast on control channel.";
-    leaf sid {
-      type int64;
-      description
-        "System identification. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.SID";
-    }
-    leaf nid {
-      type int64;
-      description
-        "Network identification. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.NID";
-    }
-    leaf regzone {
-      type int64;
-      description
-        "Registration Zone. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.REGZONE";
-    }
-    leaf baselat {
-      type int64;
-      description
-        "Basestation latitude. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASELAT";
-    }
-    leaf baselong {
-      type int64;
-      description
-        "Basestation longtitude. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASELONG";
-    }
-    leaf mcc {
-      type int64;
-      description
-        "Mobile Country Code. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.MCC";
-    }
-    leaf mncimsi1112 {
-      type int64;
-      description
-        "the 11th and 12th digits of IMSI, i.e., Mobile Network Code. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.MNCIMSI1112";
-    }
-    leaf baseid {
-      type int64;
-      description
-        "Basestation identification. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASEID";
-    }
-    leaf apid {
-      type string {
-        length "0..32";
-      }
-      description
-        "Access Point Identification. Set to empty string if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APID";
-    }
-    leaf apidmask {
-      type int64;
-      description
-        "Access Point Identification Mask. Set to zero if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APIDMASK";
-    }
-    leaf apidtext {
-      type string {
-        length "0..256";
-      }
-      description
-        "Access Point Identification Text. Set to empty string if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APIDTEXT";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.";
-  }
-
-  grouping rem-cdma2000-hrpd-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the HRPD system.";
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.CDMA2000.HRPD.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.CellNumberOfEntries";
-    }
-    leaf max-channel-entries {
-      type uint64;
-      description
-        "The maximum number of entries in {{object|.REM.CDMA2000.HRPD.Channel.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.MaxChannelEntries";
-    }
-    leaf channel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.ChannelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.";
-  }
-
-  grouping rem-cdma2000-hrpd-channel-g {
-    description
-      "REM specific configuration and reporting.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.Alias";
-    }
-    leaf sniffing-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Config parameter to set band class. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.SniffingBandClass";
-    }
-    leaf sniffing-channel-number {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the FL direction.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.SniffingChannelNumber";
-    }
-    leaf-list pn-list {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment>. If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.PNList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.";
-  }
-
-  grouping rem-cdma2000-hrpd-cell-g {
-    leaf rem-cdma2000-hrpd-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.";
-  }
-
-  grouping rem-cdma2000-hrpd-cell-rf-g {
-    description
-      "RF REM results for each detected cell.";
-    leaf band {
-      type int64;
-      description
-        "CDMA band for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.Band";
-    }
-    leaf rfcnfl {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the FL direction for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.RFCNFL";
-    }
-    leaf io {
-      type int64;
-      units "dBm";
-      description
-        "The total received power spectral density in {{units}}, including signal and interference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.Io";
-    }
-    leaf p-ilot-pn {
-      type uint16 {
-        range "0..511";
-      }
-      units "64 PN chips";
-      description
-        "Pilot PN Offset (in units of {{units}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PIlotPN";
-    }
-    leaf p-ilot-pn-phase {
-      type uint64;
-      units "chips";
-      description
-        "Pilot PN phase in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PIlotPNPhase";
-    }
-    leaf pilot-strength-ecp {
-      type int64;
-      units "dBm";
-      description
-        "The strength estimate of the received pilot energy per chip in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PilotStrengthEcp";
-    }
-    leaf pilot-strength-ecp-io {
-      type int64;
-      units "dB";
-      description
-        "The strength estimate of the received pilot energy per chip, Ecp, to total received spectral density, Io (signal and noise) in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PilotStrengthEcpIo";
-    }
-    leaf overheads-available {
-      type boolean;
-      description
-        "If set to {{true}}, the overhead messages for this particular cell is included in {{object|.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.OverheadsAvailable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.";
-  }
-
-  grouping rem-cdma2000-hrpd-cell-control-channel-g {
-    description
-      "Table containing information braodcast on control channel.";
-    leaf color-code {
-      type int64;
-      description
-        "The color code of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.ColorCode";
-    }
-    leaf sector-id {
-      type binary {
-        length "16";
-      }
-      description
-        "The sector ID of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.SectorID";
-    }
-    leaf subnet-mask {
-      type int64;
-      units "bits";
-      description
-        "The length of the subnet mask in {{units}} for the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.SubnetMask";
-    }
-    leaf country-code {
-      type int64;
-      description
-        "The country code of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.CountryCode";
-    }
-    leaf latitude {
-      type int64;
-      units "0.25 arc seconds";
-      description
-        "The reported lattitude of the cell in units of {{units}}, expressed as a two's complement signed number with positive numbers signifying North latitudes in the range -1296000 to 1296000 inclusive corresponding to a range of -90 to +90) Refer to {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.Latitude";
-    }
-    leaf longitude {
-      type int64;
-      units "0.25 arc seconds";
-      description
-        "The reported longitude of the cell in units of {{units}}, expressed as a two's complement signed number with positive numbers signifying East longitude in the range -2592000 to 2592000 inclusive (corresponding to a range of -180 to +180). Refer to {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.Longitude";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.";
-  }
-
-  grouping rem-cdma2000-macro-timing-g {
-    description
-      "Parameters for controlling CDMA2000 system timing derived from macro system sniffing.";
-    leaf admin-state {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "This is the Admin State of Macro Timing. Lock means MacroTiming feature is Enabled. Unlock means MacroTiming feature is disabled. 0 - Lock (Enabled), 1 - Unlock (Disabled).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.AdminState";
-    }
-    leaf tracking-channel-number {
-      type uint64;
-      description
-        "Channel number of Macro Base Station currently used for MacroTiming.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingChannelNumber";
-    }
-    leaf tracking-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "BandClass of Macro Base Station currently used for MacroTiming.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingBandClass";
-    }
-    leaf-list tracking-pn-offset {
-      type string {
-        length "0..256";
-      }
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips of a Macro Base Station currently used for MacroTiming.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingPNOffset";
-    }
-    leaf timing-source {
-      type uint8 {
-        range "0..1";
-      }
-      description
-        "This parameter indicates the timing source for the FAP: 0 - GPS 1 - Macro Timing The other read-only parameters in this object only have valid values when timingsource is set to 1.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TimingSource";
-    }
-    leaf channel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.ChannelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.";
-  }
-
-  grouping rem-cdma2000-macro-timing-channel-g {
-    description
-      "Object used to configure list of channels to be used for Macto Timing.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Alias";
-    }
-    leaf air-interface-type {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Air interface type of the configured Band class and Channel. 0 - 1x, 1 - HRPD.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.AirInterfaceType";
-    }
-    leaf band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Bandclass of the Macro timing channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.BandClass";
-    }
-    leaf channel-number {
-      type uint64;
-      description
-        "Macro timing acquisition channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.ChannelNumber";
-    }
-    leaf priority {
-      type uint64;
-      config false;
-      description
-        "Priority of the channle to use for acquisition. FAP should prioritize lower values over higher.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Priority";
-    }
-    leaf-list pn-list {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment> If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.PNList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.";
-  }
-
-  grouping transport-g {
-    description
-      "This object contains parameters relating to the transport.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.";
-  }
-
-  grouping transport-sip-g {
-    description
-      "This object contains parameters relating to SIP as a transport protocol. SIP is defined in {{bibref|RFC3261}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the whole SIP object and allows the setup or release of SIP associations and their related streams.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.Enable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.";
-  }
-
-  grouping transport-sip-fcs-g {
-    description
-      "This object models SIP Femtocell Convergence Server (FCS) parameters.";
-    leaf fcsuri {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The request URI for MESSAGE method sent to Femtocell Convergence Server (FCS). The string MUST contain a URI as defined in {{bibref|RFC3986}}. The device MUST support SIP URI and MAY support other URI schemes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.FCSURI";
-    }
-    leaf out-going-proxy-uri {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The request URI for Outgoing Proxy. The string MUST contain a URI as defined in {{bibref|RFC3986}}. The device MUST support SIP URI and MAY support other URI schemes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.OutGoingProxyURI";
-    }
-    leaf p-access-net-info-header {
-      type string {
-        length "0..256";
-      }
-      description
-        "This string will be populated as the value for P-Access-Network-Info header. This header is generated by the device. See {{bibref|3GPP2-X.S0059}} and {{bibref|RFC3455}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.PAccessNetInfoHeader";
-    }
-    leaf realm {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "The FQDN or IP Address representing the Home Domain of the device. The request URI for REGISTER will be formed by prefixing \"sip:\" to this value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.Realm";
-    }
-    leaf impu {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The \"IP Multimedia Public User\" (IMPU) Identity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.IMPU";
-    }
-    leaf impi {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The \"IP Multimedia Private Identity\" (IMPI). This value is ignored when {{param|SIPAuthMethod}} is set to {{enum|TNA|SIPAuthMethod}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.IMPI";
-    }
-    leaf sip-password {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Password to Authenticate the IMS core. This value is ignored when {{param|SIPAuthMethod}} is set to {{enum|TNA|SIPAuthMethod}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPPassword";
-    }
-    leaf-list sip-auth-capability {
-      type enumeration {
-        enum "tna" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability - TNA";
-        }
-        enum "sip-digest" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability - SIPDigest";
-        }
-      }
-      description
-        "Represents the SIP authentication mechanisms supported by this device.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability";
-    }
-    leaf sip-auth-method {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "Represents the authentication method used by this device for SIP registration. If value is {{enum|SIPDigest}}, the {{param|SIPPassword}} MUST not be {{empty}}. If value is {{enum|TNA}}, {{param|SIPPassword}} and {{param|IMPI}} are ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthMethod";
-    }
-    leaf sip-local-port {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Local port number for initiating SIP traffic.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPLocalPort";
-    }
-    leaf rtp-port-low-limit {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "The low limit of port number for originating and receiving RTP/RTCP traffic.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.RTPPortLowLimit";
-    }
-    leaf rtp-port-high-limit {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "The high limit of port number for originating and receiving RTP/RTCP traffic.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.RTPPortHighLimit";
-    }
-    leaf sip-reg-expiry {
-      type uint64;
-      config false;
-      description
-        "SIP registration expiry value, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPRegExpiry";
-    }
-    leaf sip-session-expiry {
-      type uint64 {
-        range "90..max";
-      }
-      units "seconds";
-      default "1800";
-      config false;
-      description
-        "SIP session timer expiry value, in {{units}}, as defined in {{bibref|RFC4028}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPSessionExpiry";
-    }
-    leaf-list emergency-numbers-list {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Indicates the dialed digit pattern matching strings used to determine if the call is an emergency call that MAY bypass access control and receive priority treatment.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.EmergencyNumbersList";
-    }
-    leaf timer-t1 {
-      type uint64 {
-        range "1..max";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Value of SIP timer T1, in {{units}}, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT1";
-    }
-    leaf timer-t2 {
-      type uint64 {
-        range "1..max";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Value of SIP timer T2, in {{units}}, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT2";
-    }
-    leaf timer-t4 {
-      type uint64 {
-        range "1..max";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Value of SIP timer T4, in {{units}}, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT4";
-    }
-    leaf t3210 {
-      type uint8 {
-        range "1..20";
-      }
-      units "seconds";
-      config false;
-      description
-        "This value specifies how much time to wait, in {{units}}, before time out on location update accept/reject. See {{bibref|3GPP2-A.S0014}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.T3210";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.";
-  }
-
-  grouping transport-sctp-g {
-    description
-      "This object contains parameters relating to SCTP as a transport protocol. SCTP is defined in {{bibref|RFC4960}} and {{bibref|RFC3873}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the whole SCTP object and allows the setup or release of SCTP associations and their related streams.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Enable";
-    }
-    leaf hb-interval {
-      type uint64 {
-        range "1..max";
-      }
-      units "seconds";
-      default "30";
-      config false;
-      description
-        "Heartbeat interval in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.HBInterval";
-    }
-    leaf max-association-retransmits {
-      type uint64;
-      default "10";
-      config false;
-      description
-        "Maximum number of consecutive retransmissions to a peer before an endpoint considers that the peer is unreachable and closes the association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxAssociationRetransmits";
-    }
-    leaf max-init-retransmits {
-      type uint64;
-      default "8";
-      config false;
-      description
-        "Number of retransmission per connection-attempt.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxInitRetransmits";
-    }
-    leaf max-path-retransmits {
-      type uint64;
-      default "5";
-      config false;
-      description
-        "Maximum retransmission per destination address.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxPathRetransmits";
-    }
-    leaf rto-initial {
-      type uint64;
-      units "milliseconds";
-      default "3000";
-      config false;
-      description
-        "Initial value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOInitial";
-    }
-    leaf rto-max {
-      type uint64;
-      units "milliseconds";
-      default "6000";
-      config false;
-      description
-        "Maximum value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOMax";
-    }
-    leaf rto-min {
-      type uint64;
-      units "milliseconds";
-      default "1000";
-      config false;
-      description
-        "Minimum value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission. The value of this parameter MUST be lower than or equal to {{param|RTOMax}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOMin";
-    }
-    leaf val-cookie-life {
-      type uint64;
-      units "milliseconds";
-      default "60000";
-      config false;
-      description
-        "Valid cookie life in the 4-way start-up handshake procedure in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ValCookieLife";
-    }
-    leaf out-of-blues {
-      type uint64;
-      description
-        "The number of correctly formed SCTP packets, including the proper checksum, but for which the receiver was unable to identify an appropriate association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutOfBlues";
-    }
-    leaf checksum-errors {
-      type uint64;
-      description
-        "The number of SCTP packets received with an invalid checksum.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ChecksumErrors";
-    }
-    leaf out-ctrl-chunks {
-      type uint64;
-      description
-        "The number of SCTP control chunks sent (retransmissions are not included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutCtrlChunks";
-    }
-    leaf out-order-chunks {
-      type uint64;
-      description
-        "The number of SCTP ordered data chunks sent (retransmissions are not included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutOrderChunks";
-    }
-    leaf out-unorder-chunks {
-      type uint64;
-      description
-        "The number of SCTP unordered chunks (data chunks in which the U bit is set to 1) sent (retransmissions are not included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutUnorderChunks";
-    }
-    leaf in-ctrl-chunks {
-      type uint64;
-      description
-        "The number of SCTP control chunks received (no duplicate chunks included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InCtrlChunks";
-    }
-    leaf in-order-chunks {
-      type uint64;
-      description
-        "The number of SCTP ordered data chunks received (no duplicate chunks included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InOrderChunks";
-    }
-    leaf in-unorder-chunks {
-      type uint64;
-      description
-        "The number of SCTP unordered chunks (data chunks in which the U bit is set to 1) received (no duplicate chunks included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InUnorderChunks";
-    }
-    leaf frag-usr-msgs {
-      type uint64;
-      description
-        "The number of user messages that have been sent fragmented.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.FragUsrMsgs";
-    }
-    leaf reasm-usr-msgs {
-      type uint64;
-      description
-        "The number of user messages that have been received fragmented and submitted to the reassembly process.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ReasmUsrMsgs";
-    }
-    leaf out-sctp-packs {
-      type uint64;
-      description
-        "The number of SCTP packets sent. Retransmitted DATA chunks are included.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutSCTPPacks";
-    }
-    leaf in-sctp-packs {
-      type uint64;
-      description
-        "The number of SCTP packets received. Duplicates are included.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InSCTPPacks";
-    }
-    leaf discontinuity {
-      type yang:date-and-time;
-      description
-        "The time of the last discontinuity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Discontinuity";
-    }
-    leaf assoc-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.AssocNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.";
-  }
-
-  grouping transport-sctp-assoc-g {
-    description
-      "SCTP Association Table";
-    leaf status {
-      type enumeration {
-        enum "disabled" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Disabled";
-        }
-        enum "active" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Active";
-        }
-        enum "progressing" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Progressing";
-        }
-        enum "shutting-down" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - ShuttingDown";
-        }
-        enum "error" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Error";
-        }
-      }
-      description
-        "The status of this SCTP association entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status";
-    }
-    leaf primary-peer-address {
-      type inet:ip-address;
-      description
-        "The primary IP address of the peer SCTP association entity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.PrimaryPeerAddress";
-    }
-    leaf local-port {
-      type uint16 {
-        range "0..63999";
-      }
-      description
-        "The local SCTP port number used for this SCTP association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.LocalPort";
-    }
-    leaf in-streams {
-      type uint64;
-      description
-        "The number of Inbound Streams according to the negotiation at association start-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.InStreams";
-    }
-    leaf out-streams {
-      type uint64;
-      description
-        "The number of Outbound Streams according to the negotiation at association start-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.OutStreams";
-    }
-    leaf start-time {
-      type yang:date-and-time;
-      description
-        "The start Time for the present SCTP association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.StartTime";
-    }
-    leaf discontinuity {
-      type yang:date-and-time;
-      description
-        "The time of the last discontinuity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Discontinuity";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.";
-  }
-
-  grouping transport-real-time-g {
-    description
-      "This object contains parameters relating to Real Time Transport using RTP.";
-    leaf rtcp-enable {
-      type boolean;
-      config false;
-      description
-        "Enable or disable RTCP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.RTCPEnable";
-    }
-    leaf sent-packets {
-      type uint64;
-      description
-        "The number of sent RTP packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.SentPackets";
-    }
-    leaf rcv-packets {
-      type uint64;
-      description
-        "The number of received RTP packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.RcvPackets";
-    }
-    leaf bytes-sent {
-      type uint64;
-      description
-        "Total number of RTP payload bytes sent.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.BytesSent";
-    }
-    leaf bytes-received {
-      type uint64;
-      description
-        "Total number of RTP payload bytes received.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.BytesReceived";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.";
-  }
-
-  grouping transport-real-time-perf-g {
-    description
-      "This object contains performances relating to Real Time Transport using RTP.";
-    leaf lost-rcv-packets {
-      type uint64;
-      description
-        "The number of Lost RTP packets in reception.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.LostRcvPackets";
-    }
-    leaf lost-far-end-packets {
-      type uint64;
-      description
-        "The number of Far End Lost RTP packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.LostFarEndPackets";
-    }
-    leaf overruns {
-      type uint64;
-      description
-        "Total number of times the receive jitter buffer has overrun.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.Overruns";
-    }
-    leaf underruns {
-      type uint64;
-      description
-        "Total number of times the receive jitter buffer has underrun for a CS-domain RAB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.Underruns";
-    }
-    leaf mean-rtt {
-      type uint64;
-      units "microseconds";
-      description
-        "The mean Round Trip Time in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanRTT";
-    }
-    leaf max-rtt {
-      type uint64;
-      units "microseconds";
-      description
-        "The maximum Round Trip Time in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxRTT";
-    }
-    leaf mean-receive-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The mean receive jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanReceiveJitter";
-    }
-    leaf max-receive-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The maximum receive jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxReceiveJitter";
-    }
-    leaf mean-far-end-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The mean far end jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanFarEndJitter";
-    }
-    leaf max-far-end-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The maximum far end jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxFarEndJitter";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.";
-  }
-
-  grouping transport-packet-g {
-    description
-      "This object contains parameters relating to Packet Transport using GTP-U.";
-    leaf echo-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Echo interval in {{units}}. An Echo interval value of zero means echo is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.EchoInterval";
-    }
-    leaf sent-packets {
-      type uint64;
-      description
-        "The number of sent GTP-U packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.SentPackets";
-    }
-    leaf rcv-packets {
-      type uint64;
-      description
-        "The number of received GTP-U packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.RcvPackets";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.";
-  }
-
-  grouping transport-security-g {
-    description
-      "This object contains parameters relating to Security.";
-    leaf secret-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.SecretNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.";
-  }
-
-  grouping transport-security-secret-g {
-    description
-      "Shared Secret Table. This table gathers information about all types of shared secret-based credentials (UICC).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enable or disable this Shared Secret entry";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Enable";
-    }
-    leaf type {
-      type enumeration {
-        enum "sim" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type - SIM";
-        }
-        enum "usim" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type - USIM";
-        }
-      }
-      description
-        "The type of this Shared Secret entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type";
-    }
-    leaf status {
-      type enumeration {
-        enum "present" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Present";
-        }
-        enum "not-present" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Not_present";
-        }
-        enum "error" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Error";
-        }
-      }
-      description
-        "The status of this Shared Secret entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status";
-    }
-    leaf uicc-card-id {
-      type string {
-        length "0..19";
-      }
-      description
-        "The UICC Card Identifier (UICCID), only numeric values are allowed. {{bibref|ITU-E.118}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.UICCCardID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.";
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/core-model@2017-03-20.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/core-model@2017-03-20.yang
deleted file mode 100644 (file)
index 1340628..0000000
+++ /dev/null
@@ -1,1700 +0,0 @@
-module core-model {
-    namespace "urn:onf:params:xml:ns:yang:core-model";
-    prefix core-model;
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This module contains a collection of YANG definitions for managing wireless networks.";
-    revision 2017-03-20 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package core-network-model
-    **********************/ 
-        /***********************
-        * package type-definitions
-        **********************/ 
-            /***********************
-            * package resilience
-            **********************/ 
-                typedef protection-reason {
-                    type enumeration {
-                        enum wait-to-revert {
-                            description "removed";
-                        }
-                        enum signal-degrade {
-                            description "removed";
-                        }
-                        enum signal-fail {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef route-selection-control {
-                    type enumeration {
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                        enum lock-out {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef route-selection-reason {
-                    type enumeration {
-                        enum wait-to-revert {
-                            description "removed";
-                        }
-                        enum signal-degrade {
-                            description "removed";
-                        }
-                        enum signal-fail {
-                            description "removed";
-                        }
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                        enum lock-out {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef switch-control {
-                    type enumeration {
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                    }
-                    description "none";
-                }
-                typedef switch-state-reason {
-                    type enumeration {
-                        enum wait-to-revert {
-                            description "removed";
-                        }
-                        enum signal-degrade {
-                            description "removed";
-                        }
-                        enum signal-fail {
-                            description "removed";
-                        }
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef reversion-mode {
-                    type enumeration {
-                        enum revertive {
-                            description "removed";
-                        }
-                        enum non-revertive {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                grouping global-pac-g {
-                    uses global-class-g;
-                    description "removed";
-                }
-                grouping local-pac-g {
-                    uses local-class-g;
-                    description "removed";
-                }
-                typedef protection-type {
-                    type string;
-                    description "removed";
-                }
-
-            typedef layer-protocol-name {
-                type string;
-                description "removed";
-            }
-            typedef port-role {
-                type string;
-                description "removed";
-            }
-            typedef port-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum input {
-                        description "removed";
-                    }
-                    enum output {
-                        description "removed";
-                    }
-                    enum unidentified-or-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef forwarding-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum unidirectional {
-                        description "removed";
-                    }
-                    enum undefined-or-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef termination-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum sink {
-                        description "removed";
-                    }
-                    enum source {
-                        description "removed";
-                    }
-                    enum undefined-or-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef extended-termination-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum sink {
-                        description "removed";
-                    }
-                    enum source {
-                        description "removed";
-                    }
-                    enum undefined-or-unknown {
-                        description "removed";
-                    }
-                    enum contra-direction-sink {
-                        description "removed";
-                    }
-                    enum contra-direction-source {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef termination-state {
-                type enumeration {
-                    enum lp-can-never-terminate {
-                        description "removed";
-                    }
-                    enum lt-not-terminated {
-                        description "removed";
-                    }
-                    enum terminated-server-to-client-flow {
-                        description "removed";
-                    }
-                    enum terminated-client-to-server-flow {
-                        description "removed";
-                    }
-                    enum terminated-bidirectional {
-                        description "removed";
-                    }
-                    enum lt-permenantly-terminated {
-                        description "removed";
-                    }
-                    enum termination-state-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-
-        /***********************
-        * package object-classes
-        **********************/ 
-            /***********************
-            * package resilience
-            **********************/ 
-                grouping configuration-and-switch-controller-g {
-                    leaf switch-rule {
-                        type to-be-defined;
-                        description "removed";
-                    }
-                    leaf-list fc-switch {
-                        type leafref {
-                            path '/forwarding-construct/fc-switch/uuid';
-                        }
-                        description "removed";
-                    }
-                    container control-parameters {
-                        uses control-parameters-pac-g;
-                        description "removed";
-                    }
-                    leaf-list profile-proxy {
-                        type string;
-                        description "removed";
-                    }
-                    container local-pac {
-                        uses local-pac-g;
-                        description "none";
-                    }
-                    container global-pac {
-                        uses global-pac-g;
-                        description "none";
-                    }
-                    leaf is-frozen {
-                        type boolean;
-                        description "removed";
-                    }
-                    leaf is-coordinated-switching-both-ends {
-                        type boolean;
-                        description "removed";
-                    }
-                    leaf-list subordinate-controller {
-                        type leafref {
-                            path '/network-element/ltp/lp/config-and-switch-controller/switch-rule';
-                        }
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping control-parameters-pac-g {
-                    leaf reversion-mode {
-                        type reversion-mode;
-                        description "removed";
-                    }
-                    leaf wait-to-revert-time {
-                        type int64;
-                        default 15;
-                        description "removed";
-                    }
-                    leaf prot-type {
-                        type protection-type;
-                        description "removed";
-                    }
-                    leaf hold-off-time {
-                        type int64;
-                        description "removed";
-                    }
-                    leaf network-scheme-specification {
-                        type string;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping fc-switch-g {
-                    leaf hold-off-time {
-                        type int64;
-                        description "removed";
-                    }
-                    leaf prot-type {
-                        type protection-type;
-                        description "removed";
-                    }
-                    leaf reversion-mode {
-                        type reversion-mode;
-                        description "removed";
-                    }
-                    leaf-list selected-fc-port {
-                        type leafref {
-                            path '/forwarding-construct/fc-port/uuid';
-                        }
-                        description "removed";
-                    }
-                    leaf-list profile-proxy {
-                        type string;
-                        description "removed";
-                    }
-                    container internal-configuration-and-switch-control {
-                        uses configuration-and-switch-controller-g;
-                        description "removed";
-                    }
-                    leaf switch-control {
-                        type switch-control;
-                        description "removed";
-                    }
-                    leaf switch-selects-ports {
-                        type port-direction;
-                        description "removed";
-                    }
-                    leaf switch-selection-reason {
-                        type switch-state-reason;
-                        config false;
-                        description "removed";
-                    }
-                    container control-parameters {
-                        uses control-parameters-pac-g;
-                        description "none";
-                    }
-                    leaf wait-to-restore-time {
-                        type int64;
-                        description "removed";
-                    }
-                    uses local-class-g;
-                    description "removed";
-                }
-
-            grouping forwarding-domain-g {
-                leaf-list layer-protocol-name {
-                    type layer-protocol-name;
-                    min-elements 1;
-                    description "removed";
-                }
-                leaf-list lower-level-fd {
-                    type leafref {
-                        path '/network-element/fd/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list fc {
-                    type leafref {
-                        path '/forwarding-construct/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list lower-level-link {
-                    type string;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            grouping forwarding-construct-g {
-                leaf layer-protocol-name {
-                    type layer-protocol-name;
-                    description "removed";
-                }
-                leaf-list lower-level-fc {
-                    type leafref {
-                        path '/forwarding-construct/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list fc-route {
-                    type string;
-                    description "removed";
-                }
-                list fc-port {
-                    key 'uuid';
-                    min-elements 2;
-                    uses fc-port-g;
-                    description "removed";
-                }
-                list fc-switch {
-                    key 'uuid';
-                    uses fc-switch-g;
-                    description "removed";
-                }
-                leaf forwarding-direction {
-                    type forwarding-direction;
-                    description "removed";
-                }
-                leaf is-protection-lock-out {
-                    if-feature protection-exclude-server;
-                    type boolean;
-                    description "removed";
-                }
-                leaf service-priority {
-                    type int64;
-                    description "removed";
-                }
-                leaf-list supported-link {
-                    type string;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            container network-element {
-                presence  "";
-                list fd {
-                    key 'uuid';
-                    uses forwarding-domain-g;
-                    description "removed";
-                }
-                list ltp {
-                    key 'uuid';
-                    uses logical-termination-point-g;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            list forwarding-construct {
-                key 'uuid';
-                uses forwarding-construct-g;
-                description "none";
-            }
-            grouping fc-port-g {
-                leaf-list ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    max-elements 2;
-                    description "removed";
-                }
-                leaf role {
-                    type port-role;
-                    description "removed";
-                }
-                leaf fc-port-direction {
-                    type port-direction;
-                    description "removed";
-                }
-                leaf is-protection-lock-out {
-                    if-feature protection-exclude-fc-port;
-                    type boolean;
-                    description "removed";
-                }
-                leaf selection-priority {
-                    type int64;
-                    description "removed";
-                }
-                leaf is-internal-port {
-                    type boolean;
-                    config false;
-                    description "removed";
-                }
-                leaf-list fc-route-feeds-fc-port-egress {
-                    type string;
-                    description "removed";
-                }
-                uses local-class-g;
-                description "removed";
-            }
-            grouping layer-protocol-g {
-                leaf layer-protocol-name {
-                    type layer-protocol-name;
-                    description "removed";
-                }
-                leaf configured-client-capacity {
-                    type to-be-defined;
-                    description "removed";
-                }
-                leaf lp-direction {
-                    type termination-direction;
-                    description "removed";
-                }
-                leaf termination-state {
-                    type termination-state;
-                    description "removed";
-                }
-                list config-and-switch-controller {
-                    key 'switch-rule';
-                    uses configuration-and-switch-controller-g;
-                    description "removed";
-                }
-                leaf is-protection-lock-out {
-                    if-feature protection-exclude-ltp;
-                    type boolean;
-                    description "removed";
-                }
-                leaf fc-blocks-signal-to-lp {
-                    type string;
-                    description "none";
-                }
-                uses local-class-g;
-                description "removed";
-            }
-            grouping logical-termination-point-g {
-                leaf-list server-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list client-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                list lp {
-                    key 'uuid';
-                    min-elements 1;
-                    uses layer-protocol-g;
-                    description "removed";
-                }
-                leaf connected-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf peer-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list physical-port-reference {
-                    type string;
-                    description "removed";
-                }
-                leaf-list ltp-in-other-view {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf ltp-direction {
-                    type termination-direction;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            feature protection-exclude-server {
-                description "In protection context if server of protection where entire server is to be excluded from use for protection.";
-            }
-            feature protection-exclude-fc-port {
-                description "In protection context where the FcPort is to be excluded from use for protection.";
-            }
-            feature protection-exclude-ltp {
-                description "In protection context if LTP of protection where entire LTP is to be excluded from use for protection.";
-            }
-
-        /***********************
-        * package diagrams
-        **********************/ 
-
-        /***********************
-        * package associations
-        **********************/ 
-
-
-    /***********************
-    * package core-foundation-model
-    **********************/ 
-        /***********************
-        * package type-definitions
-        **********************/ 
-            typedef date-and-time {
-                type string;
-                description "removed";
-            }
-            typedef bit-string {
-                type string;
-                description "removed";
-            }
-            typedef real {
-                type string;
-                description "removed";
-            }
-            typedef printable-string {
-                type string;
-                description "removed";
-            }
-            typedef to-be-defined {
-                type string;
-                description "removed";
-            }
-
-        /***********************
-        * package super-classes-and-common-packages
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping name-g {
-                    list name {
-                        key 'value-name';
-                        min-elements 1;
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping global-class-g {
-                    list local-id {
-                        key 'value-name';
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    uses name-g;
-                    uses label-g;
-                    uses extension-g;
-                    uses state-pac-g;
-                    description "removed";
-                }
-                grouping local-class-g {
-                    list local-id {
-                        key 'value-name';
-                        min-elements 1;
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    leaf uuid {
-                        type universal-id;
-                        description "A global identifier for the LocalClass, which is used as reference.";
-                    }
-                    uses name-g;
-                    uses label-g;
-                    uses extension-g;
-                    uses state-pac-g;
-                    description "removed";
-                }
-                grouping label-g {
-                    list label {
-                        key 'value-name';
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping extension-g {
-                    list extension {
-                        key 'value-name';
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping universal-id-authority-g {
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping name-and-value-authority-g {
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping conditional-package-g {
-                    uses extension-g;
-                    uses label-g;
-                    description "removed";
-                }
-
-            /***********************
-            * package type-definitions
-            **********************/ 
-                grouping name-and-value-g {
-                    leaf value-name {
-                        type string;
-                        description "removed";
-                    }
-                    leaf value {
-                        type string;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                typedef universal-id {
-                    type string;
-                    description "removed";
-                }
-                grouping address-g {
-                    leaf address-name {
-                        type string;
-                        description "removed";
-                    }
-                    list address-element {
-                        key 'uuid';
-                        uses address-element-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping local-id-and-class-g {
-                    leaf class-of-instance {
-                        type string;
-                        description "removed";
-                    }
-                    container local-id {
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping name-and-class-g {
-                    leaf class-of-instance {
-                        type string;
-                        description "removed";
-                    }
-                    container name {
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping address-element-g {
-                    leaf address-element-name {
-                        type string;
-                        description "removed";
-                    }
-                    container local-id {
-                        uses local-id-and-class-g;
-                        description "removed";
-                    }
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    container name {
-                        uses name-and-class-g;
-                        description "removed";
-                    }
-                    leaf arbitrary-element {
-                        type string;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-
-
-        /***********************
-        * package state-model
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping state-pac-g {
-                    leaf operational-state {
-                        type operational-state;
-                        config false;
-                        description "removed";
-                    }
-                    leaf administrative-control {
-                        type administrative-control;
-                        description "removed";
-                    }
-                    leaf administrative-state {
-                        type administrative-state;
-                        config false;
-                        description "removed";
-                    }
-                    leaf lifecycle-state {
-                        type lifecycle-state;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-
-            /***********************
-            * package type-definitions
-            **********************/ 
-                typedef operational-state {
-                    type enumeration {
-                        enum disabled {
-                            description "removed";
-                        }
-                        enum enabled {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef administrative-state {
-                    type enumeration {
-                        enum locked {
-                            description "removed";
-                        }
-                        enum unlocked {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef administrative-control {
-                    type enumeration {
-                        enum unlock {
-                            description "removed";
-                        }
-                        enum lock-passive {
-                            description "removed";
-                        }
-                        enum lock-active {
-                            description "removed";
-                        }
-                        enum lock-immediate {
-                            description "removed";
-                        }
-                    }
-                    description "removed
-                        removed";
-                }
-                typedef extended-admin-state {
-                    type enumeration {
-                        enum locked {
-                            description "removed";
-                        }
-                        enum unlocked {
-                            description "removed";
-                        }
-                        enum shutting-down-active {
-                            description "removed";
-                        }
-                        enum shutting-down-passive {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef lifecycle-state {
-                    type enumeration {
-                        enum planned {
-                            description "removed";
-                        }
-                        enum potential {
-                            description "removed";
-                        }
-                        enum installed {
-                            description "removed";
-                        }
-                        enum pending-removal {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-
-
-
-    /***********************
-    * package core-operations-model
-    **********************/ 
-        /***********************
-        * package pattern
-        **********************/ 
-            /***********************
-            * package data-types
-            **********************/ 
-                typedef action-verbs {
-                    type enumeration {
-                        enum create-post-add {
-                            description "none";
-                        }
-                        enum set-update-put-modify-write-add {
-                            description "none";
-                        }
-                        enum get-read {
-                            description "none";
-                        }
-                        enum delete-remove {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-                typedef test-type {
-                    type string;
-                    description "none";
-                }
-                typedef activity-directive {
-                    type enumeration {
-                        enum structure-is-not {
-                            description "none";
-                        }
-                        enum new-structure-and-values {
-                            description "none";
-                        }
-                        enum incremental-structure-and-values {
-                            description "none";
-                        }
-                        enum only-values-in-existing-structure {
-                            description "none";
-                        }
-                        enum defined-by-verb {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-
-            /***********************
-            * package diagrams
-            **********************/ 
-                typedef action-effort {
-                    type enumeration {
-                        enum best-effort {
-                            description "none";
-                        }
-                        enum exact-match {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-                typedef pause-resume-rule {
-                    type enumeration {
-                        enum no-pause-possible {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping general-directives-g {
-                    description "none";
-                }
-                grouping necessary-initial-condition-constraints-g {
-                    leaf is-not {
-                        type boolean;
-                        description "none";
-                    }
-                    description "none";
-                }
-                grouping operation-details-g {
-                    leaf action-verb {
-                        type action-verbs;
-                        description "none";
-                    }
-                    list necessary-initialcondition-constraints {
-                        key 'is-not';
-                        uses necessary-initial-condition-constraints-g;
-                        description "none";
-                    }
-                    description "none";
-                }
-                container operation-envelope {
-                    presence  "";
-                    list operation-set {
-                        key 'effort-and-action';
-                        min-elements 1;
-                        uses operation-set-g;
-                        description "none";
-                    }
-                    container generaldirectives {
-                        uses general-directives-g;
-                        description "none";
-                    }
-                    container operationidentifiers {
-                        uses operation-identifiers-g;
-                        description "none";
-                    }
-                    description "none";
-                }
-                grouping operation-identifiers-g {
-                    description "none";
-                }
-                grouping operation-set-g {
-                    leaf-list after-operation-set {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf-list before-operation-set {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf effort-and-action {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf pause-resume-rule {
-                        type pause-resume-rule;
-                        description "none";
-                    }
-                    leaf-list operationset {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf is-short-lived {
-                        type boolean;
-                        default true;
-                        description "none";
-                    }
-                    list operation-details {
-                        key 'action-verb';
-                        min-elements 1;
-                        uses operation-details-g;
-                        description "none";
-                    }
-                    description "none";
-                }
-
-
-
-    /***********************
-    * package core-physical-model-initial
-    **********************/ 
-        /***********************
-        * package rule-models
-        **********************/ 
-            /***********************
-            * package connector-rules
-            **********************/ 
-                /***********************
-                * package object-classes
-                **********************/ 
-                    grouping connector-in-holder-g {
-                        leaf connector-on-equipment-for-holder {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-                    grouping connector-cable-end-g {
-                        leaf connector-on-equipment-for-cable {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-                    grouping connector-on-equipment-for-cable-g {
-                        leaf connector-cable-end {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-                    grouping connector-on-equipment-for-holder-g {
-                        leaf connector-in-holder {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-
-
-
-        /***********************
-        * package equipment-detail
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                /***********************
-                * package dynamic-details
-                **********************/ 
-                    grouping function-enablers-g {
-                        leaf power-state {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping mechanical-functions-g {
-                        leaf rotation-speed {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping physical-properties-g {
-                        leaf temperature {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping holder-monitors-g {
-                        leaf is-active {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf is-actual-mismatch-with-expected {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf aggregate-function {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping location-g {
-                        container equipment-location {
-                            uses address-g;
-                            description "none";
-                        }
-                        container geographical-location {
-                            uses address-g;
-                            description "none";
-                        }
-                        description "none";
-                    }
-
-                /***********************
-                * package invariant-details
-                **********************/ 
-                    grouping category-g {
-                        leaf category {
-                            type equipment-category;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping equipment-instance-g {
-                        leaf manufacture-date {
-                            type string;
-                            description "none";
-                        }
-                        leaf serial-number {
-                            type string;
-                            description "none";
-                        }
-                        leaf asset-instance-identifier {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping equipment-type-g {
-                        leaf description {
-                            type string;
-                            description "none";
-                        }
-                        leaf model-identifier {
-                            type string;
-                            description "none";
-                        }
-                        leaf part-type-identifier {
-                            type string;
-                            description "none";
-                        }
-                        leaf type-name {
-                            type string;
-                            description "none";
-                        }
-                        leaf version {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping holder-structure-g {
-                        leaf holder-category {
-                            type holder-category;
-                            description "none";
-                        }
-                        leaf is-captive {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf is-guided {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf is-quantized-space {
-                            type boolean;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping manufactured-thing-g {
-                        container manufacturer-properties {
-                            uses manufacturer-properties-g;
-                            description "none";
-                        }
-                        container equipment-type {
-                            uses equipment-type-g;
-                            description "none";
-                        }
-                        container equipment-instance {
-                            uses equipment-instance-g;
-                            description "none";
-                        }
-                        container operator-augmented-equipment-type {
-                            uses operator-augmented-equipment-type-g;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping manufacturer-properties-g {
-                        leaf manufacturer-identifier {
-                            type string;
-                            description "none";
-                        }
-                        leaf manufacturer-name {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping mechanical-features-g {
-                        description "removed";
-                    }
-                    grouping operator-augmented-equipment-type-g {
-                        leaf asset-type-identifier {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping physical-characteristics-g {
-                        leaf weight-characteristics {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf fire-characteristics {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf materials {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping physical-rating-g {
-                        leaf thermal-rating {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf power-rating {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping position-g {
-                        leaf relative-position {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping spatial-properties-of-type-g {
-                        leaf height {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf width {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf length {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping swapability-g {
-                        leaf is-hot-swappable {
-                            type boolean;
-                            default true;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-
-
-
-        /***********************
-        * package equipment-pattern-structure
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping cable-g {
-                    list connector {
-                        key 'uuid';
-                        min-elements 1;
-                        uses connector-g;
-                        description "none";
-                    }
-                    container manufactured-thing {
-                        uses manufactured-thing-g;
-                        description "none";
-                    }
-                    container physical-characteristics {
-                        uses physical-characteristics-g;
-                        description "none";
-                    }
-                    container mechanical-features {
-                        uses mechanical-features-g;
-                        description "none";
-                    }
-                    container spatial-properties-of-type {
-                        uses spatial-properties-of-type-g;
-                        description "none";
-                    }
-                    uses global-class-g;
-                    description "removed";
-                }
-                grouping connector-g {
-                    leaf connector {
-                        type string;
-                        description "none";
-                    }
-                    list pin {
-                        key 'position';
-                        min-elements 1;
-                        uses pin-g;
-                        description "none";
-                    }
-                    leaf orientation {
-                        type connector-and-pin-orientation;
-                        description "none";
-                    }
-                    container manufactured-thing {
-                        uses manufactured-thing-g;
-                        description "none";
-                    }
-                    container position {
-                        uses position-g;
-                        description "none";
-                    }
-                    container mechanical-features {
-                        uses mechanical-features-g;
-                        description "none";
-                    }
-                    container pin-layout {
-                        uses pin-layout-g;
-                        description "none";
-                    }
-                    leaf connector-type {
-                        type to-be-defined;
-                        description "none";
-                    }
-                    uses local-class-g;
-                    uses group-of-pins-g;
-                    description "removed";
-                }
-                grouping equipment-g {
-                    list connector {
-                        key 'uuid';
-                        uses connector-g;
-                        description "none";
-                    }
-                    list contained-holder {
-                        key 'uuid';
-                        uses holder-g;
-                        description "none";
-                    }
-                    list exposed-cable {
-                        key 'uuid';
-                        uses cable-g;
-                        description "none";
-                    }
-                    container manufactured-thing {
-                        uses manufactured-thing-g;
-                        description "none";
-                    }
-                    container spatial-properties-of-type {
-                        uses spatial-properties-of-type-g;
-                        description "none";
-                    }
-                    container mechanical-features {
-                        uses mechanical-features-g;
-                        description "none";
-                    }
-                    container physical-properties {
-                        uses physical-properties-g;
-                        description "none";
-                    }
-                    container function-enablers {
-                        uses function-enablers-g;
-                        description "none";
-                    }
-                    container mechanical-functions {
-                        uses mechanical-functions-g;
-                        description "none";
-                    }
-                    container physical-characteristics {
-                        uses physical-characteristics-g;
-                        description "none";
-                    }
-                    container swapability {
-                        uses swapability-g;
-                        description "none";
-                    }
-                    container category {
-                        uses category-g;
-                        description "none";
-                    }
-                    container physical-rating {
-                        uses physical-rating-g;
-                        description "none";
-                    }
-                    leaf is-field-replaceable {
-                        type boolean;
-                        default true;
-                        config false;
-                        description "removed";
-                    }
-                    leaf-list function-block {
-                        type string;
-                        description "none";
-                    }
-                    container expected-equipment {
-                        uses expected-equipment-g;
-                        description "none";
-                    }
-                    container actual-equipment {
-                        uses actual-equipment-g;
-                        description "none";
-                    }
-                    container location {
-                        uses location-g;
-                        description "none";
-                    }
-                    uses global-class-g;
-                    description "removed";
-                }
-                list equipment {
-                    key 'uuid';
-                    uses equipment-g;
-                                description "none";
-}
-                grouping holder-g {
-                    leaf-list connector {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/uuid';
-                        }
-                        description "none";
-                    }
-                    leaf occupying-fru {
-                        type leafref {
-                            path '/equipment/uuid';
-                        }
-                        description "removed";
-                    }
-                    container spatial-properties-of-type {
-                        uses spatial-properties-of-type-g;
-                        description "none";
-                    }
-                    container holder-monitors {
-                        uses holder-monitors-g;
-                        description "none";
-                    }
-                    container holder-location {
-                        uses address-g;
-                        description "none";
-                    }
-                    container position {
-                        uses position-g;
-                        description "none";
-                    }
-                    container holder-structure {
-                        uses holder-structure-g;
-                        description "none";
-                    }
-                    container physical-rating {
-                        uses physical-rating-g;
-                        description "none";
-                    }
-                    leaf-list supported-equipment {
-                        type string;
-                        min-elements 1;
-                        description "none";
-                    }
-                    container expected-holder {
-                        uses expected-holder-g;
-                        description "none";
-                    }
-                    container actual-holder {
-                        uses actual-holder-g;
-                        description "none";
-                    }
-                    uses local-class-g;
-                    description "removed";
-                }
-
-            /***********************
-            * package data-types
-            **********************/ 
-                typedef connector-and-pin-orientation {
-                    type enumeration {
-                        enum male {
-                            description "removed";
-                        }
-                        enum female {
-                            description "removed";
-                        }
-                        enum symmetric-neutral {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef equipment-category {
-                    type enumeration {
-                        enum subrack {
-                            description "removed";
-                        }
-                        enum circuit-pack {
-                            description "removed";
-                        }
-                        enum small-formfactor-pluggable {
-                            description "removed";
-                        }
-                        enum stand-alone-unit {
-                            description "removed";
-                        }
-                        enum rack {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef holder-category {
-                    type enumeration {
-                        enum slot {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-
-
-        /***********************
-        * package expected-and-actual
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping actual-holder-g {
-                    description "removed";
-                }
-                grouping expected-holder-g {
-                    description "removed";
-                }
-                grouping actual-equipment-g {
-                    description "removed";
-                }
-                grouping expected-equipment-g {
-                    description "removed";
-                }
-
-
-        /***********************
-        * package connector-and-pin
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping pin-g {
-                    leaf position {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/position/relative-position';
-                        }
-                        description "none";
-                    }
-                    leaf orientation {
-                        type connector-and-pin-orientation;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping pin-group-g {
-                    leaf-list pin {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/pin/position';
-                        }
-                        min-elements 1;
-                        description "none";
-                    }
-                    uses port-g;
-                    uses group-of-pins-g;
-                    description "removed";
-                }
-                grouping pin-layout-g {
-                    list position {
-                        key 'relative-position';
-                        min-elements 1;
-                        uses position-g;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping port-g {
-                    description "removed";
-                }
-                grouping signal-ref-pt-g {
-                    leaf ltp {
-                        type leafref {
-                            path '/network-element/ltp/uuid';
-                        }
-                        description "none";
-                    }
-                    leaf-list elemental-signals {
-                        type universal-id;
-                        min-elements 1;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping signal-ref-pt-group-g {
-                    leaf pin-group {
-                        type universal-id;
-                        description "none";
-                    }
-                    leaf-list signal-ref-pt {
-                        type universal-id;
-                        min-elements 1;
-                        description "none";
-                    }
-                    uses port-g;
-                    description "removed";
-                }
-                grouping elemental-signals-g {
-                    leaf-list pin {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/pin/position';
-                        }
-                        min-elements 1;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping group-of-pins-g {
-                    description "removed";
-                }
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/g.874.1-model@2017-03-20.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/g.874.1-model@2017-03-20.yang
deleted file mode 100644 (file)
index 4a14783..0000000
+++ /dev/null
@@ -1,646 +0,0 @@
-module g.874.1-model {
-    namespace "urn:onf:params:xml:ns:yang:g.874.1-model";
-    prefix g.874.1-model;
-
-    import core-model {
-        prefix core-model;
-    }
-    import ietf-yang-types {
-        prefix yang;
-    }
-
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "<p>Version 2.02; outcome of the 10/2013 Nuremberg meeting.<br>Version 2.03; updates for Geneva 03-2014<br>Version 2.04; updates for Shanghai 09-2014<br>Version 2.05; input to Geneva 11-2014<br>Version 2.06; output from Geneva 11-2014<br>Version 2.07; using OpenProfile 3-2015<br>Version 2.08; output from Geneva 06-2015</p>";
-    revision 2017-03-20 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package object-classes
-    **********************/ 
-        grouping otn-current-data-g {
-            leaf timestamp {
-                type date-and-time;
-                description "The timestamp associated with when the current data was collected.";
-            }
-            uses q.822-current-data-g;
-            description "This object class is an abstract class from which the OTN layer-specific CurrentData object classes are inherited. This object class is a subclass of the Q.822 CurrentData object class, which in turn is a subclass of X.739 Scanner object class. It inherits the following attributes: scannerId, operationalState, granularityPeriod, administrativeState, suspectIntervalFlag, elapsedTime, observedObjectClass, and observedObjectInstance.";
-        }
-        grouping otn-history-data-g {
-            leaf suspect-interval-flag {
-                type boolean;
-                default false;
-                description "This attribute indicates that the data collected during the interval is suspect.";
-            }
-            uses q.822-history-data-g;
-            description "This object class is an abstract class from which the OTN layer-specific HistoryData object classes are inherited. ";
-        }
-
-    /***********************
-    * package type-definitions
-    **********************/ 
-        typedef directionality {
-            type enumeration {
-                enum sink {
-                    description "none";
-                }
-                enum source {
-                    description "none";
-                }
-                enum bidirectional {
-                    description "none";
-                }
-            }
-            description "The enumeration with the options for directionality of the termination point.";
-        }
-        typedef gcc-access {
-            type enumeration {
-                enum gcc1 {
-                    description "none";
-                }
-                enum gcc2 {
-                    description "none";
-                }
-                enum gcc1-and-gcc2 {
-                    description "none";
-                }
-            }
-            description "This enumeration indicates the GCC access represented by the entity.";
-        }
-        typedef operational-state {
-            type enumeration {
-                enum enabled {
-                    description "none";
-                }
-                enum disabled {
-                    description "none";
-                }
-            }
-            description "The list of valid operational states for the connection.";
-        }
-        typedef oper-type {
-            type enumeration {
-                enum revertive {
-                    description "none";
-                }
-                enum non-revertive {
-                    description "none";
-                }
-            }
-            description "The operation type associated with the protection mechanism (either non-revertive or revertive).";
-        }
-        typedef ext-cmd-operation {
-            type enumeration {
-                enum exercise {
-                    description "none";
-                }
-                enum manual-switch {
-                    description "none";
-                }
-                enum forced-switch {
-                    description "none";
-                }
-                enum lockout {
-                    description "none";
-                }
-                enum release-of-manual-switch {
-                    description "none";
-                }
-                enum release-of-forced-switch {
-                    description "none";
-                }
-                enum release-of-lockout {
-                    description "none";
-                }
-            }
-            description "This enumeration contains the options for the actions that instruct the protection system for performing specific protection switching operations.";
-        }
-        typedef administrative-state {
-            type enumeration {
-                enum unlocked {
-                    description "none";
-                }
-                enum locked {
-                    description "none";
-                }
-                enum shutting-down {
-                    description "none";
-                }
-            }
-            description "For more information on Administrative State, See ITU-T Recs. X.731 and M.3100.";
-        }
-        typedef oc-tk-nim-k-bit-rate {
-            type enumeration {
-                enum 2.5-g {
-                    description "none";
-                }
-                enum 10-g {
-                    description "none";
-                }
-                enum 40-g {
-                    description "none";
-                }
-                enum 100-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef tim-det-mo {
-            type enumeration {
-                enum dapi {
-                    description "none";
-                }
-                enum sapi {
-                    description "none";
-                }
-                enum both {
-                    description "none";
-                }
-            }
-            description "List of modes for trace identifier mismatch detection.";
-        }
-        typedef oc-tk-nim-problem-list {
-            type enumeration {
-                enum los-p {
-                    description "Loss of Signal -- Payload";
-                }
-                enum oci {
-                    description "Open Connection Indicator";
-                }
-                enum ssf-p {
-                    description "Server Signal Failure -- Payload -- can not co-exist with SSF or SSF-O";
-                }
-                enum ssf-o {
-                    description "Server Signal Failure -- Overhead; can not co-exist with SSF or SSF-P";
-                }
-                enum ssf {
-                    description "Server Signal Failure; can not co-exist with SSF-P or SSF-O";
-                }
-                enum tim {
-                    description "Trail Trace Identifier Mismatch";
-                }
-                enum deg {
-                    description "Signal Degraded";
-                }
-                enum bdi {
-                    description "Backward Defect Indication";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef tcm-monitoring {
-            type enumeration {
-                enum intrusive {
-                    description "none";
-                }
-                enum non-intrusive {
-                    description "none";
-                }
-            }
-            description "Monitoring types for the tandem connection monitoring function.";
-        }
-        typedef tcm-mode {
-            type enumeration {
-                enum operational {
-                    description "none";
-                }
-                enum transparent {
-                    description "none";
-                }
-                enum monitor {
-                    description "none";
-                }
-            }
-            description "List of value modes for the sink side of the tandem connection monitoring function.";
-        }
-        typedef ops-mnk-ttp-k-bit-rate {
-            type enumeration {
-                enum 40-g {
-                    description "none";
-                }
-                enum 100-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef ops-mnk-ttp-problem-list {
-            type enumeration {
-                enum los {
-                    description "Loss of Signal";
-                }
-                enum lol {
-                    description "Loss of Lane Alignment";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef op-sn-ttp-problem-list {
-            type enumeration {
-                enum los {
-                    description "Loss of Signal";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef otm-n-k-bit-rates {
-            type enumeration {
-                enum 2.5-g {
-                    description "none";
-                }
-                enum 10-g {
-                    description "none";
-                }
-                enum 40-g {
-                    description "none";
-                }
-                enum 2.5-10-g {
-                    description "none";
-                }
-                enum 10-40-g {
-                    description "none";
-                }
-                enum 2.5-10-40-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef domain-interface {
-            type enumeration {
-                enum intra-domain {
-                    description "none";
-                }
-                enum inter-domain {
-                    description "none";
-                }
-            }
-            description "This enumeration provides the options for the interface associated with OTMn.";
-        }
-        typedef otm-n-optical-reach {
-            type enumeration {
-                enum intra-office {
-                    description "none";
-                }
-                enum shorthaul {
-                    description "none";
-                }
-                enum longhaul {
-                    description "none";
-                }
-            }
-            description "The valid options for reach of the optical cable.";
-        }
-        typedef apr-status {
-            type enumeration {
-                enum on {
-                    description "none";
-                }
-                enum off {
-                    description "none";
-                }
-            }
-            description "The enumeration of the options for the Automatic Power Reduction Status.";
-        }
-        typedef ot-sn-ttp-problem-list {
-            type enumeration {
-                enum bdi-p {
-                    description "BDI-P (Backward Defect Indication - Payload); not co-exist with BDI-O or BDI";
-                }
-                enum bdi-o {
-                    description "BDI-O (Backward Defect Indication - Overhead); not co-exist with BDI-P or BDI";
-                }
-                enum bdi {
-                    description "BDI (Backward Defect Indication); not co-exist with BDI-P or BDI-O";
-                }
-                enum tim {
-                    description "TIM (Trail Trace Identifier Mismatch);";
-                }
-                enum los-p {
-                    description "-P (Loss of Signal - Payload); not co-exist with LOS-O or LOS";
-                }
-                enum los-o {
-                    description "LOS-O (Loss of Signal - Overhead); not co-exist with LOS-P or LOS";
-                }
-                enum los {
-                    description "LOS (Loss of Signal); not co-exist with LOS-P or LOS-O. ";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef ot-uk-ctp-adaptation {
-            type enumeration {
-                enum regular {
-                    description "i.e. OPSM/OTUk-a, OCh[r]/OTUk-a";
-                }
-                enum none {
-                    description "i.e. OPSM/OTUk-b, OCh[r]/OTUk-b";
-                }
-                enum vendor-specific {
-                    description "i.e. OCh[r]/OTUk-v";
-                }
-                enum functionally-standardized {
-                    description "i.e. OCh[r]/OTUkV";
-                }
-            }
-            description "The adaptation options for OTUk_ConnectionTermationPoints.";
-        }
-        typedef ot-uk-ctp-k-bit-rate {
-            type enumeration {
-                enum 2.5-g {
-                    description "none";
-                }
-                enum 10-g {
-                    description "none";
-                }
-                enum 40-g {
-                    description "none";
-                }
-                enum 100-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef ot-uk-ctp-problem-list {
-            type enumeration {
-                enum lof {
-                    description "Loss of Frame";
-                }
-                enum ais {
-                    description "Alarm Indication Signal";
-                }
-                enum lom {
-                    description "Loss of MultiFrame";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef ot-uk-ttp-problem-list {
-            type enumeration {
-                enum tim {
-                    description "Trail Trace Identifier Mismatch";
-                }
-                enum deg {
-                    description "Signal Degraded";
-                }
-                enum bdi {
-                    description "Backward Defect Indication";
-                }
-                enum ssf {
-                    description "Server Signal Failure";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef monitored-direction {
-            type enumeration {
-                enum sink {
-                    description "none";
-                }
-                enum source {
-                    description "none";
-                }
-            }
-            description "The enumeration with the options for directionality for nonintrusive monitoring.";
-        }
-        typedef deg-thr-type {
-            type enumeration {
-                enum percentage {
-                    description "<p>Choice of % or Number of errored blocks</p>";
-                }
-                enum number-errored-blocks {
-                    description "<p>Number of % or blocks</p>";
-                }
-            }
-            description "<p>The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.</p>";
-        }
-        typedef link-type {
-            type enumeration {
-                enum dwdm {
-                    description "none";
-                }
-                enum cwdm {
-                    description "none";
-                }
-                enum no-wdm {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef application-identifier-type {
-            type enumeration {
-                enum standard {
-                    description "none";
-                }
-                enum proprietary {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef printable-string {
-            type string;
-            description "none";
-        }
-        typedef date-and-time {
-            type string;
-            description "This primitive type defines the date and time according to the following structure:
-                'yyyyMMddhhmmss.s[Z|{+|-}HHMm]' where:
-                yyyy    '0000'..'9999'    year
-                MM        '01'..'12'            month
-                dd        '01'..'31'            day
-                hh        '00'..'23'            hour
-                mm        '00'..'59'            minute
-                ss        '00'..'59'            second
-                s        '.0'..'.9'            tenth of second (set to '.0' if EMS or NE cannot support this granularity)
-                Z        'Z'                    indicates UTC (rather than local time)
-                {+|-}    '+' or '-'            delta from UTC
-                HH        '00'..'23'            time zone difference in hours
-                Mm        '00'..'59'            time zone difference in minutes.";
-        }
-        typedef aps-channel {
-            type enumeration {
-                enum path {
-                    description "none";
-                }
-                enum tcm1 {
-                    description "none";
-                }
-                enum tcm2 {
-                    description "none";
-                }
-                enum tcm3 {
-                    description "none";
-                }
-                enum tcm4 {
-                    description "none";
-                }
-                enum tcm5 {
-                    description "none";
-                }
-                enum tcm6 {
-                    description "none";
-                }
-                enum section {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef bit-string {
-            type string;
-            description "This primitive type defines a bit oriented string.
-                The size of the BitString will be defined in the valueRange property of the attribute; according to ASN.1 (X.680).
-                The semantic of each bit position will be defined in the Documentation field of the attribute.";
-        }
-        typedef delay-measurement-role {
-            type enumeration {
-                enum controller {
-                    description "none";
-                }
-                enum responder {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef resize-operation-type {
-            type enumeration {
-                enum increase-bw {
-                    description "Increase Bandwidth";
-                }
-                enum decrease-bw {
-                    description "Decrease Bandwidth";
-                }
-            }
-            description "none";
-        }
-        typedef granularity-period-type {
-            type enumeration {
-                enum unknown {
-                    description "none";
-                }
-                enum period-15-min {
-                    description "none";
-                }
-                enum period-24-hours {
-                    description "none";
-                }
-            }
-            description "The enumeration with the options for granularity period of the performance data.";
-        }
-
-    /***********************
-    * package illustrative-object-diagrams
-    **********************/ 
-
-    /***********************
-    * package imported-information-object-classes
-    **********************/ 
-        /***********************
-        * package q.822
-        **********************/ 
-            grouping q.822-current-data-g {
-                leaf suspect-interval-flag {
-                    type boolean;
-                    description "This attribute is used to indicate that the performance data for the current period may not be reliable. Some reasons for this to occur are:- Suspect data were detected by the actual resource doing data collection.- Transition of the administrativeState attribute to/from the 'lock' state.- Transition of the operationalState to/from the 'disabled' state.- Scheduler setting that inhibits the collection function.- The performance counters were reset during the interval.- The currentData (or subclass) object instance was created during the monitoring period.";
-                }
-                leaf elapsed-time {
-                    type int64;
-                    description "none";
-                }
-                uses x.739-scanner-g;
-                description "none";
-            }
-            grouping q.822-history-data-g {
-                leaf history-data-id {
-                    type string;
-                    description "none";
-                }
-                leaf period-end-time {
-                    type yang:date-and-time;
-                    description "none";
-                }
-                leaf granularity-period {
-                    type granularity-period-type;
-                    description "none";
-                }
-                uses x.721-top-g;
-                description "none";
-            }
-
-        /***********************
-        * package x.739
-        **********************/ 
-            grouping x.739-scanner-g {
-                leaf scanner-id {
-                    type string;
-                    description "none";
-                }
-                leaf granularity-period {
-                    type granularity-period-type;
-                    description "none";
-                }
-                leaf administrative-state {
-                    type core-model:administrative-state;
-                    description "none";
-                }
-                uses x.721-top-g;
-                description "none";
-            }
-
-        /***********************
-        * package x.721
-        **********************/ 
-            grouping x.721-top-g {
-                leaf object-class {
-                    type object-identifier;
-                    description "ObjectClass ::= CHOICE{    globalForm    [0] OBJECT IDENTIFIER,
-                        localForm    [1] INTEGER}";
-                }
-                leaf name-binding {
-                    type object-identifier;
-                    description "none";
-                }
-                description "This is the top level of managed object class hierarchy and every other managed object class is a specialization of either this generic class (top) or a specialization of subclass of top. The parameter miscellaneousError is to be used when a processing failure has occurred and the error condition encountered does not match any of object's defined specific error types.";
-            }
-
-
-    /***********************
-    * package imported-data-types
-    **********************/ 
-        typedef object-instance {
-            type string;
-            description "none";
-        }
-        typedef name {
-            type string;
-            description "none";
-        }
-        typedef object-identifier {
-            type string;
-            description "none";
-        }
-        typedef generalized-time {
-            type string;
-            description "none";
-        }
-        typedef time-period {
-            type string;
-            description "This primitive Type is imported from X.739.";
-        }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-inet-types@2010-09-24.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-inet-types@2010-09-24.yang
deleted file mode 100644 (file)
index a9fc2c8..0000000
+++ /dev/null
@@ -1,418 +0,0 @@
-module ietf-inet-types {
-
-   namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
-   prefix "inet";
-
-   organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-   contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: David Partain
-               <mailto:david.partain@ericsson.com>
-
-     WG Chair: David Kessens
-               <mailto:david.kessens@nsn.com>
-
-     Editor:   Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>";
-
-   description
-    "This module contains a collection of generally useful derived
-     YANG data types for Internet addresses and related things.
-
-     Copyright (c) 2010 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or without
-     modification, is permitted pursuant to, and subject to the license
-     terms contained in, the Simplified BSD License set forth in Section
-     4.c of the IETF Trust's Legal Provisions Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6021; see
-     the RFC itself for full legal notices.";
-
-   revision 2010-09-24 {
-     description
-      "Initial revision.";
-     reference
-      "RFC 6021: Common YANG Data Types";
-   }
-
-   /*** collection of protocol field related types ***/
-
-   typedef ip-version {
-     type enumeration {
-       enum unknown {
-         value "0";
-         description
-          "An unknown or unspecified version of the Internet protocol.";
-       }
-       enum ipv4 {
-         value "1";
-         description
-          "The IPv4 protocol as defined in RFC 791.";
-       }
-       enum ipv6 {
-         value "2";
-         description
-          "The IPv6 protocol as defined in RFC 2460.";
-       }
-     }
-     description
-      "This value represents the version of the IP protocol.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetVersion textual convention of the SMIv2.";
-     reference
-      "RFC  791: Internet Protocol
-       RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   typedef dscp {
-     type uint8 {
-       range "0..63";
-     }
-     description
-      "The dscp type represents a Differentiated Services Code-Point
-       that may be used for marking packets in a traffic stream.
-
-       In the value set and its semantics, this type is equivalent
-       to the Dscp textual convention of the SMIv2.";
-     reference
-      "RFC 3289: Management Information Base for the Differentiated
-                 Services Architecture
-       RFC 2474: Definition of the Differentiated Services Field
-                 (DS Field) in the IPv4 and IPv6 Headers
-       RFC 2780: IANA Allocation Guidelines For Values In
-                 the Internet Protocol and Related Headers";
-   }
-
-   typedef ipv6-flow-label {
-     type uint32 {
-       range "0..1048575";
-     }
-     description
-      "The flow-label type represents flow identifier or Flow Label
-       in an IPv6 packet header that may be used to discriminate
-       traffic flows.
-
-       In the value set and its semantics, this type is equivalent
-       to the IPv6FlowLabel textual convention of the SMIv2.";
-     reference
-      "RFC 3595: Textual Conventions for IPv6 Flow Label
-       RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
-   }
-
-   typedef port-number {
-     type uint16 {
-       range "0..65535";
-     }
-     description
-      "The port-number type represents a 16-bit port number of an
-       Internet transport layer protocol such as UDP, TCP, DCCP, or
-       SCTP.  Port numbers are assigned by IANA.  A current list of
-       all assignments is available from <http://www.iana.org/>.
-
-       Note that the port number value zero is reserved by IANA.  In
-       situations where the value zero does not make sense, it can
-       be excluded by subtyping the port-number type.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetPortNumber textual convention of the SMIv2.";
-     reference
-      "RFC  768: User Datagram Protocol
-       RFC  793: Transmission Control Protocol
-       RFC 4960: Stream Control Transmission Protocol
-       RFC 4340: Datagram Congestion Control Protocol (DCCP)
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   /*** collection of autonomous system related types ***/
-
-   typedef as-number {
-     type uint32;
-     description
-      "The as-number type represents autonomous system numbers
-       which identify an Autonomous System (AS).  An AS is a set
-       of routers under a single technical administration, using
-       an interior gateway protocol and common metrics to route
-       packets within the AS, and using an exterior gateway
-       protocol to route packets to other ASs'.  IANA maintains
-       the AS number space and has delegated large parts to the
-       regional registries.
-
-       Autonomous system numbers were originally limited to 16
-       bits.  BGP extensions have enlarged the autonomous system
-       number space to 32 bits.  This type therefore uses an uint32
-       base type without a range restriction in order to support
-       a larger autonomous system number space.
-
-       In the value set and its semantics, this type is equivalent
-       to the InetAutonomousSystemNumber textual convention of
-       the SMIv2.";
-     reference
-      "RFC 1930: Guidelines for creation, selection, and registration
-                 of an Autonomous System (AS)
-       RFC 4271: A Border Gateway Protocol 4 (BGP-4)
-       RFC 4893: BGP Support for Four-octet AS Number Space
-       RFC 4001: Textual Conventions for Internet Network Addresses";
-   }
-
-   /*** collection of IP address and hostname related types ***/
-
-   typedef ip-address {
-     type union {
-       type inet:ipv4-address;
-       type inet:ipv6-address;
-     }
-     description
-      "The ip-address type represents an IP address and is IP
-       version neutral.  The format of the textual representations
-       implies the IP version.";
-   }
-
-   typedef ipv4-address {
-     type string {
-       pattern
-         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-       + '(%[\p{N}\p{L}]+)?';
-     }
-     description
-       "The ipv4-address type represents an IPv4 address in
-        dotted-quad notation.  The IPv4 address may include a zone
-        index, separated by a % sign.
-
-        The zone index is used to disambiguate identical address
-        values.  For link-local addresses, the zone index will
-        typically be the interface index number or the name of an
-        interface.  If the zone index is not present, the default
-        zone of the device will be used.
-
-        The canonical format for the zone index is the numerical
-        format";
-   }
-
-   typedef ipv6-address {
-     type string {
-       pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-             + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-             + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-             + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-             + '(%[\p{N}\p{L}]+)?';
-       pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-             + '(%.+)?';
-     }
-     description
-      "The ipv6-address type represents an IPv6 address in full,
-       mixed, shortened, and shortened-mixed notation.  The IPv6
-       address may include a zone index, separated by a % sign.
-
-       The zone index is used to disambiguate identical address
-       values.  For link-local addresses, the zone index will
-       typically be the interface index number or the name of an
-       interface.  If the zone index is not present, the default
-       zone of the device will be used.
-
-       The canonical format of IPv6 addresses uses the compressed
-       format described in RFC 4291, Section 2.2, item 2 with the
-       following additional rules: the :: substitution must be
-       applied to the longest sequence of all-zero 16-bit chunks
-       in an IPv6 address.  If there is a tie, the first sequence
-       of all-zero 16-bit chunks is replaced by ::.  Single
-       all-zero 16-bit chunks are not compressed.  The canonical
-       format uses lowercase characters and leading zeros are
-       not allowed.  The canonical format for the zone index is
-       the numerical format as described in RFC 4007, Section
-       11.2.";
-     reference
-      "RFC 4291: IP Version 6 Addressing Architecture
-       RFC 4007: IPv6 Scoped Address Architecture
-       RFC 5952: A Recommendation for IPv6 Address Text Representation";
-   }
-
-   typedef ip-prefix {
-     type union {
-       type inet:ipv4-prefix;
-       type inet:ipv6-prefix;
-     }
-     description
-      "The ip-prefix type represents an IP prefix and is IP
-       version neutral.  The format of the textual representations
-       implies the IP version.";
-   }
-
-   typedef ipv4-prefix {
-     type string {
-       pattern
-          '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-        +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-        + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
-     }
-     description
-      "The ipv4-prefix type represents an IPv4 address prefix.
-       The prefix length is given by the number following the
-       slash character and must be less than or equal to 32.
-
-       A prefix length value of n corresponds to an IP address
-       mask that has n contiguous 1-bits from the most
-       significant bit (MSB) and all other bits set to 0.
-
-       The canonical format of an IPv4 prefix has all bits of
-       the IPv4 address set to zero that are not part of the
-       IPv4 prefix.";
-   }
-
-   typedef ipv6-prefix {
-     type string {
-       pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-             + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-             + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-             + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-             + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
-       pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-             + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-             + '(/.+)';
-     }
-     description
-      "The ipv6-prefix type represents an IPv6 address prefix.
-       The prefix length is given by the number following the
-       slash character and must be less than or equal 128.
-
-       A prefix length value of n corresponds to an IP address
-       mask that has n contiguous 1-bits from the most
-       significant bit (MSB) and all other bits set to 0.
-
-       The IPv6 address should have all bits that do not belong
-       to the prefix set to zero.
-
-       The canonical format of an IPv6 prefix has all bits of
-       the IPv6 address set to zero that are not part of the
-       IPv6 prefix.  Furthermore, IPv6 address is represented
-       in the compressed format described in RFC 4291, Section
-       2.2, item 2 with the following additional rules: the ::
-       substitution must be applied to the longest sequence of
-       all-zero 16-bit chunks in an IPv6 address.  If there is
-       a tie, the first sequence of all-zero 16-bit chunks is
-       replaced by ::.  Single all-zero 16-bit chunks are not
-       compressed.  The canonical format uses lowercase
-       characters and leading zeros are not allowed.";
-     reference
-      "RFC 4291: IP Version 6 Addressing Architecture";
-   }
-
-   /*** collection of domain name and URI types ***/
-
-   typedef domain-name {
-     type string {
-       pattern '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
-            +  '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
-            +  '|\.';
-       length "1..253";
-     }
-     description
-      "The domain-name type represents a DNS domain name.  The
-       name SHOULD be fully qualified whenever possible.
-
-       Internet domain names are only loosely specified.  Section
-       3.5 of RFC 1034 recommends a syntax (modified in Section
-       2.1 of RFC 1123).  The pattern above is intended to allow
-       for current practice in domain name use, and some possible
-       future expansion.  It is designed to hold various types of
-       domain names, including names used for A or AAAA records
-       (host names) and other records, such as SRV records.  Note
-       that Internet host names have a stricter syntax (described
-       in RFC 952) than the DNS recommendations in RFCs 1034 and
-       1123, and that systems that want to store host names in
-       schema nodes using the domain-name type are recommended to
-       adhere to this stricter standard to ensure interoperability.
-
-       The encoding of DNS names in the DNS protocol is limited
-       to 255 characters.  Since the encoding consists of labels
-       prefixed by a length bytes and there is a trailing NULL
-       byte, only 253 characters can appear in the textual dotted
-       notation.
-
-       The description clause of schema nodes using the domain-name
-       type MUST describe when and how these names are resolved to
-       IP addresses.  Note that the resolution of a domain-name value
-       may require to query multiple DNS records (e.g., A for IPv4
-       and AAAA for IPv6).  The order of the resolution process and
-       which DNS record takes precedence can either be defined
-       explicitely or it may depend on the configuration of the
-       resolver.
-
-       Domain-name values use the US-ASCII encoding.  Their canonical
-       format uses lowercase US-ASCII characters.  Internationalized
-       domain names MUST be encoded in punycode as described in RFC
-       3492";
-     reference
-      "RFC  952: DoD Internet Host Table Specification
-       RFC 1034: Domain Names - Concepts and Facilities
-       RFC 1123: Requirements for Internet Hosts -- Application
-                 and Support
-       RFC 2782: A DNS RR for specifying the location of services
-                 (DNS SRV)
-       RFC 3492: Punycode: A Bootstring encoding of Unicode for
-                 Internationalized Domain Names in Applications
-                 (IDNA)
-       RFC 5891: Internationalizing Domain Names in Applications
-                 (IDNA): Protocol";
-   }
-
-   typedef host {
-     type union {
-       type inet:ip-address;
-       type inet:domain-name;
-     }
-     description
-      "The host type represents either an IP address or a DNS
-       domain name.";
-   }
-
-   typedef uri {
-     type string;
-     description
-      "The uri type represents a Uniform Resource Identifier
-       (URI) as defined by STD 66.
-
-       Objects using the uri type MUST be in US-ASCII encoding,
-       and MUST be normalized as described by RFC 3986 Sections
-       6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
-       percent-encoding is removed, and all case-insensitive
-       characters are set to lowercase except for hexadecimal
-       digits, which are normalized to uppercase as described in
-       Section 6.2.2.1.
-
-       The purpose of this normalization is to help provide
-       unique URIs.  Note that this normalization is not
-       sufficient to provide uniqueness.  Two URIs that are
-       textually distinct after this normalization may still be
-       equivalent.
-
-       Objects using the uri type may restrict the schemes that
-       they permit.  For example, 'data:' and 'urn:' schemes
-       might not be appropriate.
-
-       A zero-length URI is not a valid URI.  This can be used to
-       express 'URI absent' where required.
-
-       In the value set and its semantics, this type is equivalent
-       to the Uri SMIv2 textual convention defined in RFC 5017.";
-     reference
-      "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
-       RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
-                 Group: Uniform Resource Identifiers (URIs), URLs,
-                 and Uniform Resource Names (URNs): Clarifications
-                 and Recommendations
-       RFC 5017: MIB Textual Conventions for Uniform Resource
-                 Identifiers (URIs)";
-   }
-
- }
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-inet-types@2013-07-15.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-inet-types@2013-07-15.yang
deleted file mode 100644 (file)
index 0ca5628..0000000
+++ /dev/null
@@ -1,457 +0,0 @@
-module ietf-inet-types {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-inet-types";
-  prefix "inet";
-
-  organization
-   "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-  contact
-   "WG Web:   <http://tools.ietf.org/wg/netmod/>
-    WG List:  <mailto:netmod@ietf.org>
-
-    WG Chair: David Kessens
-              <mailto:david.kessens@nsn.com>
-
-    WG Chair: Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>
-
-    Editor:   Juergen Schoenwaelder
-              <mailto:j.schoenwaelder@jacobs-university.de>";
-
-  description
-   "This module contains a collection of generally useful derived
-    YANG data types for Internet addresses and related things.
-
-    Copyright (c) 2013 IETF Trust and the persons identified as
-    authors of the code.  All rights reserved.
-
-    Redistribution and use in source and binary forms, with or
-    without modification, is permitted pursuant to, and subject
-    to the license terms contained in, the Simplified BSD License
-    set forth in Section 4.c of the IETF Trust's Legal Provisions
-    Relating to IETF Documents
-    (http://trustee.ietf.org/license-info).
-
-    This version of this YANG module is part of RFC 6991; see
-    the RFC itself for full legal notices.";
-
-  revision 2013-07-15 {
-    description
-     "This revision adds the following new data types:
-      - ip-address-no-zone
-      - ipv4-address-no-zone
-      - ipv6-address-no-zone";
-    reference
-     "RFC 6991: Common YANG Data Types";
-  }
-
-  revision 2010-09-24 {
-    description
-     "Initial revision.";
-    reference
-     "RFC 6021: Common YANG Data Types";
-  }
-
-  /*** collection of types related to protocol fields ***/
-
-  typedef ip-version {
-    type enumeration {
-      enum unknown {
-        value "0";
-        description
-         "An unknown or unspecified version of the Internet
-          protocol.";
-      }
-      enum ipv4 {
-        value "1";
-        description
-         "The IPv4 protocol as defined in RFC 791.";
-      }
-      enum ipv6 {
-        value "2";
-        description
-         "The IPv6 protocol as defined in RFC 2460.";
-      }
-    }
-    description
-     "This value represents the version of the IP protocol.
-
-      In the value set and its semantics, this type is equivalent
-      to the InetVersion textual convention of the SMIv2.";
-    reference
-     "RFC  791: Internet Protocol
-      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
-      RFC 4001: Textual Conventions for Internet Network Addresses";
-  }
-
-  typedef dscp {
-    type uint8 {
-      range "0..63";
-    }
-    description
-     "The dscp type represents a Differentiated Services Code Point
-      that may be used for marking packets in a traffic stream.
-      In the value set and its semantics, this type is equivalent
-      to the Dscp textual convention of the SMIv2.";
-    reference
-     "RFC 3289: Management Information Base for the Differentiated
-                Services Architecture
-      RFC 2474: Definition of the Differentiated Services Field
-                (DS Field) in the IPv4 and IPv6 Headers
-      RFC 2780: IANA Allocation Guidelines For Values In
-                the Internet Protocol and Related Headers";
-  }
-
-  typedef ipv6-flow-label {
-    type uint32 {
-      range "0..1048575";
-    }
-    description
-     "The ipv6-flow-label type represents the flow identifier or Flow
-      Label in an IPv6 packet header that may be used to
-      discriminate traffic flows.
-
-      In the value set and its semantics, this type is equivalent
-      to the IPv6FlowLabel textual convention of the SMIv2.";
-    reference
-     "RFC 3595: Textual Conventions for IPv6 Flow Label
-      RFC 2460: Internet Protocol, Version 6 (IPv6) Specification";
-  }
-
-  typedef port-number {
-    type uint16 {
-      range "0..65535";
-    }
-    description
-     "The port-number type represents a 16-bit port number of an
-      Internet transport-layer protocol such as UDP, TCP, DCCP, or
-      SCTP.  Port numbers are assigned by IANA.  A current list of
-      all assignments is available from <http://www.iana.org/>.
-
-      Note that the port number value zero is reserved by IANA.  In
-      situations where the value zero does not make sense, it can
-      be excluded by subtyping the port-number type.
-      In the value set and its semantics, this type is equivalent
-      to the InetPortNumber textual convention of the SMIv2.";
-    reference
-     "RFC  768: User Datagram Protocol
-      RFC  793: Transmission Control Protocol
-      RFC 4960: Stream Control Transmission Protocol
-      RFC 4340: Datagram Congestion Control Protocol (DCCP)
-      RFC 4001: Textual Conventions for Internet Network Addresses";
-  }
-
-  /*** collection of types related to autonomous systems ***/
-
-  typedef as-number {
-    type uint32;
-    description
-     "The as-number type represents autonomous system numbers
-      which identify an Autonomous System (AS).  An AS is a set
-      of routers under a single technical administration, using
-      an interior gateway protocol and common metrics to route
-      packets within the AS, and using an exterior gateway
-      protocol to route packets to other ASes.  IANA maintains
-      the AS number space and has delegated large parts to the
-      regional registries.
-
-      Autonomous system numbers were originally limited to 16
-      bits.  BGP extensions have enlarged the autonomous system
-      number space to 32 bits.  This type therefore uses an uint32
-      base type without a range restriction in order to support
-      a larger autonomous system number space.
-
-      In the value set and its semantics, this type is equivalent
-      to the InetAutonomousSystemNumber textual convention of
-      the SMIv2.";
-    reference
-     "RFC 1930: Guidelines for creation, selection, and registration
-                of an Autonomous System (AS)
-      RFC 4271: A Border Gateway Protocol 4 (BGP-4)
-      RFC 4001: Textual Conventions for Internet Network Addresses
-      RFC 6793: BGP Support for Four-Octet Autonomous System (AS)
-                Number Space";
-  }
-
-  /*** collection of types related to IP addresses and hostnames ***/
-
-  typedef ip-address {
-    type union {
-      type inet:ipv4-address;
-      type inet:ipv6-address;
-    }
-    description
-     "The ip-address type represents an IP address and is IP
-      version neutral.  The format of the textual representation
-      implies the IP version.  This type supports scoped addresses
-      by allowing zone identifiers in the address format.";
-    reference
-     "RFC 4007: IPv6 Scoped Address Architecture";
-  }
-
-  typedef ipv4-address {
-    type string {
-      pattern
-        '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-      +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-      + '(%[\p{N}\p{L}]+)?';
-    }
-    description
-      "The ipv4-address type represents an IPv4 address in
-       dotted-quad notation.  The IPv4 address may include a zone
-       index, separated by a % sign.
-
-       The zone index is used to disambiguate identical address
-       values.  For link-local addresses, the zone index will
-       typically be the interface index number or the name of an
-       interface.  If the zone index is not present, the default
-       zone of the device will be used.
-
-       The canonical format for the zone index is the numerical
-       format";
-  }
-
-  typedef ipv6-address {
-    type string {
-      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-            + '(%[\p{N}\p{L}]+)?';
-      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-            + '(%.+)?';
-    }
-    description
-     "The ipv6-address type represents an IPv6 address in full,
-      mixed, shortened, and shortened-mixed notation.  The IPv6
-      address may include a zone index, separated by a % sign.
-
-      The zone index is used to disambiguate identical address
-      values.  For link-local addresses, the zone index will
-      typically be the interface index number or the name of an
-      interface.  If the zone index is not present, the default
-      zone of the device will be used.
-
-      The canonical format of IPv6 addresses uses the textual
-      representation defined in Section 4 of RFC 5952.  The
-      canonical format for the zone index is the numerical
-      format as described in Section 11.2 of RFC 4007.";
-    reference
-     "RFC 4291: IP Version 6 Addressing Architecture
-      RFC 4007: IPv6 Scoped Address Architecture
-      RFC 5952: A Recommendation for IPv6 Address Text
-                Representation";
-  }
-
-  typedef ip-address-no-zone {
-    type union {
-      type inet:ipv4-address-no-zone;
-      type inet:ipv6-address-no-zone;
-    }
-    description
-     "The ip-address-no-zone type represents an IP address and is
-      IP version neutral.  The format of the textual representation
-      implies the IP version.  This type does not support scoped
-      addresses since it does not allow zone identifiers in the
-      address format.";
-    reference
-     "RFC 4007: IPv6 Scoped Address Architecture";
-  }
-
-  typedef ipv4-address-no-zone {
-    type inet:ipv4-address {
-      pattern '[0-9\.]*';
-    }
-    description
-      "An IPv4 address without a zone index.  This type, derived from
-       ipv4-address, may be used in situations where the zone is
-       known from the context and hence no zone index is needed.";
-  }
-
-  typedef ipv6-address-no-zone {
-    type inet:ipv6-address {
-      pattern '[0-9a-fA-F:\.]*';
-    }
-    description
-      "An IPv6 address without a zone index.  This type, derived from
-       ipv6-address, may be used in situations where the zone is
-       known from the context and hence no zone index is needed.";
-    reference
-     "RFC 4291: IP Version 6 Addressing Architecture
-      RFC 4007: IPv6 Scoped Address Architecture
-      RFC 5952: A Recommendation for IPv6 Address Text
-                Representation";
-  }
-
-  typedef ip-prefix {
-    type union {
-      type inet:ipv4-prefix;
-      type inet:ipv6-prefix;
-    }
-    description
-     "The ip-prefix type represents an IP prefix and is IP
-      version neutral.  The format of the textual representations
-      implies the IP version.";
-  }
-
-  typedef ipv4-prefix {
-    type string {
-      pattern
-         '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-       +  '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])'
-       + '/(([0-9])|([1-2][0-9])|(3[0-2]))';
-    }
-    description
-     "The ipv4-prefix type represents an IPv4 address prefix.
-      The prefix length is given by the number following the
-      slash character and must be less than or equal to 32.
-
-      A prefix length value of n corresponds to an IP address
-      mask that has n contiguous 1-bits from the most
-      significant bit (MSB) and all other bits set to 0.
-
-      The canonical format of an IPv4 prefix has all bits of
-      the IPv4 address set to zero that are not part of the
-      IPv4 prefix.";
-  }
-
-  typedef ipv6-prefix {
-    type string {
-      pattern '((:|[0-9a-fA-F]{0,4}):)([0-9a-fA-F]{0,4}:){0,5}'
-            + '((([0-9a-fA-F]{0,4}:)?(:|[0-9a-fA-F]{0,4}))|'
-            + '(((25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])\.){3}'
-            + '(25[0-5]|2[0-4][0-9]|[01]?[0-9]?[0-9])))'
-            + '(/(([0-9])|([0-9]{2})|(1[0-1][0-9])|(12[0-8])))';
-      pattern '(([^:]+:){6}(([^:]+:[^:]+)|(.*\..*)))|'
-            + '((([^:]+:)*[^:]+)?::(([^:]+:)*[^:]+)?)'
-            + '(/.+)';
-    }
-    description
-     "The ipv6-prefix type represents an IPv6 address prefix.
-      The prefix length is given by the number following the
-      slash character and must be less than or equal to 128.
-
-      A prefix length value of n corresponds to an IP address
-      mask that has n contiguous 1-bits from the most
-      significant bit (MSB) and all other bits set to 0.
-
-      The IPv6 address should have all bits that do not belong
-      to the prefix set to zero.
-
-      The canonical format of an IPv6 prefix has all bits of
-      the IPv6 address set to zero that are not part of the
-      IPv6 prefix.  Furthermore, the IPv6 address is represented
-      as defined in Section 4 of RFC 5952.";
-    reference
-     "RFC 5952: A Recommendation for IPv6 Address Text
-                Representation";
-  }
-
-  /*** collection of domain name and URI types ***/
-
-  typedef domain-name {
-    type string {
-      pattern
-        '((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*'
-      + '([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)'
-      + '|\.';
-      length "1..253";
-    }
-    description
-     "The domain-name type represents a DNS domain name.  The
-      name SHOULD be fully qualified whenever possible.
-
-      Internet domain names are only loosely specified.  Section
-      3.5 of RFC 1034 recommends a syntax (modified in Section
-      2.1 of RFC 1123).  The pattern above is intended to allow
-      for current practice in domain name use, and some possible
-      future expansion.  It is designed to hold various types of
-      domain names, including names used for A or AAAA records
-      (host names) and other records, such as SRV records.  Note
-      that Internet host names have a stricter syntax (described
-      in RFC 952) than the DNS recommendations in RFCs 1034 and
-      1123, and that systems that want to store host names in
-      schema nodes using the domain-name type are recommended to
-      adhere to this stricter standard to ensure interoperability.
-
-      The encoding of DNS names in the DNS protocol is limited
-      to 255 characters.  Since the encoding consists of labels
-      prefixed by a length bytes and there is a trailing NULL
-      byte, only 253 characters can appear in the textual dotted
-      notation.
-
-      The description clause of schema nodes using the domain-name
-      type MUST describe when and how these names are resolved to
-      IP addresses.  Note that the resolution of a domain-name value
-      may require to query multiple DNS records (e.g., A for IPv4
-      and AAAA for IPv6).  The order of the resolution process and
-      which DNS record takes precedence can either be defined
-      explicitly or may depend on the configuration of the
-      resolver.
-
-      Domain-name values use the US-ASCII encoding.  Their canonical
-      format uses lowercase US-ASCII characters.  Internationalized
-      domain names MUST be A-labels as per RFC 5890.";
-    reference
-     "RFC  952: DoD Internet Host Table Specification
-      RFC 1034: Domain Names - Concepts and Facilities
-      RFC 1123: Requirements for Internet Hosts -- Application
-                and Support
-      RFC 2782: A DNS RR for specifying the location of services
-                (DNS SRV)
-      RFC 5890: Internationalized Domain Names in Applications
-                (IDNA): Definitions and Document Framework";
-  }
-
-  typedef host {
-    type union {
-      type inet:ip-address;
-      type inet:domain-name;
-    }
-    description
-     "The host type represents either an IP address or a DNS
-      domain name.";
-  }
-
-  typedef uri {
-    type string;
-    description
-     "The uri type represents a Uniform Resource Identifier
-      (URI) as defined by STD 66.
-
-      Objects using the uri type MUST be in US-ASCII encoding,
-      and MUST be normalized as described by RFC 3986 Sections
-      6.2.1, 6.2.2.1, and 6.2.2.2.  All unnecessary
-      percent-encoding is removed, and all case-insensitive
-      characters are set to lowercase except for hexadecimal
-      digits, which are normalized to uppercase as described in
-      Section 6.2.2.1.
-
-      The purpose of this normalization is to help provide
-      unique URIs.  Note that this normalization is not
-      sufficient to provide uniqueness.  Two URIs that are
-      textually distinct after this normalization may still be
-      equivalent.
-
-      Objects using the uri type may restrict the schemes that
-      they permit.  For example, 'data:' and 'urn:' schemes
-      might not be appropriate.
-
-      A zero-length URI is not a valid URI.  This can be used to
-      express 'URI absent' where required.
-
-      In the value set and its semantics, this type is equivalent
-      to the Uri SMIv2 textual convention defined in RFC 5017.";
-    reference
-     "RFC 3986: Uniform Resource Identifier (URI): Generic Syntax
-      RFC 3305: Report from the Joint W3C/IETF URI Planning Interest
-                Group: Uniform Resource Identifiers (URIs), URLs,
-                and Uniform Resource Names (URNs): Clarifications
-                and Recommendations
-      RFC 5017: MIB Textual Conventions for Uniform Resource
-                Identifiers (URIs)";
-  }
-
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-acm@2012-02-22.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-acm@2012-02-22.yang
deleted file mode 100644 (file)
index 05be765..0000000
+++ /dev/null
@@ -1,449 +0,0 @@
-module ietf-netconf-acm {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-acm";
-
-  prefix "nacm";
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netconf/>
-     WG List:  <mailto:netconf@ietf.org>
-
-     WG Chair: Mehmet Ersue
-               <mailto:mehmet.ersue@nsn.com>
-
-     WG Chair: Bert Wijnen
-               <mailto:bertietf@bwijnen.net>
-
-     Editor:   Andy Bierman
-               <mailto:andy@yumaworks.com>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>";
-
-  description
-    "NETCONF Access Control Model.
-
-     Copyright (c) 2012 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD
-     License set forth in Section 4.c of the IETF Trust's
-     Legal Provisions Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6536; see
-     the RFC itself for full legal notices.";
-
-  revision "2012-02-22" {
-    description
-      "Initial version";
-    reference
-      "RFC 6536: Network Configuration Protocol (NETCONF)
-                 Access Control Model";
-  }
-
-  /*
-   * Extension statements
-   */
-
-  extension default-deny-write {
-    description
-      "Used to indicate that the data model node
-       represents a sensitive security system parameter.
-
-       If present, and the NACM module is enabled (i.e.,
-       /nacm/enable-nacm object equals 'true'), the NETCONF server
-       will only allow the designated 'recovery session' to have
-       write access to the node.  An explicit access control rule is
-       required for all other users.
-
-       The 'default-deny-write' extension MAY appear within a data
-       definition statement.  It is ignored otherwise.";
-  }
-
-  extension default-deny-all {
-    description
-      "Used to indicate that the data model node
-       controls a very sensitive security system parameter.
-
-       If present, and the NACM module is enabled (i.e.,
-       /nacm/enable-nacm object equals 'true'), the NETCONF server
-       will only allow the designated 'recovery session' to have
-       read, write, or execute access to the node.  An explicit
-       access control rule is required for all other users.
-
-       The 'default-deny-all' extension MAY appear within a data
-       definition statement, 'rpc' statement, or 'notification'
-       statement.  It is ignored otherwise.";
-  }
-
-  /*
-   * Derived types
-   */
-
-  typedef user-name-type {
-    type string {
-      length "1..max";
-    }
-    description
-      "General Purpose Username string.";
-  }
-
-  typedef matchall-string-type {
-    type string {
-      pattern "\*";
-    }
-    description
-      "The string containing a single asterisk '*' is used
-       to conceptually represent all possible values
-       for the particular leaf using this data type.";
-  }
-
-  typedef access-operations-type {
-    type bits {
-      bit create {
-        description
-          "Any protocol operation that creates a
-           new data node.";
-      }
-      bit read {
-        description
-          "Any protocol operation or notification that
-           returns the value of a data node.";
-      }
-      bit update {
-        description
-          "Any protocol operation that alters an existing
-           data node.";
-      }
-      bit delete {
-        description
-          "Any protocol operation that removes a data node.";
-      }
-      bit exec {
-        description
-          "Execution access to the specified protocol operation.";
-      }
-    }
-    description
-      "NETCONF Access Operation.";
-  }
-
-  typedef group-name-type {
-    type string {
-      length "1..max";
-      pattern "[^\*].*";
-    }
-    description
-      "Name of administrative group to which
-       users can be assigned.";
-  }
-
-  typedef action-type {
-    type enumeration {
-      enum permit {
-        description
-          "Requested action is permitted.";
-      }
-      enum deny {
-        description
-          "Requested action is denied.";
-      }
-    }
-    description
-      "Action taken by the server when a particular
-       rule matches.";
-  }
-
-  typedef node-instance-identifier {
-    type yang:xpath1.0;
-    description
-      "Path expression used to represent a special
-       data node instance identifier string.
-
-       A node-instance-identifier value is an
-       unrestricted YANG instance-identifier expression.
-       All the same rules as an instance-identifier apply
-       except predicates for keys are optional.  If a key
-       predicate is missing, then the node-instance-identifier
-       represents all possible server instances for that key.
-
-       This XPath expression is evaluated in the following context:
-
-        o  The set of namespace declarations are those in scope on
-           the leaf element where this type is used.
-
-        o  The set of variable bindings contains one variable,
-           'USER', which contains the name of the user of the current
-            session.
-
-        o  The function library is the core function library, but
-           note that due to the syntax restrictions of an
-           instance-identifier, no functions are allowed.
-
-        o  The context node is the root node in the data tree.";
-  }
-
-  /*
-   * Data definition statements
-   */
-
-  container nacm {
-    nacm:default-deny-all;
-
-    description
-      "Parameters for NETCONF Access Control Model.";
-
-    leaf enable-nacm {
-      type boolean;
-      default true;
-      description
-        "Enables or disables all NETCONF access control
-         enforcement.  If 'true', then enforcement
-         is enabled.  If 'false', then enforcement
-         is disabled.";
-    }
-
-    leaf read-default {
-      type action-type;
-      default "permit";
-      description
-        "Controls whether read access is granted if
-         no appropriate rule is found for a
-         particular read request.";
-    }
-
-    leaf write-default {
-      type action-type;
-      default "deny";
-      description
-        "Controls whether create, update, or delete access
-         is granted if no appropriate rule is found for a
-         particular write request.";
-    }
-
-    leaf exec-default {
-      type action-type;
-      default "permit";
-      description
-        "Controls whether exec access is granted if no appropriate
-         rule is found for a particular protocol operation request.";
-    }
-
-    leaf enable-external-groups {
-      type boolean;
-      default true;
-      description
-        "Controls whether the server uses the groups reported by the
-         NETCONF transport layer when it assigns the user to a set of
-         NACM groups.  If this leaf has the value 'false', any group
-         names reported by the transport layer are ignored by the
-         server.";
-    }
-
-    leaf denied-operations {
-      type yang:zero-based-counter32;
-      config false;
-      mandatory true;
-      description
-        "Number of times since the server last restarted that a
-         protocol operation request was denied.";
-    }
-
-    leaf denied-data-writes {
-      type yang:zero-based-counter32;
-      config false;
-      mandatory true;
-      description
-        "Number of times since the server last restarted that a
-         protocol operation request to alter
-         a configuration datastore was denied.";
-    }
-
-    leaf denied-notifications {
-      type yang:zero-based-counter32;
-      config false;
-      mandatory true;
-      description
-        "Number of times since the server last restarted that
-         a notification was dropped for a subscription because
-         access to the event type was denied.";
-    }
-
-    container groups {
-      description
-        "NETCONF Access Control Groups.";
-
-      list group {
-        key name;
-
-        description
-          "One NACM Group Entry.  This list will only contain
-           configured entries, not any entries learned from
-           any transport protocols.";
-
-        leaf name {
-          type group-name-type;
-          description
-            "Group name associated with this entry.";
-        }
-
-        leaf-list user-name {
-          type user-name-type;
-          description
-            "Each entry identifies the username of
-             a member of the group associated with
-             this entry.";
-        }
-      }
-    }
-
-    list rule-list {
-      key "name";
-      ordered-by user;
-      description
-        "An ordered collection of access control rules.";
-
-      leaf name {
-        type string {
-          length "1..max";
-        }
-        description
-          "Arbitrary name assigned to the rule-list.";
-      }
-      leaf-list group {
-        type union {
-          type matchall-string-type;
-          type group-name-type;
-        }
-        description
-          "List of administrative groups that will be
-           assigned the associated access rights
-           defined by the 'rule' list.
-
-           The string '*' indicates that all groups apply to the
-           entry.";
-      }
-
-      list rule {
-        key "name";
-        ordered-by user;
-        description
-          "One access control rule.
-
-           Rules are processed in user-defined order until a match is
-           found.  A rule matches if 'module-name', 'rule-type', and
-           'access-operations' match the request.  If a rule
-           matches, the 'action' leaf determines if access is granted
-           or not.";
-
-        leaf name {
-          type string {
-            length "1..max";
-          }
-          description
-            "Arbitrary name assigned to the rule.";
-        }
-
-        leaf module-name {
-          type union {
-            type matchall-string-type;
-            type string;
-          }
-          default "*";
-          description
-            "Name of the module associated with this rule.
-
-             This leaf matches if it has the value '*' or if the
-             object being accessed is defined in the module with the
-             specified module name.";
-        }
-        choice rule-type {
-          description
-            "This choice matches if all leafs present in the rule
-             match the request.  If no leafs are present, the
-             choice matches all requests.";
-          case protocol-operation {
-            leaf rpc-name {
-              type union {
-                type matchall-string-type;
-                type string;
-              }
-              description
-                "This leaf matches if it has the value '*' or if
-                 its value equals the requested protocol operation
-                 name.";
-            }
-          }
-          case notification {
-            leaf notification-name {
-              type union {
-                type matchall-string-type;
-                type string;
-              }
-              description
-                "This leaf matches if it has the value '*' or if its
-                 value equals the requested notification name.";
-            }
-          }
-          case data-node {
-            leaf path {
-              type node-instance-identifier;
-              mandatory true;
-              description
-                "Data Node Instance Identifier associated with the
-                 data node controlled by this rule.
-
-                 Configuration data or state data instance
-                 identifiers start with a top-level data node.  A
-                 complete instance identifier is required for this
-                 type of path value.
-
-                 The special value '/' refers to all possible
-                 datastore contents.";
-            }
-          }
-        }
-
-        leaf access-operations {
-          type union {
-            type matchall-string-type;
-            type access-operations-type;
-          }
-          default "*";
-          description
-            "Access operations associated with this rule.
-
-             This leaf matches if it has the value '*' or if the
-             bit corresponding to the requested operation is set.";
-        }
-
-        leaf action {
-          type action-type;
-          mandatory true;
-          description
-            "The access control action associated with the
-             rule.  If a rule is determined to match a
-             particular request, then this object is used
-             to determine whether to permit or deny the
-             request.";
-        }
-
-        leaf comment {
-          type string;
-          description
-            "A textual description of the access rule.";
-        }
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-monitoring@2010-10-04.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-monitoring@2010-10-04.yang
deleted file mode 100644 (file)
index 48a0e56..0000000
+++ /dev/null
@@ -1,558 +0,0 @@
-module ietf-netconf-monitoring {
-
-  namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-monitoring";
-  prefix "ncm";
-
-  import ietf-yang-types { prefix yang; }
-  import ietf-inet-types { prefix inet; }
-
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netconf/>
-     WG List:  <mailto:netconf@ietf.org>
-
-     WG Chair: Mehmet Ersue
-               <mailto:mehmet.ersue@nsn.com>
-
-     WG Chair: Bert Wijnen
-               <mailto:bertietf@bwijnen.net>
-
-     Editor:   Mark Scott
-               <mailto:mark.scott@ericsson.com>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>";
-
-  description
-    "NETCONF Monitoring Module.
-     All elements in this module are read-only.
-
-     Copyright (c) 2010 IETF Trust and the persons identified as
-     authors of the code. All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD
-     License set forth in Section 4.c of the IETF Trust's
-     Legal Provisions Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6022; see
-     the RFC itself for full legal notices.";
-
-  revision 2010-10-04 {
-    description
-      "Initial revision.";
-    reference
-      "RFC 6022: YANG Module for NETCONF Monitoring";
-  }
-
-  typedef netconf-datastore-type {
-    type enumeration {
-      enum running;
-      enum candidate;
-      enum startup;
-    }
-    description
-      "Enumeration of possible NETCONF datastore types.";
-    reference
-      "RFC 4741: NETCONF Configuration Protocol";
-  }
-
-  identity transport {
-    description
-      "Base identity for NETCONF transport types.";
-  }
-
-  identity netconf-ssh {
-    base transport;
-    description
-      "NETCONF over Secure Shell (SSH).";
-    reference
-      "RFC 4742: Using the NETCONF Configuration Protocol
-                 over Secure SHell (SSH)";
-  }
-
-  identity netconf-soap-over-beep {
-    base transport;
-    description
-      "NETCONF over Simple Object Access Protocol (SOAP) over
-       Blocks Extensible Exchange Protocol (BEEP).";
-    reference
-      "RFC 4743: Using NETCONF over the Simple Object
-                 Access Protocol (SOAP)";
-  }
-
-  identity netconf-soap-over-https {
-    base transport;
-    description
-      "NETCONF over Simple Object Access Protocol (SOAP)
-      over Hypertext Transfer Protocol Secure (HTTPS).";
-    reference
-      "RFC 4743: Using NETCONF over the Simple Object
-                 Access Protocol (SOAP)";
-  }
-
-  identity netconf-beep {
-    base transport;
-    description
-      "NETCONF over Blocks Extensible Exchange Protocol (BEEP).";
-    reference
-      "RFC 4744: Using the NETCONF Protocol over the
-                 Blocks Extensible Exchange Protocol (BEEP)";
-  }
-
-  identity netconf-tls {
-    base transport;
-    description
-      "NETCONF over Transport Layer Security (TLS).";
-    reference
-      "RFC 5539: NETCONF over Transport Layer Security (TLS)";
-  }
-
-  identity schema-format {
-    description
-      "Base identity for data model schema languages.";
-  }
-
-  identity xsd {
-    base schema-format;
-    description
-      "W3C XML Schema Definition.";
-    reference
-      "W3C REC REC-xmlschema-1-20041028:
-         XML Schema Part 1: Structures";
-  }
-
-  identity yang {
-    base schema-format;
-    description
-      "The YANG data modeling language for NETCONF.";
-    reference
-      "RFC 6020:  YANG - A Data Modeling Language for the
-                  Network Configuration Protocol (NETCONF)";
-  }
-
-  identity yin {
-    base schema-format;
-    description
-      "The YIN syntax for YANG.";
-    reference
-      "RFC 6020:  YANG - A Data Modeling Language for the
-                  Network Configuration Protocol (NETCONF)";
-  }
-
-  identity rng {
-    base schema-format;
-    description
-      "Regular Language for XML Next Generation (RELAX NG).";
-    reference
-      "ISO/IEC 19757-2:2008: RELAX NG";
-  }
-
-  identity rnc {
-    base schema-format;
-    description
-      "Relax NG Compact Syntax";
-    reference
-      "ISO/IEC 19757-2:2008: RELAX NG";
-  }
-
-  grouping common-counters {
-    description
-      "Counters that exist both per session, and also globally,
-       accumulated from all sessions.";
-
-    leaf in-rpcs {
-      type yang:zero-based-counter32;
-      description
-        "Number of correct <rpc> messages received.";
-    }
-    leaf in-bad-rpcs {
-      type yang:zero-based-counter32;
-      description
-        "Number of messages received when an <rpc> message was expected,
-         that were not correct <rpc> messages.  This includes XML parse
-         errors and errors on the rpc layer.";
-    }
-    leaf out-rpc-errors {
-      type yang:zero-based-counter32;
-      description
-        "Number of <rpc-reply> messages sent that contained an
-         <rpc-error> element.";
-    }
-    leaf out-notifications {
-      type yang:zero-based-counter32;
-      description
-        "Number of <notification> messages sent.";
-    }
-  }
-
-  container netconf-state {
-    config false;
-    description
-      "The netconf-state container is the root of the monitoring
-       data model.";
-
-    container capabilities {
-      description
-        "Contains the list of NETCONF capabilities supported by the
-         server.";
-
-      leaf-list capability {
-        type inet:uri;
-        description
-          "List of NETCONF capabilities supported by the server.";
-      }
-    }
-
-    container datastores {
-      description
-        "Contains the list of NETCONF configuration datastores.";
-
-      list datastore {
-        key name;
-        description
-          "List of NETCONF configuration datastores supported by
-           the NETCONF server and related information.";
-
-        leaf name {
-          type netconf-datastore-type;
-          description
-            "Name of the datastore associated with this list entry.";
-        }
-        container locks {
-          presence
-            "This container is present only if the datastore
-             is locked.";
-          description
-            "The NETCONF <lock> and <partial-lock> operations allow
-             a client to lock specific resources in a datastore.  The
-             NETCONF server will prevent changes to the locked
-             resources by all sessions except the one that acquired
-             the lock(s).
-
-             Monitoring information is provided for each datastore
-             entry including details such as the session that acquired
-             the lock, the type of lock (global or partial) and the
-             list of locked resources.  Multiple locks per datastore
-             are supported.";
-
-          grouping lock-info {
-            description
-              "Lock related parameters, common to both global and
-               partial locks.";
-
-            leaf locked-by-session {
-              type uint32;
-              mandatory true;
-              description
-                "The session ID of the session that has locked
-                 this resource.  Both a global lock and a partial
-                 lock MUST contain the NETCONF session-id.
-
-                 If the lock is held by a session that is not managed
-                 by the NETCONF server (e.g., a CLI session), a session
-                 id of 0 (zero) is reported.";
-              reference
-                "RFC 4741: NETCONF Configuration Protocol";
-            }
-            leaf locked-time {
-              type yang:date-and-time;
-              mandatory true;
-              description
-                "The date and time of when the resource was
-                 locked.";
-            }
-          }
-
-          choice lock-type {
-            description
-              "Indicates if a global lock or a set of partial locks
-               are set.";
-
-            container global-lock {
-              description
-                "Present if the global lock is set.";
-              uses lock-info;
-            }
-
-            list partial-lock {
-              key lock-id;
-              description
-                "List of partial locks.";
-              reference
-                "RFC 5717: Partial Lock Remote Procedure Call (RPC) for
-                           NETCONF";
-
-              leaf lock-id {
-                type uint32;
-                description
-                  "This is the lock id returned in the <partial-lock>
-                   response.";
-              }
-              uses lock-info;
-              leaf-list select {
-                type yang:xpath1.0;
-                min-elements 1;
-                description
-                  "The xpath expression that was used to request
-                   the lock.  The select expression indicates the
-                   original intended scope of the lock.";
-              }
-              leaf-list locked-node {
-                type instance-identifier;
-                description
-                  "The list of instance-identifiers (i.e., the
-                   locked nodes).
-
-                   The scope of the partial lock is defined by the list
-                   of locked nodes.";
-              }
-            }
-          }
-        }
-      }
-    }
-
-    container schemas {
-      description
-        "Contains the list of data model schemas supported by the
-         server.";
-
-      list schema {
-        key "identifier version format";
-
-        description
-          "List of data model schemas supported by the server.";
-
-        leaf identifier {
-          type string;
-          description
-            "Identifier to uniquely reference the schema.  The
-             identifier is used in the <get-schema> operation and may
-             be used for other purposes such as file retrieval.
-
-             For modeling languages that support or require a data
-             model name (e.g., YANG module name) the identifier MUST
-             match that name.  For YANG data models, the identifier is
-             the name of the module or submodule.  In other cases, an
-             identifier such as a filename MAY be used instead.";
-        }
-        leaf version {
-          type string;
-          description
-            "Version of the schema supported.  Multiple versions MAY be
-             supported simultaneously by a NETCONF server.  Each
-             version MUST be reported individually in the schema list,
-             i.e., with same identifier, possibly different location,
-             but different version.
-
-             For YANG data models, version is the value of the most
-             recent YANG 'revision' statement in the module or
-             submodule, or the empty string if no 'revision' statement
-             is present.";
-        }
-        leaf format {
-          type identityref {
-            base schema-format;
-          }
-          description
-            "The data modeling language the schema is written
-             in (currently xsd, yang, yin, rng, or rnc).
-             For YANG data models, 'yang' format MUST be supported and
-             'yin' format MAY also be provided.";
-        }
-        leaf namespace {
-          type inet:uri;
-          mandatory true;
-          description
-            "The XML namespace defined by the data model.
-
-             For YANG data models, this is the module's namespace.
-             If the list entry describes a submodule, this field
-             contains the namespace of the module to which the
-             submodule belongs.";
-        }
-        leaf-list location {
-          type union {
-            type enumeration {
-              enum "NETCONF";
-            }
-            type inet:uri;
-          }
-          description
-            "One or more locations from which the schema can be
-             retrieved.  This list SHOULD contain at least one
-             entry per schema.
-
-             A schema entry may be located on a remote file system
-             (e.g., reference to file system for ftp retrieval) or
-             retrieved directly from a server supporting the
-             <get-schema> operation (denoted by the value 'NETCONF').";
-        }
-      }
-    }
-
-    container sessions {
-      description
-        "The sessions container includes session-specific data for
-         NETCONF management sessions.  The session list MUST include
-         all currently active NETCONF sessions.";
-
-      list session {
-        key session-id;
-        description
-          "All NETCONF sessions managed by the NETCONF server
-           MUST be reported in this list.";
-
-        leaf session-id {
-          type uint32 {
-            range "1..max";
-          }
-          description
-            "Unique identifier for the session.  This value is the
-             NETCONF session identifier, as defined in RFC 4741.";
-          reference
-            "RFC 4741: NETCONF Configuration Protocol";
-        }
-        leaf transport {
-          type identityref {
-            base transport;
-          }
-          mandatory true;
-          description
-            "Identifies the transport for each session, e.g.,
-            'netconf-ssh', 'netconf-soap', etc.";
-        }
-        leaf username  {
-          type string;
-          mandatory true;
-          description
-            "The username is the client identity that was authenticated
-            by the NETCONF transport protocol.  The algorithm used to
-            derive the username is NETCONF transport protocol specific
-            and in addition specific to the authentication mechanism
-            used by the NETCONF transport protocol.";
-        }
-        leaf source-host {
-          type inet:host;
-          description
-            "Host identifier of the NETCONF client.  The value
-             returned is implementation specific (e.g., hostname,
-             IPv4 address, IPv6 address)";
-        }
-        leaf login-time {
-          type yang:date-and-time;
-          mandatory true;
-          description
-            "Time at the server at which the session was established.";
-        }
-        uses common-counters {
-          description
-            "Per-session counters.  Zero based with following reset
-             behaviour:
-               - at start of a session
-               - when max value is reached";
-        }
-      }
-    }
-
-    container statistics {
-      description
-        "Statistical data pertaining to the NETCONF server.";
-
-      leaf netconf-start-time {
-        type yang:date-and-time;
-        description
-          "Date and time at which the management subsystem was
-           started.";
-      }
-      leaf in-bad-hellos {
-        type yang:zero-based-counter32;
-        description
-          "Number of sessions silently dropped because an
-          invalid <hello> message was received.  This includes <hello>
-          messages with a 'session-id' attribute, bad namespace, and
-          bad capability declarations.";
-      }
-      leaf in-sessions {
-        type yang:zero-based-counter32;
-        description
-          "Number of sessions started.  This counter is incremented
-           when a <hello> message with a <session-id> is sent.
-
-          'in-sessions' - 'in-bad-hellos' =
-              'number of correctly started netconf sessions'";
-      }
-      leaf dropped-sessions {
-        type yang:zero-based-counter32;
-        description
-          "Number of sessions that were abnormally terminated, e.g.,
-           due to idle timeout or transport close.  This counter is not
-           incremented when a session is properly closed by a
-           <close-session> operation, or killed by a <kill-session>
-           operation.";
-      }
-      uses common-counters {
-        description
-          "Global counters, accumulated from all sessions.
-           Zero based with following reset behaviour:
-             - re-initialization of NETCONF server
-             - when max value is reached";
-      }
-    }
-  }
-
-  rpc get-schema {
-    description
-      "This operation is used to retrieve a schema from the
-       NETCONF server.
-
-       Positive Response:
-         The NETCONF server returns the requested schema.
-
-       Negative Response:
-         If requested schema does not exist, the <error-tag> is
-         'invalid-value'.
-
-         If more than one schema matches the requested parameters, the
-         <error-tag> is 'operation-failed', and <error-app-tag> is
-         'data-not-unique'.";
-
-    input {
-      leaf identifier {
-        type string;
-        mandatory true;
-        description
-          "Identifier for the schema list entry.";
-      }
-      leaf version {
-        type string;
-        description
-          "Version of the schema requested.  If this parameter is not
-           present, and more than one version of the schema exists on
-           the server, a 'data-not-unique' error is returned, as
-           described above.";
-      }
-      leaf format {
-        type identityref {
-          base schema-format;
-        }
-        description
-           "The data modeling language of the schema.  If this
-            parameter is not present, and more than one formats of
-            the schema exists on the server, a 'data-not-unique' error
-            is returned, as described above.";
-      }
-    }
-    output {
-        anyxml data {
-          description
-            "Contains the schema content.";
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-partial-lock@2009-10-19.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-partial-lock@2009-10-19.yang
deleted file mode 100644 (file)
index 13658ac..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-module ietf-netconf-partial-lock {
-
-  namespace urn:ietf:params:xml:ns:netconf:partial-lock:1.0;
-  prefix pl;
-
-  // needed to force data type of select string to be corect
-  import ietf-yang-types { prefix yang; }
-
-  organization "IETF Network Configuration (netconf) Working Group";
-
-  contact
-   "Netconf Working Group
-    Mailing list: netconf@ietf.org
-    Web: http://www.ietf.org/html.charters/netconf-charter.html
-
-    Balazs Lengyel
-    Ericsson
-    balazs.lengyel@ericsson.com";
-
-  description
-   "This YANG module defines the <partial-lock> and
-    <partial-unlock> operations.";
-
-  revision 2009-10-19 {
-    description
-     "Initial version, published as RFC 5717.";
-  }
-
-  typedef lock-id-type {
-    type uint32;
-    description
-     "A number identifying a specific partial-lock granted to a session.
-      It is allocated by the system, and SHOULD be used in the
-      partial-unlock operation.";
-  }
-
-  rpc partial-lock {
-    description
-     "A NETCONF operation that locks parts of the running datastore.";
-    input {
-      leaf-list select {
-        //type string;
-        type yang:xpath1.0;
-        min-elements 1;
-        description
-         "XPath expression that specifies the scope of the lock.
-          An Instance Identifier expression MUST be used unless the
-          :xpath capability is supported, in which case any XPath 1.0
-          expression is allowed.";
-      }
-    }
-    output {
-      leaf lock-id {
-        type lock-id-type;
-        mandatory true;
-        description
-         "Identifies the lock, if granted.  The lock-id SHOULD be
-          used in the partial-unlock rpc.";
-      }
-      leaf-list locked-node {
-        type instance-identifier;
-        min-elements 1;
-        description
-         "List of locked nodes in the running datastore";
-      }
-    }
-  }
-
-  rpc partial-unlock {
-    description
-     "A NETCONF operation that releases a previously acquired
-      partial-lock.";
-    input {
-      leaf lock-id {
-        type lock-id-type;
-        mandatory true;
-        description
-         "Identifies the lock to be released.  MUST be the value
-          received in the response to a partial-lock operation.";
-      }
-    }
-  }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-with-defaults@2011-06-01.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf-with-defaults@2011-06-01.yang
deleted file mode 100644 (file)
index 81d7f0b..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-module ietf-netconf-with-defaults {
-
-   namespace "urn:ietf:params:xml:ns:yang:ietf-netconf-with-defaults";
-
-   prefix ncwd;
-
-   import ietf-netconf { prefix nc; }
-
-   organization
-    "IETF NETCONF (Network Configuration Protocol) Working Group";
-
-   contact
-    "WG Web:   <http://tools.ietf.org/wg/netconf/>
-
-     WG List:  <netconf@ietf.org>
-
-     WG Chair: Bert Wijnen
-               <bertietf@bwijnen.net>
-
-     WG Chair: Mehmet Ersue
-               <mehmet.ersue@nsn.com>
-
-     Editor: Andy Bierman
-             <andy.bierman@brocade.com>
-
-     Editor: Balazs Lengyel
-             <balazs.lengyel@ericsson.com>";
-
-   description
-    "This module defines an extension to the NETCONF protocol
-     that allows the NETCONF client to control how default
-     values are handled by the server in particular NETCONF
-     operations.
-
-     Copyright (c) 2011 IETF Trust and the persons identified as
-     the document authors.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6243; see
-     the RFC itself for full legal notices.";
-
-   revision 2011-06-01 {
-     description
-       "Initial version.";
-     reference
-      "RFC 6243: With-defaults Capability for NETCONF";
-   }
-
-   typedef with-defaults-mode {
-      description
-        "Possible modes to report default data.";
-      reference
-         "RFC 6243; Section 3.";
-      type enumeration {
-         enum report-all {
-             description
-               "All default data is reported.";
-             reference
-               "RFC 6243; Section 3.1";
-         }
-         enum report-all-tagged {
-             description
-               "All default data is reported.
-                Any nodes considered to be default data
-                will contain a 'default' XML attribute,
-                set to 'true' or '1'.";
-             reference
-               "RFC 6243; Section 3.4";
-         }
-         enum trim {
-             description
-               "Values are not reported if they contain the default.";
-             reference
-               "RFC 6243; Section 3.2";
-         }
-         enum explicit {
-             description
-               "Report values that contain the definition of
-                explicitly set data.";
-             reference
-               "RFC 6243; Section 3.3";
-         }
-     }
-   }
-
-   grouping with-defaults-parameters {
-     description
-       "Contains the <with-defaults> parameter for control
-        of defaults in NETCONF retrieval operations.";
-
-     leaf with-defaults {
-       description
-         "The explicit defaults processing mode requested.";
-       reference
-         "RFC 6243; Section 4.5.1";
-
-       type with-defaults-mode;
-     }
-   }
-
-   // extending the get-config operation
-   augment /nc:get-config/nc:input {
-       description
-         "Adds the <with-defaults> parameter to the
-          input of the NETCONF <get-config> operation.";
-       reference
-         "RFC 6243; Section 4.5.1";
-
-       uses with-defaults-parameters;
-   }
-
-   // extending the get operation
-   augment /nc:get/nc:input {
-       description
-         "Adds the <with-defaults> parameter to
-          the input of the NETCONF <get> operation.";
-       reference
-         "RFC 6243; Section 4.5.1";
-
-       uses with-defaults-parameters;
-   }
-
-   // extending the copy-config operation
-   augment /nc:copy-config/nc:input {
-       description
-         "Adds the <with-defaults> parameter to
-          the input of the NETCONF <copy-config> operation.";
-       reference
-         "RFC 6243; Section 4.5.1";
-
-       uses with-defaults-parameters;
-   }
-
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf@2011-06-01.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-netconf@2011-06-01.yang
deleted file mode 100644 (file)
index 6449421..0000000
+++ /dev/null
@@ -1,934 +0,0 @@
-module ietf-netconf {
-
-  // the namespace for NETCONF XML definitions is unchanged
-  // from RFC 4741, which this document replaces
-  namespace "urn:ietf:params:xml:ns:netconf:base:1.0";
-
-  prefix nc;
-
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  import ietf-netconf-acm { prefix nacm; }
-
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netconf/>
-     WG List:  <netconf@ietf.org>
-
-     WG Chair: Bert Wijnen
-               <bertietf@bwijnen.net>
-
-     WG Chair: Mehmet Ersue
-               <mehmet.ersue@nsn.com>
-
-     Editor:   Martin Bjorklund
-               <mbj@tail-f.com>
-
-     Editor:   Juergen Schoenwaelder
-               <j.schoenwaelder@jacobs-university.de>
-
-     Editor:   Andy Bierman
-               <andy.bierman@brocade.com>";
-  description
-    "NETCONF Protocol Data Types and Protocol Operations.
-
-     Copyright (c) 2011 IETF Trust and the persons identified as
-     the document authors.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 6241; see
-     the RFC itself for full legal notices.";
-
-  revision 2011-06-01 {
-    description
-      "Initial revision;
-       2013-09-29: Updated to include NACM attributes, 
-       as specified in RFC 6536: sec 3.2.5 and 3.2.8";
-    reference
-      "RFC 6241: Network Configuration Protocol";
-  }
-
-  extension get-filter-element-attributes {
-    description
-      "If this extension is present within an 'anyxml'
-       statement named 'filter', which must be conceptually
-       defined within the RPC input section for the <get>
-       and <get-config> protocol operations, then the
-       following unqualified XML attribute is supported
-       within the <filter> element, within a <get> or
-       <get-config> protocol operation:
-
-         type : optional attribute with allowed
-                value strings 'subtree' and 'xpath'.
-                If missing, the default value is 'subtree'.
-
-       If the 'xpath' feature is supported, then the
-       following unqualified XML attribute is
-       also supported:
-
-         select: optional attribute containing a
-                 string representing an XPath expression.
-                 The 'type' attribute must be equal to 'xpath'
-                 if this attribute is present.";
-  }
-
-  // NETCONF capabilities defined as features
-  feature writable-running {
-    description
-      "NETCONF :writable-running capability;
-       If the server advertises the :writable-running
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.2";
-  }
-
-  feature candidate {
-    description
-      "NETCONF :candidate capability;
-       If the server advertises the :candidate
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.3";
-  }
-
-  feature confirmed-commit {
-    if-feature candidate;
-    description
-      "NETCONF :confirmed-commit:1.1 capability;
-       If the server advertises the :confirmed-commit:1.1
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-
-    reference "RFC 6241, Section 8.4";
-  }
-
-  feature rollback-on-error {
-    description
-      "NETCONF :rollback-on-error capability;
-       If the server advertises the :rollback-on-error
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.5";
-  }
-
-  feature validate {
-    description
-      "NETCONF :validate:1.1 capability;
-       If the server advertises the :validate:1.1
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.6";
-  }
-
-  feature startup {
-    description
-      "NETCONF :startup capability;
-       If the server advertises the :startup
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.7";
-  }
-
-  feature url {
-    description
-      "NETCONF :url capability;
-       If the server advertises the :url
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.8";
-  }
-
-  feature xpath {
-    description
-      "NETCONF :xpath capability;
-       If the server advertises the :xpath
-       capability for a session, then this feature must
-       also be enabled for that session.  Otherwise,
-       this feature must not be enabled.";
-    reference "RFC 6241, Section 8.9";
-  }
-
-  // NETCONF Simple Types
-
-  typedef session-id-type {
-    type uint32 {
-      range "1..max";
-    }
-    description
-      "NETCONF Session Id";
-  }
-
-  typedef session-id-or-zero-type {
-    type uint32;
-    description
-      "NETCONF Session Id or Zero to indicate none";
-  }
-  typedef error-tag-type {
-    type enumeration {
-       enum in-use {
-         description
-           "The request requires a resource that
-            already is in use.";
-       }
-       enum invalid-value {
-         description
-           "The request specifies an unacceptable value for one
-            or more parameters.";
-       }
-       enum too-big {
-         description
-           "The request or response (that would be generated) is
-            too large for the implementation to handle.";
-       }
-       enum missing-attribute {
-         description
-           "An expected attribute is missing.";
-       }
-       enum bad-attribute {
-         description
-           "An attribute value is not correct; e.g., wrong type,
-            out of range, pattern mismatch.";
-       }
-       enum unknown-attribute {
-         description
-           "An unexpected attribute is present.";
-       }
-       enum missing-element {
-         description
-           "An expected element is missing.";
-       }
-       enum bad-element {
-         description
-           "An element value is not correct; e.g., wrong type,
-            out of range, pattern mismatch.";
-       }
-       enum unknown-element {
-         description
-           "An unexpected element is present.";
-       }
-       enum unknown-namespace {
-         description
-           "An unexpected namespace is present.";
-       }
-       enum access-denied {
-         description
-           "Access to the requested protocol operation or
-            data model is denied because authorization failed.";
-       }
-       enum lock-denied {
-         description
-           "Access to the requested lock is denied because the
-            lock is currently held by another entity.";
-       }
-       enum resource-denied {
-         description
-           "Request could not be completed because of
-            insufficient resources.";
-       }
-       enum rollback-failed {
-         description
-           "Request to roll back some configuration change (via
-            rollback-on-error or <discard-changes> operations)
-            was not completed for some reason.";
-
-       }
-       enum data-exists {
-         description
-           "Request could not be completed because the relevant
-            data model content already exists.  For example,
-            a 'create' operation was attempted on data that
-            already exists.";
-       }
-       enum data-missing {
-         description
-           "Request could not be completed because the relevant
-            data model content does not exist.  For example,
-            a 'delete' operation was attempted on
-            data that does not exist.";
-       }
-       enum operation-not-supported {
-         description
-           "Request could not be completed because the requested
-            operation is not supported by this implementation.";
-       }
-       enum operation-failed {
-         description
-           "Request could not be completed because the requested
-            operation failed for some reason not covered by
-            any other error condition.";
-       }
-       enum partial-operation {
-         description
-           "This error-tag is obsolete, and SHOULD NOT be sent
-            by servers conforming to this document.";
-       }
-       enum malformed-message {
-         description
-           "A message could not be handled because it failed to
-            be parsed correctly.  For example, the message is not
-            well-formed XML or it uses an invalid character set.";
-       }
-     }
-     description "NETCONF Error Tag";
-     reference "RFC 6241, Appendix A";
-  }
-
-  typedef error-severity-type {
-    type enumeration {
-      enum error {
-        description "Error severity";
-      }
-      enum warning {
-        description "Warning severity";
-      }
-    }
-    description "NETCONF Error Severity";
-    reference "RFC 6241, Section 4.3";
-  }
-
-  typedef edit-operation-type {
-    type enumeration {
-      enum merge {
-        description
-          "The configuration data identified by the
-           element containing this attribute is merged
-           with the configuration at the corresponding
-           level in the configuration datastore identified
-           by the target parameter.";
-      }
-      enum replace {
-        description
-          "The configuration data identified by the element
-           containing this attribute replaces any related
-           configuration in the configuration datastore
-           identified by the target parameter.  If no such
-           configuration data exists in the configuration
-           datastore, it is created.  Unlike a
-           <copy-config> operation, which replaces the
-           entire target configuration, only the configuration
-           actually present in the config parameter is affected.";
-      }
-      enum create {
-        description
-          "The configuration data identified by the element
-           containing this attribute is added to the
-           configuration if and only if the configuration
-           data does not already exist in the configuration
-           datastore.  If the configuration data exists, an
-           <rpc-error> element is returned with an
-           <error-tag> value of 'data-exists'.";
-      }
-      enum delete {
-        description
-          "The configuration data identified by the element
-           containing this attribute is deleted from the
-           configuration if and only if the configuration
-           data currently exists in the configuration
-           datastore.  If the configuration data does not
-           exist, an <rpc-error> element is returned with
-           an <error-tag> value of 'data-missing'.";
-      }
-      enum remove {
-        description
-          "The configuration data identified by the element
-           containing this attribute is deleted from the
-           configuration if the configuration
-           data currently exists in the configuration
-           datastore.  If the configuration data does not
-           exist, the 'remove' operation is silently ignored
-           by the server.";
-      }
-    }
-    default "merge";
-    description "NETCONF 'operation' attribute values";
-    reference "RFC 6241, Section 7.2";
-  }
-
-  // NETCONF Standard Protocol Operations
-
-  rpc get-config {
-    description
-      "Retrieve all or part of a specified configuration.";
-
-    reference "RFC 6241, Section 7.1";
-
-    input {
-      container source {
-        description
-          "Particular configuration to retrieve.";
-
-        choice config-source {
-          mandatory true;
-          description
-            "The configuration to retrieve.";
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config source.";
-          }
-          leaf running {
-            type empty;
-            description
-              "The running configuration is the config source.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config source.
-               This is optional-to-implement on the server because
-               not all servers will support filtering for this
-               datastore.";
-          }
-        }
-      }
-
-      anyxml filter {
-        description
-          "Subtree or XPath filter to use.";
-        nc:get-filter-element-attributes;
-      }
-    }
-
-    output {
-      anyxml data {
-        description
-          "Copy of the source datastore subset that matched
-           the filter criteria (if any).  An empty data container
-           indicates that the request did not produce any results.";
-      }
-    }
-  }
-
-  rpc edit-config {
-    description
-      "The <edit-config> operation loads all or part of a specified
-       configuration to the specified target configuration.";
-
-    reference "RFC 6241, Section 7.2";
-
-    input {
-      container target {
-        description
-          "Particular configuration to edit.";
-
-        choice config-target {
-          mandatory true;
-          description
-            "The configuration target.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config target.";
-          }
-          leaf running {
-            if-feature writable-running;
-            type empty;
-            description
-              "The running configuration is the config source.";
-          }
-        }
-      }
-
-      leaf default-operation {
-        type enumeration {
-          enum merge {
-            description
-              "The default operation is merge.";
-          }
-          enum replace {
-            description
-              "The default operation is replace.";
-          }
-          enum none {
-            description
-              "There is no default operation.";
-          }
-        }
-        default "merge";
-        description
-          "The default operation to use.";
-      }
-
-      leaf test-option {
-        if-feature validate;
-        type enumeration {
-          enum test-then-set {
-            description
-              "The server will test and then set if no errors.";
-          }
-          enum set {
-            description
-              "The server will set without a test first.";
-          }
-
-          enum test-only {
-            description
-              "The server will only test and not set, even
-               if there are no errors.";
-          }
-        }
-        default "test-then-set";
-        description
-          "The test option to use.";
-      }
-
-      leaf error-option {
-        type enumeration {
-          enum stop-on-error {
-            description
-              "The server will stop on errors.";
-          }
-          enum continue-on-error {
-            description
-              "The server may continue on errors.";
-          }
-          enum rollback-on-error {
-            description
-              "The server will roll back on errors.
-               This value can only be used if the 'rollback-on-error'
-               feature is supported.";
-          }
-        }
-        default "stop-on-error";
-        description
-          "The error option to use.";
-      }
-
-      choice edit-content {
-        mandatory true;
-        description
-          "The content for the edit operation.";
-
-        anyxml config {
-          description
-            "Inline Config content.";
-        }
-        leaf url {
-          if-feature url;
-          type inet:uri;
-          description
-            "URL-based config content.";
-        }
-      }
-    }
-  }
-
-  rpc copy-config {
-    description
-      "Create or replace an entire configuration datastore with the
-       contents of another complete configuration datastore.";
-
-    reference "RFC 6241, Section 7.3";
-
-    input {
-      container target {
-        description
-          "Particular configuration to copy to.";
-
-        choice config-target {
-          mandatory true;
-          description
-            "The configuration target of the copy operation.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config target.";
-          }
-          leaf running {
-            if-feature writable-running;
-            type empty;
-            description
-              "The running configuration is the config target.
-               This is optional-to-implement on the server.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config target.";
-          }
-          leaf url {
-            if-feature url;
-            type inet:uri;
-            description
-              "The URL-based configuration is the config target.";
-          }
-        }
-      }
-
-      container source {
-        description
-          "Particular configuration to copy from.";
-
-        choice config-source {
-          mandatory true;
-          description
-            "The configuration source for the copy operation.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config source.";
-          }
-          leaf running {
-            type empty;
-            description
-              "The running configuration is the config source.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config source.";
-          }
-          leaf url {
-            if-feature url;
-            type inet:uri;
-            description
-              "The URL-based configuration is the config source.";
-          }
-          anyxml config {
-            description
-              "Inline Config content: <config> element.  Represents
-               an entire configuration datastore, not
-               a subset of the running datastore.";
-          }
-        }
-      }
-    }
-  }
-
-  rpc delete-config {
-    nacm:default-deny-all;
-    description
-      "Delete a configuration datastore.";
-
-    reference "RFC 6241, Section 7.4";
-
-    input {
-      container target {
-        description
-          "Particular configuration to delete.";
-
-        choice config-target {
-          mandatory true;
-          description
-            "The configuration target to delete.";
-
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config target.";
-          }
-          leaf url {
-            if-feature url;
-            type inet:uri;
-            description
-              "The URL-based configuration is the config target.";
-          }
-        }
-      }
-    }
-  }
-
-  rpc lock {
-    description
-      "The lock operation allows the client to lock the configuration
-       system of a device.";
-
-    reference "RFC 6241, Section 7.5";
-
-    input {
-      container target {
-        description
-          "Particular configuration to lock.";
-
-        choice config-target {
-          mandatory true;
-          description
-            "The configuration target to lock.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config target.";
-          }
-          leaf running {
-            type empty;
-            description
-              "The running configuration is the config target.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config target.";
-          }
-        }
-      }
-    }
-  }
-
-  rpc unlock {
-    description
-      "The unlock operation is used to release a configuration lock,
-       previously obtained with the 'lock' operation.";
-
-    reference "RFC 6241, Section 7.6";
-
-    input {
-      container target {
-        description
-          "Particular configuration to unlock.";
-
-        choice config-target {
-          mandatory true;
-          description
-            "The configuration target to unlock.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config target.";
-          }
-          leaf running {
-            type empty;
-            description
-              "The running configuration is the config target.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config target.";
-          }
-        }
-      }
-    }
-  }
-
-  rpc get {
-    description
-      "Retrieve running configuration and device state information.";
-
-    reference "RFC 6241, Section 7.7";
-
-    input {
-      anyxml filter {
-        description
-          "This parameter specifies the portion of the system
-           configuration and state data to retrieve.";
-        nc:get-filter-element-attributes;
-      }
-    }
-
-    output {
-      anyxml data {
-        description
-          "Copy of the running datastore subset and/or state
-           data that matched the filter criteria (if any).
-           An empty data container indicates that the request did not
-           produce any results.";
-      }
-    }
-  }
-
-  rpc close-session {
-    description
-      "Request graceful termination of a NETCONF session.";
-
-    reference "RFC 6241, Section 7.8";
-  }
-
-  rpc kill-session {
-    nacm:default-deny-all;
-    description
-      "Force the termination of a NETCONF session.";
-
-    reference "RFC 6241, Section 7.9";
-
-    input {
-      leaf session-id {
-        type session-id-type;
-        mandatory true;
-        description
-          "Particular session to kill.";
-      }
-    }
-  }
-
-  rpc commit {
-    if-feature candidate;
-
-    description
-      "Commit the candidate configuration as the device's new
-       current configuration.";
-
-    reference "RFC 6241, Section 8.3.4.1";
-
-    input {
-      leaf confirmed {
-        if-feature confirmed-commit;
-        type empty;
-        description
-          "Requests a confirmed commit.";
-        reference "RFC 6241, Section 8.3.4.1";
-      }
-
-      leaf confirm-timeout {
-        if-feature confirmed-commit;
-        type uint32 {
-          range "1..max";
-        }
-        units "seconds";
-        default "600";   // 10 minutes
-        description
-          "The timeout interval for a confirmed commit.";
-        reference "RFC 6241, Section 8.3.4.1";
-      }
-
-      leaf persist {
-        if-feature confirmed-commit;
-        type string;
-        description
-          "This parameter is used to make a confirmed commit
-           persistent.  A persistent confirmed commit is not aborted
-           if the NETCONF session terminates.  The only way to abort
-           a persistent confirmed commit is to let the timer expire,
-           or to use the <cancel-commit> operation.
-
-           The value of this parameter is a token that must be given
-           in the 'persist-id' parameter of <commit> or
-           <cancel-commit> operations in order to confirm or cancel
-           the persistent confirmed commit.
-
-           The token should be a random string.";
-        reference "RFC 6241, Section 8.3.4.1";
-      }
-
-      leaf persist-id {
-        if-feature confirmed-commit;
-        type string;
-        description
-          "This parameter is given in order to commit a persistent
-           confirmed commit.  The value must be equal to the value
-           given in the 'persist' parameter to the <commit> operation.
-           If it does not match, the operation fails with an
-          'invalid-value' error.";
-        reference "RFC 6241, Section 8.3.4.1";
-      }
-
-    }
-  }
-
-  rpc discard-changes {
-    if-feature candidate;
-
-    description
-      "Revert the candidate configuration to the current
-       running configuration.";
-    reference "RFC 6241, Section 8.3.4.2";
-  }
-
-  rpc cancel-commit {
-    if-feature confirmed-commit;
-    description
-      "This operation is used to cancel an ongoing confirmed commit.
-       If the confirmed commit is persistent, the parameter
-       'persist-id' must be given, and it must match the value of the
-       'persist' parameter.";
-    reference "RFC 6241, Section 8.4.4.1";
-
-    input {
-      leaf persist-id {
-        type string;
-        description
-          "This parameter is given in order to cancel a persistent
-           confirmed commit.  The value must be equal to the value
-           given in the 'persist' parameter to the <commit> operation.
-           If it does not match, the operation fails with an
-          'invalid-value' error.";
-      }
-    }
-  }
-
-  rpc validate {
-    if-feature validate;
-
-    description
-      "Validates the contents of the specified configuration.";
-
-    reference "RFC 6241, Section 8.6.4.1";
-
-    input {
-      container source {
-        description
-          "Particular configuration to validate.";
-
-        choice config-source {
-          mandatory true;
-          description
-            "The configuration source to validate.";
-
-          leaf candidate {
-            if-feature candidate;
-            type empty;
-            description
-              "The candidate configuration is the config source.";
-          }
-          leaf running {
-            type empty;
-            description
-              "The running configuration is the config source.";
-          }
-          leaf startup {
-            if-feature startup;
-            type empty;
-            description
-              "The startup configuration is the config source.";
-          }
-          leaf url {
-            if-feature url;
-            type inet:uri;
-            description
-              "The URL-based configuration is the config source.";
-          }
-          anyxml config {
-            description
-              "Inline Config content: <config> element.  Represents
-               an entire configuration datastore, not
-               a subset of the running datastore.";
-          }
-        }
-      }
-    }
-  }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-ptp-dataset@2017-02-08.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-ptp-dataset@2017-02-08.yang
deleted file mode 100644 (file)
index d899e56..0000000
+++ /dev/null
@@ -1,605 +0,0 @@
-   module ietf-ptp-dataset{
-     namespace "urn:ietf:params:xml:ns:yang:ietf-ptp-dataset";
-     prefix "ptp-dataset";
-     organization "IETF TICTOC Working Group";
-     contact
-         "WG Web:   http://tools.ietf.org/wg/tictoc/
-          WG List:  <mailto:tictoc@ietf.org>
-          WG Chair: Karen O'Donoghue
-                    <mailto:odonoghue@isoc.org>
-          WG Chair: Yaakov Stein
-                    <mailto: Yaakov_s@rad.com>
-          Editor:   Yuanlong Jiang
-                    <mailto:jiangyuanlong@huawei.com>
-          Editor:   Rodney Cummings
-                    <mailto:rodney.cummings@ni.com>";
-     description
-       "This YANG module defines a data model for the configuration
-       of IEEE 1588-2008 clocks, and also for retrieval of the state
-       data of IEEE 1588-2008 clocks.";
-
-     revision "2017-02-08" {
-       description "Version 4.0";
-       reference "draft-ietf-tictoc-1588v2-yang";
-      }
-
-     typedef delay-mechanism-enumeration {
-       type enumeration {
-         enum E2E {
-           value 1;
-           description
-             "The port uses the delay request-response
-              mechanism.";
-         }
-         enum P2P {
-           value 2;
-           description
-             "The port uses the peer delay mechanism.";
-         }
-         enum DISABLED {
-           value 254;
-           description
-             "The port does not implement any delay
-              mechanism.";
-         }
-       }
-       description
-         "The propagation delay measuring option used by the
-         port. Values for this enumeration are specified
-         by the IEEE 1588 standard exclusively.";
-       reference
-         "IEEE Std 1588-2008: 8.2.5.4.4";
-     }
-
-     typedef port-state-enumeration {
-       type enumeration {
-         enum INITIALIZING {
-           value 1;
-           description
-             "The port is initializing its data sets, hardware, and
-             communication facilities.";
-         }
-         enum FAULTY {
-           value 2;
-           description
-             "The port is in the fault state.";
-         }
-         enum DISABLED {
-           value 3;
-           description
-             "The port is disabled, and is not communicating PTP
-             messages (other than possibly PTP management
-             messages).";
-         }
-         enum LISTENING {
-           value 4;
-           description
-             "The port is listening for an Announce message.";
-         }
-         enum PRE_MASTER {
-           value 5;
-           description
-             "The port is in the pre-master state.";
-         }
-         enum MASTER {
-           value 6;
-           description
-             "The port is behaving as a master port.";
-         }
-         enum PASSIVE {
-           value 7;
-           description
-             "The port is in the passive state.";
-         }
-         enum UNCALIBRATED {
-           value 8;
-           description
-             "A master port has been selected, but the port is still
-             in the uncalibrated state.";
-         }
-         enum SLAVE {
-           value 9;
-           description
-             "The port is synchronizing to the selected
-             master port.";
-         }
-       }
-       description
-         "The current state of the protocol engine associated
-         with the port.  Values for this enumeration are specified
-         by the IEEE 1588 standard exclusively.";
-       reference
-         "IEEE Std 1588-2008: 8.2.5.3.1, 9.2.5";
-     }
-
-     typedef time-interval-type {
-       type int64;
-       description
-         "Derived data type for time interval,
-         represented in units of nanoseconds and
-         multipled by 2^16";
-       reference
-         "IEEE Std 1588-2008: 5.3.2";
-     }
-
-     typedef clock-identity-type {
-       type binary {
-         length "8";
-       }
-       description
-         "Derived data type to identify a clock";
-       reference
-         "IEEE Std 1588-2008: 5.3.4";
-     }
-
-     grouping port-identity-grouping {
-       description
-         "Derived data type to identify a port, which contains
-         two members: clockIdentity and portNumber.";
-       reference
-         "IEEE Std 1588-2008: 5.3.5";
-
-       leaf clock-identity {
-         type clock-identity-type;
-         description
-           "Identity of the clock";
-       }
-
-       leaf port-number {
-         type uint16;
-         description
-           "Port number";
-       }
-     }
-
-     grouping clock-quality-grouping {
-       description
-         "Derived data type for quality of a clock, which contains
-         clockClass, clockAccuracy and offsetScaledLogVariance.";
-       reference
-         "IEEE Std 1588-2008: 5.3.7";
-
-       leaf clock-class {
-         type uint8;
-         default 248;
-         description
-           "The clockClass denotes the traceability of the time
-           or frequency distributed by the clock.";
-       }
-
-       leaf clock-accuracy {
-         type uint8;
-         description
-           "The clockAccuracy indicates the expected accuracy
-            of the clock.";
-       }
-
-       leaf offset-scaled-log-variance {
-         type uint16;
-         description
-           "The offsetScaledLogVariance provides an
-           estimate of the variations of the clock
-           from a linear timescale when it is not synchronized
-           to another clock using the protocol.";
-       }
-     }
-
-     grouping default-ds-entry {
-       description
-         "Collection of members of the default data set.";
-
-       leaf two-step-flag {
-         type boolean;
-         description
-               "When set, the clock is a two-step clock; otherwise,
-               the clock is a one-step clock.";
-       }
-
-       leaf clock-identity {
-         type clock-identity-type;
-         description
-           "The clockIdentity of the local clock";
-       }
-
-       leaf number-ports {
-         type uint16;
-         description
-           "The number of PTP ports on the device.";
-       }
-
-       container clock-quality {
-         description
-           "The clockQuality of the local clock.";
-
-         uses clock-quality-grouping;
-       }
-
-       leaf priority1 {
-         type uint8;
-         description
-           "The priority1 attribute of the local clock.";
-       }
-
-       leaf priority2{
-         type uint8;
-         description
-           "The priority2 attribute of the local clock. ";
-       }
-
-       leaf domain-number {
-         type uint8;
-         description
-                "The domain number of the current syntonization
-               domain.";
-       }
-
-       leaf slave-only {
-         type boolean;
-         description
-           "When set, the clock is a slave-only clock.";
-       }
-     }
-
-     grouping current-ds-entry {
-       description
-         "Collection of members of current data set.";
-
-       leaf steps-removed {
-         type uint16;
-         default 0;
-         description
-           "The number of communication paths traversed
-           between the local clock and the grandmaster clock.";
-       }
-       leaf offset-from-master {
-         type time-interval-type;
-         description
-           "The current value of the time difference between
-           a master and a slave clock as computed by the slave.";
-       }
-
-       leaf mean-path-delay {
-         type time-interval-type;
-         description
-           "The current value of the mean propagation time between
-           a master and a slave clock as computed by the slave.";
-
-       }
-     }
-
-     grouping parent-ds-entry {
-       description
-         "Collection of members of the parent data set.";
-
-       container parent-port-identity {
-         description
-           "The portIdentity of the port on the master";
-         uses port-identity-grouping;
-       }
-       leaf parent-stats {
-         type boolean;
-         default false;
-         description
-           "When set, the values of
-            observedParentOffsetScaledLogVariance and
-            observedParentClockPhaseChangeRate of parentDS
-            have been measured and are valid.";
-       }
-       leaf observed-parent-offset-scaled-log-variance {
-         type uint16;
-         default 0xFFFF;
-         description
-           "An estimate of the parent clock's PTP variance
-            as observed by the slave clock.";
-       }
-       leaf observed-parent-clock-phase-change-rate {
-         type int32;
-         description
-           "An estimate of the parent clock's phase change rate
-            as observed by the slave clock.";
-       }
-       leaf grandmaster-identity {
-         type binary{
-           length "8";
-         }
-
-         description
-          "The clockIdentity attribute of the grandmaster clock.";
-
-       }
-       container grandmaster-clock-quality {
-         description
-           "The clockQuality of the grandmaster clock.";
-         uses clock-quality-grouping;
-       }
-       leaf grandmaster-priority1 {
-         type uint8;
-         description
-           "The priority1 attribute of the grandmaster clock.";
-       }
-       leaf grandmaster-priority2 {
-         type uint8;
-         description
-           "The priority2 attribute of the grandmaster clock.";
-       }
-     }
-
-     grouping time-properties-ds-entry {
-       description
-         "Collection of members of the timeProperties data set.";
-       leaf current-utc-offset-valid {
-         type boolean;
-         description
-           "When set, the current UTC offset is valid.";
-       }
-       leaf current-utc-offset {
-         type int16;
-         description
-           "The offset between TAI and UTC when the epoch of the
-            PTP system is the PTP epoch, i.e., when ptp-timescale
-            is TRUE; otherwise, the value has no meaning.";
-       }
-       leaf leap59 {
-         type boolean;
-         description
-               "When set, the last minute of the current UTC day
-               contains 59 seconds.";
-       }
-       leaf leap61 {
-         type boolean;
-         description
-               "When set, the last minute of the current UTC day
-               contains 61 seconds.";
-       }
-       leaf time-traceable {
-         type boolean;
-         description
-           "When set, the timescale and the currentUtcOffset are
-               traceable to a primary reference.";
-       }
-       leaf frequency-traceable {
-         type boolean;
-         description
-           "When set, the frequency determining the timescale
-            is traceable to a primary reference.";
-       }
-       leaf ptp-timescale {
-         type boolean;
-         description
-           "When set, the clock timescale of the grandmaster
-                clock is PTP; otherwise, the timescale is ARB
-               (arbitrary).";
-       }
-       leaf time-source {
-         type uint8;
-         description
-           "The source of time used by the grandmaster clock.";
-
-       }
-     }
-
-     grouping port-ds-entry {
-       description
-         "Collection of members of the port data set.";
-
-       container port-identity {
-         description
-           "The portIdentity attribute of the local port.";
-         uses port-identity-grouping;
-       }
-
-       leaf port-state {
-         type port-state-enumeration;
-         default "INITIALIZING";
-         description
-           "Current state associated with the port.";
-       }
-
-       leaf log-min-delay-req-interval {
-         type int8;
-         description
-           "The base-two logarithm of the minDelayReqInterval
-            (the minimum permitted mean time interval between
-            successive Delay_Req messages).";
-       }
-
-       leaf peer-mean-path-delay {
-         type time-interval-type;
-         default 0;
-         description
-           "An estimate of the current one-way propagation delay
-            on the link when the delayMechanism is P2P; otherwise,
-            it is zero.";
-       }
-
-       leaf log-announce-interval {
-         type int8;
-         description
-           "The base-two logarithm of the mean
-            announceInterval (mean time interval between
-            successive Announce messages).";
-       }
-
-       leaf announce-receipt-timeout {
-         type uint8;
-         description
-           "The number of announceInterval that have to pass
-            without receipt of an Announce message before the
-            occurrence of the event ANNOUNCE_RECEIPT_TIMEOUT_
-            EXPIRES.";
-       }
-
-       leaf log-sync-interval {
-         type int8;
-         description
-           "The base-two logarithm of the mean SyncInterval
-            for multicast messages.  The rates for unicast
-            transmissions are negotiated separately on a per port
-            basis and are not constrained by this attribute.";
-       }
-
-       leaf delay-mechanism {
-         type delay-mechanism-enumeration;
-         description
-           "The propagation delay measuring option used by the
-            port in computing meanPathDelay.";
-       }
-
-       leaf log-min-pdelay-req-interval {
-         type int8;
-         description
-           "The base-two logarithm of the
-            minPdelayReqInterval (minimum permitted mean time
-            interval between successive Pdelay_Req messages).";
-
-       }
-
-       leaf version-number {
-         type uint8;
-         description
-           "The PTP version in use on the port.";
-       }
-     }
-
-     grouping transparent-clock-default-ds-entry {
-       description
-         "Collection of members of the transparentClockDefault data
-           set (default data set for a transparent clock).";
-
-       leaf clock-identity {
-         type clock-identity-type;
-         description
-           "The clockIdentity of the transparent clock.";
-       }
-       leaf number-ports {
-         type uint16;
-         description
-           "The number of PTP ports on the device.";
-       }
-       leaf delay-mechanism {
-         type delay-mechanism-enumeration;
-         description
-           "The propagation delay measuring option
-            used by the transparent clock.";
-       }
-       leaf primary-domain {
-         type uint8;
-         default 0;
-         description
-          "The domainNumber of the primary syntonization domain.";
-
-       }
-     }
-
-     grouping transparent-clock-port-ds-entry {
-       description
-         "Collection of members of the transparentClockPort data
-          set (port data set for a transparent clock).";
-
-       container port-identity {
-         description
-           "The portIdentity of the local port.";
-
-         uses port-identity-grouping;
-       }
-       leaf log-min-pdelay-req-interval {
-         type int8;
-         description
-           "The logarithm to the base 2 of the
-            minPdelayReqInterval (minimum permitted mean time
-            interval between successive Pdelay_Req messages).";
-       }
-       leaf faulty-flag {
-         type boolean;
-         default false;
-         description
-           "When set, the port is faulty.";
-       }
-       leaf peer-mean-path-delay {
-         type time-interval-type;
-         default 0;
-         description
-           "An estimate of the current one-way propagation delay
-            on the link when the delayMechanism is P2P; otherwise,
-            it is zero.";
-       }
-     }
-
-     list instance-list {
-
-       key "instance-number";
-
-       description
-         "List of one or more PTP datasets in the device, one for
-         each domain (see IEEE 1588-2008 subclause 6.3).
-         Each PTP dataset represents a distinct instance of
-         PTP implementation in the device (i.e. distinct
-         Ordinary Clock or Boundary Clock).";
-
-       leaf instance-number {
-         type uint16;
-         description
-           "The instance number of the current PTP instance";
-       }
-        container default-ds {
-          description
-            "The default data set of the clock.";
-          uses default-ds-entry;
-        }
-
-        container current-ds {
-          description
-            "The current data set of the clock.";
-          uses current-ds-entry;
-        }
-
-        container parent-ds {
-          description
-            "The parent data set of the clock.";
-          uses parent-ds-entry;
-        }
-
-        container time-properties-ds {
-          description
-            "The timeProperties data set of the clock.";
-          uses time-properties-ds-entry;
-        }
-
-        list port-ds-list {
-          key "port-number";
-          description
-            "List of port data sets of the clock.";
-          leaf port-number{
-            type leafref{
-              path "../port-identity/port-number";
-            }
-            description
-              "Refers to the portNumber memer of
-              portDS.portIdentity.";
-          }
-          uses port-ds-entry;
-        }
-     }
-
-     container transparent-clock-default-ds {
-       description
-         "The members of the transparentClockDefault Data Set";
-       uses transparent-clock-default-ds-entry;
-     }
-
-     list transparent-clock-port-ds-list {
-       key "port-number";
-       description
-         "List of transparentClockPort data sets
-          of the transparent clock.";
-       leaf port-number {
-         type leafref {
-           path "../port-identity/port-number";
-         }
-          description
-            "Refers to the portNumber memer
-             of transparentClockPortDS.portIdentity.";
-        }
-        uses transparent-clock-port-ds-entry;
-      }
-   }
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-restconf@2013-10-19.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-restconf@2013-10-19.yang
deleted file mode 100644 (file)
index 83bb378..0000000
+++ /dev/null
@@ -1,689 +0,0 @@
-module ietf-restconf {
-  namespace "urn:ietf:params:xml:ns:yang:ietf-restconf";
-  prefix "restconf";
-
-  import ietf-yang-types { prefix yang; revision-date 2013-07-15; }
-  import ietf-inet-types { prefix inet; }
-
-  organization
-    "IETF NETCONF (Network Configuration) Working Group";
-
-  contact
-    "Editor:   Andy Bierman
-               <mailto:andy@yumaworks.com>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>
-
-     Editor:   Kent Watsen
-               <mailto:kwatsen@juniper.net>
-
-     Editor:   Rex Fernando
-               <mailto:rex@cisco.com>";
-
-  description
-    "This module contains conceptual YANG specifications
-     for the YANG Patch and error content that is used in
-     RESTCONF protocol messages. A conceptual container
-     representing the RESTCONF API nodes (media type 
-     application/yang.api).
-
-     Note that the YANG definitions within this module do not
-     represent configuration data of any kind.
-     The YANG grouping statements provide a normative syntax
-     for XML and JSON message encoding purposes.
-
-     Copyright (c) 2013 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC XXXX; see
-     the RFC itself for full legal notices.";
-
-  // RFC Ed.: replace XXXX with actual RFC number and remove this
-  // note.
-
-  // RFC Ed.: remove this note
-  // Note: extracted from draft-bierman-netconf-restconf-02.txt
-
-  // RFC Ed.: update the date below with the date of RFC publication
-  // and remove this note.
-  revision 2013-10-19 {
-    description
-      "Initial revision.";
-    reference
-      "RFC XXXX: RESTCONF Protocol.";
-  }
-
-  typedef data-resource-identifier {
-    type string {
-      length "1 .. max";
-    }
-    description
-      "Contains a Data Resource Identifier formatted string
-       to identify a specific data node. The data node that
-       uses this data type SHOULD define the document root
-       for data resource identifiers.  The default document
-       root is the target datastore conceptual root node.
-       Data resource identifiers are defined relative to
-       this document root.";
-    reference
-      "RFC XXXX: [sec. 5.3.1.1 ABNF For Data Resource Identifiers]";
-  }
-
-  // this typedef is TBD; not currently used
-  typedef datastore-identifier {
-    type union {
-      type enumeration {
-        enum candidate {
-          description
-            "Identifies the NETCONF shared candidate datastore.";
-          reference
-            "RFC 6241, section 8.3";
-        }
-        enum running {
-          description
-            "Identifies the NETCONF running datastore.";
-          reference
-            "RFC 6241, section 5.1";
-        }
-        enum startup {
-          description
-            "Identifies the NETCONF startup datastore.";
-          reference
-            "RFC 6241, section 8.7";
-        }
-      }
-      type string;
-    }
-    description
-      "Contains a string to identify a specific datastore.
-       The enumerated datastore identifier values are
-       reserved for standard datastore names.";
-  }
-
-  typedef revision-identifier {
-    type string {
-      pattern '\d{4}-\d{2}-\d{2}';
-    }
-    description
-      "Represents a specific date in YYYY-MM-DD format.
-       TBD: make pattern more precise to exclude leading zeros.";
-  }
-
-  grouping yang-patch {
-
-    description
-      "A grouping that contains a YANG container
-       representing the syntax and semantics of a
-       YANG Patch edit request message.";
-
-    container yang-patch {
-      description
-        "Represents a conceptual sequence of datastore edits,
-         called a patch. Each patch is given a client-assigned
-         patch identifier. Each edit MUST be applied
-         in ascending order, and all edits MUST be applied.
-         If any errors occur, then the target datastore MUST NOT
-         be changed by the patch operation.
-  
-         A patch MUST be validated by the server to be a 
-         well-formed message before any of the patch edits
-         are validated or attempted.
-  
-         YANG datastore validation (defined in RFC 6020, section
-         8.3.3) is performed after all edits have been
-         individually validated.
-  
-         It is possible for a datastore constraint violation to occur
-         due to any node in the datastore, including nodes not
-         included in the edit list. Any validation errors MUST
-         be reported in the reply message.";
-  
-      reference
-        "RFC 6020, section 8.3.";
-  
-      leaf patch-id {
-        type string;
-        description
-          "An arbitrary string provided by the client to identify
-           the entire patch.  This value SHOULD be present in any
-           audit logging records generated by the server for the
-           patch. Error messages returned by the server pertaining
-           to this patch will be identified by this patch-id value.";
-      }
-
-      leaf comment {
-        type string {
-          length "0 .. 1024";
-        }
-        description
-          "An arbitrary string provided by the client to describe
-           the entire patch.  This value SHOULD be present in any
-           audit logging records generated by the server for the
-           patch.";
-      }
-  
-      list edit {
-        key edit-id;
-        ordered-by user;
-
-        description
-          "Represents one edit within the YANG Patch
-           request message.";
-
-        leaf edit-id {
-          type string;
-          description
-            "Arbitrary string index for the edit.
-             Error messages returned by the server pertaining
-             to a specific edit will be identified by this
-             value.";
-        }
-  
-        leaf operation {
-          type enumeration {
-            enum create {
-              description
-                "The target data node is created using the
-                 supplied value, only if it does not already
-                 exist.";
-            }
-            enum delete {
-              description
-                "Delete the target node, only if the data resource
-                 currently exists, otherwise return an error.";
-            }
-            enum insert {
-              description
-                "Insert the supplied value into a user-ordered
-                 list or leaf-list entry. The target node must
-                 represent a new data resource.";
-            }
-            enum merge {
-              description
-                "The supplied value is merged with the target data
-                 node.";
-            }
-            enum move {
-              description
-                "Move the target node. Reorder a user-ordered
-                 list or leaf-list. The target node must represent
-                 an existing data resource.";
-            }
-            enum replace {
-              description
-                "The supplied value is used to replace the target
-                 data node.";
-            }
-            enum remove {
-              description
-                "Delete the target node if it currently exists.";
-            }
-          }
-          mandatory true;
-          description
-            "The datastore operation requested for the associated
-             edit entry";
-        }
-  
-        leaf target {
-          type data-resource-identifier;
-          mandatory true;
-          description
-            "Identifies the target data resource for the edit
-             operation.";
-        }
-  
-        leaf point {
-          when "(../operation = 'insert' or " +
-            "../operation = 'move') and " +
-            "(../where = 'before' or ../where = 'after')" {
-            description
-              "Point leaf only applies for insert or move
-               operations, before or after an existing entry.";
-          }
-          type data-resource-identifier;
-          description
-            "The absolute URL path for the data node that is being
-             used as the insertion point or move point for the
-             target of this edit entry.";
-        }
-  
-        leaf where {
-          when "../operation = 'insert' or ../operation = 'move'" {
-            description
-              "Where leaf only applies for insert or move
-               operations.";
-          }
-          type enumeration {
-            enum before {
-              description
-                "Insert or move a data node before the data resource
-                 identified by the 'point' parameter.";
-            }
-            enum after {
-              description
-                "Insert or move a data node after the data resource
-                 identified by the 'point' parameter.";
-            }
-            enum first {
-              description
-                "Insert or move a data node so it becomes ordered
-                 as the first entry.";
-            }
-            enum last {
-              description
-                "Insert or move a data node so it becomes ordered
-                 as the last entry.";
-            }
-  
-          }
-          default last;
-          description
-            "Identifies where a data resource will be inserted or
-             moved. YANG only allows these operations for
-             list and leaf-list data nodes that are ordered-by
-             user.";
-        }
-  
-        anyxml value {
-          when "(../operation = 'create' or " +
-            "../operation = 'merge' " +
-            "or ../operation = 'replace' or " +
-            "../operation = 'insert')" {
-            description
-              "Value node only used for create, merge,
-               replace, and insert operations";
-          }
-          description
-            "Value used for this edit operation.";
-        }
-      }
-    }
-
-  } // grouping yang-patch
-
-
-  grouping yang-patch-status {
-
-    description
-      "A grouping that contains a YANG container
-       representing the syntax and semantics of
-       YANG Patch status response message.";
-    
-    container yang-patch-status {
-      description
-        "A container representing the response message
-         sent by the server after a YANG Patch edit
-         request message has been processed.";
-
-      leaf patch-id {
-        type string;
-        description
-          "The patch-id value used in the request";
-      }
-
-      choice global-status {
-        description
-          "Report global errors or complete success.
-           If there is no case selected then errors
-           are reported in the edit-status container.";
-
-        case global-errors {
-          uses errors;
-          description
-            "This container will be present if global
-             errors unrelated to a specific edit occurred.";
-        }
-        leaf ok {
-          type empty;
-          description
-            "This leaf will be present if the request succeeded
-             and there are no errors reported in the edit-status
-             container.";
-        }
-      }
-
-      container edit-status {
-        description
-          "This container will be present if there are
-           edit-specific status responses to report.";
-      
-        list edit {
-          key edit-id;
-
-          description
-            "Represents a list of status responses,
-             corresponding to edits in the YANG Patch
-             request message.  If an edit entry was
-             skipped or not reached by the server,
-             then this list will not contain a corresponding
-             entry for that edit.";
-
-          leaf edit-id {
-            type string;
-             description
-               "Response status is for the edit list entry
-                with this edit-id value.";
-          }
-          choice edit-status-choice {
-            description
-              "A choice between different types of status
-               responses for each edit entry.";
-            leaf ok {
-              type empty;
-              description
-                "This edit entry was invoked without any
-                 errors detected by the server associated
-                 with this edit.";
-            }
-            leaf location {
-              type inet:uri;
-              description
-                "Contains the Location header value that would be
-                 returned if this edit causes a new resource to be
-                 created. If the edit identified by the same edit-id
-                 value was successfully invoked and a new resource
-                 was created, then this field will be returned
-                 instead of 'ok'.";
-            }
-            case errors {
-              uses errors;
-              description
-                "The server detected errors associated with the
-                  edit identified by the same edit-id value.";
-            }
-          }
-        }
-      }
-    }
-  }  // grouping yang-patch-status
-
-
-  grouping errors {
-
-    description
-      "A grouping that contains a YANG container
-       representing the syntax and semantics of a
-       YANG Patch errors report within a response message.";
-
-    container errors {
-      config false;  // needed so list error does not need a key
-      description
-        "Represents an error report returned by the server if
-         a request results in an error.";
-  
-      list error {
-        description
-          "An entry containing information about one
-           specific error that occurred while processing
-           a RESTCONF request.";
-        reference "RFC 6241, Section 4.3";
-  
-        leaf error-type { 
-          type enumeration {
-            enum transport {
-              description "The transport layer";
-            }
-            enum rpc {
-              description "The rpc or notification layer";
-            }
-            enum protocol {
-              description "The protocol operation layer";
-            }
-            enum application {
-              description "The server application layer";
-            }
-          }
-          mandatory true;
-          description
-            "The protocol layer where the error occurred.";
-        }
-  
-        leaf error-tag {
-          type string;
-          mandatory true;
-          description
-            "The enumerated error tag.";
-        }
-  
-        leaf error-app-tag { 
-          type string;
-          description
-            "The application-specific error tag.";
-        }
-  
-        leaf error-path { 
-          type data-resource-identifier;
-          description
-            "The target data resource identifier associated
-             with the error, if any.";
-        }
-  
-        leaf error-message { 
-          type string;
-          description
-            "A message describing the error.";
-        }
-  
-        container error-info { 
-           description
-             "A container allowing additional information
-              to be included in the error report.";
-           // arbitrary anyxml content here
-        }
-      }
-    }
-  } // grouping errors
-
-
-  grouping restconf {
-
-    description
-      "A grouping that contains a YANG container
-       representing the syntax and semantics of
-       the RESTCONF API resource.";
-
-    container restconf {
-      description
-        "Conceptual container representing the
-         application/yang.api resource type.";
-  
-      container config {
-        description
-          "Container representing the application/yang.datastore
-           resource type. Represents the conceptual root of the
-           unified configuration datastore containing YANG data
-           nodes. The child nodes of this container are
-           configuration data resources (application/yang.data)
-           defined as top-level YANG data nodes from the modules
-           advertised by the server in /restconf/modules.";
-      }
-
-      container operational {
-        description
-          "Container representing the application/yang.datastore
-           resource type. Represents the conceptual root of the
-           operational data supported by the server.  The child
-           nodes of this container are operational data resources 
-           (application/yang.data) defined as top-level
-           YANG data nodes from the modules advertised by
-           the server in /restconf/modules.";
-      }
-
-      container modules {
-        description
-          "Contains a list of module description entries.
-           These modules are currently loaded into the server.";
-  
-        list module {
-          key "name revision";
-          description
-            "Each entry represents one module currently
-             supported by the server.";
-
-          leaf name {
-            type yang:yang-identifier;
-            description "The YANG module name.";
-          }
-          leaf revision {
-            type union {
-              type revision-identifier;
-              type string { length 0; }
-            }
-            description
-              "The YANG module revision date. An empty string is
-               used if no revision statement is present in the
-               YANG module.";
-          }
-          leaf namespace {
-            type inet:uri;
-            mandatory true;
-            description
-              "The XML namespace identifier for this module.";
-          }
-          leaf-list feature {
-            type yang:yang-identifier;
-            description
-              "List of YANG feature names from this module that are
-               supported by the server.";
-          }
-          leaf-list deviation {
-            type yang:yang-identifier;
-            description
-              "List of YANG deviation module names used by this
-               server to modify the conformance of the module
-               associated with this entry.";
-          }
-        }
-      }
-
-      container operations {
-        description
-          "Container for all operation resources
-           (application/yang.operation),
-
-           Each resource is represented as an empty leaf with the
-           name of the RPC operation from the YANG rpc statement.
-  
-           E.g.;
-  
-              POST /restconf/operations/show-log-errors
-  
-              leaf show-log-errors {
-                type empty;
-              }
-          ";
-      }
-
-      container streams {
-        description
-          "Container representing the notification event streams
-           supported by the server.";
-         reference
-           "RFC 5277, Section 3.4, <streams> element.";
-
-        list stream {
-          key name;
-          description
-            "Each entry describes an event stream supported by
-             the server.";
-
-          leaf name {
-            type string;
-            description "The stream name";
-            reference "RFC 5277, Section 3.4, <name> element.";
-          }
-
-          leaf description {
-            type string;
-            description "Description of stream content";
-            reference
-              "RFC 5277, Section 3.4, <description> element.";
-          }
-
-          leaf replay-support {
-            type boolean;
-            description
-              "Indicates if replay buffer supported for this stream";
-            reference
-              "RFC 5277, Section 3.4, <replaySupport> element.";
-          }
-
-          leaf replay-log-creation-time {
-            type yang:date-and-time;
-            description
-              "Indicates the time the replay log for this stream
-               was created.";
-            reference
-              "RFC 5277, Section 3.4, <replayLogCreationTime>
-               element.";
-          }
-
-          leaf events {
-            type empty;
-            description
-              "Represents the entry point for establishing
-               notification delivery via server sent events.";
-          }
-        }
-      }
-
-      leaf version {
-        type enumeration {
-          enum "1.0" {
-            description 
-              "Version 1.0 of the RESTCONF protocol.";
-          }
-        }
-        config false;
-        description
-          "Contains the RESTCONF protocol version.";
-      }
-    }
-  }  // grouping restconf
-
-
-  grouping notification {
-    description
-      "Contains the notification message wrapper definition.";
-
-    container notification {
-      description
-        "RESTCONF notification message wrapper.";
-
-      leaf event-time {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "The time the event was generated by the
-           event source.";
-        reference
-          "RFC 5277, section 4, <eventTime> element.";
-      }
-
-      /* The YANG-specific notification container is encoded
-       * after the 'event-time' element.  The format
-       * corresponds to the notificationContent element
-       * in RFC 5277, section 4. For example:
-       *
-       *  module example-one {
-       *     ...
-       *     notification event1 { ... }
-       *
-       *  }
-       *
-       *  Encoded as element 'event1' in the namespace
-       *  for module 'example-one'.
-       */
-    }
-  }  // grouping notification
-
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-system@2014-08-06.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-system@2014-08-06.yang
deleted file mode 100644 (file)
index de3096c..0000000
+++ /dev/null
@@ -1,842 +0,0 @@
-module ietf-system {
-  namespace "urn:ietf:params:xml:ns:yang:ietf-system";
-  prefix "sys";
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  import ietf-netconf-acm {
-    prefix nacm;
-  }
-
-  import iana-crypt-hash {
-    prefix ianach;
-  }
-
-  organization
-    "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-
-
-
-
-
-
-  contact
-    "WG Web:   <http://tools.ietf.org/wg/netmod/>
-     WG List:  <mailto:netmod@ietf.org>
-
-     WG Chair: Thomas Nadeau
-               <mailto:tnadeau@lucidvision.com>
-
-     WG Chair: Juergen Schoenwaelder
-               <mailto:j.schoenwaelder@jacobs-university.de>
-
-     Editor:   Andy Bierman
-               <mailto:andy@yumaworks.com>
-
-     Editor:   Martin Bjorklund
-               <mailto:mbj@tail-f.com>";
-
-  description
-    "This module contains a collection of YANG definitions for the
-     configuration and identification of some common system
-     properties within a device containing a NETCONF server.  This
-     includes data node definitions for system identification,
-     time-of-day management, user management, DNS resolver
-     configuration, and some protocol operations for system
-     management.
-
-     Copyright (c) 2014 IETF Trust and the persons identified as
-     authors of the code.  All rights reserved.
-
-     Redistribution and use in source and binary forms, with or
-     without modification, is permitted pursuant to, and subject
-     to the license terms contained in, the Simplified BSD License
-     set forth in Section 4.c of the IETF Trust's Legal Provisions
-     Relating to IETF Documents
-     (http://trustee.ietf.org/license-info).
-
-     This version of this YANG module is part of RFC 7317; see
-     the RFC itself for full legal notices.";
-
-  revision 2014-08-06 {
-    description
-      "Initial revision.";
-    reference
-      "RFC 7317: A YANG Data Model for System Management";
-  }
-
-
-
-
- /*
-  * Typedefs
-  */
-
-  typedef timezone-name {
-    type string;
-    description
-      "A time zone name as used by the Time Zone Database,
-       sometimes referred to as the 'Olson Database'.
-
-       The exact set of valid values is an implementation-specific
-       matter.  Client discovery of the exact set of time zone names
-       for a particular server is out of scope.";
-    reference
-      "RFC 6557: Procedures for Maintaining the Time Zone Database";
-   }
-
-  /*
-   * Features
-   */
-
-  feature radius {
-    description
-      "Indicates that the device can be configured as a RADIUS
-       client.";
-    reference
-      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
-  }
-
-  feature authentication {
-    description
-      "Indicates that the device supports configuration of
-       user authentication.";
-  }
-
-  feature local-users {
-    if-feature authentication;
-    description
-      "Indicates that the device supports configuration of
-       local user authentication.";
-  }
-
-
-
-
-
-
-
-  feature radius-authentication {
-    if-feature radius;
-    if-feature authentication;
-    description
-      "Indicates that the device supports configuration of user
-       authentication over RADIUS.";
-    reference
-      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)
-       RFC 5607: Remote Authentication Dial-In User Service (RADIUS)
-                 Authorization for Network Access Server (NAS)
-                 Management";
-  }
-
-  feature ntp {
-    description
-      "Indicates that the device can be configured to use one or
-       more NTP servers to set the system date and time.";
-  }
-
-  feature ntp-udp-port {
-    if-feature ntp;
-    description
-      "Indicates that the device supports the configuration of
-       the UDP port for NTP servers.
-
-       This is a 'feature', since many implementations do not support
-       any port other than the default port.";
-  }
-
-  feature timezone-name {
-    description
-      "Indicates that the local time zone on the device
-       can be configured to use the TZ database
-       to set the time zone and manage daylight saving time.";
-    reference
-      "RFC 6557: Procedures for Maintaining the Time Zone Database";
-  }
-
-  feature dns-udp-tcp-port {
-    description
-      "Indicates that the device supports the configuration of
-       the UDP and TCP port for DNS servers.
-
-       This is a 'feature', since many implementations do not support
-       any port other than the default port.";
-  }
-
-
-  /*
-   * Identities
-   */
-
-  identity authentication-method {
-    description
-      "Base identity for user authentication methods.";
-  }
-
-  identity radius {
-    base authentication-method;
-    description
-      "Indicates user authentication using RADIUS.";
-    reference
-      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)
-       RFC 5607: Remote Authentication Dial-In User Service (RADIUS)
-                 Authorization for Network Access Server (NAS)
-                 Management";
-  }
-
-  identity local-users {
-    base authentication-method;
-    description
-      "Indicates password-based authentication of locally
-       configured users.";
-  }
-
-  identity radius-authentication-type {
-    description
-      "Base identity for RADIUS authentication types.";
-  }
-
-  identity radius-pap {
-    base radius-authentication-type;
-    description
-      "The device requests Password Authentication Protocol (PAP)
-       authentication from the RADIUS server.";
-    reference
-      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
-  }
-
-
-
-
-
-
-
-
-  identity radius-chap {
-    base radius-authentication-type;
-    description
-      "The device requests Challenge Handshake Authentication
-       Protocol (CHAP) authentication from the RADIUS server.";
-    reference
-      "RFC 2865: Remote Authentication Dial In User Service (RADIUS)";
-  }
-
-  /*
-   * Configuration data nodes
-   */
-
-  container system {
-    description
-      "System group configuration.";
-
-    leaf contact {
-      type string;
-      description
-        "The administrator contact information for the system.
-
-         A server implementation MAY map this leaf to the sysContact
-         MIB object.  Such an implementation needs to use some
-         mechanism to handle the differences in size and characters
-         allowed between this leaf and sysContact.  The definition of
-         such a mechanism is outside the scope of this document.";
-      reference
-        "RFC 3418: Management Information Base (MIB) for the
-                   Simple Network Management Protocol (SNMP)
-                   SNMPv2-MIB.sysContact";
-    }
-    leaf hostname {
-      type inet:domain-name;
-     description
-       "The name of the host.  This name can be a single domain
-        label or the fully qualified domain name of the host.";
-    }
-    leaf location {
-      type string;
-      description
-        "The system location.
-
-         A server implementation MAY map this leaf to the sysLocation
-         MIB object.  Such an implementation needs to use some
-         mechanism to handle the differences in size and characters
-         allowed between this leaf and sysLocation.  The definition
-         of such a mechanism is outside the scope of this document.";
-      reference
-        "RFC 3418: Management Information Base (MIB) for the
-                   Simple Network Management Protocol (SNMP)
-                   SNMPv2-MIB.sysLocation";
-    }
-
-    container clock {
-      description
-        "Configuration of the system date and time properties.";
-
-      choice timezone {
-        description
-          "The system time zone information.";
-
-        case timezone-name {
-          if-feature timezone-name;
-          leaf timezone-name {
-            type timezone-name;
-            description
-              "The TZ database name to use for the system, such
-               as 'Europe/Stockholm'.";
-          }
-        }
-        case timezone-utc-offset {
-          leaf timezone-utc-offset {
-            type int16 {
-              range "-1500 .. 1500";
-            }
-            units "minutes";
-            description
-              "The number of minutes to add to UTC time to
-               identify the time zone for this system.  For example,
-               'UTC - 8:00 hours' would be represented as '-480'.
-               Note that automatic daylight saving time adjustment
-               is not provided if this object is used.";
-          }
-        }
-      }
-    }
-
-    container ntp {
-      if-feature ntp;
-      presence
-        "Enables the NTP client unless the 'enabled' leaf
-         (which defaults to 'true') is set to 'false'";
-      description
-        "Configuration of the NTP client.";
-
-      leaf enabled {
-        type boolean;
-        default true;
-        description
-          "Indicates that the system should attempt to
-           synchronize the system clock with an NTP server
-           from the 'ntp/server' list.";
-      }
-      list server {
-        key name;
-        description
-          "List of NTP servers to use for system clock
-           synchronization.  If '/system/ntp/enabled'
-           is 'true', then the system will attempt to
-           contact and utilize the specified NTP servers.";
-
-        leaf name {
-          type string;
-          description
-            "An arbitrary name for the NTP server.";
-        }
-        choice transport {
-          mandatory true;
-          description
-            "The transport-protocol-specific parameters for this
-             server.";
-
-          case udp {
-            container udp {
-              description
-                "Contains UDP-specific configuration parameters
-                 for NTP.";
-              leaf address {
-                type inet:host;
-                mandatory true;
-                description
-                  "The address of the NTP server.";
-              }
-              leaf port {
-                if-feature ntp-udp-port;
-                type inet:port-number;
-                default 123;
-                description
-                  "The port number of the NTP server.";
-              }
-            }
-          }
-        }
-        leaf association-type {
-          type enumeration {
-            enum server {
-              description
-                "Use client association mode.  This device
-                 will not provide synchronization to the
-                 configured NTP server.";
-            }
-            enum peer {
-              description
-                "Use symmetric active association mode.
-                 This device may provide synchronization
-                 to the configured NTP server.";
-            }
-            enum pool {
-              description
-                "Use client association mode with one or
-                 more of the NTP servers found by DNS
-                 resolution of the domain name given by
-                 the 'address' leaf.  This device will not
-                 provide synchronization to the servers.";
-            }
-          }
-          default server;
-          description
-            "The desired association type for this NTP server.";
-        }
-        leaf iburst {
-          type boolean;
-          default false;
-          description
-            "Indicates whether this server should enable burst
-             synchronization or not.";
-        }
-        leaf prefer {
-          type boolean;
-          default false;
-          description
-            "Indicates whether this server should be preferred
-             or not.";
-        }
-      }
-    }
-
-    container dns-resolver {
-      description
-        "Configuration of the DNS resolver.";
-
-      leaf-list search {
-        type inet:domain-name;
-        ordered-by user;
-        description
-          "An ordered list of domains to search when resolving
-           a host name.";
-      }
-      list server {
-        key name;
-        ordered-by user;
-        description
-          "List of the DNS servers that the resolver should query.
-
-           When the resolver is invoked by a calling application, it
-           sends the query to the first name server in this list.  If
-           no response has been received within 'timeout' seconds,
-           the resolver continues with the next server in the list.
-           If no response is received from any server, the resolver
-           continues with the first server again.  When the resolver
-           has traversed the list 'attempts' times without receiving
-           any response, it gives up and returns an error to the
-           calling application.
-
-           Implementations MAY limit the number of entries in this
-           list.";
-
-        leaf name {
-          type string;
-          description
-            "An arbitrary name for the DNS server.";
-        }
-        choice transport {
-          mandatory true;
-          description
-            "The transport-protocol-specific parameters for this
-             server.";
-
-          case udp-and-tcp {
-            container udp-and-tcp {
-              description
-                "Contains UDP- and TCP-specific configuration
-                 parameters for DNS.";
-              reference
-                "RFC 1035: Domain Names - Implementation and
-                           Specification
-                 RFC 5966: DNS Transport over TCP - Implementation
-                           Requirements";
-
-              leaf address {
-                type inet:ip-address;
-                mandatory true;
-                description
-                  "The address of the DNS server.";
-              }
-              leaf port {
-                if-feature dns-udp-tcp-port;
-                type inet:port-number;
-                default 53;
-                description
-                  "The UDP and TCP port number of the DNS server.";
-              }
-            }
-          }
-        }
-      }
-      container options {
-        description
-          "Resolver options.  The set of available options has been
-           limited to those that are generally available across
-           different resolver implementations and generally useful.";
-        leaf timeout {
-          type uint8 {
-            range "1..max";
-          }
-          units "seconds";
-          default "5";
-          description
-            "The amount of time the resolver will wait for a
-             response from each remote name server before
-             retrying the query via a different name server.";
-        }
-        leaf attempts {
-          type uint8 {
-            range "1..max";
-          }
-          default "2";
-          description
-            "The number of times the resolver will send a query to
-             all of its name servers before giving up and returning
-             an error to the calling application.";
-        }
-      }
-    }
-
-
-
-    container radius {
-      if-feature radius;
-
-      description
-        "Configuration of the RADIUS client.";
-
-      list server {
-        key name;
-        ordered-by user;
-        description
-          "List of RADIUS servers used by the device.
-
-           When the RADIUS client is invoked by a calling
-           application, it sends the query to the first server in
-           this list.  If no response has been received within
-           'timeout' seconds, the client continues with the next
-           server in the list.  If no response is received from any
-           server, the client continues with the first server again.
-           When the client has traversed the list 'attempts' times
-           without receiving any response, it gives up and returns an
-           error to the calling application.";
-
-        leaf name {
-          type string;
-          description
-            "An arbitrary name for the RADIUS server.";
-        }
-        choice transport {
-          mandatory true;
-          description
-            "The transport-protocol-specific parameters for this
-             server.";
-
-          case udp {
-            container udp {
-              description
-                "Contains UDP-specific configuration parameters
-                 for RADIUS.";
-              leaf address {
-                type inet:host;
-                mandatory true;
-                description
-                  "The address of the RADIUS server.";
-              }
-
-
-
-
-              leaf authentication-port {
-                type inet:port-number;
-                default "1812";
-                description
-                  "The port number of the RADIUS server.";
-              }
-              leaf shared-secret {
-                type string;
-                mandatory true;
-                nacm:default-deny-all;
-                description
-                  "The shared secret, which is known to both the
-                   RADIUS client and server.";
-                reference
-                  "RFC 2865: Remote Authentication Dial In User
-                             Service (RADIUS)";
-              }
-            }
-          }
-        }
-        leaf authentication-type {
-          type identityref {
-            base radius-authentication-type;
-          }
-          default radius-pap;
-          description
-            "The authentication type requested from the RADIUS
-             server.";
-        }
-      }
-      container options {
-        description
-          "RADIUS client options.";
-
-        leaf timeout {
-          type uint8 {
-            range "1..max";
-          }
-          units "seconds";
-          default "5";
-          description
-            "The number of seconds the device will wait for a
-             response from each RADIUS server before trying with a
-             different server.";
-        }
-
-
-
-        leaf attempts {
-          type uint8 {
-            range "1..max";
-          }
-          default "2";
-          description
-            "The number of times the device will send a query to
-             all of its RADIUS servers before giving up.";
-        }
-      }
-    }
-
-    container authentication {
-      nacm:default-deny-write;
-      if-feature authentication;
-
-       description
-         "The authentication configuration subtree.";
-
-       leaf-list user-authentication-order {
-         type identityref {
-           base authentication-method;
-         }
-         must '(. != "sys:radius" or ../../radius/server)' {
-           error-message
-             "When 'radius' is used, a RADIUS server"
-           + " must be configured.";
-           description
-             "When 'radius' is used as an authentication method,
-              a RADIUS server must be configured.";
-         }
-         ordered-by user;
-
-         description
-           "When the device authenticates a user with a password,
-            it tries the authentication methods in this leaf-list in
-            order.  If authentication with one method fails, the next
-            method is used.  If no method succeeds, the user is
-            denied access.
-
-            An empty user-authentication-order leaf-list still allows
-            authentication of users using mechanisms that do not
-            involve a password.
-
-            If the 'radius-authentication' feature is advertised by
-            the NETCONF server, the 'radius' identity can be added to
-            this list.
-
-            If the 'local-users' feature is advertised by the
-            NETCONF server, the 'local-users' identity can be
-            added to this list.";
-       }
-
-       list user {
-         if-feature local-users;
-         key name;
-         description
-           "The list of local users configured on this device.";
-
-         leaf name {
-           type string;
-           description
-            "The user name string identifying this entry.";
-         }
-         leaf password {
-           type ianach:crypt-hash;
-           description
-             "The password for this entry.";
-         }
-         list authorized-key {
-           key name;
-           description
-             "A list of public SSH keys for this user.  These keys
-              are allowed for SSH authentication, as described in
-              RFC 4253.";
-           reference
-             "RFC 4253: The Secure Shell (SSH) Transport Layer
-                        Protocol";
-
-           leaf name {
-             type string;
-             description
-               "An arbitrary name for the SSH key.";
-           }
-
-
-
-
-
-
-
-
-
-
-
-
-           leaf algorithm {
-             type string;
-             mandatory true;
-             description
-               "The public key algorithm name for this SSH key.
-
-                Valid values are the values in the IANA 'Secure Shell
-                (SSH) Protocol Parameters' registry, Public Key
-                Algorithm Names.";
-             reference
-               "IANA 'Secure Shell (SSH) Protocol Parameters'
-                registry, Public Key Algorithm Names";
-           }
-           leaf key-data {
-             type binary;
-             mandatory true;
-             description
-               "The binary public key data for this SSH key, as
-                specified by RFC 4253, Section 6.6, i.e.:
-
-                  string    certificate or public key format
-                            identifier
-                  byte[n]   key/certificate data.";
-             reference
-               "RFC 4253: The Secure Shell (SSH) Transport Layer
-                          Protocol";
-           }
-         }
-       }
-     }
-  }
-
-  /*
-   * Operational state data nodes
-   */
-
-  container system-state {
-    config false;
-    description
-      "System group operational state.";
-
-    container platform {
-      description
-        "Contains vendor-specific information for
-         identifying the system platform and operating system.";
-      reference
-        "IEEE Std 1003.1-2008 - sys/utsname.h";
-
-      leaf os-name {
-        type string;
-        description
-          "The name of the operating system in use -
-           for example, 'Linux'.";
-        reference
-          "IEEE Std 1003.1-2008 - utsname.sysname";
-      }
-      leaf os-release {
-        type string;
-        description
-          "The current release level of the operating
-           system in use.  This string MAY indicate
-           the OS source code revision.";
-        reference
-          "IEEE Std 1003.1-2008 - utsname.release";
-      }
-      leaf os-version {
-        type string;
-        description
-          "The current version level of the operating
-           system in use.  This string MAY indicate
-           the specific OS build date and target variant
-           information.";
-        reference
-          "IEEE Std 1003.1-2008 - utsname.version";
-      }
-      leaf machine {
-        type string;
-        description
-          "A vendor-specific identifier string representing
-           the hardware in use.";
-        reference
-          "IEEE Std 1003.1-2008 - utsname.machine";
-      }
-    }
-
-    container clock {
-      description
-        "Monitoring of the system date and time properties.";
-
-      leaf current-datetime {
-        type yang:date-and-time;
-        description
-          "The current system date and time.";
-      }
-
-
-      leaf boot-datetime {
-        type yang:date-and-time;
-        description
-          "The system date and time when the system last restarted.";
-      }
-    }
-  }
-
-  rpc set-current-datetime {
-    nacm:default-deny-all;
-    description
-      "Set the /system-state/clock/current-datetime leaf
-       to the specified value.
-
-       If the system is using NTP (i.e., /system/ntp/enabled
-       is set to 'true'), then this operation will fail with
-       error-tag 'operation-failed' and error-app-tag value of
-       'ntp-active'.";
-    input {
-      leaf current-datetime {
-        type yang:date-and-time;
-        mandatory true;
-        description
-          "The current system date and time.";
-      }
-    }
-  }
-
-  rpc system-restart {
-    nacm:default-deny-all;
-    description
-      "Request that the entire system be restarted immediately.
-       A server SHOULD send an rpc reply to the client before
-       restarting the system.";
-  }
-
-  rpc system-shutdown {
-    nacm:default-deny-all;
-    description
-      "Request that the entire system be shut down immediately.
-       A server SHOULD send an rpc reply to the client before
-       shutting down the system.";
-  }
-
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-yang-library@2016-04-09.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-yang-library@2016-04-09.yang
deleted file mode 100644 (file)
index 31fc9ee..0000000
+++ /dev/null
@@ -1,263 +0,0 @@
-module ietf-yang-library {
-    namespace "urn:ietf:params:xml:ns:yang:ietf-yang-library";
-    prefix "yanglib";
-
-    import ietf-yang-types {
-      prefix yang;
-    }
-    import ietf-inet-types {
-      prefix inet;
-    }
-
-    organization
-      "IETF NETCONF (Network Configuration) Working Group";
-
-    contact
-      "WG Web:   <http://tools.ietf.org/wg/netconf/>
-       WG List:  <mailto:netconf@ietf.org>
-
-       WG Chair: Mehmet Ersue
-                 <mailto:mehmet.ersue@nsn.com>
-
-       WG Chair: Mahesh Jethanandani
-                 <mailto:mjethanandani@gmail.com>
-
-       Editor:   Andy Bierman
-                 <mailto:andy@yumaworks.com>
-
-       Editor:   Martin Bjorklund
-                 <mailto:mbj@tail-f.com>
-
-       Editor:   Kent Watsen
-                 <mailto:kwatsen@juniper.net>";
-
-    description
-      "This module contains monitoring information about the YANG
-       modules and submodules that are used within a YANG-based
-       server.
-
-       Copyright (c) 2016 IETF Trust and the persons identified as
-       authors of the code.  All rights reserved.
-
-       Redistribution and use in source and binary forms, with or
-       without modification, is permitted pursuant to, and subject
-       to the license terms contained in, the Simplified BSD License
-       set forth in Section 4.c of the IETF Trust's Legal Provisions
-       Relating to IETF Documents
-       (http://trustee.ietf.org/license-info).
-
-       This version of this YANG module is part of RFC XXXX; see
-       the RFC itself for full legal notices.";
-
-    // RFC Ed.: replace XXXX with actual RFC number and remove this
-    // note.
-
-    // RFC Ed.: remove this note
-    // Note: extracted from draft-ietf-netconf-yang-library-06.txt
-
-    // RFC Ed.: update the date below with the date of RFC publication
-    // and remove this note.
-    revision 2016-04-09 {
-      description
-        "Initial revision.";
-      reference
-        "RFC XXXX: YANG Module Library.";
-    }
-
-    /*
-     * Typedefs
-     */
-
-    // FIXME inline this union after https://bugs.opendaylight.org/show_bug.cgi?id=5826 is fixed
-    typedef optional-revision {
-      type union {
-        type revision-identifier;
-        type string { length 0; }
-      }
-      description
-        "The YANG module or submodule revision date.
-         A zero-length string is used if no revision statement
-         is present in the YANG module or submodule.";
-    }
-
-    typedef revision-identifier {
-      type string {
-        pattern '\d{4}-\d{2}-\d{2}';
-      }
-      description
-        "Represents a specific date in YYYY-MM-DD format.";
-    }
-
-    /*
-     * Groupings
-     */
-
-    grouping module-list {
-      description
-        "The module data structure is represented as a grouping
-         so it can be reused in configuration or another monitoring
-         data structure.";
-
-      grouping common-leafs {
-        description
-          "Common parameters for YANG modules and submodules.";
-
-        leaf name {
-          type yang:yang-identifier;
-          description
-            "The YANG module or submodule name.";
-        }
-        leaf revision {
-          type optional-revision;
-        }
-      }
-
-      grouping schema-leaf {
-        description
-          "Common schema leaf parameter for modules and submodules.";
-
-        leaf schema {
-          type inet:uri;
-          description
-            "Contains a URL that represents the YANG schema
-             resource for this module or submodule.
-
-             This leaf will only be present if there is a URL
-             available for retrieval of the schema for this entry.";
-        }
-      }
-
-      list module {
-        key "name revision";
-        description
-          "Each entry represents one revision of one module
-           currently supported by the server.";
-
-        uses common-leafs;
-        uses schema-leaf;
-
-        leaf namespace {
-          type inet:uri;
-          mandatory true;
-          description
-            "The XML namespace identifier for this module.";
-        }
-        leaf-list feature {
-          type yang:yang-identifier;
-          description
-            "List of YANG feature names from this module that are
-             supported by the server, regardless whether they are
-             defined in the module or any included submodule.";
-        }
-        list deviation {
-          key "name revision";
-          description
-            "List of YANG deviation module names and revisions
-             used by this server to modify the conformance of
-             the module associated with this entry.  Note that
-             the same module can be used for deviations for
-             multiple modules, so the same entry MAY appear
-             within multiple 'module' entries.
-
-             The deviation module MUST be present in the 'module'
-             list, with the same name and revision values.
-             The 'conformance-type' value will be 'implement' for
-             the deviation module.";
-          uses common-leafs;
-        }
-        leaf conformance-type {
-          type enumeration {
-            enum implement {
-              description
-                "Indicates that the server implements one or more
-                 protocol-accessible objects defined in the YANG module
-                 identified in this entry.  This includes deviation
-                 statements defined in the module.
-
-                 For YANG version 1.1 modules, there is at most one
-                 module entry with conformance type 'implement' for a
-                 particular module name, since YANG 1.1 requires that
-                 at most one revision of a module is implemented.
-
-                 For YANG version 1 modules, there SHOULD NOT be more
-                 than one module entry for a particular module name.";
-            }
-            enum import {
-              description
-                "Indicates that the server imports reusable definitions
-                 from the specified revision of the module, but does
-                 not implement any protocol accessible objects from
-                 this revision.
-
-                 Multiple module entries for the same module name MAY
-                 exist. This can occur if multiple modules import the
-                 same module, but specify different revision-dates in
-                 the import statements.";
-            }
-          }
-          mandatory true;
-          description
-            "Indicates the type of conformance the server is claiming
-             for the YANG module identified by this entry.";
-        }
-        container submodules {
-          description
-            "Contains information about all the submodules used
-             by the parent module entry";
-
-          list submodule {
-            key "name revision";
-            description
-              "Each entry represents one submodule within the
-               parent module.";
-            uses common-leafs;
-            uses schema-leaf;
-          }
-        }
-      }
-    }
-
-    /*
-     * Operational state data nodes
-     */
-
-    container modules-state {
-      config false;
-      description
-        "Contains YANG module monitoring information.";
-
-      leaf module-set-id {
-        type string;
-        mandatory true;
-        description
-          "Contains a server-specific identifier representing
-           the current set of modules and submodules.  The
-           server MUST change the value of this leaf if the
-           information represented by the 'module' list instances
-           has changed.";
-      }
-
-      uses module-list;
-    }
-
-    /*
-     * Notifications
-     */
-
-    notification yang-library-change {
-      description
-       "Generated when the set of modules and submodules supported
-        by the server has changed.";
-      leaf module-set-id {
-        type leafref {
-          path "/yanglib:modules-state/yanglib:module-set-id";
-        }
-        mandatory true;
-        description
-          "Contains the module-set-id value representing the
-           set of modules and submodules supported at the server at
-           the time the notification is generated.";
-      }
-    }
-
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-yang-types@2013-07-15.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/ietf-yang-types@2013-07-15.yang
deleted file mode 100644 (file)
index bdff18c..0000000
+++ /dev/null
@@ -1,467 +0,0 @@
-module ietf-yang-types {
-
-     namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
-     prefix "yang";
-
-     organization
-      "IETF NETMOD (NETCONF Data Modeling Language) Working Group";
-
-     contact
-      "WG Web:   <http://tools.ietf.org/wg/netmod/>
-       WG List:  <mailto:netmod@ietf.org>
-       WG Chair: David Kessens
-                 <mailto:david.kessens@nsn.com>
-
-       WG Chair: Juergen Schoenwaelder
-                 <mailto:j.schoenwaelder@jacobs-university.de>
-
-       Editor:   Juergen Schoenwaelder
-                 <mailto:j.schoenwaelder@jacobs-university.de>";
-
-     description
-      "This module contains a collection of generally useful derived
-       YANG data types.
-
-       Copyright (c) 2013 IETF Trust and the persons identified as
-       authors of the code.  All rights reserved.
-
-       Redistribution and use in source and binary forms, with or
-       without modification, is permitted pursuant to, and subject
-       to the license terms contained in, the Simplified BSD License
-       set forth in Section 4.c of the IETF Trust's Legal Provisions
-       Relating to IETF Documents
-       (http://trustee.ietf.org/license-info).
-
-       This version of this YANG module is part of RFC 6991; see
-       the RFC itself for full legal notices.";
-
-     revision 2013-07-15 {
-       description
-        "This revision adds the following new data types:
-         - yang-identifier
-         - hex-string
-         - uuid
-         - dotted-quad";
-       reference
-        "RFC 6991: Common YANG Data Types";
-     }
-
-     revision 2010-09-24 {
-       description
-        "Initial revision.";
-       reference
-        "RFC 6021: Common YANG Data Types";
-     }
-
-     /*** collection of counter and gauge types ***/
-
-     typedef counter32 {
-       type uint32;
-       description
-        "The counter32 type represents a non-negative integer
-         that monotonically increases until it reaches a
-         maximum value of 2^32-1 (4294967295 decimal), when it
-         wraps around and starts increasing again from zero.
-
-         Counters have no defined 'initial' value, and thus, a
-         single value of a counter has (in general) no information
-         content.  Discontinuities in the monotonically increasing
-         value normally occur at re-initialization of the
-         management system, and at other times as specified in the
-         description of a schema node using this type.  If such
-         other times can occur, for example, the creation of
-         a schema node of type counter32 at times other than
-         re-initialization, then a corresponding schema node
-         should be defined, with an appropriate type, to indicate
-         the last discontinuity.
-
-         The counter32 type should not be used for configuration
-         schema nodes.  A default statement SHOULD NOT be used in
-         combination with the type counter32.
-
-         In the value set and its semantics, this type is equivalent
-         to the Counter32 type of the SMIv2.";
-       reference
-        "RFC 2578: Structure of Management Information Version 2
-                   (SMIv2)";
-     }
-
-     typedef zero-based-counter32 {
-       type yang:counter32;
-       default "0";
-       description
-        "The zero-based-counter32 type represents a counter32
-         that has the defined 'initial' value zero.
-
-         A schema node of this type will be set to zero (0) on creation
-         and will thereafter increase monotonically until it reaches
-         a maximum value of 2^32-1 (4294967295 decimal), when it
-         wraps around and starts increasing again from zero.
-
-         Provided that an application discovers a new schema node
-         of this type within the minimum time to wrap, it can use the
-         'initial' value as a delta.  It is important for a management
-         station to be aware of this minimum time and the actual time
-         between polls, and to discard data if the actual time is too
-         long or there is no defined minimum time.
-        In the value set and its semantics, this type is equivalent
-         to the ZeroBasedCounter32 textual convention of the SMIv2.";
-       reference
-         "RFC 4502: Remote Network Monitoring Management Information
-                    Base Version 2";
-     }
-
-     typedef counter64 {
-       type uint64;
-       description
-        "The counter64 type represents a non-negative integer
-         that monotonically increases until it reaches a
-         maximum value of 2^64-1 (18446744073709551615 decimal),
-         when it wraps around and starts increasing again from zero.
-
-         Counters have no defined 'initial' value, and thus, a
-         single value of a counter has (in general) no information
-         content.  Discontinuities in the monotonically increasing
-         value normally occur at re-initialization of the
-         management system, and at other times as specified in the
-         description of a schema node using this type.  If such
-         other times can occur, for example, the creation of
-         a schema node of type counter64 at times other than
-         re-initialization, then a corresponding schema node
-         should be defined, with an appropriate type, to indicate
-         the last discontinuity.
-
-         The counter64 type should not be used for configuration
-         schema nodes.  A default statement SHOULD NOT be used in
-         combination with the type counter64.
-
-         In the value set and its semantics, this type is equivalent
-         to the Counter64 type of the SMIv2.";
-       reference
-        "RFC 2578: Structure of Management Information Version 2
-                   (SMIv2)";
-     }
-
-     typedef zero-based-counter64 {
-       type yang:counter64;
-       default "0";
-       description
-        "The zero-based-counter64 type represents a counter64 that
-         has the defined 'initial' value zero.
-         A schema node of this type will be set to zero (0) on creation
-         and will thereafter increase monotonically until it reaches
-         a maximum value of 2^64-1 (18446744073709551615 decimal),
-         when it wraps around and starts increasing again from zero.
-
-         Provided that an application discovers a new schema node
-         of this type within the minimum time to wrap, it can use the
-         'initial' value as a delta.  It is important for a management
-         station to be aware of this minimum time and the actual time
-         between polls, and to discard data if the actual time is too
-         long or there is no defined minimum time.
-
-         In the value set and its semantics, this type is equivalent
-         to the ZeroBasedCounter64 textual convention of the SMIv2.";
-       reference
-        "RFC 2856: Textual Conventions for Additional High Capacity
-                   Data Types";
-     }
-
-     typedef gauge32 {
-       type uint32;
-       description
-        "The gauge32 type represents a non-negative integer, which
-         may increase or decrease, but shall never exceed a maximum
-         value, nor fall below a minimum value.  The maximum value
-         cannot be greater than 2^32-1 (4294967295 decimal), and
-         the minimum value cannot be smaller than 0.  The value of
-         a gauge32 has its maximum value whenever the information
-         being modeled is greater than or equal to its maximum
-         value, and has its minimum value whenever the information
-         being modeled is smaller than or equal to its minimum value.
-         If the information being modeled subsequently decreases
-         below (increases above) the maximum (minimum) value, the
-         gauge32 also decreases (increases).
-
-         In the value set and its semantics, this type is equivalent
-         to the Gauge32 type of the SMIv2.";
-       reference
-        "RFC 2578: Structure of Management Information Version 2
-                   (SMIv2)";
-     }
-
-     typedef gauge64 {
-       type uint64;
-       description
-        "The gauge64 type represents a non-negative integer, which
-         may increase or decrease, but shall never exceed a maximum
-         value, nor fall below a minimum value.  The maximum value
-         cannot be greater than 2^64-1 (18446744073709551615), and
-         the minimum value cannot be smaller than 0.  The value of
-         a gauge64 has its maximum value whenever the information
-         being modeled is greater than or equal to its maximum
-         value, and has its minimum value whenever the information
-         being modeled is smaller than or equal to its minimum value.
-         If the information being modeled subsequently decreases
-         below (increases above) the maximum (minimum) value, the
-         gauge64 also decreases (increases).
-
-         In the value set and its semantics, this type is equivalent
-         to the CounterBasedGauge64 SMIv2 textual convention defined
-         in RFC 2856";
-       reference
-        "RFC 2856: Textual Conventions for Additional High Capacity
-                   Data Types";
-     }
-
-     /*** collection of identifier-related types ***/
-
-     typedef object-identifier {
-       type string {
-         pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
-               + '(\.(0|([1-9]\d*)))*';
-       }
-       description
-        "The object-identifier type represents administratively
-         assigned names in a registration-hierarchical-name tree.
-
-         Values of this type are denoted as a sequence of numerical
-         non-negative sub-identifier values.  Each sub-identifier
-         value MUST NOT exceed 2^32-1 (4294967295).  Sub-identifiers
-         are separated by single dots and without any intermediate
-         whitespace.
-
-         The ASN.1 standard restricts the value space of the first
-         sub-identifier to 0, 1, or 2.  Furthermore, the value space
-         of the second sub-identifier is restricted to the range
-         0 to 39 if the first sub-identifier is 0 or 1.  Finally,
-         the ASN.1 standard requires that an object identifier
-         has always at least two sub-identifiers.  The pattern
-         captures these restrictions.
-
-         Although the number of sub-identifiers is not limited,
-         module designers should realize that there may be
-         implementations that stick with the SMIv2 limit of 128
-         sub-identifiers.
-         This type is a superset of the SMIv2 OBJECT IDENTIFIER type
-         since it is not restricted to 128 sub-identifiers.  Hence,
-         this type SHOULD NOT be used to represent the SMIv2 OBJECT
-         IDENTIFIER type; the object-identifier-128 type SHOULD be
-         used instead.";
-       reference
-        "ISO9834-1: Information technology -- Open Systems
-         Interconnection -- Procedures for the operation of OSI
-         Registration Authorities: General procedures and top
-         arcs of the ASN.1 Object Identifier tree";
-     }
-
-     typedef object-identifier-128 {
-       type object-identifier {
-         pattern '\d*(\.\d*){1,127}';
-       }
-       description
-        "This type represents object-identifiers restricted to 128
-         sub-identifiers.
-
-         In the value set and its semantics, this type is equivalent
-         to the OBJECT IDENTIFIER type of the SMIv2.";
-       reference
-        "RFC 2578: Structure of Management Information Version 2
-                   (SMIv2)";
-     }
-
-     typedef yang-identifier {
-       type string {
-         length "1..max";
-         pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
-         pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
-       }
-       description
-         "A YANG identifier string as defined by the 'identifier'
-          rule in Section 12 of RFC 6020.  An identifier must
-          start with an alphabetic character or an underscore
-          followed by an arbitrary sequence of alphabetic or
-          numeric characters, underscores, hyphens, or dots.
-
-          A YANG identifier MUST NOT start with any possible
-          combination of the lowercase or uppercase character
-          sequence 'xml'.";
-       reference
-         "RFC 6020: YANG - A Data Modeling Language for the Network
-                    Configuration Protocol (NETCONF)";
-     }
-     /*** collection of types related to date and time***/
-
-     typedef date-and-time {
-       type string {
-         pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
-               + '(Z|[\+\-]\d{2}:\d{2})';
-       }
-       description
-        "The date-and-time type is a profile of the ISO 8601
-         standard for representation of dates and times using the
-         Gregorian calendar.  The profile is defined by the
-         date-time production in Section 5.6 of RFC 3339.
-
-         The date-and-time type is compatible with the dateTime XML
-         schema type with the following notable exceptions:
-
-         (a) The date-and-time type does not allow negative years.
-
-         (b) The date-and-time time-offset -00:00 indicates an unknown
-             time zone (see RFC 3339) while -00:00 and +00:00 and Z
-             all represent the same time zone in dateTime.
-
-         (c) The canonical format (see below) of data-and-time values
-             differs from the canonical format used by the dateTime XML
-             schema type, which requires all times to be in UTC using
-             the time-offset 'Z'.
-
-         This type is not equivalent to the DateAndTime textual
-         convention of the SMIv2 since RFC 3339 uses a different
-         separator between full-date and full-time and provides
-         higher resolution of time-secfrac.
-
-         The canonical format for date-and-time values with a known time
-         zone uses a numeric time zone offset that is calculated using
-         the device's configured known offset to UTC time.  A change of
-         the device's offset to UTC time will cause date-and-time values
-         to change accordingly.  Such changes might happen periodically
-         in case a server follows automatically daylight saving time
-         (DST) time zone offset changes.  The canonical format for
-         date-and-time values with an unknown time zone (usually
-         referring to the notion of local time) uses the time-offset
-         -00:00.";
-       reference
-        "RFC 3339: Date and Time on the Internet: Timestamps
-         RFC 2579: Textual Conventions for SMIv2
-         XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
-     }
-     typedef timeticks {
-       type uint32;
-       description
-        "The timeticks type represents a non-negative integer that
-         represents the time, modulo 2^32 (4294967296 decimal), in
-         hundredths of a second between two epochs.  When a schema
-         node is defined that uses this type, the description of
-         the schema node identifies both of the reference epochs.
-
-         In the value set and its semantics, this type is equivalent
-         to the TimeTicks type of the SMIv2.";
-       reference
-        "RFC 2578: Structure of Management Information Version 2
-                   (SMIv2)";
-     }
-
-     typedef timestamp {
-       type yang:timeticks;
-       description
-        "The timestamp type represents the value of an associated
-         timeticks schema node at which a specific occurrence
-         happened.  The specific occurrence must be defined in the
-         description of any schema node defined using this type.  When
-         the specific occurrence occurred prior to the last time the
-         associated timeticks attribute was zero, then the timestamp
-         value is zero.  Note that this requires all timestamp values
-         to be reset to zero when the value of the associated timeticks
-         attribute reaches 497+ days and wraps around to zero.
-
-         The associated timeticks schema node must be specified
-         in the description of any schema node using this type.
-
-         In the value set and its semantics, this type is equivalent
-         to the TimeStamp textual convention of the SMIv2.";
-       reference
-        "RFC 2579: Textual Conventions for SMIv2";
-     }
-
-     /*** collection of generic address types ***/
-
-     typedef phys-address {
-       type string {
-         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-       }
-       description
-        "Represents media- or physical-level addresses represented
-         as a sequence octets, each octet represented by two hexadecimal
-         numbers.  Octets are separated by colons.  The canonical
-         representation uses lowercase characters.
-
-         In the value set and its semantics, this type is equivalent
-         to the PhysAddress textual convention of the SMIv2.";
-       reference
-        "RFC 2579: Textual Conventions for SMIv2";
-     }
-
-     typedef mac-address {
-       type string {
-         pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
-       }
-       description
-        "The mac-address type represents an IEEE 802 MAC address.
-         The canonical representation uses lowercase characters.
-
-         In the value set and its semantics, this type is equivalent
-         to the MacAddress textual convention of the SMIv2.";
-       reference
-        "IEEE 802: IEEE Standard for Local and Metropolitan Area
-                   Networks: Overview and Architecture
-         RFC 2579: Textual Conventions for SMIv2";
-     }
-
-     /*** collection of XML-specific types ***/
-
-     typedef xpath1.0 {
-       type string;
-       description
-        "This type represents an XPATH 1.0 expression.
-
-         When a schema node is defined that uses this type, the
-         description of the schema node MUST specify the XPath
-         context in which the XPath expression is evaluated.";
-       reference
-        "XPATH: XML Path Language (XPath) Version 1.0";
-     }
-
-     /*** collection of string types ***/
-
-     typedef hex-string {
-       type string {
-         pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
-       }
-       description
-        "A hexadecimal string with octets represented as hex digits
-         separated by colons.  The canonical representation uses
-         lowercase characters.";
-     }
-
-     typedef uuid {
-       type string {
-         pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
-               + '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
-       }
-       description
-        "A Universally Unique IDentifier in the string representation
-         defined in RFC 4122.  The canonical representation uses
-         lowercase characters.
-
-         The following is an example of a UUID in string representation:
-         f81d4fae-7dec-11d0-a765-00a0c91e6bf6
-         ";
-       reference
-        "RFC 4122: A Universally Unique IDentifier (UUID) URN
-                   Namespace";
-     }
-
-     typedef dotted-quad {
-       type string {
-         pattern
-           '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
-         + '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
-       }
-       description
-         "An unsigned 32-bit number expressed in the dotted-quad
-          notation, i.e., four octets written as decimal numbers
-          and separated with the '.' (full stop) character.";
-     }
-   }
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/microwave-model@2017-03-24.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/microwave-model@2017-03-24.yang
deleted file mode 100644 (file)
index e6b6bb3..0000000
+++ /dev/null
@@ -1,2262 +0,0 @@
-module microwave-model {
-    namespace "urn:onf:params:xml:ns:yang:microwave-model";
-    prefix microwave-model;
-
-    import core-model {
-        prefix core-model;
-    }
-    import g.874.1-model {
-        prefix g;
-    }
-    import ietf-yang-types {
-        prefix yang;
-    }
-
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This module contains a collection of YANG definitions for managing wireless networks.";
-    revision 2017-03-24 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package type-definitions
-    **********************/ 
-        typedef loop-back-type {
-            type enumeration {
-                enum none {
-                    description "none";
-                }
-                enum if {
-                    description "Intermediate Frequency on the interface between indoor and outdoor unit.";
-                }
-                enum rf {
-                    description "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site.";
-                }
-            }
-            description "none";
-        }
-        typedef severity-type {
-            type enumeration {
-                enum non-alarmed {
-                    description "none";
-                }
-                enum warning {
-                    description "none";
-                }
-                enum minor {
-                    description "none";
-                }
-                enum major {
-                    description "none";
-                }
-                enum critical {
-                    description "none";
-                }
-            }
-            description "According to ITU-T M.3160";
-        }
-        grouping channel-plan-type-g {
-            leaf supported-channel-plan {
-                type string;
-                default "Channel plan name not defined.";
-                config false;
-                description "Unique name (e.g. ECC/REC/(01)04_Annex 5) of a document, which describes a frequency grid that can be adjusted at the air interface. Corresponding channel plans to be delivered by the hardware vendor and to be stored by the operator in an controller/application attached database.";
-            }
-            leaf duplex-distance-is-variable {
-                type boolean;
-                default false;
-                config false;
-                description "To be set on  'true', if the distance between transmitted and received frequency is variable.";
-            }
-            leaf duplex-distance {
-                type int32;
-                units "kHz";
-                default -1;
-                config false;
-                description "Distance between transmitted and received frequency.";
-            }
-            leaf auto-freq-select-is-avail {
-                type boolean;
-                default false;
-                config false;
-                description "In case the microwave radio is capable of automatically selecting the transmit frequency in unlicensed bands, this field shall contain a 'true'.";
-            }
-            list transmission-mode-list {
-                key 'transmission-mode-id';
-                config false;
-                min-elements 1;
-                uses transmission-mode-type-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping transmission-mode-type-g {
-            leaf transmission-mode-id {
-                type core-model:universal-id;
-                config false;
-                description "Indentifies the transmissionMode for internal reference.";
-            }
-            leaf channel-bandwidth {
-                type int32;
-                units "kHz";
-                default -1;
-                config false;
-                description "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-            }
-            leaf modulation-scheme {
-                type int16;
-                units "symbols";
-                default -1;
-                config false;
-                description "Modulation scheme, which is base to the other characteristics described in the same transmissionModeType data type. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256').";
-            }
-            leaf code-rate {
-                type int8;
-                units "%";
-                default -1;
-                config false;
-                description "Code rate of the coding scheme in % (Net bit rate ? Gross bit rate ? code rate).";
-            }
-            leaf tx-power-min {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the minimum transmit power the modem can operate in dBm.";
-            }
-            leaf tx-power-max {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the maximum transmit power the modem can operate in dBm.";
-            }
-            leaf rx-threshold {
-                type int16;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the receive level required to decode the received signal with a Bit Error Rate of 1e-6 or less.";
-            }
-            leaf am-upshift-level {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the receive level that has to be exceeded to shift into a higher modulation scheme.";
-            }
-            leaf am-downshift-level {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the receive level that has to be exceeded for not shifting into a lower modulation scheme.";
-            }
-            leaf xpic-is-avail {
-                type boolean;
-                default false;
-                config false;
-                description "In case this air interface type is capable of XPIC, this field shall contain a 'true'. This information shall purely relate to capabilities of the equipment type, but not to the operational capability of a specific hardware composition on site. Means for example that this attribute might contain a 'true' statement, even if an additional cable would have been required to actually operate XPIC in a specific case.";
-            }
-            description "none";
-        }
-        typedef polarization-type {
-            type enumeration {
-                enum not-specified {
-                    description "none";
-                }
-                enum horizontal {
-                    description "none";
-                }
-                enum vertical {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping air-interface-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping air-interface-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        grouping air-interface-performance-type-g {
-            leaf es {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Number of errored seconds.";
-            }
-            leaf ses {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Number of severely errored seconds.";
-            }
-            leaf cses {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Number of consecutive severely errored seconds.";
-            }
-            leaf unavailability {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Total time of unavailability in seconds.";
-            }
-            leaf tx-level-min {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Minimum transmit power. Signed integers are required.";
-            }
-            leaf tx-level-max {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Maximum transmit power. Signed integers are required.";
-            }
-            leaf tx-level-avg {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Averaged transmit power. Signed integers are required.";
-            }
-            leaf rx-level-min {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Minimum receive level. Signed integers are required.";
-            }
-            leaf rx-level-max {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Maximum receive level. Signed integers are required.";
-            }
-            leaf rx-level-avg {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Averaged receive level. Signed integers are required.";
-            }
-            leaf time2-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Sum of all seconds the transmitter operated in e.g. BPSK.";
-            }
-            leaf time4-states-s {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time4-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time8-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time16-states-s {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time16-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time32-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time64-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time128-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time256-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time512-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time512-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time1024-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time1024-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time2048-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time2048-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time4096-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time4096-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time8192-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time8192-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf snir-min {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Minimum signal to (noise+interference) ratio.";
-            }
-            leaf snir-max {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Maximum signal to (noise+interference) ratio.";
-            }
-            leaf snir-avg {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Averaged signal to (noise+interference) ratio.";
-            }
-            leaf xpd-min {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Minimum cross polarization discrimination.";
-            }
-            leaf xpd-max {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Maximum cross polarization discrimination.";
-            }
-            leaf xpd-avg {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Averaged cross polarization discrimination.";
-            }
-            leaf rf-temp-min {
-                type int8;
-                units "C";
-                default -99;
-                config false;
-                description "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            }
-            leaf rf-temp-max {
-                type int8;
-                units "C";
-                default -99;
-                config false;
-                description "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            }
-            leaf rf-temp-avg {
-                type int8;
-                units "C";
-                default -99;
-                config false;
-                description "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            }
-            leaf defect-blocks-sum {
-                type int16;
-                units "blocks";
-                default -1;
-                config false;
-                description "Total number of blocks that were defect after receiving and could not be corrected by the FEC.";
-            }
-            leaf time-period {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Total length of the measurement period.";
-            }
-            description "Consolidated performance information of the air interface.";
-        }
-        grouping air-interface-current-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-performance-type-g;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping air-interface-historical-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-performance-type-g;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-        typedef protection-type {
-            type enumeration {
-                enum hsb {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef role-type {
-            type enumeration {
-                enum working {
-                    description "none";
-                }
-                enum protection {
-                    description "none";
-                }
-                enum protected {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping diversity-type-g {
-            leaf diversity-name {
-                type string;
-                default "Diversity name not defined.";
-                config false;
-                description "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'";
-            }
-            leaf number-of-air-interfaces-max {
-                type int8;
-                units "air interfaces";
-                default 1;
-                config false;
-                description "Maximum number of air interfaces that could be part of this kind of diversity.";
-            }
-            description "none";
-        }
-        typedef air-interface-diversity-status-type {
-            type enumeration {
-                enum group-down {
-                    description "All air interfaces that are members of the diversity configuration are down.";
-                }
-                enum not-all-ai-active {
-                    description "At least one, but not all of the air interfaces that are part of the diversity configuration is not working.";
-                }
-                enum all-ai-active {
-                    description "All air interfaces that are part of the diversity configuration are working.";
-                }
-            }
-            description "none";
-        }
-        grouping air-interface-diversity-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping air-interface-diversity-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        grouping air-interface-diversity-performance-type-g {
-            leaf snir-min {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Minimum signal to (noise+interference) ratio of the combined signals.";
-            }
-            leaf snir-max {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Maximum signal to (noise+interference) ratio of the combined signals.";
-            }
-            leaf snir-avg {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Average signal to (noise+interference) ratio of the combined signals.";
-            }
-            description "Consolidated performance information of the air interface diversity group.";
-        }
-        grouping air-interface-diversity-current-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-diversity-performance-type-g;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping air-interface-diversity-historical-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-diversity-performance-type-g;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-        grouping tdm-structure-type-g {
-            leaf tdm-structure-name {
-                type string;
-                default "TDM structure name not defined.";
-                config false;
-                description "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-            }
-            leaf tdm-segment-size {
-                type int32;
-                units "kbit/s";
-                default -1;
-                config false;
-                description "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;";
-            }
-            leaf max-number-of-segments-reservable {
-                type int8;
-                units "segments";
-                default -1;
-                config false;
-                description "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface.";
-            }
-            description "none";
-        }
-        grouping structure-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to Structure::StructureCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping structure-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to Structure::StructureCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        typedef structure-performance-type {
-            type int32;
-            description "Consolidated performance information of the Structure.";
-        }
-        grouping structure-current-performance-type-g {
-            leaf performance-data {
-                type structure-performance-type;
-                config false;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping structure-historical-performance-type-g {
-            leaf performance-data {
-                type structure-performance-type;
-                config false;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-        grouping container-type-g {
-            leaf container-name {
-                type string;
-                default "Container name not yet defined.";
-                config false;
-                description "Names to be chosen from the following list: 'ethernet','e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-            }
-            leaf number-of-time-slots-required {
-                type int16;
-                units "timeslots";
-                default -1;
-                config false;
-                description "Number of time slots required for transporting this type of container. Value must be calculated by the vendor after defining the timeSlotCapacity. For containers of fixed size: numberOfTimeSlotsRequired = required bandwidth of the container divided by timeSlotCapacity. For containers of variable size the minimum (most probably 1) is to be stated.";
-            }
-            leaf tdm-time-slots-is-required {
-                type boolean;
-                default false;
-                config false;
-                description "Shall be set to '1', if this container type requires bandwidth (times slots) reserved for TDM transport.";
-            }
-            leaf bundling-is-avail {
-                type boolean;
-                default false;
-                config false;
-                description "If it is possible to combine transport resources of several radio links to transport this container type, this attribute shall be set to '1'.";
-            }
-            description "none";
-        }
-        grouping tdm-container-type-g {
-            leaf tdm-container-name {
-                type string;
-                default "TDM container name not defined.";
-                config false;
-                description "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-            }
-            leaf tdm-container-size {
-                type int32;
-                units "kbit/s";
-                default -1;
-                config false;
-                description "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;";
-            }
-            description "none";
-        }
-        grouping segment-id-type-g {
-            leaf structure-id-ref {
-                type core-model:universal-id;
-                description "none";
-            }
-            leaf segment-id-ref {
-                type int16;
-                description "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once.";
-            }
-            description "Identifies the segments, which are used to transport the container.";
-        }
-        grouping segment-status-type-g {
-            leaf segment-status-type-id {
-                type int16;
-                config false;
-                description "none";
-            }
-            leaf segment-is-reserved-for-tdm {
-                type boolean;
-                default false;
-                config false;
-                description "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm.
-                    ";
-            }
-            leaf operational-status {
-                type core-model:operational-state;
-                default disabled;
-                config false;
-                description "Current operational status of each segment.";
-            }
-            leaf obsolete-priority-class {
-                type int8;
-                default -1;
-                config false;
-                description "PriorityClass as inherited from the associated Container::ContainerConfiguration::priorityClass. In case the device is capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, priorityClass shall be considered, while calculating the dropOrderRank.";
-            }
-            leaf obsolete-drop-order-rank {
-                type int16;
-                default -1;
-                config false;
-                description "In case the device is NOT capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, dropOrderRank is number of segments minus sequence number of the segment. In case the device is capable of adapting the sequence, dropOrderRank has to be calculated by the device in dependency to the assigned priorityClass. 
-                    _unique: within Structure::StructureStatus::segmentStatusList";
-            }
-            description "none";
-        }
-        grouping container-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to Container::ContainerCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping container-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to Container::ContainerCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        grouping container-performance-type-g {
-            leaf tx-ethernet-bytes-max-s {
-                type int32;
-                units "Bytes/s";
-                default -1;
-                config false;
-                description "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers.";
-            }
-            leaf tx-ethernet-bytes-max-m {
-                type int64;
-                units "Bytes/min";
-                default -1;
-                config false;
-                description "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers.";
-            }
-            leaf tx-ethernet-bytes-sum {
-                type int64;
-                units "Bytes";
-                default -1;
-                config false;
-                description "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers.";
-            }
-            leaf time-period {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Total length of the measurement period in seconds.";
-            }
-            description "Consolidated performance information of the Container.";
-        }
-        grouping container-current-performance-type-g {
-            container performance-data {
-                config false;
-                uses container-performance-type-g;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping container-historical-performance-type-g {
-            container performance-data {
-                config false;
-                uses container-performance-type-g;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-
-    /***********************
-    * package object-classes
-    **********************/ 
-        /***********************
-        * package air-interface
-        **********************/ 
-            list mw-air-interface-pac {
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container air-interface-capability {
-                    config false;
-                    uses air-interface-capability-g;
-                    description "none";
-                }
-                container air-interface-configuration {
-                    uses air-interface-configuration-g;
-                    description "none";
-                }
-                container air-interface-status {
-                    config false;
-                    uses air-interface-status-g;
-                    description "none";
-                }
-                container air-interface-current-problems {
-                    config false;
-                    uses air-interface-current-problems-g;
-                    description "none";
-                }
-                container air-interface-current-performance {
-                    config false;
-                    uses air-interface-current-performance-g;
-                    description "none";
-                }
-                container air-interface-historical-performances {
-                    config false;
-                    uses air-interface-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-capability-g {
-                leaf type-of-equipment {
-                    type string;
-                    default "Type of equipment not yet defined.";
-                    config false;
-                    description "This parameter indicates the equipment type. Instead of uploading the complete set of capabilities, capabilities of the same equipment type could be reused. Should be unique for a combination of modem, radio and their respective firmware.";
-                }
-                leaf tx-frequency-min {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the minimum transmit frequency tunable at the air interface.";
-                }
-                leaf tx-frequency-max {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the maximum transmit frequency tunable at the air interface.";
-                }
-                leaf rx-frequency-min {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the minimum receive frequency tunable at the air interface.";
-                }
-                leaf rx-frequency-max {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the maximum receive frequency tunable at the air interface.";
-                }
-                leaf adaptive-modulation-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the device is capable of adaptive modulation, this field shall contain a 'true'.";
-                }
-                leaf mimo-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the device is capable of MIMO, this field shall contain a 'true'.";
-                }
-                leaf mimo-channels {
-                    type int8;
-                    units "channels";
-                    default 1;
-                    config false;
-                    description "Maximum number (n) of spatial multiplexing streams that can be conveyed by an n x n MIMO configuration.";
-                }
-                leaf alic-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the microwave radio is capable of Adjacent Link Interference Cancelation (canceling of interference cause by transmitters located at the same site), this field shall contain a 'true'.";
-                }
-                leaf atpc-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the microwave radio is capable of ATPC, this field shall contain a 'true'.";
-                }
-                leaf atpc-range {
-                    type int8;
-                    units "dB";
-                    default 0;
-                    config false;
-                    description "Extent of the ATPC range.";
-                }
-                leaf encryption-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Shall be marked 'true', if payload encryption is available.";
-                }
-                leaf-list supported-loop-back-kind-list {
-                    type loop-back-type;
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    description "List of supported kinds of looping back of header information to the remote site.";
-                }
-                leaf maintenance-timer-range {
-                    type string;
-                    units "s";
-                    default "Range of the maintenance timer not yet defined.";
-                    config false;
-                    description "Available time periods for maintenance configurations (e.g. the loop back of microwave header information) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360').";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'signalIsLost','rslIsExceeded','temperatureIsExceeded','modemIsFaulty','radioIsFaulty' and 'modulationIsDownShifted'. Further alarms might be added by the device. Names are to be separated by commas.";
-                }
-                list supported-channel-plan-list {
-                    key 'supported-channel-plan';
-                    config false;
-                    min-elements 1;
-                    uses channel-plan-type-g;
-                    description "List of channel spacing that are supported by the device.";
-                }
-                description "Describes the 'analog' capabilities of modem and transmitter of the microwave device. Value ranges of attributes are not independently (e.g. min. and max. transmit power depends on modulation). Legal combinations of values are expressed in transmissionModeTypes.";
-            }
-            grouping air-interface-configuration-g {
-                leaf air-interface-name {
-                    type string;
-                    default "Air interface ID not yet defined.";
-                    description "Operator specific microwave link ID (often used for coding area, type of element and sequential number).";
-                }
-                leaf radio-signal-id {
-                    type string;
-                    default "Radio signal ID not yet defined.";
-                    description "The radioSignalId is transmitted on the air interface so the remote site of the link synchronizes on the correct transmitter. The local radio MUST NOT synchronize on a radio signal with a different radioSignalId. The link ID is neither an ID necessary to span the model nor an ID referencing external data. It is just some sort of name of the link transmitted so the correct remote site can be identified in an interference situation. The value zero might be used to make the microwave to disable the link ID check.";
-                }
-                leaf tx-frequency {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Center frequency of the transmit channel. The values to be configured have to exactly match the values listed in the international agreement referenced in channelPlanID. In case of automated selection of the transmit frequency this field shall describe the lowest center frequency selectable.";
-                }
-                leaf rx-frequency {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Center frequency of the receive channel.";
-                }
-                leaf tx-channel-bandwidth {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-                }
-                leaf rx-channel-bandwidth {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Bandwidth of the receive channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-                }
-                leaf polarization {
-                    type polarization-type;
-                    default not-specified;
-                    description "Allows documenting the polarization of the air interface.";
-                }
-                leaf power-is-on {
-                    type boolean;
-                    default true;
-                    description "Power ON. Activation of the entire radio in a split mount configuration shall be expressed as a 'true'.";
-                }
-                leaf transmitter-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of the transmitter inside the radio shall be expressed as a 'true'.";
-                }
-                leaf receiver-is-on {
-                    type boolean;
-                    default true;
-                    description "Maintenance Feature. Activation of the receiver inside the radio shall be expressed as a 'true'. Attribute shall also be used for RX main and RX diversity squelches in case of diversity configurations.
-                        ";
-                }
-                leaf tx-power {
-                    type int8;
-                    units "dBm";
-                    default 99;
-                    description "Transmit power to be configured on the microwave link. Signed Byte is required. The actually operated transmit power might be lower depending on adaptive modulation and ATPC.";
-                }
-                leaf adaptive-modulation-is-on {
-                    type boolean;
-                    default false;
-                    description "Adaptive Modulation. Activation of adaptive modulation shall be expressed as a 'true'.";
-                }
-                leaf modulation-min {
-                    type int16;
-                    units "symbols";
-                    default -1;
-                    description "Minimum modulation to be configured (in case adaptive modulation is not used, this value represents also the fixed modulation). The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-                }
-                leaf modulation-max {
-                    type int16;
-                    units "symbols";
-                    default -1;
-                    description "Maximum modulation to be configured. The value of this field is only relevant, if Adaptive Modulation has been activated. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-                }
-                leaf xpic-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of Cross Polarization Interference Cancelation shall be expressed as a 'true'. In case XPIC is not available for the current combination of channel bandwidth and modulation or the hardware in general, this parameter shall always be set to 'false'.";
-                }
-                leaf mimo-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of Multiple Input Multiple Output (MIMO) shall be expressed as a 'true'.";
-                }
-                leaf alic-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of Adjacent Link Interference Cancelation (ALIC) shall be expressed as a 'true'.";
-                }
-                leaf atpc-is-on {
-                    type boolean;
-                    default false;
-                    description "ATPC. Activation of Automated Transmit Power Control shall be expressed as a 'true'.";
-                }
-                leaf atpc-thresh-upper {
-                    type int16;
-                    units "dBm";
-                    default 99;
-                    description "If the receive level is higher than the upper threshold value, the transmitter is notified to decrease transmit power.";
-                }
-                leaf atpc-thresh-lower {
-                    type int16;
-                    units "dBm";
-                    default 99;
-                    description "If the receive level is lower than the lower threshold value, the transmitter is notified to increase transmit power.";
-                }
-                leaf auto-freq-select-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of automatically selecting the transmit frequency in unlicensed bands shall be expressed as a 'true'.";
-                }
-                leaf auto-freq-select-range {
-                    type int8;
-                    units "channels";
-                    default -1;
-                    description "Number of transmit channels (starting at the center frequency defined in txFrequency and with channel bandwidth according to txChannelBandwidth) that define the range within the transmit frequency can automatically been chosen. ";
-                }
-                leaf modulation-is-on {
-                    type boolean;
-                    default true;
-                    description "Maintenance Feature. De-activation of the modulation of the carrier signal for fault management shall be expressed as a 'false'.";
-                }
-                leaf encryption-is-on {
-                    type boolean;
-                    default false;
-                    description "Activates encryption of the payload.";
-                }
-                leaf cryptographic-key {
-                    type string;
-                    default "Cryptographic key not yet defined.";
-                    description "Key for transforming plaintext into ciphertext data.";
-                }
-                leaf loop-back-kind-on {
-                    type loop-back-type;
-                    default none;
-                    description "Maintenance Feature. The currently configured type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site.";
-                }
-                leaf maintenance-timer {
-                    type int32;
-                    units "s";
-                    default -1;
-                    description "Time of existence of any maintenance configuration (e.g. the loop back of microwave header information). Valid values are defined in AirInterface::AirInterfaceCapability::maintenanceTimerRange.";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 6;
-                    uses air-interface-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "Configuration of the radio link.";
-            }
-            grouping air-interface-status-g {
-                leaf tx-frequency-cur {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Center frequency of the currently operated transmit channel.";
-                }
-                leaf rx-frequency-cur {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Center frequency of the currently operated receive channel.";
-                }
-                leaf tx-level-cur {
-                    type int8;
-                    units "dBm";
-                    default 99;
-                    config false;
-                    description "Current transmit level.";
-                }
-                leaf rx-level-cur {
-                    type int8;
-                    units "dBm";
-                    default 99;
-                    config false;
-                    description "Current receive level.";
-                }
-                leaf modulation-cur {
-                    type int16;
-                    units "symbols";
-                    default -1;
-                    config false;
-                    description "Currently operated modulation on transmit path. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-                }
-                leaf code-rate-cur {
-                    type int8;
-                    units "%";
-                    default -1;
-                    config false;
-                    description "Code rate of the currently operated coding scheme (Net bit rate ? Gross bit rate ? code rate).";
-                }
-                leaf snir-cur {
-                    type int8;
-                    units "dB";
-                    default -99;
-                    config false;
-                    description "Currently measured signal to (noise+interference) ratio.";
-                }
-                leaf xpd-cur {
-                    type int8;
-                    units "dB";
-                    default -99;
-                    config false;
-                    description "Currently measured cross polarization discrimination.";
-                }
-                leaf rf-temp-cur {
-                    type int8;
-                    units "Celsius";
-                    default -99;
-                    config false;
-                    description "Current temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Air Interface entered its current operational status.  ";
-                }
-                leaf radio-power-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If the radio unit has power and is switched on, this shall be expressed as a 'true'.";
-                }
-                leaf link-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If connection is established to the remote site with the same linkID, this shall be expressed as a 'true'.";
-                }
-                leaf xpic-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If XPIC is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf mimo-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If MIMO is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf alic-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If Adjacent Link Interference Cancelation (ALIC) is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf atpc-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If ATPC is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf auto-freq-select-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If automated frequency selection is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf loop-back-kind-up {
-                    type loop-back-type;
-                    default none;
-                    config false;
-                    description "The currently active (not just configured) type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site.";
-                }
-                leaf local-end-point-id {
-                    type string;
-                    default "not-supported";
-                    config false;
-                    description "The value of the localEndPointId is a vendor specific identifier of the air interface, used by the node to discover a microwave radio link.";
-                }
-                leaf remote-end-point-id {
-                    type string;
-                    default "not-supported";
-                    config false;
-                    description "The value of the remoteEndPointId is a vendor specific identifier or the airinterface at the remote side, used to by the node to discover a microwave radio link.";
-                }
-                description "Measurements of current values on the air interface and operational status of the device.";
-            }
-            grouping air-interface-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses air-interface-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses air-interface-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the air interface at a particular moment.";
-            }
-            grouping air-interface-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses air-interface-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the air interface for a pre-defined measurement interval.";
-            }
-            list co-channel-group {
-                key 'co-channel-group-id';
-                uses co-channel-group-g;
-                description "none";
-            }
-            grouping co-channel-group-g {
-                leaf co-channel-group-id {
-                    type core-model:universal-id;
-                    description "none";
-                }
-                leaf-list air-interface-list {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
-                    }
-                    description "List of air interfaces, which are part of the co-channel (XPIC, MIMO, ALIC) group.";
-                }
-                leaf sort-of-co-channel-group {
-                    type string;
-                    default "Kind of co-channel group not specified.";
-                    description "Type of group of air interfaces with the same transmit and receive frequency. The values shall be chosen from the following _list:'XPIC', 'MIMO', 'ALIC';";
-                }
-                leaf-list logical-termination-point {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
-                    }
-                    description "none";
-                }
-                description "Required for configuring XPIC, MIMO and ALIC.";
-            }
-
-        /***********************
-        * package air-interface-hsb
-        **********************/ 
-            list mw-air-interface-hsb-end-point-pac {
-                key 'endpoint';
-                leaf role {
-                    type role-type;
-                    default working;
-                    description "none";
-                }
-                leaf endpoint {
-                    type leafref {
-                        path '/core-model:forwarding-construct/core-model:fc-port/core-model:uuid';
-                    }
-                    description "none";
-                }
-                description "The EndPoint (EP) object class models the access to the FC function. Each EndPoint instance has a role (e.g., working, protection, protected, hub, spoke, leaf, root, etc.) with respect to the FC function. The association of the FC to LTPs is made via EndPoints (essentially the ports of the FC) where each EndPoint (EP) of the FC has a role in the context of the FC. The traffic forwarding between the associated End PointsEPs of the FC depends upon the type of FC and may be associated with FCSwitch object instances. In cases where there is protection conveys the protecting role of the access to the FC.  The EP replaces the Protection Unit of a traditional protection model. It represents a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.";
-            }
-            list mw-air-interface-hsb-fc-switch-pac {
-                key 'fcswitch';
-                leaf prot-type {
-                    type protection-type;
-                    default hsb;
-                    description "Indicates the protection scheme that is used for the ProtectionGroup.";
-                }
-                leaf air-interface-hsb-configuration-is-faulty-severity {
-                    type severity-type;
-                    default warning;
-                    description "The level of severity of an airInterfaceHsbConfigurationIsFaulty alarm shall be chosen from an enumeration.";
-                }
-                leaf air-interface-hsb-is-partly-down-severity {
-                    type severity-type;
-                    default warning;
-                    description "The level of severity for one link out of the HSB configuration being down shall be chosen from an enumeration.";
-                }
-                leaf air-interface-hsb-is-down-severity {
-                    type severity-type;
-                    default warning;
-                    description "The level of severity of the total HSB configuration being down shall be chosen from an enumeration.";
-                }
-                leaf fcswitch {
-                    type leafref {
-                        path '/core-model:forwarding-construct/core-model:fc-switch/core-model:uuid';
-                    }
-                    description "none";
-                }
-                description "Represents and defines a protection switch structure encapsulated in the forwarding construct. Essentially performs the function of Protection Group. Associates to 2 or more Endpoints each playing the role of a Protection Unit. One or more protection EndPoints (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) Endpoints where either protection or working can feed one or more protected Endpoint. May be used in revertive or non-revertive (symmetric) mode. When in revertive mode may define waitToRestore time. May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as  1+1 ane 1:1).  May be lockout (prevented from switching), force switched or manual switched. Will indicate switch state and change of state.";
-            }
-
-        /***********************
-        * package air-interface-diversity
-        **********************/ 
-            list mw-air-interface-diversity-pac {
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container air-interface-diversity-capability {
-                    config false;
-                    uses air-interface-diversity-capability-g;
-                    description "none";
-                }
-                container air-interface-diversity-configuration {
-                    uses air-interface-diversity-configuration-g;
-                    description "none";
-                }
-                container air-interface-diversity-status {
-                    config false;
-                    uses air-interface-diversity-status-g;
-                    description "none";
-                }
-                container air-interface-diversity-current-problems {
-                    config false;
-                    uses air-interface-diversity-current-problems-g;
-                    description "none";
-                }
-                container air-interface-diversity-current-performance {
-                    config false;
-                    uses air-interface-diversity-current-performance-g;
-                    description "none";
-                }
-                container air-interface-diversity-historical-performances {
-                    config false;
-                    uses air-interface-diversity-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-capability-g {
-                list available-kinds-of-diversity {
-                    key 'diversity-name';
-                    config false;
-                    uses diversity-type-g;
-                    description "Available types of diversity to be listed.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'airInterfaceDiversityConfigurationIsPartlyDown' (at least one air interface is down, but not all of them) and 'airInterfaceDiversityConfigurationIsDown' (all air interfaces are down). Further alarms might be added by the device. Names are to be separated by commas.";
-                }
-                description "Describes the capabilities in implementing different types of air interface diversity.";
-            }
-            grouping air-interface-diversity-configuration-g {
-                container air-interface-diversity {
-                    uses diversity-type-g;
-                    description "Type of air interface diversity configured at the link.";
-                }
-                leaf-list air-interface-ltp-list {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
-                    }
-                    min-elements 2;
-                    description "_multiplicity:2-ThisAirInterfaceDiversity::AirInterfaceDiversityConfiguration::airInterfaceDiversity::diversityType::numberOfAirInterfacesMax";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 3;
-                    uses air-interface-diversity-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-status-g {
-                leaf snir-cur {
-                    type int8;
-                    units "dB";
-                    default -99;
-                    config false;
-                    description "Currently measured signal to (noise+interference) ratio of the combined signals.";
-                }
-                leaf air-interface-diversity-status {
-                    type air-interface-diversity-status-type;
-                    default group-down;
-                    config false;
-                    description "Status of the air interface bundle. ";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Diversity Group entered its current operational status.  ";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses air-interface-diversity-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses air-interface-diversity-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the air interface diversity configuration at a particular moment.";
-            }
-            grouping air-interface-diversity-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses air-interface-diversity-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the air interface diversity configuration for a pre-defined measurement interval.";
-            }
-
-        /***********************
-        * package pure-ethernet-structure
-        **********************/ 
-            list mw-pure-ethernet-structure-pac {
-                if-feature pure-ethernet;
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container pure-ethernet-structure-capability {
-                    config false;
-                    uses pure-ethernet-structure-capability-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-configuration {
-                    uses pure-ethernet-structure-configuration-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-status {
-                    config false;
-                    uses pure-ethernet-structure-status-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-current-problems {
-                    config false;
-                    uses pure-ethernet-structure-current-problems-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-current-performance {
-                    config false;
-                    uses pure-ethernet-structure-current-performance-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-historical-performances {
-                    config false;
-                    uses pure-ethernet-structure-historical-performances-g;
-                    description "none";
-                }
-                description "The pureEthernetStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting Ethernet traffic only.";
-            }
-            grouping pure-ethernet-structure-capability-g {
-                leaf structure-id {
-                    type core-model:universal-id;
-                    config false;
-                    description "Identifies the Structure for bundling and container.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device.";
-                }
-                description "Describes the logical structuring of the physical capacity provided by a pure Ethernet microwave device. Segmentation is not available. No fixed segment size. No TDM transport.";
-            }
-            grouping pure-ethernet-structure-configuration-g {
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    uses structure-problem-severity-type-g;
-                    description "Severity of the type of problem to be configured.";
-                }
-                description "none";
-            }
-            grouping pure-ethernet-structure-status-g {
-                container segment-status-list {
-                    config false;
-                    uses segment-status-type-g;
-                    description "Status of the Ethernet transport segment. Always just one segment.";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time and date of the last update of the status information.  ";
-                }
-                description "none";
-            }
-            grouping pure-ethernet-structure-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses structure-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping pure-ethernet-structure-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses structure-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the structure of an pure Ethernet microwave at a particular moment.";
-            }
-            grouping pure-ethernet-structure-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses structure-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the structure of an pure Ethernet microwave for a pre-defined measurement interval.";
-            }
-            feature pure-ethernet {
-                description "Feature 'pure-ethernet' is mandatory for device types transporting pure Ethernet.";
-            }
-
-        /***********************
-        * package hybrid-mw-structure
-        **********************/ 
-            list mw-hybrid-mw-structure-pac {
-                if-feature hybrid-microwave;
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container hybrid-mw-structure-capability {
-                    config false;
-                    uses hybrid-mw-structure-capability-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-configuration {
-                    uses hybrid-mw-structure-configuration-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-status {
-                    config false;
-                    uses hybrid-mw-structure-status-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-current-problems {
-                    config false;
-                    uses hybrid-mw-structure-current-problems-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-current-performance {
-                    config false;
-                    uses hybrid-mw-structure-current-performance-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-historical-performances {
-                    config false;
-                    uses hybrid-mw-structure-historical-performances-g;
-                    description "none";
-                }
-                description "The HybridMwStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM and Ethernet traffic.";
-            }
-            grouping hybrid-mw-structure-capability-g {
-                leaf structure-id {
-                    type core-model:universal-id;
-                    config false;
-                    description "Identifies the Structure for bundling and container.";
-                }
-                list supported-tdm-structure-types-list {
-                    key 'tdm-structure-name';
-                    config false;
-                    min-elements 1;
-                    uses tdm-structure-type-g;
-                    description "Lists the TDM frame types that are supported.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device.";
-                }
-                description "Describes the logical structuring of the physical capacity provided by a hybrid microwave device (TDM + Ethernet). Segmentation is available. TDM transport is available.";
-            }
-            grouping hybrid-mw-structure-configuration-g {
-                container structure-type {
-                    uses tdm-structure-type-g;
-                    description "TDM frame to be applied.";
-                }
-                leaf number-of-tdm-segments-to-be-reserved {
-                    type int16;
-                    default -1;
-                    description "Allows to configure the number of segments reserved for TDM frames of the type specified in HybridMwStructure::HybridMwStructureConfiguration::structureType";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    uses structure-problem-severity-type-g;
-                    description "Severity of the type of problem to be configured.";
-                }
-                description "none";
-            }
-            grouping hybrid-mw-structure-status-g {
-                list segment-status-list {
-                    key 'segment-status-type-id';
-                    config false;
-                    uses segment-status-type-g;
-                    description "Status of each segment (all TDM and one Ethernet). Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time and date of the last update of the status information.  ";
-                }
-                description "none";
-            }
-            grouping hybrid-mw-structure-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses structure-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping hybrid-mw-structure-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses structure-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the structure of a hybrid microwave at a particular moment.";
-            }
-            grouping hybrid-mw-structure-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses structure-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the structure of a hybrid microwave for a pre-defined measurement interval.";
-            }
-            feature hybrid-microwave {
-                description "Feature 'hybrid-microwave' is mandatory for device types transporting Ethernet + TDM.";
-            }
-
-        /***********************
-        * package ethernet-container
-        **********************/ 
-            list mw-ethernet-container-pac {
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container ethernet-container-capability {
-                    config false;
-                    uses ethernet-container-capability-g;
-                    description "none";
-                }
-                container ethernet-container-configuration {
-                    uses ethernet-container-configuration-g;
-                    description "none";
-                }
-                container ethernet-container-status {
-                    config false;
-                    uses ethernet-container-status-g;
-                    description "none";
-                }
-                container ethernet-container-current-problems {
-                    config false;
-                    uses ethernet-container-current-problems-g;
-                    description "none";
-                }
-                container ethernet-container-current-performance {
-                    config false;
-                    uses ethernet-container-current-performance-g;
-                    description "none";
-                }
-                container ethernet-container-historical-performances {
-                    config false;
-                    uses ethernet-container-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping ethernet-container-capability-g {
-                leaf bundling-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "This attribute has to be set on 'true', if the device allows combining resources from several air interfaces for transporting this Ethernet container.";
-                }
-                leaf packet-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case packet compression can be activated, but not configured to a certain type, packetCompressionAvail shall be set on 'true', but none of the compression level specific booleans.";
-                }
-                leaf layer2-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 2 available at the device.";
-                }
-                leaf vlan-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on VLAN layer available at the device.";
-                }
-                leaf q-in-q-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer of a second VLAN available at the device.";
-                }
-                leaf mpls-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on mpls layer available at the device.";
-                }
-                leaf ipv4-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 3 for IPv4 available at the device.";
-                }
-                leaf ipv6-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 3 for IPv6 available at the device.";
-                }
-                leaf layer4-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 4 (TCP and UDP header) available at the device.";
-                }
-                leaf encryption-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Shall be marked 'true', if Ethernet payload encryption is available.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device.";
-                }
-                description "none";
-            }
-            grouping ethernet-container-configuration-g {
-                leaf container-id {
-                    type string;
-                    default "No Ethernet Flow associated yet.";
-                    description "ContainterID in Netconf must be the same as EthernetPortID in OpenFlow so a connection can be made between the two items, which separately exist in the controller.";
-                }
-                list segments-id-list {
-                    key 'structure-id-ref segment-id-ref';
-                    min-elements 1;
-                    uses segment-id-type-g;
-                    description "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list.";
-                }
-                leaf packet-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "In case packet compression is activated, but no type is activated, it is assumed that the device chooses the optimum.";
-                }
-                leaf layer2-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 2 configured at the device.";
-                }
-                leaf vlan-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on VLAN layer configured at the device.";
-                }
-                leaf q-in-q-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer of a second VLAN configured at the device.";
-                }
-                leaf mpls-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on MPLS layer configured at the device.";
-                }
-                leaf ipv4-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 3 for IPv4 configured at the device.";
-                }
-                leaf ipv6-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 3 for IPv6 configured at the device.";
-                }
-                leaf layer4-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 4 (TCP and UDP header) configured at the device.";
-                }
-                leaf encryption-is-on {
-                    type boolean;
-                    default false;
-                    description "Activates encryption of the Ethernet payload.";
-                }
-                leaf cryptographic-key {
-                    type string;
-                    default "Cryptographic key not yet defined.";
-                    description "Key for transforming plaintext into cipher text data.";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 2;
-                    uses container-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping ethernet-container-status-g {
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Container entered its current operational status.  ";
-                }
-                description "none";
-            }
-            grouping ethernet-container-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses container-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping ethernet-container-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses container-current-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the Ethernet container at a particular moment.";
-            }
-            grouping ethernet-container-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses container-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the Ethernet container for a pre-defined measurement interval.";
-            }
-
-        /***********************
-        * package tdm-container
-        **********************/ 
-            list mw-tdm-container-pac {
-                if-feature hybrid-microwave;
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container tdm-container-capability {
-                    config false;
-                    uses tdm-container-capability-g;
-                    description "none";
-                }
-                container tdm-container-configuration {
-                    uses tdm-container-configuration-g;
-                    description "none";
-                }
-                container tdm-container-status {
-                    config false;
-                    uses tdm-container-status-g;
-                    description "none";
-                }
-                container tdm-container-current-problems {
-                    config false;
-                    uses tdm-container-current-problems-g;
-                    description "none";
-                }
-                container tdm-container-current-performance {
-                    config false;
-                    uses tdm-container-current-performance-g;
-                    description "none";
-                }
-                container tdm-container-historical-performances {
-                    config false;
-                    uses tdm-container-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping tdm-container-capability-g {
-                list supported-tdm-container-types-list {
-                    key 'tdm-container-name';
-                    config false;
-                    min-elements 1;
-                    uses tdm-container-type-g;
-                    description "Lists the TDM containers that are supported.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device.";
-                }
-                description "Bundling is not available.";
-            }
-            grouping tdm-container-configuration-g {
-                leaf container-id {
-                    type string;
-                    default "No TDM Flow associated yet.";
-                    description "ContainterID in Netconf must be the same as TDM Flow ID so a connection can be made between the two items, which separately exist in the controller.";
-                }
-                container container-type {
-                    uses tdm-container-type-g;
-                    description "Type of TDM container.";
-                }
-                container segment-id {
-                    uses segment-id-type-g;
-                    description "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 2;
-                    uses container-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping tdm-container-status-g {
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Container entered its current operational status.  ";
-                }
-                description "none";
-            }
-            grouping tdm-container-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses container-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping tdm-container-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses container-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the TDM container at a particular moment.";
-            }
-            grouping tdm-container-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses container-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the TDM container for a pre-defined measurement interval.";
-            }
-
-        /***********************
-        * package super-classes
-        **********************/ 
-            grouping mw-current-problem-g {
-                leaf sequence-number {
-                    type int32;
-                    config false;
-                    description "Unique sequence number of the current problem object.";
-                }
-                leaf time-stamp {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time and date of the problem.  ";
-                }
-                leaf problem-severity {
-                    type severity-type;
-                    default warning;
-                    config false;
-                    description "Severity of the alarm.";
-                }
-                description "none";
-            }
-
-
-    /***********************
-    * package notifications
-    **********************/ 
-        notification object-creation-notification {
-            uses object-creation-notification-g;
-            description "none";
-        }
-        grouping object-creation-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts object creation notifications.";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            leaf object-type {
-                type string;
-                default "Type of created object not specified.";
-                description "Type of Object to be chosen from the following list of values: 'MW_AirInterface_Pac', 'MW_AirInterfaceDiversity_Pac', 'MW_Structure_Pac', 'MW_PureEthernetStructure_Pac', 'MW_HybridMwStructure_Pac', 'MW_Container_Pac', 'MW_EthernetContainer_Pac' or 'MW_TdmContainer_Pac'.";
-            }
-            description "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac has to be instancieted in the controller.";
-        }
-        notification object-deletion-notification {
-            uses object-deletion-notification-g;
-            description "none";
-        }
-        grouping object-deletion-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts object deletion notifications.";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            description "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac instance has to be deleted in the controller.";
-        }
-        notification attribute-value-changed-notification {
-            uses attribute-value-changed-notification-g;
-            description "none";
-        }
-        grouping attribute-value-changed-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts attribute value changed notifications.";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            leaf attribute-name {
-                type string;
-                default "Attribute name not specified.";
-                description "Name of the attribute that has been changed.";
-            }
-            leaf new-value {
-                type string;
-                default "New value not specified.";
-                description "Attribute value converted to a string (xml, json, ...)";
-            }
-            description "To be sent when an attribute has changed and one or more controllers have to update their data.";
-        }
-        notification problem-notification {
-            uses problem-notification-g;
-            description "none";
-        }
-        grouping problem-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts problem notifications";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            leaf problem {
-                type string;
-                default "Problem name not specified.";
-                description "Name of the problem according to AirInterface::AirInterfaceCapability::supportedAlarms or AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms or Structure::StructureCapability::supportedAlarms or PureEthernetStructure::PureEthernetStructureCapability::supportedAlarms or HybridMwStructure::HybridMwStructureCapability::supportedAlarms or Container::ContainerCapability::supportedAlarms or EthernetContainer::EthernetContainerCapability::supportedAlarms or TdmContainer::TdmContainerCapability::supportedAlarms.";
-            }
-            leaf severity {
-                type severity-type;
-                default warning;
-                description "Severity of the problem according to AirInterface::AirInterfaceConfiguration::problemSeverityList, AirInterfaceDiversity::AirInterfaceDiversityConfiguration::problemSeverityList, Structure::StructureConfiguration::problemSeverityList, PureEthernetStructure::PureEthernetStructureConfiguration::problemSeverityList, HybridMwStructure::HybridMwStructureConfiguration::problemSeverityList, Container::ContainerConfiguration::problemSeverityList, EthernetContainer::EthernetContainerConfiguration::problemSeverityList or TdmContainer::TdmContainerConfiguration::problemSeverityList";
-            }
-            description "To be sent when a problem occurs at a MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-        }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/nc-notifications@2008-07-14.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/nc-notifications@2008-07-14.yang
deleted file mode 100644 (file)
index 9ef5ed0..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-module nc-notifications {
-
-    namespace "urn:ietf:params:xml:ns:netmod:notification";
-    prefix "manageEvent";
-
-    import ietf-yang-types{ prefix yang; }
-    import notifications { prefix ncEvent; }
-
-    organization
-      "IETF NETCONF WG";
-
-    contact
-      "netconf@ietf.org";
-
-    description
-      "Conversion of the 'manageEvent' XSD in the NETCONF
-       Notifications RFC.";
-
-    reference
-      "RFC 5277";
-
-    revision 2008-07-14 {
-      description "RFC 5277 version.";
-    }
-
-    container netconf {
-      description "Top-level element in the notification namespace";
-
-      config false;
-
-      container streams {
-        description 
-          "The list of event streams supported by the system. When
-           a query is issued, the returned set of streams is 
-           determined based on user privileges.";
-
-        list stream {
-          description 
-            "Stream name, description and other information.";
-          key name;
-          min-elements 1;
-
-          leaf name {
-            description
-              "The name of the event stream. If this is the default
-               NETCONF stream, this must have the value 'NETCONF'.";
-            type ncEvent:streamNameType;
-          }
-
-          leaf description {
-            description
-              "A description of the event stream, including such
-               information as the type of events that are sent over
-               this stream.";
-            type string;
-            mandatory true;
-          }
-
-          leaf replaySupport {
-            description
-              "A description of the event stream, including such
-               information as the type of events that are sent over
-               this stream.";
-            type boolean;
-            mandatory true;
-          }
-
-          leaf replayLogCreationTime {
-            description
-              "The timestamp of the creation of the log used to support
-               the replay function on this stream. Note that this might
-               be earlier then the earliest available notification in
-               the log. This object is updated if the log resets for 
-               some reason.  This object MUST be present if replay is
-               supported.";
-            type yang:date-and-time;   // xsd:dateTime is wrong!
-          }
-        }
-      }
-    }
-
-    notification replayComplete {
-      description
-        "This notification is sent to signal the end of a replay
-         portion of a subscription.";
-    }
-
-    notification notificationComplete {
-      description
-        "This notification is sent to signal the end of a notification
-         subscription. It is sent in the case that stopTime was
-         specified during the creation of the subscription..";
-    }
-
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/notifications@2008-07-14.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/notifications@2008-07-14.yang
deleted file mode 100644 (file)
index 1d06711..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-module notifications {
-
-    namespace "urn:ietf:params:xml:ns:netconf:notification:1.0";
-    prefix "ncEvent";
-
-    import ietf-yang-types { prefix yang; revision-date "2013-07-15";}
-
-    organization
-      "IETF NETCONF WG";
-
-    contact
-      "netconf@ops.ietf.org";
-
-    description
-      "Conversion of the 'ncEvent' XSD in the
-       NETCONF Notifications RFC.";
-
-    reference
-      "RFC 5277.";
-
-    revision 2008-07-14 {
-      description "RFC 5277 version.";
-    }
-
-    typedef streamNameType {
-      description
-        "The name of an event stream.";
-      type string;
-    }
-
-    rpc create-subscription {
-      description
-        "The command to create a notification subscription. It
-         takes as argument the name of the notification stream
-         and filter. Both of those options limit the content of
-         the subscription. In addition, there are two time-related
-         parameters, startTime and stopTime, which can be used to
-         select the time interval of interest to the notification
-         replay feature.";
-
-      input {
-        leaf stream {
-          description
-            "An optional parameter that indicates which stream of events
-             is of interest. If not present, then events in the default
-             NETCONF stream will be sent.";
-          type streamNameType;
-          default "NETCONF";
-        }
-
-        anyxml filter {
-          description
-            "An optional parameter that indicates which subset of all
-             possible events is of interest. The format of this
-             parameter is the same as that of the filter parameter
-             in the NETCONF protocol operations. If not present,
-             all events not precluded by other parameters will
-             be sent.";
-        }
-
-        leaf startTime {
-          description
-            "A parameter used to trigger the replay feature and
-             indicates that the replay should start at the time
-             specified. If start time is not present, this is not a
-             replay subscription.";
-          type yang:date-and-time;
-        }
-
-        leaf stopTime {
-          // must ". >= ../startTime";
-          description
-            "An optional parameter used with the optional replay
-             feature to indicate the newest notifications of
-             interest. If stop time is not present, the notifications
-             will continue until the subscription is terminated.
-             Must be used with startTime.";
-          type yang:date-and-time;
-        }
-      }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/notifications@2018-05-30.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/notifications@2018-05-30.yang
deleted file mode 100644 (file)
index 296577d..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-module notifications {
-  yang-version 1;
-  namespace "urn:ietf:params:xml:ns:netconf:notification:1.0";
-  prefix ncEvent;
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-
-  organization
-    "IETF NETCONF WG";
-  contact
-    "netconf@ops.ietf.org";
-  description
-    "Conversion of the 'ncEvent' XSD in the
-     NETCONF Notifications RFC.";
-  reference "RFC 5277.";
-
-  revision 2018-05-30 {
-    description
-      "First step to a common notification yang.";
-    reference
-      "RFC 5277: NETCONF Event Notifications";
-  }
-  revision 2008-07-14 {
-    description
-      "Initial version";
-    reference
-      "RFC 5277: NETCONF Event Notifications";
-  }
-
-  typedef streamNameType {
-    type string;
-    description
-      "The name of an event stream.";
-  }
-
-  rpc create-subscription {
-    description
-      "The command to create a notification subscription. It
-       takes as argument the name of the notification stream
-       and filter. Both of those options limit the content of
-       the subscription. In addition, there are two time-related
-       parameters, startTime and stopTime, which can be used to
-       select the time interval of interest to the notification
-       replay feature.";
-    input {
-      leaf stream {
-        type streamNameType;
-        default "NETCONF";
-        description
-          "An optional parameter that indicates which stream of events
-           is of interest. If not present, then events in the default
-           NETCONF stream will be sent.";
-      }
-      anyxml filter {
-        description
-          "An optional parameter that indicates which subset of all
-           possible events is of interest. The format of this
-           parameter is the same as that of the filter parameter
-           in the NETCONF protocol operations. If not present,
-           all events not precluded by other parameters will
-           be sent.";
-      }
-      leaf startTime {
-        type yang:date-and-time;
-        description
-          "A parameter used to trigger the replay feature and
-           indicates that the replay should start at the time
-           specified. If start time is not present, this is not a
-           replay subscription.";
-      }
-      leaf stopTime {
-        type yang:date-and-time;
-        description
-          "An optional parameter used with the optional replay
-           feature to indicate the newest notifications of
-           interest. If stop time is not present, the notifications
-           will continue until the subscription is terminated.
-           Must be used with startTime.";
-      }
-    }
-  }
-  container notification {
-    config false;
-    description
-      "internal struct to start a notification";
-    leaf eventTime {
-      type yang:date-and-time;
-      mandatory true;
-        description
-          "The time the event was generated by the event source. This
-           parameter is of type dateTime and compliant to [RFC3339].
-           Implementations must support time zones.";
-    }
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-core-model-conditional-packages@2017-04-02.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-core-model-conditional-packages@2017-04-02.yang
deleted file mode 100644 (file)
index 44c99b1..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-module onf-core-model-conditional-packages {
-    namespace "urn:onf:params:xml:ns:yang:onf-core-model-conditional-packages";
-    prefix onf-core-model-conditional-packages;
-    import core-model {
-        prefix core-model;
-    }
-    import microwave-model {
-        prefix microwave-model;
-    }
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This model adds conditional packages to the ONF CoreModel in order to support fault management for object classes NetworkElement, Equipment and Holder.";
-    revision 2017-04-02 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package type-definitions
-    **********************/ 
-        grouping current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "not-specified";
-                config false;
-                description "Name of the alarm according capability::supportedAlarms.";
-            }
-            uses microwave-model:mw-current-problem-g;
-            description "none";
-        }
-        grouping network-element-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "not-specified";
-                config false;
-                description "Name of the alarm according capability::supportedAlarms.";
-            }
-            leaf object-reference {
-                type string;
-                config false;
-                description "An explaining string of the related object class. This is necesseary, because the current problem list of the NetworkElement object class acts as a container for all alarms, where its object classes are not modeled.";
-            }
-            uses microwave-model:mw-current-problem-g;
-            description "none";
-        }
-        grouping problem-severity-type-g {
-            leaf problem-type-name {
-                type string;
-                description "Name of the alarm according to Capability::supportedAlarms";
-            }
-            leaf problem-type-severity {
-                type microwave-model:severity-type;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        typedef processing-type {
-            type enumeration {
-                enum done {
-                    description "none";
-                }
-                enum processing {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-
-    /***********************
-    * package object-classes
-    **********************/ 
-        /***********************
-        * package network-element
-        **********************/ 
-            container network-element-pac {
-                leaf network-element {
-                    type leafref {
-                        path '/core-model:network-element/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container network-element-capability {
-                    config false;
-                    uses network-element-capability-g;
-                    description "none";
-                }
-                container network-element-configuration {
-                    uses network-element-configuration-g;
-                    description "none";
-                }
-                container network-element-status {
-                    config false;
-                    uses network-element-status-g;
-                    description "none";
-                }
-                container network-element-current-problems {
-                    config false;
-                    uses network-element-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping network-element-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping network-element-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                leaf trigger-refresh {
-                    type boolean;
-                    description "A trigger to instruct the netconf server to refresh its internal database/cache. 
-                                 It is primary used for alarms status, but could be used for anything else too. 
-                                 It is assumed that the refresh mechanism takes some time. 
-                                 In order to indicate the process to the controller a refreshStatus attribute is used.";
-                }
-                description "none";
-            }
-            grouping network-element-status-g {
-                leaf refresh-status {
-                    type processing-type;
-                    config false;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping network-element-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses network-element-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-        /***********************
-        * package equipment
-        **********************/ 
-            list equipment-pac {
-                key 'equipment';
-                leaf equipment {
-                    type leafref {
-                        path '/core-model:equipment/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container equipment-capability {
-                    config false;
-                    uses equipment-capability-g;
-                    description "none";
-                }
-                container equipment-configuration {
-                    uses equipment-configuration-g;
-                    description "none";
-                }
-                container equipment-status {
-                    config false;
-                    uses equipment-status-g;
-                    description "none";
-                }
-                container equipment-current-problems {
-                    config false;
-                    uses equipment-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping equipment-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "Available alarms to be listed. Names are to be separated by commas.";
-                }
-                description "none";
-            }
-            grouping equipment-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping equipment-status-g {
-                description "none";
-            }
-            grouping equipment-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-        /***********************
-        * package holder
-        **********************/ 
-            list holder-pac {
-                key 'holder';
-                leaf holder {
-                    type leafref {
-                        path '/core-model:equipment/core-model:contained-holder/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container holder-capability {
-                    config false;
-                    uses holder-capability-g;
-                    description "none";
-                }
-                container holder-configuration {
-                    uses holder-configuration-g;
-                    description "none";
-                }
-                container holder-status {
-                    config false;
-                    uses holder-status-g;
-                    description "none";
-                }
-                container holder-current-problems {
-                    config false;
-                    uses holder-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping holder-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "Available alarms to be listed. Names are to be separated by commas.";
-                }
-                description "none";
-            }
-            grouping holder-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping holder-status-g {
-                description "none";
-            }
-            grouping holder-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-        /***********************
-        * package connector
-        **********************/ 
-            list connector-pac {
-                key 'connector';
-                leaf connector {
-                    type leafref {
-                        path '/core-model:equipment/core-model:exposed-cable/core-model:connector/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container connector-capability {
-                    config false;
-                    uses connector-capability-g;
-                    description "none";
-                }
-                container connector-configuration {
-                    uses connector-configuration-g;
-                    description "none";
-                }
-                container connector-status {
-                    config false;
-                    uses connector-status-g;
-                    description "none";
-                }
-                container connector-current-problems {
-                    config false;
-                    uses connector-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping connector-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "Available alarms to be listed. Names are to be separated by commas.";
-                }
-                description "none";
-            }
-            grouping connector-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                leaf remote-end-point {
-                    type string;
-                    description "A network wide identifier of the remote connector. The value is used for topology discovery. 
-Please see also ConnectorStatus::localEndPoint.";
-                }
-                description "none";
-            }
-            grouping connector-status-g {
-                leaf local-end-point {
-                    type string;
-                    description "A network wide global identifier of the this connector, which can be used to discover the physical connectivitiy.
-The value should contain the network element name, because the network element software can assume that the network element name is unique in the network. 
-The value should be formated:
-<connector:uuid>@<network-element-name>
-
-Please see also ConnectorConfiguration::remoteEndPoint";
-                }
-                description "none";
-            }
-            grouping connector-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-core-model-conditional-packages@2018-04-08.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-core-model-conditional-packages@2018-04-08.yang
deleted file mode 100644 (file)
index 538ec27..0000000
+++ /dev/null
@@ -1,472 +0,0 @@
-module onf-core-model-conditional-packages {
-  namespace "urn:onf:params:xml:ns:yang:onf-core-model-conditional-packages";
-  prefix onf-core-model-conditional-packages;
-
-  import core-model {
-    prefix core-model;
-  }
-  import microwave-model {
-    prefix microwave-model;
-  }
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  organization
-    "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-  contact
-    "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-     WG List:  <mailto:wireless-transport@login.opennetworking.org>
-     WG Chair: Lyndon Ong
-               <mailto:lyong@ciena.com>
-     WG Chair: Giorgio Cazzaniga
-               <mailto:giorgio.cazzaniga@sm-optics.com>
-     Editors:  Thorsten Heinze
-               <mailto:thorsten.heinze@telefonica.com>
-               Martin Skorupski
-               <mailto:martin.skorupski@highstreet-technologies.com>";
-  description
-    "This model adds conditional packages to the ONF CoreModel in order to support fault management for object classes NetworkElement, Equipment and Holder.";
-
-  revision 2018-04-08 {
-    description
-      "Initial version, used only ONAP PoC 2018-06-25";
-    reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-  }
-
-  grouping current-problem-type-g {
-    leaf problem-name {
-      type string;
-      default "not-specified";
-      config false;
-      description
-        "Name of the alarm according capability::supportedAlarms.";
-    }
-    uses microwave-model:mw-current-problem-g;
-    description
-      "none";
-  }
-
-  grouping network-element-current-problem-type-g {
-    leaf problem-name {
-      type string;
-      default "not-specified";
-      config false;
-      description
-        "Name of the alarm according capability::supportedAlarms.";
-    }
-    leaf object-reference {
-      type string;
-      config false;
-      description
-        "An explaining string of the related object class. This is necesseary, because the current problem list of the NetworkElement object class acts as a container for all alarms, where its object classes are not modeled.";
-    }
-    uses microwave-model:mw-current-problem-g;
-    description
-      "none";
-  }
-
-  grouping problem-severity-type-g {
-    leaf problem-type-name {
-      type string;
-      description
-        "Name of the alarm according to Capability::supportedAlarms";
-    }
-    leaf problem-type-severity {
-      type microwave-model:severity-type;
-      description
-        "Severity of this type of alarm.";
-    }
-    description
-      "none";
-  }
-
-  typedef processing-type {
-    type enumeration {
-      enum "done" {
-        description
-          "none";
-      }
-      enum "processing" {
-        description
-          "none";
-      }
-    }
-    description
-      "none";
-  }
-
-  container network-element-pac {
-    leaf network-element {
-      type leafref {
-        path "/core-model:network-element/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container network-element-capability {
-      config false;
-      uses network-element-capability-g;
-      description
-        "none";
-    }
-    container network-element-configuration {
-      uses network-element-configuration-g;
-      description
-        "none";
-    }
-    container network-element-status {
-      config false;
-      uses network-element-status-g;
-      description
-        "none";
-    }
-    container network-element-current-problems {
-      config false;
-      uses network-element-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    leaf trigger-refresh {
-      type boolean;
-      description
-        "A trigger to instruct the netconf server to refresh its internal database/cache. 
-         It is primary used for alarms status, but could be used for anything else too. 
-         It is assumed that the refresh mechanism takes some time. 
-         In order to indicate the process to the controller a refreshStatus attribute is used.";
-    }
-    leaf connection-request-username {
-      type string {
-        length "1..256";
-      }
-      description
-        "none";
-    }
-    leaf connection-request-password {
-      type string {
-        length "8..256";
-      }
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-status-g {
-    leaf refresh-status {
-      type processing-type;
-      config false;
-      description
-        "none";
-    }
-    leaf connection-request-url {
-      type inet:domain-name;
-      config false;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses network-element-current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  list equipment-pac {
-    key "equipment";
-    leaf equipment {
-      type leafref {
-        path "/core-model:equipment/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container equipment-capability {
-      config false;
-      uses equipment-capability-g;
-      description
-        "none";
-    }
-    container equipment-configuration {
-      uses equipment-configuration-g;
-      description
-        "none";
-    }
-    container equipment-status {
-      config false;
-      uses equipment-status-g;
-      description
-        "none";
-    }
-    container equipment-current-problems {
-      config false;
-      uses equipment-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "Available alarms to be listed. Names are to be separated by commas.";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-status-g {
-    leaf software-version {
-        type string;
-        config false;
-        description
-            "Indicates the current running software version of the equipment.";
-    }
-    leaf additional-software-version {
-        type string;
-        config false;
-        description
-            "Indicates the current running software version of the equipment.";
-    }
-    leaf up-time {
-        type uint64;
-        config false;
-        units "s";
-        description
-            "Seconds since the last reboot.";
-    }
-    leaf local-time-zone {
-        type string;
-        config false;
-        description
-            "??? Which format ??? - +00:00 proposed";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  list holder-pac {
-    key "holder";
-    leaf holder {
-      type leafref {
-        path "/core-model:equipment/core-model:contained-holder/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container holder-capability {
-      config false;
-      uses holder-capability-g;
-      description
-        "none";
-    }
-    container holder-configuration {
-      uses holder-configuration-g;
-      description
-        "none";
-    }
-    container holder-status {
-      config false;
-      uses holder-status-g;
-      description
-        "none";
-    }
-    container holder-current-problems {
-      config false;
-      uses holder-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping holder-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "Available alarms to be listed. Names are to be separated by commas.";
-    }
-    description
-      "none";
-  }
-
-  grouping holder-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    description
-      "none";
-  }
-
-  grouping holder-status-g {
-    description
-      "none";
-  }
-
-  grouping holder-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  list connector-pac {
-    key "connector";
-    leaf connector {
-      type leafref {
-        path "/core-model:equipment/core-model:exposed-cable/core-model:connector/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container connector-capability {
-      config false;
-      uses connector-capability-g;
-      description
-        "none";
-    }
-    container connector-configuration {
-      uses connector-configuration-g;
-      description
-        "none";
-    }
-    container connector-status {
-      config false;
-      uses connector-status-g;
-      description
-        "none";
-    }
-    container connector-current-problems {
-      config false;
-      uses connector-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "Available alarms to be listed. Names are to be separated by commas.";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    leaf remote-end-point {
-      type string;
-      description
-        "A network wide identifier of the remote connector. The value is used for topology discovery. 
-         Please see also ConnectorStatus::localEndPoint.";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-status-g {
-    leaf local-end-point {
-      type string;
-      description
-        "A network wide global identifier of the this connector, which can be used to discover the physical connectivitiy.
-         The value should contain the network element name, because the network element software can assume that the network element name is unique in the network. 
-         The value should be formated:
-         <connector:uuid>@<network-element-name>
-
-         Please see also ConnectorConfiguration::remoteEndPoint";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-ethernet-conditional-packages@2017-04-02.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-ethernet-conditional-packages@2017-04-02.yang
deleted file mode 100644 (file)
index 4d6fb7c..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-module onf-ethernet-conditional-packages {
-    namespace "urn:onf:params:xml:ns:yang:onf-ethernet-conditional-packages";
-    prefix onf-ethernet-conditional-packages;
-    import core-model {
-        prefix core-model;
-    }
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This model adds conditional packages to the ONF CoreModel in order address Ethernet use cases.";
-    revision 2017-04-02 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package object-classes
-    **********************/ 
-        list ethernet-pac {
-            key 'layer-protocol';
-            leaf layer-protocol {
-                type leafref {
-                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                }
-                description "none";
-            }
-            container ethernet-capability {
-                config false;
-                uses ethernet-capability-g;
-                description "none";
-            }
-            container ethernet-configuration {
-                uses ethernet-configuration-g;
-                description "none";
-            }
-            container ethernet-status {
-                config false;
-                uses ethernet-status-g;
-                description "none";
-            }
-            container ethernet-current-problems {
-                config false;
-                uses ethernet-current-problems-g;
-                description "none";
-            }
-            container ethernet-current-performance {
-                config false;
-                uses ethernet-current-performance-g;
-                description "none";
-            }
-            container ethernet-historical-performances {
-                config false;
-                uses ethernet-historical-performances-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping ethernet-capability-g {
-            description "none";
-        }
-        grouping ethernet-configuration-g {
-            leaf vlan-id {
-                type int16;
-                description "value = 0: frames on ingress must be untagged, frames on egress get untagged; value = any other positive integer < 4096: frames on ingress must be tagged with this VLAN ID, frames on egress either already have or get this VLAN ID attached;";
-            }
-            description "none";
-        }
-        grouping ethernet-status-g {
-            description "none";
-        }
-        grouping ethernet-current-problems-g {
-            description "none";
-        }
-        grouping ethernet-current-performance-g {
-            description "none";
-        }
-        grouping ethernet-historical-performances-g {
-            description "none";
-        }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-otn-odu-conditional-packages@2017-10-20.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-otn-odu-conditional-packages@2017-10-20.yang
deleted file mode 100644 (file)
index 89d6cbf..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-module onf-otn-odu-conditional-packages {
-    namespace "urn:onf:params:xml:ns:yang:onf-otn-odu-conditional-packages";
-    prefix onf-otn-odu-conditional-packages;
-    import core-model {
-        prefix core-model;
-    }
-    organization "ONF (Open Networking Foundation) Open Transport Working Group";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             Editors:  Mohit Chamania 
-                       <MChamania@advaoptical.com>
-                       Dzmitry Khomchanka
-                       <dzmitry.khomchanka@vpi-minsk.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This model adds conditional packages to the ONF CoreModel 1.2 
-                 in order address OTN ODU use cases. It is a temorary model for 
-                 demontration purposes and bases on the ideas an concepts of
-                 TAPI. However, modifications for a pure southbound were
-                 nessesary.";
-    revision 2017-10-20 {
-        description "Initial version";
-        reference "ONF TR 512: Core Model.";
-    }
-    /***********************
-    * package type-definitions (copied from TAPI; revision: 2017-05-31)
-    **********************/ 
-        typedef mapping-type {
-            type enumeration {
-                enum amp {
-                    description "none";
-                }
-                enum bmp {
-                    description "none";
-                }
-                enum gfp-f {
-                    description "none";
-                }
-                enum gmp {
-                    description "none";
-                }
-                enum ttp-gfp-bmp {
-                    description "none";
-                }
-                enum null {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef odu-named-payload-type {
-            type enumeration {
-                enum unknown {
-                    description "none";
-                }
-                enum uninterpretable {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef odu-slot-size {
-            type enumeration {
-                enum 1-g-25 {
-                    description "none";
-                }
-                enum 2-g-5 {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef odu-type {
-            type enumeration {
-                enum odu-0 {
-                    description "none";
-                }
-                enum odu-1 {
-                    description "none";
-                }
-                enum odu-2 {
-                    description "none";
-                }
-                enum odu-2-e {
-                    description "none";
-                }
-                enum odu-3 {
-                    description "none";
-                }
-                enum odu-4 {
-                    description "none";
-                }
-                enum odu-flex {
-                    description "none";
-                }
-                enum odu-cn {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping odu-payload-type-g {
-            leaf named-payload-type {
-                type odu-named-payload-type;
-                description "none";
-            }
-            leaf hex-payload-type {
-                type uint64;
-                description "none";
-            }
-            description "none";
-        }
-    /***********************
-    * package object-classes
-    **********************/ 
-
-        /***********************
-         * OTN ODU Connection (ODU-CTP)
-         **********************/ 
-        list otn-odu-connection-pac {
-            key 'layer-protocol';
-            leaf layer-protocol {
-                type leafref {
-                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                }
-                description "none";
-            }
-            container otn-odu-connection-capability {
-                config false;
-                uses otn-odu-connection-capability-g;
-                description "none";
-            }
-            container otn-odu-connection-configuration {
-                uses otn-odu-connection-configuration-g;
-                description "none";
-            }
-            container otn-odu-connection-status {
-                config false;
-                uses otn-odu-connection-status-g;
-                description "none";
-            }
-            container otn-odu-connection-current-problems {
-                config false;
-                uses otn-odu-connection-current-problems-g;
-                description "none";
-            }
-            container otn-odu-connection-current-performance {
-                config false;
-                uses otn-odu-connection-current-performance-g;
-                description "none";
-            }
-            container otn-odu-connection-historical-performances {
-                config false;
-                uses otn-odu-connection-historical-performances-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping otn-odu-connection-capability-g {
-            container accepted-payload-type {
-                uses odu-payload-type-g;
-                description 
-                    "This attribute is applicable when the ODU CTP object 
-                     instance represents a lower order ODU CTP Sink at the 
-                     client layer of the ODUP/ODU[i]j or ODUP/ODUj-21 adaptation
-                     function. 
-                     This attribute is a 2-digit Hex code that indicates the new
-                     accepted payload type.
-                     Valid values are defined in Table 15-8 of ITU-T 
-                     Recommendation G.709 with one additional value 
-                     UN_INTERPRETABLE.";
-            }
-            description "none";
-        }
-        grouping otn-odu-connection-configuration-g {
-            leaf-list tributary-slot-list {
-                type uint64;
-                description 
-                    "This attribute contains a set of distinct (i.e. unique) 
-                     integers (e.g. 2, 3, 5, 9, 15 representing the tributary 
-                     slots TS2, TS3, TS5, TS9 and TS15) which represents the 
-                     resources occupied by the Low Order ODU Link Connection 
-                     (e.g. carrying an ODUflex with a bit rate of 6.25G). 
-                     This attribute applies when the LO ODU_ConnectionTerminationPoint 
-                     connects with an HO ODU_TrailTerminationPoint object. 
-                     It will not apply if this ODU_ConnectionTerminationPoint 
-                     object directly connects to an OTU_TrailTerminationPoint 
-                     object (i.e. OTU has no trib slots). 
-                     The upper bound of the integer allowed in this set is a 
-                     function of the HO-ODU server layer to which the ODU 
-                     connection has been mapped (adapted). 
-                     Thus, for example, M=8/32/80 for ODU2/ODU3/ODU4 server 
-                     layers (respectively). Note that the value of this 
-                     attribute can be changed only in the case of ODUflex and 
-                     has to be through specific operations (i.e. not be changing
-                     the attribute tributarySlotList directly).";
-            }
-            leaf tributary-port-number {
-                type uint64;
-                description 
-                    "This attribute identifies the tributary port number that is
-                     associated with the ODU CTP. 
-                     range of type : The value range depends on the size of the 
-                     Tributary Port Number (TPN) field used which depends on th 
-                     server-layer ODU or OTU.
-                     In case of ODUk mapping into OTUk, there is no TPN field, 
-                     so the tributaryPortNumber shall be zero.
-                     In case of LO ODUj mapping over ODU1, ODU2 or ODU3, the TPN
-                     is encoded in a 6-bit field so the value range is 0-63. 
-                     See clause 14.4.1/G.709-2016.
-                     In case of LO ODUj mapping over ODU4, the TPN is encoded in 
-                     a 7-bit field so the value range is 0-127. 
-                     See clause 14.4.1.4/G.709-2016.
-                     In case of ODUk mapping over ODUCn, the TPN is encoded in a
-                     14-bit field so the value range is 0-16383. See clause 
-                     20.4.1.1/G.709-2016.
-                    ";
-            }
-            leaf accepted-m-si {
-                type string;
-                description 
-                    "This attribute is applicable when the ODU CTP object 
-                     instance represents a lower order ODU1 or ODU2 CTP Sink at 
-                     the client layer of the ODU3P/ODU12 adaptation function or 
-                     represents a lower order ODUj CTP Sink at the client layer 
-                     of the ODUP/ODUj-21 adaptation function. This attribute is 
-                     a 1-byte field that represents the accepted multiplex 
-                     structure of the adaptation function. ";
-            }
-            leaf opu-tributary-slot-size {
-                type odu-slot-size;
-                description 
-                    "This attribute is applicable for ODU2 and ODU3 CTP only.
-                     [sko] Why that? 
-                     It indicates the slot size of the ODU CTP.";
-            }
-            leaf auto-payload-type {
-                type boolean;
-                description 
-                    "This attribute is applicable when the ODU CTP object 
-                     instance represents a lower order ODU CTP Source at the 
-                     client layer of the ODUP/ODUj-21 adaptation function. The 
-                     value of true of this attribute configures that the 
-                     adaptation source function shall fall back to the payload 
-                     type PT=20 if the conditions specified in 14.3.10.1/G.798 
-                     are satisfied. ";
-            }
-            leaf configured-mapping-type {
-                type mapping-type;
-                description 
-                    "This attributes indicates the configured mapping type.";
-            }
-            leaf configured-client-type {
-                type string;
-                description 
-                    "This attribute configures the type of the client CTP of the
-                     server ODU TTP.";
-            }
-            description 
-               "This Pac contains the attributes associated with the ODU-CTP.";
-        }
-        grouping otn-odu-connection-status-g {
-            description "none";
-        }
-        grouping otn-odu-connection-current-problems-g {
-            description "none";
-        }
-        grouping otn-odu-connection-current-performance-g {
-            description "none";
-        }
-        grouping otn-odu-connection-historical-performances-g {
-            description "none";
-        }
-
-
-        /***********************
-         * OTN ODU Termination (ODU-TTP)
-         **********************/ 
-        list otn-odu-termination-pac {
-            key 'layer-protocol';
-            leaf layer-protocol {
-                type leafref {
-                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                }
-                description "none";
-            }
-            container otn-odu-termination-capability {
-                config false;
-                uses otn-odu-termination-capability-g;
-                description "none";
-            }
-            container otn-odu-termination-configuration {
-                uses otn-odu-termination-configuration-g;
-                description "none";
-            }
-            container otn-odu-termination-status {
-                config false;
-                uses otn-odu-termination-status-g;
-                description "none";
-            }
-            container otn-odu-termination-current-problems {
-                config false;
-                uses otn-odu-termination-current-problems-g;
-                description "none";
-            }
-            container otn-odu-termination-current-performance {
-                config false;
-                uses otn-odu-termination-current-performance-g;
-                description "none";
-            }
-            container otn-odu-termination-historical-performances {
-                config false;
-                uses otn-odu-termination-historical-performances-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping otn-odu-termination-capability-g {
-            description "none";
-        }
-        grouping otn-odu-termination-configuration-g {
-            leaf odu-type {
-                type odu-type;
-                description "This attribute specifies the type of the ODU 
-                             termination point.";
-            }
-            leaf odu-rate {
-                type uint64;
-                description "This attribute indicates the rate of the ODU 
-                             terminatinon point. 
-                             This attribute is Set at create; i.e., once created
-                             it cannot be changed directly. 
-                             In case of resizable ODU flex, its value can be 
-                             changed via HAO (not directly on the attribute).";
-            }
-            leaf odu-rate-tolerance {
-                type uint64;
-                units "ppm";
-                description "This attribute indicates the rate tolerance of the 
-                             ODU termination point. 
-                             Valid values are real value in the unit of ppm. 
-                             Standardized values are defined in Table 7-2/G.709.
-                             ";
-            }
-            description "none";
-        }
-        grouping otn-odu-termination-status-g {
-            description "none";
-        }
-        grouping otn-odu-termination-current-problems-g {
-            description "none";
-        }
-        grouping otn-odu-termination-current-performance-g {
-            description "none";
-        }
-        grouping otn-odu-termination-historical-performances-g {
-            description "none";
-        }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-ptp-dataset@2017-05-08.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/preload.cache.schema/onf-ptp-dataset@2017-05-08.yang
deleted file mode 100644 (file)
index 41a1c39..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-module onf-ptp-dataset {
-    namespace "urn:onf:params:xml:ns:yang:onf-ptp-dataset";
-    prefix ptp-ex;
-
-    import ietf-yang-types {
-        prefix yang;
-    }
-    import core-model {
-        prefix core-model;
-    }
-    import ietf-ptp-dataset {
-        prefix ptp;
-    }
-
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             Editors:  Alfons Mittermaier
-                       <mailto:alfons.mittermaier@@highstreet-technologies.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This module contains a collection of YANG definitions to extent ptp-dataset.";
-    revision 2017-05-08 {
-        description "Initial version";
-        reference "A YANG Data Model extending ptp-dataset.";
-    }
-
-    augment "/ptp:instance-list/ptp:default-ds" {
-        description
-            "Addition of data nodes for the default data set of the clock.";
-
-        leaf local-priority {
-            type uint8;
-            default 128;
-            description
-                "none";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 6.3.2";
-        }
-
-        leaf max-steps-removed {
-            type uint8;
-            default 128;
-            description
-                "none";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 6.3";
-        }
-
-        leaf multicast-mac-address {
-            type yang:mac-address;
-            description
-                "none";
-        }
-        
-        leaf designated-enabled {
-            type boolean;
-            default true;
-            description
-                "A PTP Clock needs to be enabled by management.";
-        }
-    }
-
-    augment "/ptp:instance-list/ptp:port-ds-list" {
-        description
-            "Addition of data nodes for the default data set of the clock.";
-
-        leaf master-only {
-            type boolean;
-            default true;
-            description
-                "Indicates that port can only be a master.";
-        }
-
-        leaf local-priority {
-            type uint8;
-            default 128;
-            description
-                "Local priority as used for alternate BMCA";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 6.3.2";
-        }
-
-        leaf designated-enabled {
-            type boolean;
-            default true;
-            description
-                "A PTP Port needs to be enabled by management.";
-            reference 
-                "IEEE 1588-2008 IEEE Standard for a Precision Clock Synchronization Protocol 
-                 for Networked Measurement and Control Systems
-                 Chapter 9.2";
-        }
-
-        leaf delay-asymmetry {
-            type int64;
-            default 0;
-            description
-                "As per PTP    Known path asymmetry in ns.";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 7.4.2";
-        }
-        
-        leaf logical-termination-point {
-            type leafref {
-                path '/core-model:network-element/core-model:ltp/core-model:uuid';
-            }
-            description
-                "A reference to a LTP of layer-protocol-name 'ETY' or 'MWPS', which is used 
-                 to discover the PTP topology.";
-        }
-
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/version.properties b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/resources/version.properties
deleted file mode 100644 (file)
index 8037339..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-# Proberties filled in by maven during build process
-version = ${project.version}
-build = ${buildtime}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/AaiTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/AaiTest.java
deleted file mode 100644 (file)
index 10e4bac..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.log4j.Level;
-import org.opendaylight.mwtn.aaiConnector.impl.AaiProviderClient;
-import org.opendaylight.mwtn.base.internalTypes.InventoryInformation;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration;
-import org.opendaylight.mwtn.config.impl.HtLogger;
-
-public class AaiTest {
-
-       public static void main(String[] args)
-       {
-               HtLogger.initConsole(Level.TRACE);
-               HtDevicemanagerConfiguration cfg=HtDevicemanagerConfiguration.getTestConfiguration();
-
-               AaiProviderClient provider = new AaiProviderClient(cfg, null);
-
-               String mountPointName = "testDevice 01";
-               String type="Unit";
-               String model="Horizon Compact+";
-               String vendor="DragonWave-X";
-               String ipv4="127.0.0.1";
-               String ipv6="::1";
-               List<String> ifInfos = new ArrayList<String>();
-               ifInfos.add("LP-MWPS-RADIO");
-               InventoryInformation ii=new InventoryInformation(type, model, vendor, ipv4, ipv6, ifInfos);
-               System.out.println("registering device");
-               provider.onDeviceRegistered(mountPointName,ii);
-               try {
-                       Thread.sleep(5000);
-               } catch (InterruptedException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               }
-               System.out.println("unregistering device");
-               provider.onDeviceUnregistered(mountPointName);
-               System.out.println("finished");
-               try {
-                       provider.close();
-               } catch (Exception e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               }
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/AkkaConfigTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/AkkaConfigTest.java
deleted file mode 100644 (file)
index 528ef58..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-import org.opendaylight.mwtn.config.impl.AkkaConfig;
-import org.opendaylight.mwtn.config.impl.AkkaConfig.ClusterNodeInfo;
-
-public class AkkaConfigTest {
-
-       private static String getAkkaConfigSingleNodeText()
-       {
-return "\n" +
-               "odl-cluster-data {\n" +
-               "  akka {\n" +
-               "    remote {\n" +
-               "      artery {\n" +
-               "        enabled = off\n" +
-               "        canonical.hostname = \"127.0.0.1\"\n" +
-               "        canonical.port = 2550\n" +
-               "      }\n" +
-               "      netty.tcp {\n" +
-               "        hostname = \"127.0.0.1\"\n" +
-               "        port = 2550\n" +
-               "      }\n" +
-               "      # when under load we might trip a false positive on the failure detector\n" +
-               "      # transport-failure-detector {\n" +
-               "        # heartbeat-interval = 4 s\n" +
-               "        # acceptable-heartbeat-pause = 16s\n" +
-               "      # }\n" +
-               "    }\n" +
-               "\n" +
-               "    cluster {\n" +
-               "      # Remove \".tcp\" when using artery.\n" +
-               "      seed-nodes = [\"akka.tcp://opendaylight-cluster-data@127.0.0.1:2550\"]\n" +
-               "\n" +
-               "      roles = [\n" +
-               "        \"member-1\"\n" +
-               "      ]\n" +
-               "\n" +
-               "    }\n" +
-               "\n" +
-               "    persistence {\n" +
-               "      # By default the snapshots/journal directories live in KARAF_HOME. You can choose to put it somewhere else by\n" +
-               "      # modifying the following two properties. The directory location specified may be a relative or absolute path. \n" +
-               "      # The relative path is always relative to KARAF_HOME.\n" +
-               "\n" +
-               "      # snapshot-store.local.dir = \"target/snapshots\"\n" +
-               "      # journal.leveldb.dir = \"target/journal\"\n" +
-               "\n" +
-               "      journal {\n" +
-               "        leveldb {\n" +
-               "          # Set native = off to use a Java-only implementation of leveldb.\n" +
-               "          # Note that the Java-only version is not currently considered by Akka to be production quality.\n" +
-               "\n" +
-               "          # native = off\n" +
-               "        }\n" +
-               "      }\n" +
-               "    }\n" +
-               "  }\n" +
-               "}";
-       }
-       private static String getAkkaConfigClusterNodeText()
-       {
-               return "\n" +
-                               "odl-cluster-data {\n" +
-                               "\n" +
-                               "  akka {\n" +
-                               "    loglevel = \"\"\n" +
-                               "    remote {\n" +
-                               "      netty.tcp {\n" +
-                               "        hostname = \"zltcmtn23arbc01.2f0377.mtn23a.tci.att.com\"\n" +
-                               "        port = 2550\n" +
-                               "      }\n" +
-                               "    }\n" +
-                               "    actor {\n" +
-                               "    debug{\n" +
-                               "        autoreceive = on\n" +
-                               "        lifecycle = on\n" +
-                               "        unhandled = on\n" +
-                               "        fsm = on\n" +
-                               "        event-stream = on\n" +
-                               "     }\n" +
-                               "    }\n" +
-                               "    cluster {\n" +
-                               "      seed-nodes = [\"akka.tcp://opendaylight-cluster-data@zltcmtn23arbc01.2f0377.mtn23a.tci.att.com:2550\", \"akka.tcp://opendaylight-cluster-data@zltcmtn23arbc02.2f0377.mtn23a.tci.att.com:2550\", \"akka.tcp://opendaylight-cluster-data@zltcmtn23arbc03.2f0377.mtn23a.tci.att.com:2550\", \"akka.tcp://opendaylight-cluster-data@zltcmtn23brbc01.f84e7a.mtn23b.tci.att.com:2550\", \"akka.tcp://opendaylight-cluster-data@zltcmtn23brbc02.f84e7a.mtn23b.tci.att.com:2550\", \"akka.tcp://opendaylight-cluster-data@zltcmtn23brbc03.f84e7a.mtn23b.tci.att.com:2550\"]\n" +
-                               "      seed-node-timeout = 15s\n" +
-                               "      roles = [\"member-1\"]\n" +
-                               "\n" +
-                               "    }\n" +
-                               "    persistence {\n" +
-                               "    journal-plugin-fallback {\n" +
-                               "         circuit-breaker {\n" +
-                               "            max-failures = 10\n" +
-                               "            call-timeout = 60s\n" +
-                               "            reset-timeout = 30s\n" +
-                               "         }\n" +
-                               "     }\n" +
-                               "    }\n" +
-                               "  }\n" +
-                               "}\n" +
-                               "\n" +
-                               "odl-cluster-rpc {\n" +
-                               "\n" +
-                               "  akka {\n" +
-                               "    loglevel = \"\"\n" +
-                               "    remote {\n" +
-                               "      netty.tcp {\n" +
-                               "        hostname = \"zltcmtn23arbc01.2f0377.mtn23a.tci.att.com\"\n" +
-                               "        port = 2551\n" +
-                               "      }\n" +
-                               "    }\n" +
-                               "    actor {\n" +
-                               "    debug{\n" +
-                               "        autoreceive = on\n" +
-                               "        lifecycle = on\n" +
-                               "        unhandled = on\n" +
-                               "        fsm = on\n" +
-                               "        event-stream = on\n" +
-                               "     }\n" +
-                               "    }\n" +
-                               "    cluster {\n" +
-                               "       seed-nodes = [\"akka.tcp://odl-cluster-rpc@zltcmtn23arbc01.2f0377.mtn23a.tci.att.com:2551\", \"akka.tcp://odl-cluster-rpc@zltcmtn23arbc02.2f0377.mtn23a.tci.att.com:2551\", \"akka.tcp://odl-cluster-rpc@zltcmtn23arbc03.2f0377.mtn23a.tci.att.com:2551\", \"akka.tcp://odl-cluster-rpc@zltcmtn23brbc01.f84e7a.mtn23b.tci.att.com:2551\", \"akka.tcp://odl-cluster-rpc@zltcmtn23brbc02.f84e7a.mtn23b.tci.att.com:2551\", \"akka.tcp://odl-cluster-rpc@zltcmtn23brbc03.f84e7a.mtn23b.tci.att.com:2551\"]\n" +
-                               "        seed-node-timeout = 15s\n" +
-                               "    }\n" +
-                               "    persistence {\n" +
-                               "    journal-plugin-fallback {\n" +
-                               "         circuit-breaker {\n" +
-                               "            max-failures = 10\n" +
-                               "            call-timeout = 60s\n" +
-                               "            reset-timeout = 30s\n" +
-                               "         }\n" +
-                               "     }\n" +
-                               "     }\n" +
-                               "  }\n" +
-                               "}\n" +
-                               "\n" +
-                               "";
-       }
-       public static void main(String[] args)
-       {
-               AkkaConfig cfg;
-               try {
-                       System.out.println("testing clusternode config1");
-                       System.out.println("===========================");
-                       cfg = AkkaConfig.parse(getAkkaConfigClusterNodeText());
-                       System.out.println("succeeded: ");
-                       System.out.println(cfg.toString());
-                       System.out.println(String.format("found %d cluster nodes",cfg.getClusterConfig().getSeedNodes().size()));
-                       for(ClusterNodeInfo n : cfg.getClusterConfig().getSeedNodes())
-                       {
-                               System.out.println(n.toString());
-                       }
-               } catch (Exception e) {
-                       System.out.println("failed: "+e.getMessage());
-               }
-               try {
-                       System.out.println("testing singlenode config1");
-                       System.out.println("===========================");
-                       cfg = AkkaConfig.parse(getAkkaConfigSingleNodeText());
-                       System.out.println("succeeded: ");
-                       System.out.println(cfg.toString());
-               } catch (Exception e) {
-                       System.out.println("failed: "+e.getMessage());
-               }
-
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/ConfigTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/ConfigTest.java
deleted file mode 100644 (file)
index 9082ffc..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-import org.apache.log4j.Level;
-import org.opendaylight.mwtn.config.impl.AaiConfig;
-import org.opendaylight.mwtn.config.impl.DcaeConfig;
-import org.opendaylight.mwtn.config.impl.EsConfig;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration;
-import org.opendaylight.mwtn.config.impl.HtDevicemanagerConfiguration.IConfigChangedListener;
-import org.opendaylight.mwtn.config.impl.HtLogger;
-import org.opendaylight.mwtn.config.impl.PmConfig;
-
-public class ConfigTest {
-
-       public static void main(String[] args)
-       {
-               HtLogger.initConsole(Level.DEBUG);
-                       HtDevicemanagerConfiguration config = HtDevicemanagerConfiguration.getTestConfiguration();
-                       DcaeConfig c=config.getDcae();
-                       EsConfig c3=config.getEs();
-                       AaiConfig c4 = config.getAai();
-                       PmConfig c5 = config.getPm();
-                       System.out.println(c.toString());
-                       System.out.println(c3.toString());
-                       System.out.println(c4.toString());
-                       System.out.println(c5.toString());
-                       IConfigChangedListener listener = new IConfigChangedListener() {
-
-                               @Override
-                               public void onConfigChanged() {
-                                       System.out.println("sth changed");
-                                       AaiConfig c=AaiConfig.reload();
-                                       System.out.println(c.toString());
-                               }
-                       };
-                       System.out.println("start listening for changes");
-
-                       config.registerConfigChangedListener(listener );
-                       try {
-                               Thread.sleep(50000);
-                       } catch (InterruptedException e) {
-                               // TODO Auto-generated catch block
-                               e.printStackTrace();
-                       }
-                       config.unregisterConfigChangedListener(listener);
-                       System.out.println("finished");
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/ESWebAPITest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/ESWebAPITest.java
deleted file mode 100644 (file)
index 136190d..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-import java.io.IOException;
-
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.opendaylight.mwtn.base.database.HtDatabaseWebAPIClient;
-
-public class ESWebAPITest {
-
-       public static void main(String[] args)
-       {
-               HtDatabaseWebAPIClient client=new HtDatabaseWebAPIClient();
-               try {
-                       String response=client.sendRequest("/mwtn/mediator-server/_search", "GET", new JSONObject("{\"match\":{\"id\":id}}"));
-                       System.out.println(response);
-               } catch (JSONException | IOException e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               }
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/GeoConfigTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/GeoConfigTest.java
deleted file mode 100644 (file)
index e1703aa..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-import org.opendaylight.mwtn.config.impl.GeoConfig;
-
-public class GeoConfigTest {
-
-
-       private static String getClusterGeoConfigContent()
-       {
-return "\n" +
-               "lumina-geo-cluster {\n" +
-               "    primary_roles = [\n" +
-               "       \"member-1\",\"member-2\",\"member-3\"\n" +
-               "    ]\n" +
-               "    secondary_roles = [\n" +
-               "       \"member-4\",\"member-5\",\"member-6\"\n" +
-               "    ]\n" +
-               "    ip_roles_table = [\n" +
-               "\n" +
-               "       {\n" +
-               "role=\"member-1\"\n" +
-               "ip=\"zltcmtn23arbc01.2f0377.mtn23a.tci.att.com\"\n" +
-               "},\n" +
-               "{\n" +
-               "role=\"member-2\"\n" +
-               "ip=\"zltcmtn23arbc02.2f0377.mtn23a.tci.att.com\"\n" +
-               "},\n" +
-               "{\n" +
-               "role=\"member-3\"\n" +
-               "ip=\"zltcmtn23arbc03.2f0377.mtn23a.tci.att.com\"\n" +
-               "},\n" +
-               "{\n" +
-               "role=\"member-4\"\n" +
-               "ip=\"zltcmtn23brbc01.f84e7a.mtn23b.tci.att.com\"\n" +
-               "},\n" +
-               "{\n" +
-               "role=\"member-5\"\n" +
-               "ip=\"zltcmtn23brbc02.f84e7a.mtn23b.tci.att.com\"\n" +
-               "},\n" +
-               "{\n" +
-               "role=\"member-6\"\n" +
-               "ip=\"zltcmtn23brbc03.f84e7a.mtn23b.tci.att.com\"\n" +
-               "}\n" +
-               "    \n" +
-               "       ]\n" +
-               "}\n" +
-               "\n" +
-               "\n" +
-               "\n" +
-               "\n" +
-               "";
-       }
-       public static void main(String[] args)
-       {
-               try {
-                       System.out.println("testing clusternode geo config1");
-                       System.out.println("===========================");
-                       GeoConfig config = GeoConfig.parse(getClusterGeoConfigContent());
-                       System.out.println("succeeded: ");
-                       System.out.println(config.toString());
-                       System.out.println("primary roles:");
-                       System.out.println(config.getPrimaryRoles().toString());
-                       System.out.println("secondary roles:");
-                       System.out.println(config.getSecondaryRoles().toString());
-
-               } catch (Exception e) {
-                       System.out.println("failed: "+e.getMessage());
-               }
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/ResTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/ResTest.java
deleted file mode 100644 (file)
index e982782..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-import java.io.IOException;
-import java.util.List;
-
-import org.apache.log4j.Level;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.opendaylight.mwtn.base.internalTypes.Resources;
-import org.opendaylight.mwtn.config.impl.HtLogger;
-
-public class ResTest {
-
-       private static void testDuplicateKeyJSON()
-       {
-               try
-               {
-                       String str=Resources.getFileContent("/elasticsearch/index/mwtn/modelDescription/CoreModel-ForMicrowave.json");
-
-                       JSONObject o=new JSONObject(str) {
-
-                               @Override
-                               public JSONObject putOnce(String key, Object value) throws JSONException {
-
-
-                                               Object storedValue;
-                                               if (key != null && value != null) {
-                                                       if ((storedValue = this.opt(key)) != null ) {
-                                                               if(!storedValue.equals(value)) {                         //Only through Exception for different values with same key
-                                                                       //Replace
-                                                                       System.out.println("duplicate found");
-                                                                       this.remove(key);
-                                                                       this.put(key, value);
-
-                                                               } else
-                                                                       return this;
-                                                       }
-                                                       else
-                                                               this.put(key, value);
-                                               }
-                                               return this;
-                               }
-                       };
-                       System.out.println(o.toString());
-               }
-               catch(IOException err)
-               {
-                               err.printStackTrace();
-               }
-       }
-       public static void main(String[] args)
-       {
-               HtLogger.initConsole(Level.DEBUG);
-               JSONObject o=Resources.getJSONFile("/elasticsearch/index/sdnevents/sdneventsMapping.json");
-               System.out.println(o==null?"null":o.toString());
-
-               List<JSONObject> list=Resources.getJSONFiles("/elasticsearch/index", true);
-               System.out.println("found "+list.size()+" valid json files");
-
-               testDuplicateKeyJSON();
-
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/TestFileChangeNotification.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/TestFileChangeNotification.java
deleted file mode 100644 (file)
index a94b94f..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-
-
-import java.io.File;
-import java.io.IOException;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-
-public class TestFileChangeNotification {
-       /**
-        * Check every now and then that a certain file has not changed. If it has, then
-        * call the {@link #doOnChange} method.
-        *
-        * @author JunHo Yoon
-        * @since 3.1.1
-        */
-       public static abstract class FileWatchdog extends Thread {
-
-               private static final Logger LOGGER = LoggerFactory.getLogger(FileWatchdog.class);
-               /**
-                * The default delay between every file modification check, set to 60
-                * seconds.
-                */
-               public static final long DEFAULT_DELAY = 60000;
-               /**
-                * The name of the file to observe for changes.
-                */
-               private String filename;
-
-               /**
-                * The delay to observe between every check. By default set
-                * {@link #DEFAULT_DELAY}.
-                */
-               private long delay = DEFAULT_DELAY;
-
-               private File file;
-               private long lastModified = 0;
-               private boolean warnedAlready = false;
-               private boolean interrupted = false;
-
-               protected  FileWatchdog(String filename) {
-                       this.filename = filename;
-                       file = new File(filename);
-                       setDaemon(true);
-                       checkAndConfigure();
-               }
-
-               /**
-                * Set the delay to observe between each check of the file changes.
-                *
-                * @param delay
-                *            the frequency of file watch.
-                */
-               public  void setDelay(long delay) {
-                       this.delay = delay;
-               }
-
-               /**
-                * abstract method to be run when the file is changed.
-                */
-               protected abstract void doOnChange();
-
-               protected  void checkAndConfigure() {
-                       boolean fileExists;
-                       try {
-                               fileExists = file.exists();
-                       } catch (SecurityException e) {
-                               LOGGER.warn("Was not allowed to read check file existence, file:[" + filename + "].");
-                               interrupted = true; // there is no point in continuing
-                               return;
-                       }
-
-                       if (fileExists) {
-                               long l = file.lastModified(); // this can also throw a
-                               if (lastModified ==0) {
-                                       lastModified = l; // is very unlikely.
-                               }
-                               if (l > lastModified) { // however, if we reached this point this
-                                       lastModified = l; // is very unlikely.
-                                       doOnChange();
-                                       warnedAlready = false;
-                               }
-                       } else {
-                               if (!warnedAlready) {
-                                       LOGGER.debug("[" + filename + "] does not exist.");
-                                       warnedAlready = true;
-                               }
-                       }
-               }
-
-               @Override
-               public  void run() {
-                       while (!interrupted && !isInterrupted()) {
-                               try {
-                                       Thread.sleep(delay);
-                               } catch (InterruptedException e) {
-                               }
-                               checkAndConfigure();
-                       }
-               }
-       }
-
-       public static class SomeWatchFile extends FileWatchdog{
-
-             protected SomeWatchFile(String filename) {
-                   super(filename);
-                   this.setDelay(1000);
-               }
-
-               @Override
-               protected void doOnChange() {
-                   System.out.println("File has changed");
-               }
-       }
-
-    public static void main(String args[]) throws IOException {
-                   SomeWatchFile someWatchFile = new SomeWatchFile ("watchedFile.txt");
-                   someWatchFile.start();
-
-                   String fileName = "watchedFile.txt";
-                   File tempFile = new File(fileName);
-                   tempFile.createNewFile();
-
-                   System.out.println("1. Press F5 in eclipse to see and modify 2. Press enter to exit");
-                   System.in.read();
-                   System.out.println("Remove file "+fileName);
-                   tempFile.delete();
-               }
-
-
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/org/opendaylight/mwtn/base/database/DBPluginExtractTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/test/org/opendaylight/mwtn/base/database/DBPluginExtractTest.java
deleted file mode 100644 (file)
index 87e3a11..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-package org.opendaylight.mwtn.base.database;
-
-import org.apache.log4j.Level;
-import org.opendaylight.mwtn.base.database.HtDatabaseNode;
-import org.opendaylight.mwtn.config.impl.HtLogger;
-
-public class DBPluginExtractTest {
-
-       public static void main(String[] args)
-       {
-               HtLogger.initConsole(Level.DEBUG);
-               HtDatabaseNode.checkorcreateplugins("/home/herbert/test");
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/yang/devicemanager-impl.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/impl/src/main/yang/devicemanager-impl.yang
deleted file mode 100644 (file)
index 02933d0..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-module devicemanager-impl {
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:devicemanager:impl";
-    prefix "devicemanager-impl";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    import opendaylight-md-sal-binding { prefix mdsal; revision-date 2013-10-28;}
-    import devicemanager-api { prefix devicemanager-api; revision-date 2017-03-17;}
-
-    description
-        "Device Manager Impl Module";
-
-    revision "2017-03-17" {
-        description
-            "Initial revision";
-    }
-
-    identity devicemanager-impl {
-        base config:module-type;
-        config:provided-service devicemanager-api:devicemanager-api;
-        config:java-name-prefix DeviceManagerImpl;
-    }
-
-    augment "/config:modules/config:module/config:configuration" {
-        case devicemanager-impl {
-            when "/config:modules/config:module/config:type = 'devicemanager-impl'";
-            container broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity mdsal:binding-broker-osgi-registry;
-                    }
-                }
-            }
-
-
-            container notification-service {
-               uses config:service-ref {
-                   refine type {
-                       mandatory true;
-                       config:required-identity mdsal:binding-notification-service;
-                   }
-               }
-            }
-
-            container data-broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory false;
-                        config:required-identity mdsal:binding-async-data-broker;
-                    }
-                }
-            }
-
-        }
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemanager/pom.xml
deleted file mode 100644 (file)
index 2fced76..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2015 Wipro Ltd. All rights reserved. This program and
-    the accompanying materials are made available under the terms of the Eclipse
-    Public License v1.0 which accompanies this distribution, and is available
-    at http://www.eclipse.org/legal/epl-v10.html INTERNAL -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.opendaylight.odlparent</groupId>
-        <artifactId>odlparent</artifactId>
-        <version>1.8.1-Carbon</version>
-        <relativePath />
-    </parent>
-
-    <groupId>org.opendaylight.mwtn</groupId>
-    <artifactId>devicemanager</artifactId>
-    <name>devicemanager</name>
-    <version>0.5.1-SNAPSHOT</version>
-    <packaging>pom</packaging>
-
-    <modules>
-        <module>api</module>
-        <module>impl</module>
-    </modules>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-deploy-plugin</artifactId>
-                <configuration>
-                    <skip>true</skip>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-install-plugin</artifactId>
-                <configuration>
-                    <skip>true</skip>
-                </configuration>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.8</source>
-                    <target>1.8</target>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-</project>
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/pom.xml
deleted file mode 100644 (file)
index 6b9fc65..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.opendaylight.mwtn</groupId>
-    <artifactId>config-parent</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
-    <relativePath>../commons/config-parent</relativePath>
-  </parent>
-
-  <artifactId>devicemodel</artifactId>
-  <name>${prefix} ${project.artifactId}</name>
-  <packaging>bundle</packaging>
-  <properties>
-    <maven.javadoc.skip>true</maven.javadoc.skip>
-  </properties>
-
-  <dependencies>
-    <dependency>
-         <groupId>org.opendaylight.mdsal.model</groupId>
-         <artifactId>ietf-topology</artifactId>
-         <!-- <version>${ietf.topology.version}</version> -->
-       </dependency>
-    <dependency>
-      <groupId>org.opendaylight.mdsal.model</groupId>
-      <artifactId>yang-ext</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>config-api</artifactId>
-    </dependency>
-  </dependencies>
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-jar-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
-          </instructions>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreFoundationModule-StateModel@2016-08-09.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreFoundationModule-StateModel@2016-08-09.yang
deleted file mode 100644 (file)
index b31eaad..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-module CoreModel-CoreFoundationModule-StateModel {
-    namespace "uri:onf:CoreModel-CoreFoundationModule-StateModel";
-    prefix CoreModel-CoreFoundationModule-StateModel;
-
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-08-09 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    grouping State_Pac {
-        description "Provides general state attributes.
-            lifecycle:Preliminary";
-        leaf operationalState {
-            type OperationalState;
-            config false;
-            description "The operational state is used to indicate whether or not the resource is installed and working";
-        }
-        leaf administrativeControl {
-            type AdministrativeControl;
-            description "The administrativeControl state provides control of the availability of specific resources without modification to the provisioning of those resources.
-                The value is the current control target. The actual administrativeState may or may not be at target.";
-        }
-        leaf administrativeState {
-            type AdministrativeState;
-            config false;
-            description "Shows whether or not the client has permission to use or has a prohibition against using the resource.
-                The administrative state expresses usage permissions for specific resources without modification to the provisioning of those resources.";
-        }
-        leaf lifecycleState {
-            type LifecycleState;
-            description "Used to track the planned deployment, allocation to clients and withdrawal of resources. ";
-        }
-    }
-    typedef OperationalState {
-        description "The possible values of the operationalState.
-            lifecycle:Preliminary";
-        type enumeration {
-            enum DISABLED;
-            enum ENABLED;
-        }
-    }
-    typedef AdministrativeState {
-        description "The possible values of the administrativeState.
-            lifecycle:Preliminary";
-        type enumeration {
-            enum LOCKED;
-            enum UNLOCKED;
-        }
-    }
-    typedef AdministrativeControl {
-        description "Reflects the current control action when the entity is not in the desired state.
-            The possible values of the current target administrative state.
-            lifecycle:Experimental";
-        type enumeration {
-            enum UNLOCK;
-            enum LOCK_PASSIVE;
-            enum LOCK_ACTIVE;
-            enum LOCK_IMMEDIATE;
-        }
-    }
-    typedef ExtendedAdminState {
-        description "Possible extentions to AdministrativeState
-            lifecycle:Experimental";
-        type enumeration {
-            enum LOCKED;
-            enum UNLOCKED;
-            enum SHUTTING_DOWN_ACTIVE;
-            enum SHUTTING_DOWN_PASSIVE;
-        }
-    }
-    typedef LifecycleState {
-        description "The possible values of the lifecycleState.
-            lifecycle:Experimental";
-        type enumeration {
-            enum PLANNED;
-            enum POTENTIAL;
-            enum INSTALLED;
-            enum PENDING_REMOVAL;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages@2016-07-10.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages@2016-07-10.yang
deleted file mode 100644 (file)
index 4c4e2e6..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-module CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages {
-    namespace "uri:onf:CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages";
-    prefix CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages;
-
-    import CoreModel-CoreFoundationModule-StateModel {
-        prefix CoreModel-CoreFoundationModule-StateModel;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-07-10 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    grouping Name {
-        description "Name: A property of an entity with a value that is unique in some namespace but may change during the life of the entity. A name carries no semantics with respect to the purpose of the entity.";
-        list nameList {
-            description "List of names.";
-            key 'valueName';
-            config true;
-            ordered-by system;
-            uses NameAndValue;
-            min-elements 1;
-        }
-    }
-    grouping GlobalClass {
-        description "Represents a type of thing (an Entity) that has instances which can exist in their own right (independently of any others).
-            Entity: Has identity, defined boundary, properties, functionality and lifecycle in a global context.
-            (consider in the context of an Object Class: (usage) The representation of a thing that may be an entity or an inseparable Entity Feature)";
-        uses Name;
-        uses Label;
-        uses Extension;
-        uses CoreModel-CoreFoundationModule-StateModel:State_Pac;
-        list localIdList {
-            description "An identifier that is unique in the context of some scope that is less than the global scope.
-                (consider in the context of Identifier: A property of an entity/role with a value that is unique within an identifier space, where the identifier space is itself unique, and immutable. The identifier therefore represents the identity of the entity/role. An identifier carries no semantics with respect to the purpose of the entity.)";
-            key 'valueName';
-            config true;
-            ordered-by system;
-            uses NameAndValue;
-        }
-        leaf uuid {
-            type UniversalId;
-            description "UUID: An identifier that is universally unique
-                (consider in the context of Identifier: A property of an entity/role with a value that is unique within an identifier space, where the identifier space is itself globally unique, and immutable. An identifier carries no semantics with respect to the purpose or state of the entity)";
-        }
-    }
-    grouping LocalClass {
-        description "A LocalClass represents a Feature of an Entity. It is inseparable from a GlobalClass but is a distinct feature of that GlobalClass such that the instances of LocalClass are able to have associations to other instances..
-            Feature of an Entity: An inseparable, externally distinguishable part of an entity.
-            The mandatory LocalId of the LocalClass instance is unique in the context of the GlobalClass from which it is inseparable.
-            (consider in the context of an Object Class: (usage) The representation of a thing that may be an entity or an inseparable feature of an entity)
-            ";
-        uses Name;
-        uses Label;
-        uses Extension;
-        uses CoreModel-CoreFoundationModule-StateModel:State_Pac;
-        list localIdList {
-            description "An identifier that is unique in the context of some scope that is less than the global scope.
-                (consider in the context of Identifier: A property of an entity/role with a value that is unique within an identifier space, where the identifier space is itself unique, and immutable. The identifier therefore represents the identity of the entity/role. An identifier carries no semantics with respect to the purpose of the entity.)";
-            key 'valueName';
-            config true;
-            ordered-by system;
-            uses NameAndValue;
-            min-elements 1;
-        }
-        leaf uuid {
-            type UniversalId;
-            description "A global identifier for the LocalClass, which is used as reference.";
-        }
-    }
-    grouping Label {
-        description "A property of an entity with a value that is not expected to be unique and is allowed to change. A label carries no semantics with respect to the purpose of the entity and has no effect on the entity behavior or state.";
-        list labelList {
-            description "List of labels.";
-            key 'valueName';
-            config true;
-            ordered-by system;
-            uses NameAndValue;
-        }
-    }
-    grouping Extension {
-        description "Extension provides an opportunity to define properties not declared in the class that extend the class enabling a realization with simple ad-hoc extension of standard classes to be conformant.";
-        list extensionList {
-            description "List of simple name-value extentions";
-            key 'valueName';
-            config true;
-            ordered-by system;
-            uses NameAndValue;
-        }
-    }
-    grouping UniversalIdAuthority {
-        description "Represents the authority that controls the allocation of UUIDs.
-            lifecycle:Preliminary";
-        leaf uuid {
-            type UniversalId;
-            description "The UUID for the UUID authority.";
-        }
-    }
-    grouping NameAndValueAuthority {
-        description "Represents the authority that controls the legal valuse for the names and values of a name/value attribute.
-            lifecycle:Preliminary";
-        leaf uuid {
-            type UniversalId;
-            description "The UUID for the NameValueAuthority.";
-        }
-    }
-    grouping ConditionalPackage {
-        description "The base class for conditional packages.
-            lifecycle:Experimental";
-        uses Extension;
-        uses Label;
-    }
-    grouping NameAndValue {
-        description "A scoped name-value pair";
-        leaf valueName {
-            type string;
-            description "The name of the value. The value need not have a name.";
-        }
-        leaf value {
-            type string;
-            description "The value";
-        }
-    }
-    typedef UniversalId {
-        description "The univeral ID value where the mechanism for generation is defned by some authority not directly referenced in the structure.";
-        type string;
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreFoundationModule-TypeDefinitions@2016-07-01.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreFoundationModule-TypeDefinitions@2016-07-01.yang
deleted file mode 100644 (file)
index f12c3af..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-module CoreModel-CoreFoundationModule-TypeDefinitions {
-    namespace "uri:onf:CoreModel-CoreFoundationModule-TypeDefinitions";
-    prefix CoreModel-CoreFoundationModule-TypeDefinitions;
-
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-07-01 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    typedef DateAndTime {
-        description "This primitive type defines the date and time according to the following structure:
-            'yyyyMMddhhmmss.s[Z|{+|-}HHMm]' where:
-            yyyy    '0000'..'9999'    year
-            MM        '01'..'12'            month
-            dd        '01'..'31'            day
-            hh        '00'..'23'            hour
-            mm        '00'..'59'            minute
-            ss        '00'..'59'            second
-            s        '.0'..'.9'            tenth of second (set to '.0' if EMS or NE cannot support this granularity)
-            Z        'Z'                    indicates UTC (rather than local time)
-            {+|-}    '+' or '-'            delta from UTC
-            HH        '00'..'23'            time zone difference in hours
-            Mm        '00'..'59'            time zone difference in minutes.";
-        type string;
-    }
-    typedef BitString {
-        description "This primitive type defines a bit oriented string.
-            The size of the BitString will be defined in the valueRange property of the attribute; according to ASN.1 (X.680).
-            The semantic of each bit position will be defined in the Documentation field of the attribute.";
-        type string;
-    }
-    typedef Real {
-        description "This primitive type maps to the 'realnumber' defined in Recommendation X.680.";
-        type string;
-    }
-    typedef PrintableString {
-        description "A string that only includes printable characters";
-        type string;
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreNetworkModule-ObjectClasses@2016-08-11.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreNetworkModule-ObjectClasses@2016-08-11.yang
deleted file mode 100644 (file)
index 4cfd410..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-module CoreModel-CoreNetworkModule-ObjectClasses {
-    namespace "uri:onf:CoreModel-CoreNetworkModule-ObjectClasses";
-    prefix CoreModel-CoreNetworkModule-ObjectClasses;
-
-    import CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages {
-        prefix CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages;
-    }
-    import CoreModel-CoreNetworkModule-TypeDefinitions {
-        prefix CoreModel-CoreNetworkModule-TypeDefinitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-08-11 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    grouping ForwardingDomain {
-        description "The ForwardingDomain (FD) object class models the topological component which represents the opportunity to enable forwarding (of specific transport characteristic information at one or more protocol layers) between points represented by the LTP in the model.
-            The FD object provides the context for instructing the formation, adjustment and removal of FCs and hence offers the potential to enable forwarding. 
-            The LTPs available are those defined at the boundary of the FD.
-            At a lowere level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). 
-            Note that an NE can encompass multiple switch matrices (FDs) and the FD representing the switch matrix can be further partitioned.
-            ";
-        uses CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:GlobalClass;
-        leaf-list layerProtocolNameList {
-            description "One or more protocol layers at which the FD represents the opportunity to enable forwarding between LTP that bound it.";
-            ordered-by system;
-            type CoreModel-CoreNetworkModule-TypeDefinitions:LayerProtocolName;
-            min-elements 1;
-        }
-        leaf-list _lowerLevelFdRefList {
-            description "The FD object class supports a recursive aggregation relationship (HigherLevelFdEncompassesLowerLevelFds) such that the internal construction of an FD can be exposed as multiple lower level FDs and associated Links (partitioning).
-The aggregated FDs and Links form an interconnected topology that provides and describes the capability of the aggregating FD.
-Note that the model actually represents aggregation of lower level FDs into higher level FDs as views rather than FD partition, and supports multiple views. 
-Aggregation allow reallocation of capacity from lower level FDs to different higher level FDs as if the network is reorganized  (as the association is aggregation not composition).";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_fdRefList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-        }
-        leaf-list _fcRefList {
-            description "An FD contains one or more FCs. A contained FC connects LTPs that bound the FD.";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:ForwardingConstruct/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-        }
-        leaf-list _ltpRefList {
-            description "An instance of FD is associated with zero or more LTP objects. 
-The LTPs that bound the FD provide capacity for forwarding.";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-        }
-    }
-    list ForwardingConstruct {
-        key 'uuid';
-        config true;
-        ordered-by system;
-        uses CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:GlobalClass;
-    }
-    grouping ForwardingConstruct {
-        description "The ForwardingConstruct (FC) object class models enabled potential for forwarding between two or more LTPs at a particular specific layerProtocol.
-            Like the LTP the FC supports any transport protocol including all circuit and packet forms.
-            It is used to effect forwarding of transport characteristic (layer protocol) information.
-            An FC can be in only one FD.
-            The ForwardingConstruct is a Forwarding entity.
-            At a low level of the recursion, a FC represents a cross-connection within an NE. It may also represent a fragment of a cross-connection under certain circumstances.
-            The FC object can be used to represent many different structures including point-to-point (P2P), point-to-multipoint (P2MP), rooted-multipoint (RMP) and multipoint-to-multipoint (MP2MP) bridge and selector structure for linear, ring or mesh protection schemes.";
-        uses CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:GlobalClass;
-        leaf layerProtocolName {
-            type CoreModel-CoreNetworkModule-TypeDefinitions:LayerProtocolName;
-            description "The layerProtocol at which the FC enables potential for forwarding.";
-        }
-        leaf-list _lowerLevelFcRefList {
-            description "An FC object supports a recursive aggregation relationship such that the internal construction of an FC can be exposed as multiple lower level FC objects (partitioning).
-Aggregation is used as for the FD to allow changes in hierarchy.
-";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:ForwardingConstruct/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-        }
-        list _fcPortList {
-            description "The association of the FC to LTPs is made via FcPorts (essentially the ports of the FC).";
-            key 'uuid';
-            config true;
-            ordered-by system;
-            uses FcPort;
-            min-elements 2;
-        }
-        list _fcSwitchList {
-            description "If an FC exposes protection (having two FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects.
-                The arrangement of switches for a particular instance is described by a referenced FcSpec";
-            key 'uuid';
-            config true;
-            ordered-by system;
-            uses FcSwitch;
-        }
-        leaf forwardingDirection {
-            type CoreModel-CoreNetworkModule-TypeDefinitions:ForwardingDirection;
-            description "The directionality of the ForwardingConstruct. 
-                Is applicable to simple ForwardingConstructs where all FcPorts are BIDIRECTIONAL (the ForwardingConstruct will be BIDIRECTIONAL) or UNIDIRECTIONAL (the ForwardingConstruct will be UNIDIRECTIONAL). 
-                Is not present in more complex cases.";
-        }
-    }
-    container NetworkElement {
-        presence "Enables ONF CoreModel support";
-        description "The Network Element (NE) object class represents a network element (traditional NE) in the data plane.
-            A data plane network element is essentially a consolidation of capabilities that can be viewed and controlled through a 'single' management-control port.
-            In the direct interface from an SDN controller to a network element in the data plane, the NetworkElement object defines the scope of control for the resources within the network element
-            For example internal transfer of user information between the external terminations (ports of the NE), encapsulation, multiplexing/demultiplexing, and OAM functions, etc. 
-            The NetworkElement provides the scope of the naming space for identifying objects representing the resources within the data plane network element.
-            NE is really a product bundling or some view of management scope, management access, session. 
-            The NE is not directly part of topology but brings meaning to the FD context and the LTP context (and hence the links). 
-            lifecycle:LikelyToChange";
-        config true;
-        uses CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:GlobalClass;
-        list _fdRefList {
-            description "Represents the FD that is completely within the boundary of the NE.
-                At a low level of recursion, an FD (within a network element (NE)) represents a switch matrix (i.e., a fabric). 
-                Note that an NE can encompass multiple switch matrices (FDs) and the FD representing the switch matrix can be further partitioned.
-                Where an FD is referenced by the NeEncompassesFd association, any FDs that it encompasses (i.e., that are associated with it by HigherLevelFdEncompassesLowerLevelFds), must also be encompassed by the NE and hence must have the NeEncompassesFd association.
-                ";
-            key 'uuid';
-            config true;
-            ordered-by system;
-            uses ForwardingDomain;
-        }
-        list _ltpRefList {
-            description "An NE has associated LTPs that are at its boundary.
-                The NeEncompassesFd association occurs for FDs that are within the bounds of the NetworkElement definition such that the FD is bounded by LTPs, all of which are on the boundary of the NetworkElement or are within the NetworkElement. 
-                An LTP can be independent of an NE.";
-            key 'uuid';
-            config true;
-            ordered-by system;
-            uses LogicalTerminationPoint;
-        }
-    }
-    grouping FcPort {
-        description "The association of the FC to LTPs is made via FcPorts.
-            The FcPort object class models the access to the FC function. 
-            The traffic forwarding between the associated FcPorts of the FC depends upon the type of FC and may be associated with FcSwitch object instances.  
-            In cases where there is resilience the FcPort may convey the resilience role of the access to the FC. 
-            It can represent a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.
-            The FcPort replaces the Protection Unit of a traditional protection model. 
-            The ForwadingConstruct can be considered as a component and the FcPort as a Port on that component";
-        uses CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:LocalClass;
-        leaf-list _ltpRefList {
-            description "The FcPort may be associated with more than one LTP when the FcPort is bidirectional and the LTPs are unidirectional.
-Multiple Ltp
-- Bidirectional FcPort to two Uni Ltps
-Zero Ltp
-- BreakBeforeMake transition
-- Planned Ltp not yet in place
-- Off-network LTP referenced through other mechanism";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            max-elements 2;
-        }
-        leaf role {
-            type CoreModel-CoreNetworkModule-TypeDefinitions:PortRole;
-            description "Each FcPort of the FC has a role (e.g., working, protection, protected, symmetric, hub, spoke, leaf, root)  in the context of the FC with respect to the FC function. ";
-        }
-        leaf fcPortDirection {
-            type CoreModel-CoreNetworkModule-TypeDefinitions:PortDirection;
-            description "The orientation of defined flow at the FcPort.";
-        }
-    }
-    grouping LayerProtocol {
-        description "Each transport layer is represented by a LayerProtocol (LP) instance. The LayerProtocol instances it can be used for controlling termination and monitoring functionality. It can also be used for controlling the adaptation (i.e. encapsulation and/or multiplexing of client signal), tandem connection monitoring, traffic conditioning and/or shaping functionality at an intermediate point along a connection. Where the client - server relationship is fixed 1:1 and immutable, the layers can be encapsulated in a single LTP instance. Where the is a n:1 relationship between client and server, the layers must be split over two separate instances of LTP. ";
-        uses CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:LocalClass;
-        leaf layerProtocolName {
-            type CoreModel-CoreNetworkModule-TypeDefinitions:LayerProtocolName;
-            description "Indicate the specific layer-protocol described by the LayerProtocol entity.";
-        }
-        leaf configuredClientCapacity {
-            type string;
-            description "Provides a summarized view of the client capacity that is configurable for use.
-                Note the cleint LTP association should provide all necessary detail hence this attribute is questionable.";
-        }
-        leaf lpDirection {
-            type CoreModel-CoreNetworkModule-TypeDefinitions:TerminationDirection;
-            description "The overall directionality of the LP. 
-                - A BIDIRECTIONAL LP will have some SINK and/or SOURCE flowss.
-                - A SINK LP can only contain elements with SINK flows or CONTRA_DIRECTION_SOURCE flows
-                - A SOURCE LP can only contain SOURCE flows or CONTRA_DIRECTION_SINK flows";
-        }
-        leaf terminationState {
-            type boolean;
-            description "Indicates whether the layer is terminated and if so how.";
-        }
-    }
-    grouping LogicalTerminationPoint {
-        description "The LogicalTerminationPoint (LTP) object class encapsulates the termination and adaptation functions of one or more transport layers. 
-            The structure of LTP supports all transport protocols including circuit and packet forms.";
-        uses CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:GlobalClass;
-        leaf-list _serverLtpRefList {
-            description "References contained LTPs representing servers of this LTP in an inverse multiplexing configuration (e.g. VCAT).";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-        }
-        leaf-list _clientLtpRefList {
-            description "References contained LTPs representing client traffic of this LTP for normal cases of multiplexing.";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-        }
-        list _lpList {
-            description "Ordered list of LayerProtocols that this LTP is comprised of where the first entry in the list is the lowest server layer (e.g. physical)";
-            key 'uuid';
-            config true;
-            ordered-by system;
-            uses LayerProtocol;
-            min-elements 1;
-        }
-        leaf _connectedLtpRef {
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            description "Applicable in a simple context where two LTPs are associated via a non-adjustable enabled forwarding.
-                Reduces clutter removing the need for two additional LTPs and an FC with a pair of FcPorts.";
-        }
-        leaf _peerLtpRef {
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            description "References contained LTPs representing the reversal of orientation of flow where two LTPs are associated via a non-adjustable enabled forwarding and where the referenced LTP is fully dependent on the this LTP.";
-        }
-        leaf-list physicalPortReference {
-            description "One or more text labels for the unmodelled physical port associated with the LTP.
-In many cases there is no associated physical port";
-            ordered-by system;
-            type string;
-        }
-        leaf-list _ltpRefList {
-            description "References one or more LTPs in other views that represent this LTP. 
-The referencing LTP is the rovider of capability.";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-        }
-        leaf ltpDirection {
-            type CoreModel-CoreNetworkModule-TypeDefinitions:TerminationDirection;
-            description "The overall directionality of the LTP. 
-                - A BIDIRECTIONAL LTP must have at least some LPs that are BIDIRECTIONAL but may also have some SINK and/or SOURCE LPs.
-                - A SINK LTP can only contain SINK LPs
-                - A SOURCE LTP can only contain SOURCE LPs";
-        }
-    }
-    grouping FcSwitch {
-        description "The FcSwitch object class models the switched forwarding of traffic (traffic flow) between FcPorts and is present where there is protection functionality in the FC. 
-            If an FC exposes protection (having two FcPorts that provide alternative identical inputs/outputs), the FC will have one or more associated FcSwitch objects to represent the alternative flow choices visible at the edge of the FC.
-            The FC switch represents and defines a protection switch structure encapsulated in the FC. 
-            Essentially performs the functoion of the Protection Group in a traditional model. 
-            Associates to 2 or more FcPorts each playing the role of a Protection Unit. 
-            One or more protection FcPorts (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) FcPorts where eith protection or working can feed one or more protected FcPort.
-            May be used in revertive or non-revertive (symmetric) mode. 
-            When in revertive mode may define waitToRestore time.
-            May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as  1+1 ane 1:1).. 
-            May be lockout (prevented from switching), force switched or manual switched.
-            Will indicate switch state and change of state.";
-        uses CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:LocalClass;
-        leaf holdOffTime {
-            type int32;
-            description "This attribute indicates the time, in seconds, between declaration of unacceptable quality of signal on the currently selected FcPort, and the initialization of the protection switching algorithm. ";
-        }
-        leaf waitToRestoreTime {
-            type int32;
-            description "If the protection system is revertive, this attribute specifies the amount of time, in seconds, to wait after the preferred FcPort returns to an acceptable state of operaion (e.g a fault has cleared) before restoring traffic to that preferred FcPort. ";
-        }
-        leaf protType {
-            type CoreModel-CoreNetworkModule-TypeDefinitions:ProtectionType;
-            description "Indicates the protection scheme that is used for the ProtectionGroup.";
-        }
-        leaf operType {
-            type CoreModel-CoreNetworkModule-TypeDefinitions:OperType;
-            description "This attribute whether or not the protection scheme is revertive or non-revertive. ";
-        }
-        leaf-list _selectedFcPortRefList {
-            description "Indicates which points are selected by the switch.";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:ForwardingConstruct/CoreModel-CoreNetworkModule-ObjectClasses:_fcPortList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            min-elements 1;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreNetworkModule-TypeDefinitions@2016-07-10.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/CoreModel-CoreNetworkModule-TypeDefinitions@2016-07-10.yang
deleted file mode 100644 (file)
index 5d57b95..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-module CoreModel-CoreNetworkModule-TypeDefinitions {
-    namespace "uri:onf:CoreModel-CoreNetworkModule-TypeDefinitions";
-    prefix CoreModel-CoreNetworkModule-TypeDefinitions;
-
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-07-10 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    typedef OperType {
-        description "The operation type associated with the protection mechanism (either non-revertive or revertive).";
-        type enumeration {
-            enum REVERTIVE;
-            enum NON-REVERTIVE;
-        }
-    }
-    typedef LayerProtocolName {
-        description "Provides a controlled list of layer protocol names and indicates the naming authority.
-            Note that it is expected that attributes will be added to this structure to convey the naming authority name, the name of the layer protocol using a human readable string and any particular standard reference.
-            Layer protocol names include:
-            -    Layer 1 (L1): OTU, ODU
-            -    Layer 2 (L2): Carrier Grade Ethernet (ETY, ETH), MPLS-TP (MT)
-            lifecycle:Preliminary";
-        type string;
-    }
-    typedef PortRole {
-        description "The role of a port in the context of the function of the forwarding entity that it bounds
-            lifecycle:Preliminary";
-        type string;
-    }
-    typedef PortDirection {
-        description "The orientation of flow at the Port of a Forwarding entity";
-        type enumeration {
-            enum BIDIRECTIONAL;
-            enum INPUT;
-            enum OUTPUT;
-            enum UNIDENTIFIED_OR_UNKNOWN;
-        }
-    }
-    typedef ForwardingDirection {
-        description "The directionality of a Forwarding entity.";
-        type enumeration {
-            enum BIDIRECTIONAL;
-            enum UNIDIRECTIONAL;
-            enum UNDEFINED_OR_UNKNOWN;
-        }
-    }
-    typedef TerminationDirection {
-        description "The directionality of a termination entity";
-        type enumeration {
-            enum BIDIRECTIONAL;
-            enum SINK;
-            enum SOURCE;
-            enum UNDEFINED_OR_UNKNOWN;
-        }
-    }
-    typedef ExtendedTerminationDirection {
-        description "Extended to include contra-direction considerations. Only applies to LP and elements of LP not to LTP??
-            lifecycle:Experimental";
-        type enumeration {
-            enum BIDIRECTIONAL;
-            enum SINK;
-            enum SOURCE;
-            enum UNDEFINED_OR_UNKNOWN;
-            enum CONTRA_DIRECTION_SINK;
-            enum CONTRA_DIRECTION_SOURCE;
-        }
-    }
-    typedef ProtectionType {
-        description "Identifies the type of rotection of an FcSwitch.
-            lifecycle:Experimental";
-        type string;
-    }
-    typedef TerminationState {
-        description "Provides support for the range of behaviours and specific states that an LP can take with respect to termination of the signal.
-            Indicates to what degree the LayerTermination is terminated.
-            lifecycle:Experimental";
-        type enumeration {
-            enum LP_CAN_NEVER_TERMINATE;
-            enum LT_NOT_TERMINATED;
-            enum TERMINATED_SERVER_TO_CLIENT_FLOW;
-            enum TERMINATED_CLIENT_TO_SERVER_FLOW;
-            enum TERMINATED_BIDIRECTIONAL;
-            enum LT_PERMENANTLY_TERMINATED;
-            enum TERMINATION_STATE_UNKNOWN;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Data_Types@2016-07-10.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Data_Types@2016-07-10.yang
deleted file mode 100644 (file)
index cc239d8..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-module G_874_1_model-Imported_Data_Types {
-    namespace "uri:onf:G_874_1_model-Imported_Data_Types";
-    prefix G_874_1_model-Imported_Data_Types;
-
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        '<p>Version 2.02; outcome of the 10/2013 Nuremberg meeting.<br>Version 2.03; updates for Geneva 03-2014<br>Version 2.04; updates for Shanghai 09-2014<br>Version 2.05; input to Geneva 11-2014<br>Version 2.06; output from Geneva 11-2014<br>Version 2.07; using OpenProfile 3-2015<br>Version 2.08; output from Geneva 06-2015</p>';
-
-    revision 2016-07-10 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    typedef ObjectInstance {
-        type string;
-    }
-    typedef Name {
-        type string;
-    }
-    typedef ObjectIdentifier {
-        type string;
-    }
-    typedef GeneralizedTime {
-        type string;
-    }
-    typedef TimePeriod {
-        description "This primitive Type is imported from X.739.";
-        type string;
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Information_Object_Classes-Q_822@2016-08-11.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Information_Object_Classes-Q_822@2016-08-11.yang
deleted file mode 100644 (file)
index c61ce6f..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-module G_874_1_model-Imported_Information_Object_Classes-Q_822 {
-    namespace "uri:onf:G_874_1_model-Imported_Information_Object_Classes-Q_822";
-    prefix G_874_1_model-Imported_Information_Object_Classes-Q_822;
-
-    import G_874_1_model-Imported_Information_Object_Classes-X_739 {
-        prefix G_874_1_model-Imported_Information_Object_Classes-X_739;
-    }
-    import G_874_1_model-Imported_Information_Object_Classes-X_721 {
-        prefix G_874_1_model-Imported_Information_Object_Classes-X_721;
-    }
-    import CoreModel-CoreFoundationModule-TypeDefinitions {
-        prefix CoreModel-CoreFoundationModule-TypeDefinitions;
-    }
-    import G_874_1_model-Type_Definitions {
-        prefix G_874_1_model-Type_Definitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-08-11 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-    grouping Q_822_CurrentData {
-        uses G_874_1_model-Imported_Information_Object_Classes-X_739:X_739_Scanner;
-        leaf suspectIntervalFlag {
-            type boolean;
-            description "This attribute is used to indicate that the performance data for the current period may not be reliable. Some reasons for this to occur are:- Suspect data were detected by the actual resource doing data collection.- Transition of the administrativeState attribute to/from the 'lock' state.- Transition of the operationalState to/from the 'disabled' state.- Scheduler setting that inhibits the collection function.- The performance counters were reset during the interval.- The currentData (or subclass) object instance was created during the monitoring period.";
-            default false;
-        }
-        leaf elapsedTime {
-            type int32;
-        }
-    }
-    grouping Q_822_HistoryData {
-        uses G_874_1_model-Imported_Information_Object_Classes-X_721:X_721_Top;
-        leaf historyDataId {
-            type string;
-        }
-        leaf periodEndTime {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-        }
-        leaf granularityPeriod {
-            type G_874_1_model-Type_Definitions:GranularityPeriodType;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Information_Object_Classes-X_721@2016-07-10.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Information_Object_Classes-X_721@2016-07-10.yang
deleted file mode 100644 (file)
index d2f9f6e..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-module G_874_1_model-Imported_Information_Object_Classes-X_721 {
-    namespace "uri:onf:G_874_1_model-Imported_Information_Object_Classes-X_721";
-    prefix G_874_1_model-Imported_Information_Object_Classes-X_721;
-
-    import G_874_1_model-Imported_Data_Types {
-        prefix G_874_1_model-Imported_Data_Types;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-07-10 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    grouping X_721_Top {
-        description "This is the top level of managed object class hierarchy and every other managed object class is a specialization of either this generic class (top) or a specialization of subclass of top. The parameter miscellaneousError is to be used when a processing failure has occurred and the error condition encountered does not match any of object's defined specific error types.";
-        leaf objectClass {
-            type G_874_1_model-Imported_Data_Types:ObjectIdentifier;
-            description "ObjectClass ::= CHOICE{    globalForm    [0] OBJECT IDENTIFIER,
-                localForm    [1] INTEGER}";
-        }
-        leaf nameBinding {
-            type G_874_1_model-Imported_Data_Types:ObjectIdentifier;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Information_Object_Classes-X_739@2016-07-10.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Imported_Information_Object_Classes-X_739@2016-07-10.yang
deleted file mode 100644 (file)
index 72a92e9..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-module G_874_1_model-Imported_Information_Object_Classes-X_739 {
-    namespace "uri:onf:G_874_1_model-Imported_Information_Object_Classes-X_739";
-    prefix G_874_1_model-Imported_Information_Object_Classes-X_739;
-
-    import G_874_1_model-Imported_Information_Object_Classes-X_721 {
-        prefix G_874_1_model-Imported_Information_Object_Classes-X_721;
-    }
-    import G_874_1_model-Type_Definitions {
-        prefix G_874_1_model-Type_Definitions;
-    }
-    import CoreModel-CoreFoundationModule-StateModel {
-        prefix CoreModel-CoreFoundationModule-StateModel;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-07-10 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    grouping X_739_Scanner {
-        uses G_874_1_model-Imported_Information_Object_Classes-X_721:X_721_Top;
-        leaf scannerId {
-            type string;
-        }
-        leaf granularityPeriod {
-            type G_874_1_model-Type_Definitions:GranularityPeriodType;
-        }
-        leaf administrativeState {
-            type CoreModel-CoreFoundationModule-StateModel:AdministrativeState;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Object_Classes@2016-07-10.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Object_Classes@2016-07-10.yang
deleted file mode 100644 (file)
index 32b3e63..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-module G_874_1_model-Object_Classes {
-    namespace "uri:onf:G_874_1_model-Object_Classes";
-    prefix G_874_1_model-Object_Classes;
-
-    import G_874_1_model-Imported_Information_Object_Classes-Q_822 {
-        prefix G_874_1_model-Imported_Information_Object_Classes-Q_822;
-    }
-    import G_874_1_model-Type_Definitions {
-        prefix G_874_1_model-Type_Definitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        '<p>Version 2.02; outcome of the 10/2013 Nuremberg meeting.<br>Version 2.03; updates for Geneva 03-2014<br>Version 2.04; updates for Shanghai 09-2014<br>Version 2.05; input to Geneva 11-2014<br>Version 2.06; output from Geneva 11-2014<br>Version 2.07; using OpenProfile 3-2015<br>Version 2.08; output from Geneva 06-2015</p>';
-
-    revision 2016-07-10 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    grouping OTN_CurrentData {
-        description "This object class is an abstract class from which the OTN layer-specific CurrentData object classes are inherited. This object class is a subclass of the Q.822 CurrentData object class, which in turn is a subclass of X.739 Scanner object class. It inherits the following attributes: scannerId, operationalState, granularityPeriod, administrativeState, suspectIntervalFlag, elapsedTime, observedObjectClass, and observedObjectInstance.";
-        uses G_874_1_model-Imported_Information_Object_Classes-Q_822:Q_822_CurrentData;
-        leaf timestamp {
-            type G_874_1_model-Type_Definitions:DateAndTime;
-            description "The timestamp associated with when the current data was collected.";
-        }
-    }
-    grouping OTN_HistoryData {
-        description "This object class is an abstract class from which the OTN layer-specific HistoryData object classes are inherited. ";
-        uses G_874_1_model-Imported_Information_Object_Classes-Q_822:Q_822_HistoryData;
-        leaf suspectIntervalFlag {
-            type boolean;
-            description "This attribute indicates that the data collected during the interval is suspect.";
-            default "false";
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Type_Definitions@2016-07-10.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/G_874_1_model-Type_Definitions@2016-07-10.yang
deleted file mode 100644 (file)
index 8ed5d90..0000000
+++ /dev/null
@@ -1,306 +0,0 @@
-module G_874_1_model-Type_Definitions {
-    namespace "uri:onf:G_874_1_model-Type_Definitions";
-    prefix G_874_1_model-Type_Definitions;
-
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        '<p>Version 2.02; outcome of the 10/2013 Nuremberg meeting.<br>Version 2.03; updates for Geneva 03-2014<br>Version 2.04; updates for Shanghai 09-2014<br>Version 2.05; input to Geneva 11-2014<br>Version 2.06; output from Geneva 11-2014<br>Version 2.07; using OpenProfile 3-2015<br>Version 2.08; output from Geneva 06-2015</p>';
-
-    revision 2016-07-10 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    typedef Directionality {
-        description "The enumeration with the options for directionality of the termination point.";
-        type enumeration {
-            enum SINK;
-            enum SOURCE;
-            enum BIDIRECTIONAL;
-        }
-    }
-    typedef GccAccess {
-        description "This enumeration indicates the GCC access represented by the entity.";
-        type enumeration {
-            enum GCC1;
-            enum GCC2;
-            enum GCC1_AND_GCC2;
-        }
-    }
-    typedef OperationalState {
-        description "The list of valid operational states for the connection.";
-        type enumeration {
-            enum ENABLED;
-            enum DISABLED;
-        }
-    }
-    typedef OperType {
-        description "The operation type associated with the protection mechanism (either non-revertive or revertive).";
-        type enumeration {
-            enum REVERTIVE;
-            enum NON-REVERTIVE;
-        }
-    }
-    typedef ExtCmdOperation {
-        description "This enumeration contains the options for the actions that instruct the protection system for performing specific protection switching operations.";
-        type enumeration {
-            enum EXERCISE;
-            enum MANUAL_SWITCH;
-            enum FORCED_SWITCH;
-            enum LOCKOUT;
-            enum RELEASE_OF_MANUAL_SWITCH;
-            enum RELEASE_OF_FORCED_SWITCH;
-            enum RELEASE_OF_LOCKOUT;
-        }
-    }
-    typedef AdministrativeState {
-        description "For more information on Administrative State, See ITU-T Recs. X.731 and M.3100.";
-        type enumeration {
-            enum UNLOCKED;
-            enum LOCKED;
-            enum SHUTTING_DOWN;
-        }
-    }
-    typedef OCTk_NimKBitRate {
-        description "Provides an enumeration with the meaning of each 'k' value.";
-        type enumeration {
-            enum 2.5_G;
-            enum 10_G;
-            enum 40_G;
-            enum 100_G;
-        }
-    }
-    typedef TimDetMo {
-        description "List of modes for trace identifier mismatch detection.";
-        type enumeration {
-            enum DAPI;
-            enum SAPI;
-            enum BOTH;
-        }
-    }
-    typedef OCTk_NimProblemList {
-        description "The valid list of problems for the entity.";
-        type enumeration {
-            enum LOS_P;
-            enum OCI;
-            enum SSF_P;
-            enum SSF_O;
-            enum SSF;
-            enum TIM;
-            enum DEG;
-            enum BDI;
-        }
-    }
-    typedef TcmMonitoring {
-        description "Monitoring types for the tandem connection monitoring function.";
-        type enumeration {
-            enum INTRUSIVE;
-            enum NON-INTRUSIVE;
-        }
-    }
-    typedef TcmMode {
-        description "List of value modes for the sink side of the tandem connection monitoring function.";
-        type enumeration {
-            enum OPERATIONAL;
-            enum TRANSPARENT;
-            enum MONITOR;
-        }
-    }
-    typedef OPSMnk_TtpKBitRate {
-        description "Provides an enumeration with the meaning of each 'k' value.";
-        type enumeration {
-            enum 40_G;
-            enum 100_G;
-        }
-    }
-    typedef OPSMnk_TtpProblemList {
-        description "The valid list of problems for the entity.";
-        type enumeration {
-            enum LOS;
-            enum LOL;
-        }
-    }
-    typedef OPSn_TtpProblemList {
-        description "The valid list of problems for the entity.";
-        type enumeration {
-            enum LOS;
-        }
-    }
-    typedef OTM_n_KBitRates {
-        description "Provides an enumeration with the meaning of each 'k' value.";
-        type enumeration {
-            enum 2.5_G;
-            enum 10_G;
-            enum 40_G;
-            enum 2.5_10_G;
-            enum 10_40_G;
-            enum 2.5_10_40_G;
-        }
-    }
-    typedef DomainInterface {
-        description "This enumeration provides the options for the interface associated with OTMn.";
-        type enumeration {
-            enum INTRA_DOMAIN;
-            enum INTER_DOMAIN;
-        }
-    }
-    typedef OTM_n_OpticalReach {
-        description "The valid options for reach of the optical cable.";
-        type enumeration {
-            enum INTRA_OFFICE;
-            enum SHORTHAUL;
-            enum LONGHAUL;
-        }
-    }
-    typedef AprStatus {
-        description "The enumeration of the options for the Automatic Power Reduction Status.";
-        type enumeration {
-            enum ON;
-            enum OFF;
-        }
-    }
-    typedef OTSn_TtpProblemList {
-        description "The valid list of problems for the entity.";
-        type enumeration {
-            enum BDI_P;
-            enum BDI_O;
-            enum BDI;
-            enum TIM;
-            enum LOS_P;
-            enum LOS_O;
-            enum LOS;
-        }
-    }
-    typedef OTUk_CtpAdaptation {
-        description "The adaptation options for OTUk_ConnectionTermationPoints.";
-        type enumeration {
-            enum REGULAR;
-            enum NONE;
-            enum VENDOR_SPECIFIC;
-            enum FUNCTIONALLY_STANDARDIZED;
-        }
-    }
-    typedef OTUk_CtpKBitRate {
-        description "Provides an enumeration with the meaning of each 'k' value.";
-        type enumeration {
-            enum 2.5_G;
-            enum 10_G;
-            enum 40_G;
-            enum 100_G;
-        }
-    }
-    typedef OTUk_CtpProblemList {
-        description "The valid list of problems for the entity.";
-        type enumeration {
-            enum LOF;
-            enum AIS;
-            enum LOM;
-        }
-    }
-    typedef OTUk_TtpProblemList {
-        description "The valid list of problems for the entity.";
-        type enumeration {
-            enum TIM;
-            enum DEG;
-            enum BDI;
-            enum SSF;
-        }
-    }
-    typedef MonitoredDirection {
-        description "The enumeration with the options for directionality for nonintrusive monitoring.";
-        type enumeration {
-            enum SINK;
-            enum SOURCE;
-        }
-    }
-    typedef DegThrType {
-        description "<p>The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.</p>";
-        type enumeration {
-            enum PERCENTAGE;
-            enum NUMBER_ERRORED_BLOCKS;
-        }
-    }
-    typedef LinkType {
-        type enumeration {
-            enum DWDM;
-            enum CWDM;
-            enum NO_WDM;
-        }
-    }
-    typedef ApplicationIdentifierType {
-        type enumeration {
-            enum STANDARD;
-            enum PROPRIETARY;
-        }
-    }
-    typedef PrintableString {
-        type string;
-    }
-    typedef DateAndTime {
-        description "This primitive type defines the date and time according to the following structure:
-            'yyyyMMddhhmmss.s[Z|{+|-}HHMm]' where:
-            yyyy    '0000'..'9999'    year
-            MM        '01'..'12'            month
-            dd        '01'..'31'            day
-            hh        '00'..'23'            hour
-            mm        '00'..'59'            minute
-            ss        '00'..'59'            second
-            s        '.0'..'.9'            tenth of second (set to '.0' if EMS or NE cannot support this granularity)
-            Z        'Z'                    indicates UTC (rather than local time)
-            {+|-}    '+' or '-'            delta from UTC
-            HH        '00'..'23'            time zone difference in hours
-            Mm        '00'..'59'            time zone difference in minutes.";
-        type string;
-    }
-    typedef ApsChannel {
-        type enumeration {
-            enum PATH;
-            enum TCM1;
-            enum TCM2;
-            enum TCM3;
-            enum TCM4;
-            enum TCM5;
-            enum TCM6;
-            enum SECTION;
-        }
-    }
-    typedef BitString {
-        description "This primitive type defines a bit oriented string.
-            The size of the BitString will be defined in the valueRange property of the attribute; according to ASN.1 (X.680).
-            The semantic of each bit position will be defined in the Documentation field of the attribute.";
-        type string;
-    }
-    typedef DelayMeasurementRole {
-        type enumeration {
-            enum CONTROLLER;
-            enum RESPONDER;
-        }
-    }
-    typedef ResizeOperationType {
-        type enumeration {
-            enum INCREASE_BW;
-            enum DECREASE_BW;
-        }
-    }
-    typedef GranularityPeriodType {
-        description "The enumeration with the options for granularity period of the performance data.";
-        type enumeration {
-            enum UNKNOWN;
-            enum PERIOD_15MIN;
-            enum PERIOD_24HOURS;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-NetworkElement-CurrentProblemList@2016-11-20.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-NetworkElement-CurrentProblemList@2016-11-20.yang
deleted file mode 100644 (file)
index e97a4d8..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-module MicrowaveModel-NetworkElement-CurrentProblemList {
-    namespace "uri:onf:MicrowaveModel-NetworkElement-CurrentProblemList";
-    prefix MicrowaveModel-NetworkElement-CurrentProblemList;
-
-    import MicrowaveModel-ObjectClasses-SuperClasses {
-        prefix MicrowaveModel-ObjectClasses-SuperClasses;
-    }
-    import MicrowaveModel-TypeDefinitions {
-        prefix MicrowaveModel-TypeDefinitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module is an add-on to the ONF TR532 supporting alarms for object classes not
-         moduled by ONF TR532.';
-
-    revision 2016-11-20 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR 532: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    feature all-network-element-alarms {
-        description "Feature 'all-network-element' is optional to support alarms of object classes not modeled by ONF TR 532.";
-    }
-    
-    grouping genericCurrentProblemType {
-        uses MicrowaveModel-ObjectClasses-SuperClasses:MwCurrentProblem;
-        leaf objectIdRef {
-            type string;
-            description "A string representation of alarmed object.";
-        }
-        leaf problemName {
-            type string;
-            config false;
-            description "Name of the alarm.";
-            default "";
-        }
-        leaf problemSeverity {
-            type MicrowaveModel-TypeDefinitions:severityType;
-            description "Severity of the alarm.";
-            default "warning";
-        }
-    }
-
-    container NetworkElementCurrentProblems {
-        config false;
-        if-feature all-network-element-alarms;
-        list currentProblemList {
-            key 'sequenceNumber';
-            ordered-by system;
-            uses genericCurrentProblemType;
-        }
-    }
-    
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-Notifications@2016-08-09.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-Notifications@2016-08-09.yang
deleted file mode 100644 (file)
index fe3fce2..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-module MicrowaveModel-Notifications {
-    namespace "uri:onf:MicrowaveModel-Notifications";
-    prefix MicrowaveModel-Notifications;
-
-    import CoreModel-CoreFoundationModule-TypeDefinitions {
-        prefix CoreModel-CoreFoundationModule-TypeDefinitions;
-    }
-    import CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages {
-        prefix CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages;
-    }
-    import MicrowaveModel-TypeDefinitions {
-        prefix MicrowaveModel-TypeDefinitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-08-09 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    notification ObjectCreationNotification {
-        description "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac has to be instancieted in the controller.";
-        leaf counter {
-            type int32;
-            description "Counts object creation notifications.";
-        }
-        leaf timeStamp {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-        }
-        leaf objectIdRef {
-            type CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:UniversalId;
-            description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-        }
-        leaf objectType {
-            type string;
-            description "Type of Object to be chosen from the following list of values: 'MW_AirInterface_Pac', 'MW_AirInterfaceDiversity_Pac', 'MW_Structure_Pac', 'MW_PureEthernetStructure_Pac', 'MW_HybridMwStructure_Pac', 'MW_Container_Pac', 'MW_EthernetContainer_Pac' or 'MW_TdmContainer_Pac'.";
-        }
-    }
-    notification ObjectDeletionNotification {
-        description "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac instance has to be deleted in the controller.";
-        leaf counter {
-            type int32;
-            description "Counts object deletion notifications.";
-        }
-        leaf timeStamp {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-        }
-        leaf objectIdRef {
-            type CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:UniversalId;
-            description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-        }
-    }
-    notification AttributeValueChangedNotification {
-        description "To be sent when an attribute has changed and one or more controllers have to update their data.";
-        leaf counter {
-            type int32;
-            description "Counts attribute value changed notifications.";
-        }
-        leaf timeStamp {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-        }
-        leaf objectIdRef {
-            type CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:UniversalId;
-            description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-        }
-        leaf attributeName {
-            type string;
-            description "Name of the attribute that has been changed.";
-        }
-        leaf newValue {
-            type string;
-            description "Attribute value converted to a string (xml, json, ...)";
-        }
-    }
-    notification ProblemNotification {
-        description "To be sent when a problem occurs at a MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-        leaf counter {
-            type int32;
-            description "Counts problem notifications";
-        }
-        leaf timeStamp {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-        }
-        leaf objectIdRef {
-            type CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:UniversalId;
-            description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-        }
-        leaf problem {
-            type string;
-            description "Name of the problem according to AirInterface::AirInterfaceCapability::supportedAlarms or AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms or Structure::StructureCapability::supportedAlarms or PureEthernetStructure::PureEthernetStructureCapability::supportedAlarms or HybridMwStructure::HybridMwStructureCapability::supportedAlarms or Container::ContainerCapability::supportedAlarms or EthernetContainer::EthernetContainerCapability::supportedAlarms or TdmContainer::TdmContainerCapability::supportedAlarms.";
-        }
-        leaf severity {
-            type MicrowaveModel-TypeDefinitions:severityType;
-            description "Severity of the problem according to AirInterface::AirInterfaceConfiguration::problemSeverityList, AirInterfaceDiversity::AirInterfaceDiversityConfiguration::problemSeverityList, Structure::StructureConfiguration::problemSeverityList, PureEthernetStructure::PureEthernetStructureConfiguration::problemSeverityList, HybridMwStructure::HybridMwStructureConfiguration::problemSeverityList, Container::ContainerConfiguration::problemSeverityList, EthernetContainer::EthernetContainerConfiguration::problemSeverityList or TdmContainer::TdmContainerConfiguration::problemSeverityList";
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-AirInterface@2016-09-01.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-AirInterface@2016-09-01.yang
deleted file mode 100644 (file)
index 45fbf20..0000000
+++ /dev/null
@@ -1,521 +0,0 @@
-module MicrowaveModel-ObjectClasses-AirInterface {
-    namespace "uri:onf:MicrowaveModel-ObjectClasses-AirInterface";
-    prefix MicrowaveModel-ObjectClasses-AirInterface;
-
-    import CoreModel-CoreNetworkModule-ObjectClasses {
-        prefix CoreModel-CoreNetworkModule-ObjectClasses;
-    }
-    import MicrowaveModel-TypeDefinitions {
-        prefix MicrowaveModel-TypeDefinitions;
-    }
-    import CoreModel-CoreFoundationModule-TypeDefinitions {
-        prefix CoreModel-CoreFoundationModule-TypeDefinitions;
-    }
-    import CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages {
-        prefix CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-09-01 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    list MW_AirInterface_Pac {
-        description "LTP(MWPS-TTP)";
-        key 'layerProtocol';
-        config true;
-        leaf layerProtocol {
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:_lpList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            description "";
-        }
-        container airInterfaceCapability {
-            config false;
-            uses AirInterfaceCapability;
-        }
-        container airInterfaceConfiguration {
-            config true;
-            uses AirInterfaceConfiguration;
-        }
-        container airInterfaceStatus {
-            config false;
-            uses AirInterfaceStatus;
-        }
-        container airInterfaceCurrentProblems {
-            config false;
-            uses AirInterfaceCurrentProblems;
-        }
-        container airInterfaceCurrentPerformance {
-            config false;
-            uses AirInterfaceCurrentPerformance;
-        }
-        container airInterfaceHistoricalPerformances {
-            config false;
-            uses AirInterfaceHistoricalPerformances;
-        }
-    }
-    grouping AirInterfaceCapability {
-        description "Describes the 'analog' capabilities of modem and transmitter of the microwave device. Value ranges of attributes are not independently (e.g. min. and max. transmit power depends on modulation). Legal combinations of values are expressed in transmissionModeTypes.";
-        leaf typeOfEquipment {
-            type string;
-            config false;
-            description "This parameter indicates the equipment type. Instead of uploading the complete set of capabilities, capabilities of the same equipment type could be reused. Should be unique for a combination of modem, radio and their respective firmware.";
-            default "Type of equipment not yet defined.";
-        }
-        leaf txFrequencyMin {
-            type int32;
-            config false;
-            description "Value of the minimum transmit frequency tunable at the air interface.";
-            units "kHz";
-            default -1;
-        }
-        leaf txFrequencyMax {
-            type int32;
-            config false;
-            description "Value of the maximum transmit frequency tunable at the air interface.";
-            units "kHz";
-            default -1;
-        }
-        leaf rxFrequencyMin {
-            type int32;
-            config false;
-            description "Value of the minimum receive frequency tunable at the air interface.";
-            units "kHz";
-            default -1;
-        }
-        leaf rxFrequencyMax {
-            type int32;
-            config false;
-            description "Value of the maximum receive frequency tunable at the air interface.";
-            units "kHz";
-            default -1;
-        }
-        leaf adaptiveModulationIsAvail {
-            type boolean;
-            config false;
-            description "In case the device is capable of adaptive modulation, this field shall contain a 'true'.";
-            default false;
-        }
-        leaf mimoIsAvail {
-            type boolean;
-            config false;
-            description "In case the device is capable of MIMO, this field shall contain a 'true'.";
-            default false;
-        }
-        leaf mimoChannels {
-            type int8;
-            config false;
-            description "Maximum number (n) of spatial multiplexing streams that can be conveyed by an n x n MIMO configuration.";
-            units "channels";
-            default 1;
-        }
-        leaf alicIsAvail {
-            type boolean;
-            config false;
-            description "In case the microwave radio is capable of Adjacent Link Interference Cancelation (canceling of interference cause by transmitters located at the same site), this field shall contain a 'true'.";
-            default false;
-        }
-        leaf atpcIsAvail {
-            type boolean;
-            config false;
-            description "In case the microwave radio is capable of ATPC, this field shall contain a 'true'.";
-            default false;
-        }
-        leaf atpcRange {
-            type int8;
-            config false;
-            description "Extent of the ATPC range.";
-            units "dB";
-            default 0;
-        }
-        leaf encryptionIsAvail {
-            type boolean;
-            config false;
-            description "Shall be marked 'true', if payload encryption is available.";
-            default false;
-        }
-        leaf loopBackIsAvail {
-            type boolean;
-            config false;
-            description "In case the radio is capable of looping back header information of the air interface, this field shall contain a 'true'.";
-            default false;
-        }
-        leaf maintenanceTimerRange {
-            type string;
-            config false;
-            description "Available time periods for maintenance configurations (e.g. the loop back of microwave header information) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360').";
-            units "s";
-            default "Range of the maintenance timer not yet defined.";
-        }
-        leaf supportedAlarms {
-            type string;
-            config false;
-            description "Available alarms to be listed. Mandatory:'signalIsLost','rslIsExceeded','temperatureIsExceeded','modemIsFaulty','radioIsFaulty' and 'modulationIsDownShifted'. Further alarms might be added by the device. Names are to be separated by commas.";
-            default "Supported alarms not yet defined.";
-        }
-        list supportedChannelPlanList {
-            description "List of channel spacing that are supported by the device.";
-            key 'supportedChannelPlan';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:channelPlanType;
-            min-elements 1;
-        }
-    }
-    grouping AirInterfaceConfiguration {
-        description "Configuration of the radio link.";
-        leaf airInterfaceName {
-            type string;
-            description "Operator specific microwave link ID (often used for coding area, type of element and sequential number).";
-            default "Air interface ID not yet defined.";
-        }
-        leaf radioSignalID {
-            type string;
-            description "The radioSignalId is transmitted on the air interface so the remote site of the link synchronizes on the correct transmitter. The local radio MUST NOT synchronize on a radio signal with a different radioSignalId. The link ID is neither an ID necessary to span the model nor an ID referencing external data. It is just some sort of name of the link transmitted so the correct remote site can be identified in an interference situation.
-                The value zero might be used to make the microwave to disable the link ID check.";
-            default "Radio signal ID not yet defined.";
-        }
-        leaf txFrequency {
-            type int32;
-            description "Center frequency of the transmit channel. The values to be configured have to exactly match the values listed in the international agreement referenced in channelPlanID. In case of automated selection of the transmit frequency this field shall describe the lowest center frequency selectable.";
-            units "kHz";
-            default -1;
-        }
-        leaf rxFrequency {
-            type int32;
-            description "Center frequency of the receive channel.";
-            units "kHz";
-            default -1;
-        }
-        leaf txChannelBandwidth {
-            type int32;
-            description "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-            units "kHz";
-            default -1;
-        }
-        leaf rxChannelBandwidth {
-            type int32;
-            description "Bandwidth of the receive channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-            units "kHz";
-            default -1;
-        }
-        leaf polarization {
-            type MicrowaveModel-TypeDefinitions:polarizationType;
-            description "Allows documenting the polarization of the air interface.";
-            default "not-specified";
-        }
-        leaf powerIsOn {
-            type boolean;
-            description "Power ON. Activation of the entire radio in a split mount configuration shall be expressed as a 'true'.";
-            default true;
-        }
-        leaf transmitterIsOn {
-            type boolean;
-            description "Activation of the transmitter inside the radio shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf receiverIsOn {
-            type boolean;
-            description "Activation of the receiver inside the radio shall be expressed as a 'true'. Attribute shall also be used for RX main and RX diversity squelches in case of diversity configurations.
-                Maintenance Feature";
-            default true;
-        }
-        leaf txPower {
-            type int8;
-            description "Transmit power to be configured on the microwave link. Signed Byte is required. The actually operated transmit power might be lower depending on adaptive modulation and ATPC.";
-            units "dBm";
-            default 99;
-        }
-        leaf adaptiveModulationIsOn {
-            type boolean;
-            description "Adaptive Modulation. Activation of adaptive modulation shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf modulationMin {
-            type int16;
-            description "Minimum modulation to be configured (in case adaptive modulation is not used, this value represents also the fixed modulation). The modulation scheme shall be described by the number of symbols (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-            units "symbols";
-            default -1;
-        }
-        leaf modulationMax {
-            type int16;
-            description "Maximum modulation to be configured. The value of this field is only relevant, if Adaptive Modulation has been activated. The modulation scheme shall be described by the number of symbols (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-            units "symbols";
-            default -1;
-        }
-        leaf xpicIsOn {
-            type boolean;
-            description "Activation of Cross Polarization Interference Cancelation shall be expressed as a 'true'. In case XPIC is not available for the current combination of channel bandwidth and modulation or the hardware in general, this parameter shall always be set to 'false'.";
-            default false;
-        }
-        leaf mimoIsOn {
-            type boolean;
-            description "Activation of Multiple Input Multiple Output (MIMO) shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf alicIsOn {
-            type boolean;
-            description "Activation of Adjacent Link Interference Cancelation (ALIC) shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf atpcIsOn {
-            type boolean;
-            description "ATPC. Activation of Automated Transmit Power Control shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf atpcThreshUpper {
-            type int16;
-            description "If the receive level is higher than the upper threshold value, the transmitter is notified to decrease transmit power.";
-            units "dBm";
-            default 99;
-        }
-        leaf atpcThreshLower {
-            type int16;
-            description "If the receive level is lower than the lower threshold value, the transmitter is notified to increase transmit power.";
-            units "dBm";
-            default 99;
-        }
-        leaf autoFreqSelectIsOn {
-            type boolean;
-            description "Activation of automatically selecting the transmit frequency in unlicensed bands shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf autoFreqSelectRange {
-            type int8;
-            description "Number of transmit channels (starting at the center frequency defined in txFrequency and with channel bandwidth according to txChannelBandwidth) that define the range within the transmit frequency can automatically been chosen. ";
-            units "channels";
-            default -1;
-        }
-        leaf modulationIsOn {
-            type boolean;
-            description "De-activation of the modulation of the carrier signal for fault management shall be expressed as a 'false'.
-                Maintenance Feature";
-            default true;
-        }
-        leaf encryptionIsOn {
-            type boolean;
-            description "Activates encryption of the payload.";
-            default false;
-        }
-        leaf cryptographicKey {
-            type string;
-            description "Key for transforming plaintext into ciphertext data.";
-            default "Cryptographic key not yet defined.";
-        }
-        leaf loopBackIsOn {
-            type boolean;
-            description "If this attribute is set to 'true', the received IF signal is transmitted back to the remote end.
-                Maintenance Feature";
-            default false;
-        }
-        leaf maintenanceTimer {
-            type int32;
-            description "Time of existence of any maintenance configuration (e.g. the loop back of microwave header information). Valid values are defined in AirInterface::AirInterfaceCapability::maintenanceTimerRange.";
-            units "s";
-            default -1;
-        }
-        list problemKindSeverityList {
-            description "Severity of the problem to be configured.";
-            key 'problemKindName';
-            config true;
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:airInterfaceProblemSeverityType;
-            min-elements 6;
-        }
-    }
-    grouping AirInterfaceStatus {
-        description "Measurements of current values on the air interface and operational status of the device.";
-        leaf txFrequencyCur {
-            type int32;
-            config false;
-            description "Center frequency of the currently operated transmit channel.";
-            units "kHz";
-            default -1;
-        }
-        leaf rxFrequencyCur {
-            type int32;
-            config false;
-            description "Center frequency of the currently operated receive channel.";
-            units "kHz";
-            default -1;
-        }
-        leaf txLevelCur {
-            type int8;
-            config false;
-            description "Current transmit level.";
-            units "dBm";
-            default 99;
-        }
-        leaf rxLevelCur {
-            type int8;
-            config false;
-            description "Current receive level.";
-            units "dBm";
-            default 99;
-        }
-        leaf modulationCur {
-            type int16;
-            config false;
-            description "Currently operated modulation on transmit path. The modulation scheme shall be described by the number of symbols (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-            units "symbols";
-            default -1;
-        }
-        leaf informationRateCur {
-            type int8;
-            config false;
-            description "Information rate of the currently operated coding scheme.";
-            units "%";
-            default -1;
-        }
-        leaf snirCur {
-            type int8;
-            config false;
-            description "Currently measured signal to (noise+interference) ratio.";
-            units "dB";
-            default -99;
-        }
-        leaf xpdCur {
-            type int8;
-            config false;
-            description "Currently measured cross polarization discrimination.";
-            units "dB";
-            default -99;
-        }
-        leaf rfTempCur {
-            type int8;
-            config false;
-            description "Current temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            units "Celsius";
-            default -99;
-        }
-        leaf lastStatusChange {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-            config false;
-            description "Time the Air Interface entered its current operational status. 
-                _format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes.";
-            default "20101120140000.0Z+1";
-        }
-        leaf radioPowerIsUp {
-            type boolean;
-            config false;
-            description "If the radio unit has power and is switched on, this shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf linkIsUp {
-            type boolean;
-            config false;
-            description "If connection is established to the remote site with the same linkID, this shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf xpicIsUp {
-            type boolean;
-            config false;
-            description "If XPIC is currently actually working (not just configured), this shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf mimoIsUp {
-            type boolean;
-            config false;
-            description "If MIMO is currently actually working (not just configured), this shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf alicIsUp {
-            type boolean;
-            config false;
-            description "If Adjacent Link Interference Cancelation (ALIC) is currently actually working (not just configured), this shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf atpcIsUp {
-            type boolean;
-            config false;
-            description "If ATPC is currently actually working (not just configured), this shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf autoFreqSelectIsUp {
-            type boolean;
-            config false;
-            description "If automated frequency selection is currently actually working (not just configured), this shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf loopBackIsUp {
-            type boolean;
-            config false;
-            description "If loop back of the air interface header is currently active (not just configured), this shall be expressed as a 'true'.";
-            default false;
-        }
-        leaf localEndPointId {
-            type string;
-            config false;
-            description "The value of the localEndPointId is a vendor specific identifier of the air interface, used by the node to discover a microwave radio link.";
-            default "not-supported";
-        }
-        leaf remoteEndPointId {
-            type string;
-            config false;
-            description "The value of the remoteEndPointId is a vendor specific identifier or the airinterface at the remote side, used to by the node to discover a microwave radio link.";
-            default "not-supported";
-        }
-    }
-    grouping AirInterfaceCurrentProblems {
-        list currentProblemList {
-            key 'sequenceNumber';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:airInterfaceCurrentProblemType;
-        }
-    }
-    grouping AirInterfaceCurrentPerformance {
-        description "Aggregated performance information of the air interface at a particular moment.";
-        list currentPerformanceDataList {
-            description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-            key 'scannerId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:airInterfaceCurrentPerformanceType;
-            max-elements 2;
-            min-elements 1;
-        }
-    }
-    grouping AirInterfaceHistoricalPerformances {
-        description "Aggregated performance information of the air interface for a pre-defined measurement interval.";
-        list historicalPerformanceDataList {
-            key 'historyDataId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:airInterfaceHistoricalPerformanceType;
-        }
-    }
-    list CoChannelGroup {
-        description "Required for configuring XPIC, MIMO and ALIC.";
-        key 'coChannelGroupId';
-        config true;
-        leaf coChannelGroupId {
-            type CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:UniversalId;
-        }
-        leaf-list airInterfaceList {
-            description "List of air interfaces, which are part of the co-channel (XPIC, MIMO, ALIC) group.";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-        }
-        leaf sortOfCoChannelGroup {
-            type string;
-            description "Type of group of air interfaces with the same transmit and receive frequency. The values shall be chosen from the following _list:'XPIC', 'MIMO', 'ALIC';";
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-AirInterfaceDiversity@2016-09-02.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-AirInterfaceDiversity@2016-09-02.yang
deleted file mode 100644 (file)
index dc2fd14..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-module MicrowaveModel-ObjectClasses-AirInterfaceDiversity {
-    namespace "uri:onf:MicrowaveModel-ObjectClasses-AirInterfaceDiversity";
-    prefix MicrowaveModel-ObjectClasses-AirInterfaceDiversity;
-
-    import CoreModel-CoreNetworkModule-ObjectClasses {
-        prefix CoreModel-CoreNetworkModule-ObjectClasses;
-    }
-    import MicrowaveModel-TypeDefinitions {
-        prefix MicrowaveModel-TypeDefinitions;
-    }
-    import CoreModel-CoreFoundationModule-TypeDefinitions {
-        prefix CoreModel-CoreFoundationModule-TypeDefinitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-09-02 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    list MW_AirInterfaceDiversity_Pac {
-        description "LTP(MWS-CTP-xD)";
-        key 'layerProtocol';
-        config true;
-        leaf layerProtocol {
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:_lpList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            description "";
-        }
-        container airInterfaceDiversityCapability {
-            config false;
-            uses AirInterfaceDiversityCapability;
-        }
-        container airInterfaceDiversityConfiguration {
-            config true;
-            uses AirInterfaceDiversityConfiguration;
-        }
-        container airInterfaceDiversityStatus {
-            config false;
-            uses AirInterfaceDiversityStatus;
-        }
-        container airInterfaceDiversityCurrentProblems {
-            config false;
-            uses AirInterfaceDiversityCurrentProblems;
-        }
-        container airInterfaceDiversityCurrentPerformance {
-            config false;
-            uses AirInterfaceDiversityCurrentPerformance;
-        }
-        container airInterfaceDiversityHistoricalPerformances {
-            config false;
-            uses AirInterfaceDiversityHistoricalPerformances;
-        }
-    }
-    grouping AirInterfaceDiversityCapability {
-        description "Describes the capabilities in implementing different types of air interface diversity.";
-        list availableKindsOfDiversity {
-            description "Available types of diversity to be listed.";
-            key 'diversityName';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:diversityType;
-        }
-        leaf supportedAlarms {
-            type string;
-            config false;
-            description "Available alarms to be listed. Mandatory:'airInterfaceDiversityConfigurationIsPartlyDown' (at least one air interface is down, but not all of them) and 'airInterfaceDiversityConfigurationIsDown' (all air interfaces are down). Further alarms might be added by the device. Names are to be separated by commas.";
-            default "Supported alarms not yet defined.";
-        }
-    }
-    grouping AirInterfaceDiversityConfiguration {
-        container airInterfaceDiversity {
-            description "Type of air interface diversity configured at the link.";
-            config true;
-            uses MicrowaveModel-TypeDefinitions:diversityType;
-        }
-        leaf-list airInterfaceLtpList {
-            description "";
-            ordered-by system;
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            min-elements 2;
-        }
-        list problemKindSeverityList {
-            description "Severity of the problem to be configured.";
-            key 'problemKindName';
-            config true;
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:airInterfaceDiversityProblemSeverityType;
-            min-elements 3;
-        }
-    }
-    grouping AirInterfaceDiversityStatus {
-        leaf snirCur {
-            type int8;
-            config false;
-            description "Currently measured signal to (noise+interference) ratio of the combined signals.";
-            units "dB";
-            default -99;
-        }
-        leaf airInterfaceDiversityStatus {
-            type MicrowaveModel-TypeDefinitions:airInterfaceDiversityStatusType;
-            config false;
-            description "Status of the air interface bundle. ";
-            default "groupDown";
-        }
-        leaf lastStatusChange {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-            config false;
-            description "Time the Diversity Group entered its current operational status. 
-                _format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes.";
-            default "20101120140000.0Z+1";
-        }
-    }
-    grouping AirInterfaceDiversityCurrentProblems {
-        list currentProblemList {
-            key 'sequenceNumber';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:airInterfaceDiversityCurrentProblemType;
-        }
-    }
-    grouping AirInterfaceDiversityCurrentPerformance {
-        description "Aggregated performance information of the air interface diversity configuration at a particular moment.";
-        list currentPerformanceDataList {
-            description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-            key 'scannerId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:airInterfaceDiversityCurrentPerformanceType;
-            max-elements 2;
-            min-elements 1;
-        }
-    }
-    grouping AirInterfaceDiversityHistoricalPerformances {
-        description "Aggregated performance information of the air interface diversity configuration for a pre-defined measurement interval.";
-        list historicalPerformanceDataList {
-            key 'historyDataId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:airInterfaceDiversityHistoricalPerformanceType;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-EthernetContainer@2016-09-02.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-EthernetContainer@2016-09-02.yang
deleted file mode 100644 (file)
index 76bca67..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-module MicrowaveModel-ObjectClasses-EthernetContainer {
-    namespace "uri:onf:MicrowaveModel-ObjectClasses-EthernetContainer";
-    prefix MicrowaveModel-ObjectClasses-EthernetContainer;
-
-    import CoreModel-CoreNetworkModule-ObjectClasses {
-        prefix CoreModel-CoreNetworkModule-ObjectClasses;
-    }
-    import MicrowaveModel-TypeDefinitions {
-        prefix MicrowaveModel-TypeDefinitions;
-    }
-    import CoreModel-CoreFoundationModule-TypeDefinitions {
-        prefix CoreModel-CoreFoundationModule-TypeDefinitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-09-02 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    list MW_EthernetContainer_Pac {
-        description "LTP(Client)";
-        key 'layerProtocol';
-        config true;
-        leaf layerProtocol {
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:_lpList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            description "";
-        }
-        container ethernetContainerCapability {
-            config false;
-            uses EthernetContainerCapability;
-        }
-        container ethernetContainerConfiguration {
-            config true;
-            uses EthernetContainerConfiguration;
-        }
-        container ethernetContainerStatus {
-            config false;
-            uses EthernetContainerStatus;
-        }
-        container ethernetContainerCurrentProblems {
-            config false;
-            uses EthernetContainerCurrentProblems;
-        }
-        container ethernetContainerCurrentPerformance {
-            config false;
-            uses EthernetContainerCurrentPerformance;
-        }
-        container ethernetContainerHistoricalPerformances {
-            config false;
-            uses EthernetContainerHistoricalPerformances;
-        }
-    }
-    grouping EthernetContainerCapability {
-        leaf bundlingIsAvail {
-            type boolean;
-            config false;
-            description "This attribute has to be set on 'true', if the device allows combining resources from several air interfaces for transporting this Ethernet container.";
-            default false;
-        }
-        leaf packetCompressionIsAvail {
-            type boolean;
-            config false;
-            description "In case packet compression can be activated, but not configured to a certain type, packetCompressionAvail shall be set on 'true', but none of the compression level specific booleans.";
-            default false;
-        }
-        leaf layer2CompressionIsAvail {
-            type boolean;
-            config false;
-            description "Packet compression on layer 2 available at the device.";
-            default false;
-        }
-        leaf vlanCompressionIsAvail {
-            type boolean;
-            config false;
-            description "Packet compression on VLAN layer available at the device.";
-            default false;
-        }
-        leaf qInQCompressionIsAvail {
-            type boolean;
-            config false;
-            description "Packet compression on layer of a second VLAN available at the device.";
-            default false;
-        }
-        leaf mplsCompressionIsAvail {
-            type boolean;
-            config false;
-            description "Packet compression on mpls layer available at the device.";
-            default false;
-        }
-        leaf ipv4CompressionIsAvail {
-            type boolean;
-            config false;
-            description "Packet compression on layer 3 for IPv4 available at the device.";
-            default false;
-        }
-        leaf ipv6CompressionIsAvail {
-            type boolean;
-            config false;
-            description "Packet compression on layer 3 for IPv6 available at the device.";
-            default false;
-        }
-        leaf layer4CompressionIsAvail {
-            type boolean;
-            config false;
-            description "Packet compression on layer 4 (TCP and UDP header) available at the device.";
-            default false;
-        }
-        leaf encryptionIsAvail {
-            type boolean;
-            config false;
-            description "Shall be marked 'true', if Ethernet payload encryption is available.";
-            default false;
-        }
-        leaf supportedAlarms {
-            type string;
-            config false;
-            description "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device.";
-            default "Supported alarms not yet defined.";
-        }
-    }
-    grouping EthernetContainerConfiguration {
-        leaf containerID {
-            type string;
-            description "ContainterID in Netconf must be the same as EthernetPortID in OpenFlow so a connection can be made between the two items, which separately exist in the controller.";
-        }
-        list segmentsIDList {
-            description "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list.";
-            key 'structureIdRef segmentIdRef';
-            config true;
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:segmentIDType;
-            min-elements 1;
-        }
-        leaf packetCompressionIsOn {
-            type boolean;
-            description "In case packet compression is activated, but no type is activated, it is assumed that the device chooses the optimum.";
-            default false;
-        }
-        leaf layer2CompressionIsOn {
-            type boolean;
-            description "Packet compression on layer 2 configured at the device.";
-            default false;
-        }
-        leaf vlanCompressionIsOn {
-            type boolean;
-            description "Packet compression on VLAN layer configured at the device.";
-            default false;
-        }
-        leaf qInQCompressionIsOn {
-            type boolean;
-            description "Packet compression on layer of a second VLAN configured at the device.";
-            default false;
-        }
-        leaf mplsCompressionIsOn {
-            type boolean;
-            description "Packet compression on MPLS layer configured at the device.";
-            default false;
-        }
-        leaf ipv4CompressionIsOn {
-            type boolean;
-            description "Packet compression on layer 3 for IPv4 configured at the device.";
-            default false;
-        }
-        leaf ipv6CompressionIsOn {
-            type boolean;
-            description "Packet compression on layer 3 for IPv6 configured at the device.";
-            default false;
-        }
-        leaf layer4CompressionIsOn {
-            type boolean;
-            description "Packet compression on layer 4 (TCP and UDP header) configured at the device.";
-            default false;
-        }
-        leaf encryptionIsOn {
-            type boolean;
-            description "Activates encryption of the Ethernet payload.";
-            default false;
-        }
-        leaf cryptographicKey {
-            type string;
-            description "Key for transforming plaintext into cipher text data.";
-            default "Cryptographic key not yet defined.";
-        }
-        list problemKindSeverityList {
-            description "Severity of the problem to be configured.";
-            key 'problemKindName';
-            config true;
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:containerProblemSeverityType;
-            min-elements 2;
-        }
-    }
-    grouping EthernetContainerStatus {
-        leaf lastStatusChange {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-            config false;
-            description "Time the Container entered its current operational status. 
-                _format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes.";
-            default "20101120140000.0Z+1";
-        }
-    }
-    grouping EthernetContainerCurrentProblems {
-        list currentProblemList {
-            key 'sequenceNumber';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:containerCurrentProblemType;
-        }
-    }
-    grouping EthernetContainerCurrentPerformance {
-        description "Aggregated performance information of the Ethernet container at a particular moment.";
-        list currentPerformanceDataList {
-            key 'scannerId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:containerCurrentPerformanceType;
-            max-elements 2;
-            min-elements 1;
-        }
-    }
-    grouping EthernetContainerHistoricalPerformances {
-        description "Aggregated performance information of the Ethernet container for a pre-defined measurement interval.";
-        list historicalPerformanceDataList {
-            key 'historyDataId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:containerHistoricalPerformanceType;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-HybridMwStructure@2016-09-02.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-HybridMwStructure@2016-09-02.yang
deleted file mode 100644 (file)
index 425d497..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-module MicrowaveModel-ObjectClasses-HybridMwStructure {
-    namespace "uri:onf:MicrowaveModel-ObjectClasses-HybridMwStructure";
-    prefix MicrowaveModel-ObjectClasses-HybridMwStructure;
-
-    import CoreModel-CoreNetworkModule-ObjectClasses {
-        prefix CoreModel-CoreNetworkModule-ObjectClasses;
-    }
-    import CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages {
-        prefix CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages;
-    }
-    import MicrowaveModel-TypeDefinitions {
-        prefix MicrowaveModel-TypeDefinitions;
-    }
-    import CoreModel-CoreFoundationModule-TypeDefinitions {
-        prefix CoreModel-CoreFoundationModule-TypeDefinitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-09-02 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    feature hybrid-microwave {
-        description "Feature 'hybrid-microwave' is mandatory for device types transporting Ethernet + TDM.";
-    }
-    list MW_HybridMwStructure_Pac {
-        description "LTP(MWS-TTP)
-            The HybridMwStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM and Ethernet traffic.";
-        key 'layerProtocol';
-        config true;
-        leaf layerProtocol {
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:_lpList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            description "";
-        }
-        container hybridMwStructureCapability {
-            config false;
-            uses HybridMwStructureCapability;
-        }
-        container hybridMwStructureConfiguration {
-            config true;
-            uses HybridMwStructureConfiguration;
-        }
-        container hybridMwStructureStatus {
-            config false;
-            uses HybridMwStructureStatus;
-        }
-        container hybridMwStructureCurrentProblems {
-            config false;
-            uses HybridMwStructureCurrentProblems;
-        }
-        container hybridMwStructureCurrentPerformance {
-            config false;
-            uses HybridMwStructureCurrentPerformance;
-        }
-        container hybridMwStructureHistoricalPerformances {
-            config false;
-            uses HybridMwStructureHistoricalPerformances;
-        }
-    }
-    grouping HybridMwStructureCapability {
-        description "Describes the logical structuring of the physical capacity provided by a hybrid microwave device (TDM + Ethernet).
-            Segmentation is available.
-            TDM transport is available.";
-        leaf structureId {
-            type CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:UniversalId;
-            config false;
-            description "Identifies the Structure for bundling and container.";
-        }
-        list supportedTdmStructureTypesList {
-            description "Lists the TDM frame types that are supported.";
-            key 'tdmStructureName';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:tdmStructureType;
-            min-elements 1;
-        }
-        leaf supportedAlarms {
-            type string;
-            config false;
-            description "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device.";
-            default "Supported alarms not yet defined.";
-        }
-    }
-    grouping HybridMwStructureConfiguration {
-        container structureType {
-            description "TDM frame to be applied.";
-            config true;
-            uses MicrowaveModel-TypeDefinitions:tdmStructureType;
-        }
-        leaf numberOfTdmSegmentsToBeReserved {
-            type int16;
-            description "Allows to configure the number of segments reserved for TDM frames of the type specified in HybridMwStructure::HybridMwStructureConfiguration::structureType";
-            default -1;
-        }
-        list problemKindSeverityList {
-            description "Severity of the type of problem to be configured.";
-            key 'problemKindName';
-            config true;
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:structureProblemSeverityType;
-        }
-    }
-    grouping HybridMwStructureStatus {
-        list segmentStatusList {
-            description "Status of each segment (all TDM and one Ethernet).
-                Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1";
-            key 'segmentStatusTypeId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:segmentStatusType;
-        }
-        leaf lastStatusChange {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-            config false;
-            description "Time and date of the last update of the status information.
-                _format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes.";
-        }
-    }
-    grouping HybridMwStructureCurrentProblems {
-        list currentProblemList {
-            key 'sequenceNumber';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:structureCurrentProblemType;
-        }
-    }
-    grouping HybridMwStructureCurrentPerformance {
-        description "Aggregated performance information of the structure of a hybrid microwave at a particular moment.";
-        list currentPerformanceDataList {
-            description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-            key 'scannerId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:structureCurrentPerformanceType;
-            max-elements 2;
-            min-elements 1;
-        }
-    }
-    grouping HybridMwStructureHistoricalPerformances {
-        description "Aggregated performance information of the structure of a hybrid microwave for a pre-defined measurement interval.";
-        list historicalPerformanceDataList {
-            key 'historyDataId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:structureHistoricalPerformanceType;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-PureEthernetStructure@2016-09-02.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-PureEthernetStructure@2016-09-02.yang
deleted file mode 100644 (file)
index a7952f8..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-module MicrowaveModel-ObjectClasses-PureEthernetStructure {
-    namespace "uri:onf:MicrowaveModel-ObjectClasses-PureEthernetStructure";
-    prefix MicrowaveModel-ObjectClasses-PureEthernetStructure;
-
-    import CoreModel-CoreNetworkModule-ObjectClasses {
-        prefix CoreModel-CoreNetworkModule-ObjectClasses;
-    }
-    import CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages {
-        prefix CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages;
-    }
-    import MicrowaveModel-TypeDefinitions {
-        prefix MicrowaveModel-TypeDefinitions;
-    }
-    import CoreModel-CoreFoundationModule-TypeDefinitions {
-        prefix CoreModel-CoreFoundationModule-TypeDefinitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-09-02 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    feature pure-ethernet {
-        description "Feature 'pure-ethernet' is mandatory for device types transporting pure Ethernet.";
-    }
-    list MW_PureEthernetStructure_Pac {
-        description "LTP(MWS-TTP)
-            The pureEthernetStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting Ethernet traffic only.";
-        key 'layerProtocol';
-        config true;
-        leaf layerProtocol {
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:_lpList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            description "";
-        }
-        container pureEthernetStructureCapability {
-            config false;
-            uses PureEthernetStructureCapability;
-        }
-        container pureEthernetStructureConfiguration {
-            config true;
-            uses PureEthernetStructureConfiguration;
-        }
-        container pureEthernetStructureStatus {
-            config false;
-            uses PureEthernetStructureStatus;
-        }
-        container pureEthernetStructureCurrentProblems {
-            config false;
-            uses PureEthernetStructureCurrentProblems;
-        }
-        container pureEthernetStructureCurrentPerformance {
-            config false;
-            uses PureEthernetStructureCurrentPerformance;
-        }
-        container pureEthernetStructureHistoricalPerformances {
-            config false;
-            uses PureEthernetStructureHistoricalPerformances;
-        }
-    }
-    grouping PureEthernetStructureCapability {
-        description "Describes the logical structuring of the physical capacity provided by a pure Ethernet microwave device.
-            Segmentation is not available.
-            No fixed segment size.
-            No TDM transport.";
-        leaf structureId {
-            type CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:UniversalId;
-            config false;
-            description "Identifies the Structure for bundling and container.";
-        }
-        leaf supportedAlarms {
-            type string;
-            config false;
-            description "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device.";
-            default "Supported alarms not yet defined.";
-        }
-    }
-    grouping PureEthernetStructureConfiguration {
-        list problemKindSeverityList {
-            description "Severity of the type of problem to be configured.";
-            key 'problemKindName';
-            config true;
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:structureProblemSeverityType;
-        }
-    }
-    grouping PureEthernetStructureStatus {
-        container segmentStatusList {
-            description "Status of the Ethernet transport segment.
-                Always just one segment.";
-            uses MicrowaveModel-TypeDefinitions:segmentStatusType;
-        }
-        leaf lastStatusChange {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-            config false;
-            description "Time and date of the last update of the status information.
-                _format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes.";
-        }
-    }
-    grouping PureEthernetStructureCurrentProblems {
-        list currentProblemList {
-            key 'sequenceNumber';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:structureCurrentProblemType;
-        }
-    }
-    grouping PureEthernetStructureCurrentPerformance {
-        description "Aggregated performance information of the structure of an pure Ethernet microwave at a particular moment.";
-        list currentPerformanceDataList {
-            description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-            key 'scannerId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:structureCurrentPerformanceType;
-            max-elements 2;
-            min-elements 1;
-        }
-    }
-    grouping PureEthernetStructureHistoricalPerformances {
-        description "Aggregated performance information of the structure of an pure Ethernet microwave for a pre-defined measurement interval.";
-        list historicalPerformanceDataList {
-            key 'historyDataId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:structureHistoricalPerformanceType;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-SuperClasses@2016-08-09.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-SuperClasses@2016-08-09.yang
deleted file mode 100644 (file)
index fe584b8..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-module MicrowaveModel-ObjectClasses-SuperClasses {
-    namespace "uri:onf:MicrowaveModel-ObjectClasses-SuperClasses";
-    prefix MicrowaveModel-ObjectClasses-SuperClasses;
-
-    import CoreModel-CoreFoundationModule-TypeDefinitions {
-        prefix CoreModel-CoreFoundationModule-TypeDefinitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-08-09 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    grouping MwCurrentProblem {
-        description "According to ITU-T G.874.1?";
-        leaf sequenceNumber {
-            type int32;
-            config false;
-            description "Unique sequence number of the current problem object.";
-        }
-        leaf timeStamp {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-            config false;
-            description "Time and date of the problem.
-                _format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes.";
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-TdmContainer@2016-09-02.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-ObjectClasses-TdmContainer@2016-09-02.yang
deleted file mode 100644 (file)
index 0820798..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-module MicrowaveModel-ObjectClasses-TdmContainer {
-    namespace "uri:onf:MicrowaveModel-ObjectClasses-TdmContainer";
-    prefix MicrowaveModel-ObjectClasses-TdmContainer;
-
-    import CoreModel-CoreNetworkModule-ObjectClasses {
-        prefix CoreModel-CoreNetworkModule-ObjectClasses;
-    }
-    import MicrowaveModel-TypeDefinitions {
-        prefix MicrowaveModel-TypeDefinitions;
-    }
-    import CoreModel-CoreFoundationModule-TypeDefinitions {
-        prefix CoreModel-CoreFoundationModule-TypeDefinitions;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-09-02 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    feature hybrid-microwave {
-        description "Feature 'hybrid-microwave' is mandatory for device types transporting Ethernet + TDM.";
-    }
-    list MW_TdmContainer_Pac {
-        description "LTP(Client)";
-        key 'layerProtocol';
-        config true;
-        leaf layerProtocol {
-            type leafref {
-                path '/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/CoreModel-CoreNetworkModule-ObjectClasses:_ltpRefList/CoreModel-CoreNetworkModule-ObjectClasses:_lpList/CoreModel-CoreNetworkModule-ObjectClasses:uuid';
-            }
-            description "";
-        }
-        container tdmContainerCapability {
-            config false;
-            uses TdmContainerCapability;
-        }
-        container tdmContainerConfiguration {
-            config true;
-            uses TdmContainerConfiguration;
-        }
-        container tdmContainerStatus {
-            config false;
-            uses TdmContainerStatus;
-        }
-        container tdmContainerCurrentProblems {
-            config false;
-            uses TdmContainerCurrentProblems;
-        }
-        container tdmContainerCurrentPerformance {
-            config false;
-            uses TdmContainerCurrentPerformance;
-        }
-        container tdmContainerHistoricalPerformances {
-            config false;
-            uses TdmContainerHistoricalPerformances;
-        }
-    }
-    grouping TdmContainerCapability {
-        description "Bundling is not available.";
-        list supportedTdmContainerTypesList {
-            description "Lists the TDM containers that are supported.";
-            key 'tdmContainerName';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:tdmContainerType;
-            min-elements 1;
-        }
-        leaf supportedAlarms {
-            type string;
-            config false;
-            description "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device.";
-            default "Supported alarms not yet defined.";
-        }
-    }
-    grouping TdmContainerConfiguration {
-        leaf containerID {
-            type string;
-            description "ContainterID in Netconf must be the same as EthernetPortID in OpenFlow so a connection can be made between the two items, which separately exist in the controller.";
-        }
-        container containerType {
-            description "Type of TDM container.";
-            config true;
-            uses MicrowaveModel-TypeDefinitions:tdmContainerType;
-        }
-        container segmentID {
-            description "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;";
-            config true;
-            uses MicrowaveModel-TypeDefinitions:segmentIDType;
-        }
-        list problemKindSeverityList {
-            description "Severity of the problem to be configured.";
-            key 'problemKindName';
-            config true;
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:containerProblemSeverityType;
-            min-elements 2;
-        }
-    }
-    grouping TdmContainerStatus {
-        leaf lastStatusChange {
-            type CoreModel-CoreFoundationModule-TypeDefinitions:DateAndTime;
-            config false;
-            description "Time the Container entered its current operational status. 
-                _format:yyyyMMddhhmmss.s[Z|{+|-}HHMm]; yyyy='0000'..'9999' year; MM='01'..'12' month; dd='01'..'31' day; hh='00'..'23' hour; mm='00'..'59' minute; ss='00'..'59' second; s='.0'..'.9'tenth of second (set to '.0' if EMS or NE cannot support this granularity); Z='Z' indicates UTC (rather than local time); {+|-}='+' or '-' delta from UTC; HH='00'..'23' time zone difference in hours; Mm='00'..'59' time zone difference in minutes.";
-            default "20101120140000.0Z+1";
-        }
-    }
-    grouping TdmContainerCurrentProblems {
-        list currentProblemList {
-            key 'sequenceNumber';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:containerCurrentProblemType;
-        }
-    }
-    grouping TdmContainerCurrentPerformance {
-        description "Aggregated performance information of the TDM container at a particular moment.";
-        list currentPerformanceDataList {
-            description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-            key 'scannerId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:containerCurrentPerformanceType;
-            max-elements 2;
-            min-elements 1;
-        }
-    }
-    grouping TdmContainerHistoricalPerformances {
-        description "Aggregated performance information of the TDM container for a pre-defined measurement interval.";
-        list historicalPerformanceDataList {
-            key 'historyDataId';
-            ordered-by system;
-            uses MicrowaveModel-TypeDefinitions:containerHistoricalPerformanceType;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-TypeDefinitions@2016-09-02.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/MicrowaveModel-TypeDefinitions@2016-09-02.yang
deleted file mode 100644 (file)
index 971ff2b..0000000
+++ /dev/null
@@ -1,748 +0,0 @@
-module MicrowaveModel-TypeDefinitions {
-    namespace "uri:onf:MicrowaveModel-TypeDefinitions";
-    prefix MicrowaveModel-TypeDefinitions;
-
-    import CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages {
-        prefix CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages;
-    }
-    import MicrowaveModel-ObjectClasses-SuperClasses {
-        prefix MicrowaveModel-ObjectClasses-SuperClasses;
-    }
-    import G_874_1_model-Object_Classes {
-        prefix G_874_1_model-Object_Classes;
-    }
-    import CoreModel-CoreFoundationModule-StateModel {
-        prefix CoreModel-CoreFoundationModule-StateModel;
-    }
-
-    organization 
-        'ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project';
-
-    contact 
-        'WG Web:   <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-         WG List:  <mailto:wireless-transport@login.opennetworking.org >
-         WG Chair: Lyndon Ong
-                   <mailto:lyong@ciena.com>
-         WG Chair: Giorgio Cazzaniga
-                   <mailto:giorgio.cazzaniga@sm-optics.com>';
-
-    description 
-        'This module contains a collection of YANG definitions for 
-         managing microwave transport networks.';
-
-    revision 2016-09-02 {
-        description 
-            "Initial revision."; 
-        reference 
-            "ONF TR xyz: A YANG Data Model for Microwave Transport Networks."; 
-    }
-
-    typedef severityType {
-        description "According to ITU-T M.3160";
-        type enumeration {
-            enum non-alarmed;
-            enum warning;
-            enum minor;
-            enum major;
-            enum critical;
-        }
-    }
-    grouping channelPlanType {
-        leaf supportedChannelPlan {
-            type string;
-            config false;
-            description "Unique name (e.g. CEPT/ERC/REC (01) 04 Annex 5) of an international agreement that describe allocations of frequency channels, to which this air interface complies. Corresponding channel plans to be delivered by the hardware vendor and to be stored by the operator in the controller/application attached database.";
-        }
-        leaf duplexDistanceIsVariable {
-            type boolean;
-            config false;
-            description "To be set on  'true', if the distance between transmitted and received frequency is variable.";
-            default false;
-        }
-        leaf duplexDistance {
-            type int32;
-            config false;
-            description "Distance between transmitted and received frequency.";
-            units "kHz";
-            default -1;
-        }
-        leaf autoFreqSelectIsAvail {
-            type boolean;
-            config false;
-            description "In case the microwave radio is capable of automatically selecting the transmit frequency in unlicensed bands, this field shall contain a 'true'.";
-            default false;
-        }
-        list transmissionModeList {
-            key 'transmissionModeId';
-            ordered-by system;
-            uses transmissionModeType;
-            min-elements 1;
-        }
-    }
-    grouping transmissionModeType {
-        leaf transmissionModeId {
-            type CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:UniversalId;
-            config false;
-            description "Indentifies the transmissionMode for internal reference.";
-        }
-        leaf channelBandwidth {
-            type int32;
-            config false;
-            description "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-            units "kHz";
-            default -1;
-        }
-        leaf modulationScheme {
-            type int16;
-            config false;
-            description "Modulation scheme, which is base to the other characteristics described in the same transmissionModeType data type. The modulation scheme shall be described by the number of symbols (e.g. BPSK->'2' or 256QAM->'256').";
-            units "symbols";
-            default -1;
-        }
-        leaf informationRate {
-            type int8;
-            config false;
-            description "Information rate of the coding scheme in %.";
-            units "%";
-            default -1;
-        }
-        leaf txPowerMin {
-            type int8;
-            config false;
-            description "Value of the minimum transmit power the modem can operate in dBm.";
-            units "dBm";
-            default 99;
-        }
-        leaf txPowerMax {
-            type int8;
-            config false;
-            description "Value of the maximum transmit power the modem can operate in dBm.";
-            units "dBm";
-            default 99;
-        }
-        leaf rxThreshold {
-            type int16;
-            config false;
-            description "Value of the receive level required to decode the received signal with a Bit Error Rate of 1e-6 or less.";
-            units "dBm";
-            default 99;
-        }
-        leaf amUpshiftLevel {
-            type int8;
-            config false;
-            description "Value of the receive level that has to be exceeded to shift into a higher modulation scheme.";
-            units "dBm";
-            default 99;
-        }
-        leaf amDownshiftLevel {
-            type int8;
-            config false;
-            description "Value of the receive level that has to be exceeded for not shifting into a lower modulation scheme.";
-            units "dBm";
-            default 99;
-        }
-        leaf xpicIsAvail {
-            type boolean;
-            config false;
-            description "In case the Air Interface Port is capable of XPIC, this field shall contain a 'true'.";
-            default false;
-        }
-    }
-    typedef polarizationType {
-        type enumeration {
-            enum not-specified;
-            enum horizontal;
-            enum vertical;
-        }
-    }
-    grouping airInterfaceProblemSeverityType {
-        leaf problemKindName {
-            type string;
-            description "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms";
-        }
-        leaf problemKindSeverity {
-            type severityType;
-            description "Severity of this type of alarm.";
-            default "warning";
-        }
-    }
-    grouping airInterfaceCurrentProblemType {
-        uses MicrowaveModel-ObjectClasses-SuperClasses:MwCurrentProblem;
-        leaf problemName {
-            type string;
-            config false;
-            description "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms";
-            default "Air interface problems not yet defined.";
-        }
-        leaf problemSeverity {
-            type severityType;
-            config false;
-            description "Severity of the alarm.";
-            default "warning";
-        }
-    }
-    grouping airInterfacePerformanceType {
-        description "Consolidated performance information of the air interface.";
-        leaf es {
-            type int32;
-            config false;
-            description "Number of errored seconds.";
-            units "s";
-            default -1;
-        }
-        leaf ses {
-            type int32;
-            config false;
-            description "Number of severely errored seconds.";
-            units "s";
-            default -1;
-        }
-        leaf cses {
-            type int32;
-            config false;
-            description "Number of consecutive severely errored seconds.";
-            units "s";
-            default -1;
-        }
-        leaf unavailability {
-            type int32;
-            config false;
-            description "Total time of unavailability in seconds.";
-            units "s";
-            default -1;
-        }
-        leaf txLevelMin {
-            type int8;
-            config false;
-            description "Minimum transmit power. Signed integers are required.";
-            units "dBm";
-            default 99;
-        }
-        leaf txLevelMax {
-            type int8;
-            config false;
-            description "Maximum transmit power. Signed integers are required.";
-            units "dBm";
-            default 99;
-        }
-        leaf txLevelAvg {
-            type int8;
-            config false;
-            description "Averaged transmit power. Signed integers are required.";
-            units "dBm";
-            default 99;
-        }
-        leaf rxLevelMin {
-            type int8;
-            config false;
-            description "Minimum receive level. Signed integers are required.";
-            units "dBm";
-            default 99;
-        }
-        leaf rxLevelMax {
-            type int8;
-            config false;
-            description "Maximum receive level. Signed integers are required.";
-            units "dBm";
-            default 99;
-        }
-        leaf rxLevelAvg {
-            type int8;
-            config false;
-            description "Averaged receive level. Signed integers are required.";
-            units "dBm";
-            default 99;
-        }
-        leaf time2Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time4SymbolsS {
-            type int32;
-            config false;
-            description "Sum of all seconds the transmitter operated in e.g. 4QAM strong.";
-            units "s";
-            default -1;
-        }
-        leaf time4Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time8Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time16SymbolsS {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time16Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time32Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time64Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time128Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time256Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time512Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time512SymbolsL {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time1024Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time1024SymbolsL {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time2048Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time2048SymbolsL {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time4096Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time4096SymbolsL {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time8192Symbols {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf time8192SymbolsL {
-            type int32;
-            config false;
-            units "s";
-            default -1;
-        }
-        leaf snirMin {
-            type int8;
-            config false;
-            description "Minimum signal to (noise+interference) ratio.";
-            units "dB";
-            default -99;
-        }
-        leaf snirMax {
-            type int8;
-            config false;
-            description "Maximum signal to (noise+interference) ratio.";
-            units "dB";
-            default -99;
-        }
-        leaf snirAvg {
-            type int8;
-            config false;
-            description "Averaged signal to (noise+interference) ratio.";
-            units "dB";
-            default -99;
-        }
-        leaf xpdMin {
-            type int8;
-            config false;
-            description "Minimum cross polarization discrimination.";
-            units "dB";
-            default -99;
-        }
-        leaf xpdMax {
-            type int8;
-            config false;
-            description "Maximum cross polarization discrimination.";
-            units "dB";
-            default -99;
-        }
-        leaf xpdAvg {
-            type int8;
-            config false;
-            description "Averaged cross polarization discrimination.";
-            units "dB";
-            default -99;
-        }
-        leaf rfTempMin {
-            type int8;
-            config false;
-            description "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            units "C";
-            default -99;
-        }
-        leaf rfTempMax {
-            type int8;
-            config false;
-            description "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            units "C";
-            default -99;
-        }
-        leaf rfTempAvg {
-            type int8;
-            config false;
-            description "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            units "C";
-            default -99;
-        }
-        leaf defectBlocksSum {
-            type int16;
-            config false;
-            description "Total number of blocks that were defect after receiving and could not be corrected by the FEC.";
-            units "blocks";
-            default -1;
-        }
-        leaf timePeriod {
-            type int32;
-            config false;
-            description "Total length of the measurement period.";
-            units "s";
-            default -1;
-        }
-    }
-    grouping airInterfaceCurrentPerformanceType {
-        description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        uses G_874_1_model-Object_Classes:OTN_CurrentData;
-        container performanceData {
-            uses airInterfacePerformanceType;
-        }
-    }
-    grouping airInterfaceHistoricalPerformanceType {
-        description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        uses G_874_1_model-Object_Classes:OTN_HistoryData;
-        container performanceData {
-            uses airInterfacePerformanceType;
-        }
-    }
-    typedef protectionType {
-        type enumeration {
-            enum hsb;
-        }
-    }
-    typedef roleType {
-        type enumeration {
-            enum working;
-            enum protection;
-            enum protected;
-        }
-    }
-    grouping diversityType {
-        leaf diversityName {
-            type string;
-            config false;
-            description "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'";
-        }
-        leaf numberOfAirInterfacesMax {
-            type int8;
-            config false;
-            description "Maximum number of air interfaces that could be part of this kind of diversity.";
-            units "air interfaces";
-            default 1;
-        }
-    }
-    typedef airInterfaceDiversityStatusType {
-        type enumeration {
-            enum groupDown;
-            enum notAllAiActive;
-            enum allAiActive;
-        }
-    }
-    grouping airInterfaceDiversityProblemSeverityType {
-        leaf problemKindName {
-            type string;
-            description "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms";
-        }
-        leaf problemKindSeverity {
-            type severityType;
-            description "Severity of this type of alarm.";
-            default "warning";
-        }
-    }
-    grouping airInterfaceDiversityCurrentProblemType {
-        uses MicrowaveModel-ObjectClasses-SuperClasses:MwCurrentProblem;
-        leaf problemName {
-            type string;
-            config false;
-            description "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms";
-            default "Air interface diversity problems not yet defined.";
-        }
-        leaf problemSeverity {
-            type severityType;
-            description "Severity of the alarm.";
-            default "warning";
-        }
-    }
-    grouping airInterfaceDiversityPerformanceType {
-        description "Consolidated performance information of the air interface diversity group.";
-        leaf snirMin {
-            type int8;
-            config false;
-            description "Minimum signal to (noise+interference) ratio of the combined signals.";
-            units "dB";
-            default -99;
-        }
-        leaf snirMax {
-            type int8;
-            config false;
-            description "Maximum signal to (noise+interference) ratio of the combined signals.";
-            units "dB";
-            default -99;
-        }
-        leaf snirAvg {
-            type int8;
-            config false;
-            description "Average signal to (noise+interference) ratio of the combined signals.";
-            units "dB";
-            default -99;
-        }
-    }
-    grouping airInterfaceDiversityCurrentPerformanceType {
-        description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        uses G_874_1_model-Object_Classes:OTN_CurrentData;
-        container performanceData {
-            uses airInterfaceDiversityPerformanceType;
-        }
-    }
-    grouping airInterfaceDiversityHistoricalPerformanceType {
-        description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        uses G_874_1_model-Object_Classes:OTN_HistoryData;
-        container performanceData {
-            uses airInterfaceDiversityPerformanceType;
-        }
-    }
-    grouping tdmStructureType {
-        leaf tdmStructureName {
-            type string;
-            config false;
-            description "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-        }
-        leaf tdmSegmentSize {
-            type int32;
-            config false;
-            description "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;";
-            units "kbit/s";
-            default -1;
-        }
-        leaf maxNumberOfSegmentsReservable {
-            type int8;
-            config false;
-            description "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface.";
-            units "segments";
-            default -1;
-        }
-    }
-    grouping structureProblemSeverityType {
-        leaf problemKindName {
-            type string;
-            description "Name of the alarm according to Structure::StructureCapability::supportedAlarms";
-        }
-        leaf problemKindSeverity {
-            type severityType;
-            description "Severity of this type of alarm.";
-            default "warning";
-        }
-    }
-    grouping structureCurrentProblemType {
-        uses MicrowaveModel-ObjectClasses-SuperClasses:MwCurrentProblem;
-        leaf problemName {
-            type string;
-            config false;
-            description "Name of the alarm according to Structure::StructureCapability::supportedAlarms";
-            default "Structure problems not yet defined.";
-        }
-        leaf problemSeverity {
-            type severityType;
-            description "Severity of the alarm.";
-            default "warning";
-        }
-    }
-    typedef structurePerformanceType {
-        description "Consolidated performance information of the Structure.";
-        type int32;
-    }
-    grouping structureCurrentPerformanceType {
-        description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        uses G_874_1_model-Object_Classes:OTN_CurrentData;
-        leaf performanceData {
-            type structurePerformanceType;
-            config false;
-        }
-    }
-    grouping structureHistoricalPerformanceType {
-        description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        uses G_874_1_model-Object_Classes:OTN_HistoryData;
-        leaf performanceData {
-            type structurePerformanceType;
-            config false;
-        }
-    }
-    grouping tdmContainerType {
-        leaf tdmContainerName {
-            type string;
-            config false;
-            description "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-        }
-        leaf tdmContainerSize {
-            type int32;
-            config false;
-            description "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;";
-            units "kbit/s";
-            default -1;
-        }
-    }
-    grouping segmentIDType {
-        description "Identifies the segments, which are used to transport the container.
-            Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once.";
-        leaf structureIdRef {
-            type CoreModel-CoreFoundationModule-SuperClassesAndCommonPackages:UniversalId;
-        }
-        leaf segmentIdRef {
-            type int16;
-        }
-    }
-    grouping segmentStatusType {
-        leaf segmentStatusTypeId {
-            type int16;
-            config false;
-        }
-        leaf segmentIsReservedForTdm {
-            type boolean;
-            config false;
-            description "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm.
-                ";
-            default false;
-        }
-        leaf operationalStatus {
-            type CoreModel-CoreFoundationModule-StateModel:OperationalState;
-            config false;
-            description "Current operational status of each segment.";
-            default "DISABLED";
-        }
-    }
-    grouping containerProblemSeverityType {
-        leaf problemKindName {
-            type string;
-            description "Name of the alarm according to Container::ContainerCapability::supportedAlarms";
-        }
-        leaf problemKindSeverity {
-            type severityType;
-            description "Severity of this type of alarm.";
-            default "warning";
-        }
-    }
-    grouping containerCurrentProblemType {
-        uses MicrowaveModel-ObjectClasses-SuperClasses:MwCurrentProblem;
-        leaf problemName {
-            type string;
-            config false;
-            description "Name of the alarm according to Container::ContainerCapability::supportedAlarms";
-            default "Container problems not yet defined.";
-        }
-        leaf problemSeverity {
-            type severityType;
-            description "Severity of the alarm.";
-            default "warning";
-        }
-    }
-    grouping containerPerformanceType {
-        description "Consolidated performance information of the Container.";
-        leaf txEthernetBytesMaxS {
-            type int32;
-            config false;
-            description "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers.
-                Required data volume = 31bit";
-            units "Bytes/s";
-            default -1;
-        }
-        leaf txEthernetBytesMaxM {
-            type int64;
-            config false;
-            description "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers.
-                Required data volume = 37bit";
-            units "Bytes/min";
-            default -1;
-        }
-        leaf txEthernetBytesSum {
-            type int64;
-            config false;
-            description "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers.
-                Required data volume = 47bit";
-            units "Bytes";
-            default -1;
-        }
-        leaf timePeriod {
-            type int32;
-            config false;
-            description "Total length of the measurement period in seconds.
-                Required data volume = 17bit";
-            units "s";
-            default -1;
-        }
-    }
-    grouping containerCurrentPerformanceType {
-        description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        uses G_874_1_model-Object_Classes:OTN_CurrentData;
-        container performanceData {
-            uses containerPerformanceType;
-        }
-    }
-    grouping containerHistoricalPerformanceType {
-        description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        uses G_874_1_model-Object_Classes:OTN_HistoryData;
-        container performanceData {
-            uses containerPerformanceType;
-        }
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/NetworkElement@2016-02-03.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/NetworkElement@2016-02-03.yang
deleted file mode 100644 (file)
index 1e6a074..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-module NetworkElement {
-       yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:networkelement:api";
-    prefix "networkelement";
-       
-    description
-        "Network Element Model";
-
-    revision "2016-02-03" {
-        description
-            "Initial revision";
-    }
-       
-       grouping ne{
-               leaf name {
-               description "Network Element Name";
-               config "true";
-               type string;
-        }
-        
-       leaf ip {
-               description "Network Element Ip Address";
-               config "true";
-               type string;
-       }
-       
-       leaf port {
-               description "Network Element Port";
-               config "true" ;
-               type string;
-         }
-       
-       leaf username {
-               description "Network Element Username";
-               config "true";
-               type string;
-
-        }
-        
-        leaf password {
-               description "Network Element Password";
-               config "true";
-               type string;
-        }
-        
-        leaf connected {
-               description "Network Element Is Connected";
-               config "true";
-               type boolean;
-               default "false";
-        }
-       }
-       
-    container networkElements {
-       list networkElement{
-               key "name";
-               max-elements "unbounded";
-               min-elements "0";
-               description
-                       "Network Elements";
-               
-               uses ne;
-       }
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/bbf-tr-196-2-0-3-full@2018-04-08.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/bbf-tr-196-2-0-3-full@2018-04-08.yang
deleted file mode 100644 (file)
index d10c58b..0000000
+++ /dev/null
@@ -1,17194 +0,0 @@
-module bbf-tr-196-2-0-3-full {
-  namespace "urn:onf:otcc:wireless:yang:radio-access";
-  prefix ran;
-
-  import ietf-yang-types {
-    prefix yang;
-  }
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  organization
-    "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Project";
-  contact
-    "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-     WG List:  <mailto:wireless-transport@login.opennetworking.org>
-     WG Chair: Lyndon Ong         <mailto:lyong@ciena.com>
-     WG Chair: Giorgio Cazzaniga  <mailto:giorgio.cazzaniga@sm-optics.com>
-     Editors:  Ramakrishnan, Shanthakumar (Shanth) <Shanthakumar.Ramakrishnan@commscope.com>                    Martin Skorupski   <mailto:martin.skorupski@highstreet-technologies.com>";
-  description
-    "This module contains a collection of YANG definitions for managing radio access network (RAN) devices.";
-
-  revision 2018-04-08 {
-    description
-      "Initial version, used only for ONAP PoC 2018-06-25";
-    reference
-      "ONF TR ???: A YANG Data Model for Radio Access Networks.
-       BBF TR-196 2.0.3 full";
-  }
-
-  list fap-service {
-    key "alias";
-    uses fap-service-g;
-    container capabilities {
-      uses capabilities-g;
-      description
-        "Container for object class FAPService.{i}.Capabilities.";
-      container capabilities-umts {
-        uses capabilities-umts-g;
-        description
-          "Container for object class FAPService.{i}.Capabilities.UMTS.";
-        container capabilities-umts-self-config {
-          uses capabilities-umts-self-config-g;
-          description
-            "Container for object class FAPService.{i}.Capabilities.UMTS.SelfConfig.";
-        }
-      }
-      container capabilities-lte {
-        uses capabilities-lte-g;
-        description
-          "Container for object class FAPService.{i}.Capabilities.LTE.";
-      }
-      container capabilities-cdma2000 {
-        uses capabilities-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.Capabilities.CDMA2000.";
-        container capabilities-cdma2000-one-x {
-          uses capabilities-cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.Capabilities.CDMA2000.OneX.";
-          container capabilities-cdma2000-one-x-self-config {
-            uses capabilities-cdma2000-one-x-self-config-g;
-            description
-              "Container for object class FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.";
-          }
-        }
-        container capabilities-cdma2000-hrpd {
-          uses capabilities-cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.Capabilities.CDMA2000.HRPD.";
-          container capabilities-cdma2000-hrpd-self-config {
-            uses capabilities-cdma2000-hrpd-self-config-g;
-            description
-              "Container for object class FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.";
-          }
-        }
-      }
-    }
-    container fap-control {
-      uses fap-control-g;
-      description
-        "Container for object class FAPService.{i}.FAPControl.";
-      container fap-control-umts {
-        uses fap-control-umts-g;
-        description
-          "Container for object class FAPService.{i}.FAPControl.UMTS.";
-        container fap-control-umts-self-config {
-          uses fap-control-umts-self-config-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.UMTS.SelfConfig.";
-        }
-        container fap-control-umts-gateway {
-          uses fap-control-umts-gateway-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.UMTS.Gateway.";
-        }
-      }
-      container fap-control-lte {
-        uses fap-control-lte-g;
-        description
-          "Container for object class FAPService.{i}.FAPControl.LTE.";
-        container fap-control-lte-gateway {
-          uses fap-control-lte-gateway-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.LTE.Gateway.";
-        }
-      }
-      container fap-control-cdma2000 {
-        uses fap-control-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.FAPControl.CDMA2000.";
-        container fap-control-cdma2000-time {
-          uses fap-control-cdma2000-time-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.Time.";
-        }
-        container fap-control-cdma2000-one-x {
-          uses fap-control-cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.";
-          container fap-control-cdma2000-one-x-active-handin-measurement {
-            uses fap-control-cdma2000-one-x-active-handin-measurement-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.";
-          }
-          container fap-control-cdma2000-one-x-self-config {
-            uses fap-control-cdma2000-one-x-self-config-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.";
-          }
-        }
-        container fap-control-cdma2000-gateway {
-          uses fap-control-cdma2000-gateway-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.Gateway.";
-        }
-        container fap-control-cdma2000-hrpd {
-          uses fap-control-cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.";
-          container fap-control-cdma2000-hrpd-self-config {
-            uses fap-control-cdma2000-hrpd-self-config-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.";
-          }
-          container fap-control-cdma2000-hrpd-a13 {
-            uses fap-control-cdma2000-hrpd-a13-g;
-            description
-              "Container for object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.";
-            list fap-control-cdma2000-hrpd-a13-color-code-to-uati104 {
-              key "color-code uati104";
-              uses fap-control-cdma2000-hrpd-a13-color-code-to-uati104-g;
-              description
-                "List of object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.";
-            }
-            list fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip {
-              key "a13-ip-address";
-              uses fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip-g;
-              description
-                "List of object class FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.";
-            }
-          }
-        }
-      }
-    }
-    container access-mgmt {
-      uses access-mgmt-g;
-      description
-        "Container for object class FAPService.{i}.AccessMgmt.";
-      container access-mgmt-umts {
-        uses access-mgmt-umts-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.UMTS.";
-        list access-mgmt-umts-member-detail {
-          key "imsi";
-          uses access-mgmt-umts-member-detail-g;
-          description
-            "List of object class FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.";
-        }
-        container access-mgmt-umts-local-ip-access {
-          uses access-mgmt-umts-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.";
-        }
-      }
-      container access-mgmt-lte {
-        uses access-mgmt-lte-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.LTE.";
-        container access-mgmt-lte-local-ip-access {
-          uses access-mgmt-lte-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.";
-        }
-      }
-      container access-mgmt-cdma2000 {
-        uses access-mgmt-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.";
-        list access-mgmt-cdma2000-member-detail {
-          key "imsi";
-          uses access-mgmt-cdma2000-member-detail-g;
-          description
-            "List of object class FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.";
-        }
-        container access-mgmt-cdma2000-local-ip-access {
-          uses access-mgmt-cdma2000-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.";
-          container access-mgmt-cdma2000-local-ip-access-hrpd {
-            uses access-mgmt-cdma2000-local-ip-access-hrpd-g;
-            description
-              "Container for object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.";
-            list access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter {
-              key "subnet subnet-mask";
-              uses access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter-g;
-              description
-                "List of object class FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.";
-            }
-          }
-        }
-      }
-      container access-mgmt-legacy {
-        uses access-mgmt-legacy-g;
-        description
-          "Container for object class FAPService.{i}.AccessMgmt.Legacy.";
-        container access-mgmt-legacy-local-ip-access {
-          uses access-mgmt-legacy-local-ip-access-g;
-          description
-            "Container for object class FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.";
-          list access-mgmt-legacy-local-ip-access-rule {
-            key "dest-ip-address dest-subnet-mask protocol";
-            uses access-mgmt-legacy-local-ip-access-rule-g;
-            description
-              "List of object class FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.";
-          }
-        }
-      }
-    }
-    container cell-config {
-      uses cell-config-g;
-      description
-        "Container for object class FAPService.{i}.CellConfig.";
-      container umts {
-        uses umts-g;
-        description
-          "Container for object class FAPService.{i}.CellConfig.UMTS.";
-        container umts-cn {
-          uses umts-cn-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.UMTS.CN.";
-          container umts-cn-cs-domain {
-            uses umts-cn-cs-domain-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.CN.CSDomain.";
-          }
-          container umts-cn-ps-domain {
-            uses umts-cn-ps-domain-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.CN.PSDomain.";
-          }
-        }
-        container umts-ran {
-          uses umts-ran-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.";
-          container umts-ran-csg {
-            uses umts-ran-csg-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CSG.";
-            container umts-ran-csg-csgpsc-split-info {
-              uses umts-ran-csg-csgpsc-split-info-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.";
-            }
-          }
-          container umts-ran-cell-selection {
-            uses umts-ran-cell-selection-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.";
-          }
-          container umts-ran-rrc-timers {
-            uses umts-ran-rrc-timers-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.";
-          }
-          container umts-ran-drx {
-            uses umts-ran-drx-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.DRX.";
-          }
-          container umts-ran-power-control {
-            uses umts-ran-power-control-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.";
-          }
-          container umts-ran-cell-restriction {
-            uses umts-ran-cell-restriction-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.";
-          }
-          container umts-ran-intra-freq-meas {
-            uses umts-ran-intra-freq-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.";
-            list umts-ran-intra-freq-meas-instance {
-              key "intra-frequency-event-identity";
-              uses umts-ran-intra-freq-meas-instance-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.";
-            }
-          }
-          container umts-ran-inter-freq-meas {
-            uses umts-ran-inter-freq-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.";
-            list umts-ran-inter-freq-meas-instance {
-              key "intra-frequency-event-identity";
-              uses umts-ran-inter-freq-meas-instance-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.";
-            }
-          }
-          container umts-ran-inter-rat-meas {
-            uses umts-ran-inter-rat-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.";
-            list umts-ran-inter-rat-meas-instance {
-              key "inter-rat-event-identity";
-              uses umts-ran-inter-rat-meas-instance-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.";
-            }
-          }
-          container umts-ran-ue-internal-meas {
-            uses umts-ran-ue-internal-meas-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.";
-          }
-          container umts-ran-rf {
-            uses umts-ran-rf-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.RF.";
-          }
-          container umts-ran-neighbor-list {
-            uses umts-ran-neighbor-list-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.";
-            list umts-ran-neighbor-list-intra-freq-cell {
-              key "pcpich-scrambling-code";
-              uses umts-ran-neighbor-list-intra-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.";
-            }
-            list umts-ran-neighbor-list-inter-freq-cell {
-              key "pcpich-scrambling-code uarfcndl";
-              uses umts-ran-neighbor-list-inter-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.";
-            }
-            container umts-ran-neighbor-list-inter-rat-cell {
-              uses umts-ran-neighbor-list-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.";
-              list umts-ran-neighbor-list-inter-rat-cell-gsm {
-                key "bccharfcn";
-                uses umts-ran-neighbor-list-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.";
-              }
-            }
-          }
-          container umts-ran-neighbor-list-in-use {
-            uses umts-ran-neighbor-list-in-use-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.";
-            list umts-ran-neighbor-list-in-use-intra-freq-cell {
-              key "pcpich-scrambling-code";
-              uses umts-ran-neighbor-list-in-use-intra-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.";
-            }
-            list umts-ran-neighbor-list-in-use-inter-freq-cell {
-              key "pcpich-scrambling-code uarfcndl";
-              uses umts-ran-neighbor-list-in-use-inter-freq-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.";
-            }
-            container umts-ran-neighbor-list-in-use-inter-rat-cell {
-              uses umts-ran-neighbor-list-in-use-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.";
-              list umts-ran-neighbor-list-in-use-inter-rat-cell-gsm {
-                key "bccharfcn";
-                uses umts-ran-neighbor-list-in-use-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-              }
-            }
-          }
-        }
-        container umts-rab {
-          uses umts-rab-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.UMTS.RAB.";
-        }
-      }
-      container lte {
-        uses lte-g;
-        description
-          "Container for object class FAPService.{i}.CellConfig.LTE.";
-        list lte-tunnel {
-          key "tunnel-ref";
-          uses lte-tunnel-g;
-          description
-            "List of object class FAPService.{i}.CellConfig.LTE.Tunnel.{i}.";
-        }
-        container lte-epc {
-          uses lte-epc-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.LTE.EPC.";
-          list lte-epc-plmn-list {
-            key "plmnid";
-            uses lte-epc-plmn-list-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.";
-          }
-          list lte-epc-qo-s {
-            key "qci";
-            uses lte-epc-qo-s-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.";
-          }
-        }
-        container lte-ran {
-          uses lte-ran-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.LTE.RAN.";
-          container lte-ran-common {
-            uses lte-ran-common-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Common.";
-          }
-          container lte-ran-s1-ap {
-            uses lte-ran-s1-ap-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.S1AP.";
-          }
-          container lte-ran-s1-u {
-            uses lte-ran-s1-u-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.S1U.";
-          }
-          container lte-ran-rf {
-            uses lte-ran-rf-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RF.";
-          }
-          container lte-ran-phy {
-            uses lte-ran-phy-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.";
-            container lte-ran-phy-antenna-info {
-              uses lte-ran-phy-antenna-info-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.";
-            }
-            container lte-ran-phy-pdsch {
-              uses lte-ran-phy-pdsch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.";
-            }
-            container lte-ran-phy-srs {
-              uses lte-ran-phy-srs-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.";
-            }
-            container lte-ran-phy-prach {
-              uses lte-ran-phy-prach-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.";
-            }
-            container lte-ran-phy-pucch {
-              uses lte-ran-phy-pucch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.";
-            }
-            container lte-ran-phy-pusch {
-              uses lte-ran-phy-pusch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.";
-              container lte-ran-phy-pusch-ulrs {
-                uses lte-ran-phy-pusch-ulrs-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.";
-              }
-            }
-            container lte-ran-phy-ul-power-control {
-              uses lte-ran-phy-ul-power-control-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.";
-            }
-            container lte-ran-phy-mbsfn {
-              uses lte-ran-phy-mbsfn-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.";
-              list lte-ran-phy-mbsfn-sf-config-list {
-                key "radio-frame-allocation-period radioframe-allocation-offset radio-frame-allocation-size";
-                uses lte-ran-phy-mbsfn-sf-config-list-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.";
-              }
-            }
-            container lte-ran-phy-prs {
-              uses lte-ran-phy-prs-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.";
-            }
-            container lte-ran-phy-tdd-frame {
-              uses lte-ran-phy-tdd-frame-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.";
-            }
-          }
-          container lte-ran-mac {
-            uses lte-ran-mac-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.";
-            container lte-ran-mac-rach {
-              uses lte-ran-mac-rach-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.";
-            }
-            container lte-ran-mac-drx {
-              uses lte-ran-mac-drx-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.";
-            }
-            container lte-ran-mac-ulsch {
-              uses lte-ran-mac-ulsch-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.";
-            }
-          }
-          container lte-ran-rlc {
-            uses lte-ran-rlc-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.";
-            container lte-ran-rlc-srb1 {
-              uses lte-ran-rlc-srb1-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.";
-            }
-            container lte-ran-rlc-srb2 {
-              uses lte-ran-rlc-srb2-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.";
-            }
-          }
-          container lte-ran-rrc-timers {
-            uses lte-ran-rrc-timers-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.";
-          }
-          container lte-ran-cell-restriction {
-            uses lte-ran-cell-restriction-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.";
-          }
-          container lte-ran-mobility {
-            uses lte-ran-mobility-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.";
-            container lte-ran-mobility-idle-mode {
-              uses lte-ran-mobility-idle-mode-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.";
-              container lte-ran-mobility-idle-mode-common {
-                uses lte-ran-mobility-idle-mode-common-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.";
-              }
-              container lte-ran-mobility-idle-mode-intra-freq {
-                uses lte-ran-mobility-idle-mode-intra-freq-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.";
-              }
-              container lte-ran-mobility-idle-mode-inter-freq {
-                uses lte-ran-mobility-idle-mode-inter-freq-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.";
-                list lte-ran-mobility-idle-mode-inter-freq-carrier {
-                  key "eutra-carrier-arfcn";
-                  uses lte-ran-mobility-idle-mode-inter-freq-carrier-g;
-                  description
-                    "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.";
-                }
-              }
-              container lte-ran-mobility-idle-mode-irat {
-                uses lte-ran-mobility-idle-mode-irat-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.";
-                container lte-ran-mobility-idle-mode-irat-utra {
-                  uses lte-ran-mobility-idle-mode-irat-utra-g;
-                  description
-                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.";
-                  list lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq {
-                    key "utra-carrier-arfcn";
-                    uses lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq-g;
-                    description
-                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.";
-                  }
-                }
-                container lte-ran-mobility-idle-mode-irat-geran {
-                  uses lte-ran-mobility-idle-mode-irat-geran-g;
-                  description
-                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.";
-                  list lte-ran-mobility-idle-mode-irat-geran-geran-freq-group {
-                    key "bccharfcn";
-                    uses lte-ran-mobility-idle-mode-irat-geran-geran-freq-group-g;
-                    description
-                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.";
-                  }
-                }
-                container lte-ran-mobility-idle-mode-irat-cdma2000 {
-                  uses lte-ran-mobility-idle-mode-irat-cdma2000-g;
-                  description
-                    "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.";
-                  list lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band {
-                    key "band-class";
-                    uses lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band-g;
-                    description
-                      "List of object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.";
-                  }
-                }
-              }
-            }
-            container lte-ran-mobility-conn-mode {
-              uses lte-ran-mobility-conn-mode-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.";
-              container lte-ran-mobility-conn-mode-eutra {
-                uses lte-ran-mobility-conn-mode-eutra-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.";
-              }
-              container lte-ran-mobility-conn-mode-irat {
-                uses lte-ran-mobility-conn-mode-irat-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.";
-              }
-            }
-          }
-          container lte-ran-neighbor-list {
-            uses lte-ran-neighbor-list-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.";
-            list lte-ran-neighbor-list-lte-cell {
-              key "plmnid cid";
-              uses lte-ran-neighbor-list-lte-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.";
-            }
-            container lte-ran-neighbor-list-inter-rat-cell {
-              uses lte-ran-neighbor-list-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.";
-              list lte-ran-neighbor-list-inter-rat-cell-umts {
-                key "plmnid cid";
-                uses lte-ran-neighbor-list-inter-rat-cell-umts-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.";
-              }
-              list lte-ran-neighbor-list-inter-rat-cell-gsm {
-                key "plmnid lac ci";
-                uses lte-ran-neighbor-list-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.";
-              }
-              list lte-ran-neighbor-list-inter-rat-cell-cdma2000 {
-                key "cid";
-                uses lte-ran-neighbor-list-inter-rat-cell-cdma2000-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.";
-              }
-            }
-          }
-          container lte-ran-neighbor-list-in-use {
-            uses lte-ran-neighbor-list-in-use-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.";
-            list lte-ran-neighbor-list-in-use-lte-cell {
-              key "plmnid cid";
-              uses lte-ran-neighbor-list-in-use-lte-cell-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.";
-            }
-            container lte-ran-neighbor-list-in-use-inter-rat-cell {
-              uses lte-ran-neighbor-list-in-use-inter-rat-cell-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.";
-              list lte-ran-neighbor-list-in-use-inter-rat-cell-umts {
-                key "plmnid cid";
-                uses lte-ran-neighbor-list-in-use-inter-rat-cell-umts-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.";
-              }
-              list lte-ran-neighbor-list-in-use-inter-rat-cell-gsm {
-                key "plmnid lac ci";
-                uses lte-ran-neighbor-list-in-use-inter-rat-cell-gsm-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-              }
-              list lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000 {
-                key "cid";
-                uses lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.";
-              }
-            }
-          }
-        }
-      }
-      container cdma2000 {
-        uses cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.CellConfig.CDMA2000.";
-        container cdma2000-one-x {
-          uses cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.";
-          container cdma2000-one-x-ran {
-            uses cdma2000-one-x-ran-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.";
-            container cdma2000-one-x-ran-rf {
-              uses cdma2000-one-x-ran-rf-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.";
-            }
-            container cdma2000-one-x-ran-network-listen-mode-config {
-              uses cdma2000-one-x-ran-network-listen-mode-config-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.";
-            }
-            container cdma2000-one-x-ran-access-parameters {
-              uses cdma2000-one-x-ran-access-parameters-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.";
-            }
-            container cdma2000-one-x-ran-system-parameters {
-              uses cdma2000-one-x-ran-system-parameters-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.";
-            }
-            container cdma2000-one-x-ran-extended-system-parameters {
-              uses cdma2000-one-x-ran-extended-system-parameters-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.";
-            }
-            container cdma2000-one-x-ran-forward-pwr-ctr {
-              uses cdma2000-one-x-ran-forward-pwr-ctr-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.";
-            }
-            container cdma2000-one-x-ran-hard-handoff {
-              uses cdma2000-one-x-ran-hard-handoff-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.";
-              container cdma2000-one-x-ran-hard-handoff-stats {
-                uses cdma2000-one-x-ran-hard-handoff-stats-g;
-                description
-                  "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.";
-              }
-            }
-            container cdma2000-one-x-ran-power-control {
-              uses cdma2000-one-x-ran-power-control-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.";
-            }
-            list cdma2000-one-x-ran-neighbor-list {
-              key "one-x-neighbor-index neighbor-pn";
-              uses cdma2000-one-x-ran-neighbor-list-g;
-              description
-                "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.";
-            }
-            container cdma2000-one-x-ran-apidm {
-              uses cdma2000-one-x-ran-apidm-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.";
-            }
-            container cdma2000-one-x-ran-apidtm {
-              uses cdma2000-one-x-ran-apidtm-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.";
-            }
-            container cdma2000-one-x-ran-appim {
-              uses cdma2000-one-x-ran-appim-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.";
-              list cdma2000-one-x-ran-appim-appirec {
-                key "apsid apnid apband apfreq appnrectype appnreclen appnrec";
-                uses cdma2000-one-x-ran-appim-appirec-g;
-                description
-                  "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.";
-              }
-            }
-          }
-          container cdma2000-one-x-pcf-config {
-            uses cdma2000-one-x-pcf-config-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.";
-            container cdma2000-one-x-pcf-config-pcf-performance-stats {
-              uses cdma2000-one-x-pcf-config-pcf-performance-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.";
-            }
-          }
-          list cdma2000-one-x-batch-pcfpdsn {
-            key "batch-table-number";
-            uses cdma2000-one-x-batch-pcfpdsn-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.";
-          }
-          list cdma2000-one-x-pcfpdsn {
-            key "pdsn-number security-parameter-index security-key";
-            uses cdma2000-one-x-pcfpdsn-g;
-            container cdma2000-one-x-pcfpdsn-a11-reg-update-stats {
-              uses cdma2000-one-x-pcfpdsn-a11-reg-update-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.";
-            }
-            container cdma2000-one-x-pcfpdsn-pcfpdsn-stats {
-              uses cdma2000-one-x-pcfpdsn-pcfpdsn-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.";
-            }
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.";
-          }
-          container cdma2000-one-x-stats {
-            uses cdma2000-one-x-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.";
-          }
-          container cdma2000-one-x-redirect {
-            uses cdma2000-one-x-redirect-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.";
-          }
-        }
-        container cdma2000-hrpd {
-          uses cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.";
-          container cdma2000-hrpd-ran {
-            uses cdma2000-hrpd-ran-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.";
-            container cdma2000-hrpd-ran-rf {
-              uses cdma2000-hrpd-ran-rf-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.";
-            }
-          }
-          container cdma2000-hrpd-pcf-config {
-            uses cdma2000-hrpd-pcf-config-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.";
-            container cdma2000-hrpd-pcf-config-pcf-performance-stats {
-              uses cdma2000-hrpd-pcf-config-pcf-performance-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.";
-            }
-          }
-          list cdma2000-hrpd-batch-pcfpdsn {
-            key "batch-table-number batch-table-security-parameter-index batch-table-secret-key";
-            uses cdma2000-hrpd-batch-pcfpdsn-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.";
-          }
-          list cdma2000-hrpd-pcfpdsn {
-            key "pdsn-number security-parameter-index security-key";
-            uses cdma2000-hrpd-pcfpdsn-g;
-            container cdma2000-hrpd-pcfpdsn-a11-session-update-stats {
-              uses cdma2000-hrpd-pcfpdsn-a11-session-update-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.";
-            }
-            container cdma2000-hrpd-pcfpdsn-a11-reg-update-stats {
-              uses cdma2000-hrpd-pcfpdsn-a11-reg-update-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.";
-            }
-            container cdma2000-hrpd-pcfpdsn-aux-a10-stats {
-              uses cdma2000-hrpd-pcfpdsn-aux-a10-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.";
-            }
-            container cdma2000-hrpd-pcfpdsn-pcfpdsn-stats {
-              uses cdma2000-hrpd-pcfpdsn-pcfpdsn-stats-g;
-              description
-                "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.";
-            }
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.";
-          }
-          container cdma2000-hrpd-redirect {
-            uses cdma2000-hrpd-redirect-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.";
-          }
-          container cdma2000-hrpd-call-control-stats {
-            uses cdma2000-hrpd-call-control-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.";
-          }
-          container cdma2000-hrpd-qo-s-stats {
-            uses cdma2000-hrpd-qo-s-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.";
-          }
-          container cdma2000-hrpd-rnc-sig-apps-stats {
-            uses cdma2000-hrpd-rnc-sig-apps-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.";
-          }
-          container cdma2000-hrpd-access-auth-config {
-            uses cdma2000-hrpd-access-auth-config-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.";
-          }
-          container cdma2000-hrpd-access-auth-stats {
-            uses cdma2000-hrpd-access-auth-stats-g;
-            description
-              "Container for object class FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.";
-          }
-        }
-        container cdma2000-beacon {
-          uses cdma2000-beacon-g;
-          description
-            "Container for object class FAPService.{i}.CellConfig.CDMA2000.Beacon.";
-          list cdma2000-beacon-beacon-list {
-            key "beacon-index";
-            uses cdma2000-beacon-beacon-list-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.";
-          }
-          list cdma2000-beacon-hrpd-beacon-list {
-            key "beacon-index";
-            uses cdma2000-beacon-hrpd-beacon-list-g;
-            description
-              "List of object class FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.";
-          }
-        }
-      }
-    }
-    container rem {
-      uses rem-g;
-      description
-        "Container for object class FAPService.{i}.REM.";
-      container rem-umts {
-        uses rem-umts-g;
-        description
-          "Container for object class FAPService.{i}.REM.UMTS.";
-        container rem-umts-wcdma {
-          uses rem-umts-wcdma-g;
-          description
-            "Container for object class FAPService.{i}.REM.UMTS.WCDMA.";
-          list rem-umts-wcdma-cell {
-            key "rem-umts-wcdma-cell-key";
-            uses rem-umts-wcdma-cell-g;
-            container rem-umts-wcdma-cell-rf {
-              uses rem-umts-wcdma-cell-rf-g;
-              description
-                "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.";
-            }
-            container rem-umts-wcdma-cell-bcch {
-              uses rem-umts-wcdma-cell-bcch-g;
-              description
-                "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.";
-              container rem-umts-wcdma-cell-bcch-csgpsc-split-info {
-                uses rem-umts-wcdma-cell-bcch-csgpsc-split-info-g;
-                description
-                  "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.";
-              }
-              container rem-umts-wcdma-cell-bcch-reference-position {
-                uses rem-umts-wcdma-cell-bcch-reference-position-g;
-                description
-                  "Container for object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.";
-              }
-            }
-            description
-              "List of object class FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.";
-          }
-        }
-        container rem-umts-gsm {
-          uses rem-umts-gsm-g;
-          description
-            "Container for object class FAPService.{i}.REM.UMTS.GSM.";
-          list rem-umts-gsm-cell {
-            key "arfcn bsic";
-            uses rem-umts-gsm-cell-g;
-            description
-              "List of object class FAPService.{i}.REM.UMTS.GSM.Cell.{i}.";
-          }
-        }
-      }
-      container rem-lte {
-        uses rem-lte-g;
-        description
-          "Container for object class FAPService.{i}.REM.LTE.";
-        list rem-lte-cell {
-          key "rem-lte-cell-key";
-          uses rem-lte-cell-g;
-          container rem-lte-cell-rf {
-            uses rem-lte-cell-rf-g;
-            description
-              "Container for object class FAPService.{i}.REM.LTE.Cell.{i}.RF.";
-          }
-          container rem-lte-cell-bcch {
-            uses rem-lte-cell-bcch-g;
-            description
-              "Container for object class FAPService.{i}.REM.LTE.Cell.{i}.BCCH.";
-            list rem-lte-cell-bcch-plmn-list {
-              key "plmnid";
-              uses rem-lte-cell-bcch-plmn-list-g;
-              description
-                "List of object class FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.";
-            }
-          }
-          description
-            "List of object class FAPService.{i}.REM.LTE.Cell.{i}.";
-        }
-        list rem-lte-carrier-meas {
-          key "carrier-arfcndl carrier-ch-width";
-          uses rem-lte-carrier-meas-g;
-          description
-            "List of object class FAPService.{i}.REM.LTE.CarrierMeas.{i}.";
-        }
-      }
-      container rem-cdma2000 {
-        uses rem-cdma2000-g;
-        description
-          "Container for object class FAPService.{i}.REM.CDMA2000.";
-        container rem-cdma2000-one-x {
-          uses rem-cdma2000-one-x-g;
-          description
-            "Container for object class FAPService.{i}.REM.CDMA2000.OneX.";
-          list rem-cdma2000-one-x-channel {
-            key "sniffing-band-class sniffing-channel-number";
-            uses rem-cdma2000-one-x-channel-g;
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.";
-          }
-          list rem-cdma2000-one-x-cell {
-            key "rem-cdma2000-one-x-cell-key";
-            uses rem-cdma2000-one-x-cell-g;
-            container rem-cdma2000-one-x-cell-rf {
-              uses rem-cdma2000-one-x-cell-rf-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.";
-            }
-            container rem-cdma2000-one-x-cell-control-channel {
-              uses rem-cdma2000-one-x-cell-control-channel-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.";
-            }
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.";
-          }
-        }
-        container rem-cdma2000-hrpd {
-          uses rem-cdma2000-hrpd-g;
-          description
-            "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.";
-          list rem-cdma2000-hrpd-channel {
-            key "sniffing-band-class sniffing-channel-number";
-            uses rem-cdma2000-hrpd-channel-g;
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.";
-          }
-          list rem-cdma2000-hrpd-cell {
-            key "rem-cdma2000-hrpd-cell-key";
-            uses rem-cdma2000-hrpd-cell-g;
-            container rem-cdma2000-hrpd-cell-rf {
-              uses rem-cdma2000-hrpd-cell-rf-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.";
-            }
-            container rem-cdma2000-hrpd-cell-control-channel {
-              uses rem-cdma2000-hrpd-cell-control-channel-g;
-              description
-                "Container for object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.";
-            }
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.";
-          }
-        }
-        container rem-cdma2000-macro-timing {
-          uses rem-cdma2000-macro-timing-g;
-          description
-            "Container for object class FAPService.{i}.REM.CDMA2000.MacroTiming.";
-          list rem-cdma2000-macro-timing-channel {
-            key "band-class channel-number";
-            uses rem-cdma2000-macro-timing-channel-g;
-            description
-              "List of object class FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.";
-          }
-        }
-      }
-    }
-    container transport {
-      uses transport-g;
-      description
-        "Container for object class FAPService.{i}.Transport.";
-      container transport-sip {
-        uses transport-sip-g;
-        description
-          "Container for object class FAPService.{i}.Transport.SIP.";
-        container transport-sip-fcs {
-          uses transport-sip-fcs-g;
-          description
-            "Container for object class FAPService.{i}.Transport.SIP.FCS.";
-        }
-      }
-      container transport-sctp {
-        uses transport-sctp-g;
-        description
-          "Container for object class FAPService.{i}.Transport.SCTP.";
-        list transport-sctp-assoc {
-          key "primary-peer-address local-port";
-          uses transport-sctp-assoc-g;
-          description
-            "List of object class FAPService.{i}.Transport.SCTP.Assoc.{i}.";
-        }
-      }
-      container transport-real-time {
-        uses transport-real-time-g;
-        description
-          "Container for object class FAPService.{i}.Transport.RealTime.";
-        container transport-real-time-perf {
-          uses transport-real-time-perf-g;
-          description
-            "Container for object class FAPService.{i}.Transport.RealTime.Perf.";
-        }
-      }
-      container transport-packet {
-        uses transport-packet-g;
-        description
-          "Container for object class FAPService.{i}.Transport.Packet.";
-      }
-      container transport-security {
-        uses transport-security-g;
-        description
-          "Container for object class FAPService.{i}.Transport.Security.";
-        list transport-security-secret {
-          key "uicc-card-id";
-          uses transport-security-secret-g;
-          description
-            "List of object class FAPService.{i}.Transport.Security.Secret.{i}.";
-        }
-      }
-    }
-    description
-      "List of object class FAPService.{i}.";
-  }
-
-  grouping fap-service-g {
-    description
-      "The Femto Access Point (FAP) Service Object.";
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Alias";
-    }
-    leaf device-type {
-      type enumeration {
-        enum "standalone" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType - Standalone";
-        }
-        enum "integrated" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType - Integrated";
-        }
-      }
-      description
-        "The type of FAP device.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.DeviceType";
-    }
-    leaf dn-prefix {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The Distinguished Name prefix (DNPrefix) is an operator-configurable prefix string that is pre-pended to object distinguished names in the {{bibref|TR-157a5}} alarm object. See {{bibref|3GPP-TS.32.300}} for the formal definition and examples of DNPrefix as applied to 3GPP alarm objects";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.DNPrefix";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.";
-  }
-
-  grouping capabilities-g {
-    description
-      "This object contains parameters relating to the hardware capabilities of the FAP device.";
-    leaf gps-equipped {
-      type boolean;
-      description
-        "Indicates whether the FAP is equipped with a GPS receiver or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.GPSEquipped";
-    }
-    leaf max-tx-power {
-      type uint64;
-      units "dBm";
-      description
-        "Indicates the maximum possible transmit power in {{units}} that the FAP hardware can support.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.MaxTxPower";
-    }
-    leaf-list supported-systems {
-      type enumeration {
-        enum "umts" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - UMTS";
-        }
-        enum "lte" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - LTE";
-        }
-        enum "cdma1x" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - CDMA1x";
-        }
-        enum "cdmahrpd" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems - CDMAHRPD";
-        }
-      }
-      description
-        "{{list}} Each entry is a type of system that the FAP supports. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.SupportedSystems";
-    }
-    leaf beacon {
-      type boolean;
-      description
-        "Indicates whether FAP can support beacon transmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.Beacon";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.";
-  }
-
-  grouping capabilities-umts-g {
-    description
-      "This object contains parameters relating to the system and RF aspect of the FAP device that supports the UMTS system.";
-    leaf duplex-mode {
-      type enumeration {
-        enum "fdd-mode" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.DuplexMode - FDDMode";
-        }
-      }
-      description
-        "Indicates the mode supported by the FAP. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.DuplexMode";
-    }
-    leaf gsm-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the FAP hardware supports the receiving function of GSM or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxSupported";
-    }
-    leaf hsdpa-supported {
-      type boolean;
-      description
-        "Indicates whether the FAP hardware supports the HSDPA capability or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.HSDPASupported";
-    }
-    leaf max-hsdpa-data-rate-supported {
-      type uint64;
-      units "Kbps";
-      description
-        "If the FAP hardware supports HSDPA ({{param|HSDPASupported}} is {{true}}), this parameter indicates the maximum HSDPA data rate in {{units}} that the device supports.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSDPADataRateSupported";
-    }
-    leaf hsupa-supported {
-      type boolean;
-      description
-        "Indicates whether the FAP hardware supports the HSUPA capability or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.HSUPASupported";
-    }
-    leaf max-hsupa-data-rate-supported {
-      type uint64;
-      units "Kbps";
-      description
-        "If the FAP hardware supports HSUPA ({{param|HSUPASupported}} is {{true}}), this parameter indicates the maximum HSUPA data rate in {{units}} that the device supports.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSUPADataRateSupported";
-    }
-    leaf max-hspdsc-hs-supported {
-      type uint8 {
-        range "0..15";
-      }
-      description
-        "If the FAP hardware supports HSPA family (either {{param|HSDPASupported}} is {{true}} or {{param|HSUPASupported}} is {{true}}), this parameter indicates the available number of codes at the defined spreading factor (SF=16), within the complete code tree. See {{bibref|3GPP-TS.32.642|Section 6.3.9}} for more details.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSPDSCHsSupported";
-    }
-    leaf max-hsscc-hs-supported {
-      type uint64;
-      description
-        "If the FAP hardware supports HSPA family (either {{param|HSDPASupported}} is {{true}} or {{param|HSUPASupported}} is {{true}}), this parameter indicates the available number of HS-SCCHs for one cell. See {{bibref|3GPP-TS.32.642|Section 6.3.9}} for more details.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.MaxHSSCCHsSupported";
-    }
-    leaf-list fdd-bands-supported {
-      type string;
-      min-elements 1;
-      max-elements "16";
-      description
-        "{{list}} Indicates the UMTS bands that the FAP supports {{bibref|3GPP-TS.25.104}}, Release 8. At least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.25.104}} Version 8.3.0 defines 14 UMTS bands (I through XIV). Each individual band is identified by its upper case Roman numeral. The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.25.104}}, the corresponding new upper case Roman numeral will be included in the valid band indicators. The followings are examples of valid values: :\"I\" (specifies only band-I is supported) :\"I,II,V\" (specifies 3 bands are supported) :\"II,VII,I\" (specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.FDDBandsSupported";
-    }
-    leaf-list gsm-rx-bands-supported {
-      type enumeration {
-        enum "t-gsm380" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM380";
-        }
-        enum "t-gsm410" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM410";
-        }
-        enum "gsm450" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM450";
-        }
-        enum "gsm480" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM480";
-        }
-        enum "gsm710" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM710";
-        }
-        enum "gsm750" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM750";
-        }
-        enum "t-gsm810" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM810";
-        }
-        enum "gsm850" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - GSM850";
-        }
-        enum "p-gsm900" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - P-GSM900";
-        }
-        enum "e-gsm900" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - E-GSM900";
-        }
-        enum "r-gsm900" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - R-GSM900";
-        }
-        enum "t-gsm900" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - T-GSM900";
-        }
-        enum "dcs1800" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - DCS1800";
-        }
-        enum "pcs1900" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported - PCS1900";
-        }
-      }
-      description
-        "{{list}} Indicates the GSM receive bands that the FAP supports {{bibref|3GPP-TS.45.005}}. At least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.45.005}} defines 14 GSM bands. {{enum}} The order of the band indicators in the string has no significance. The following is an example of a valid value. :\"GSM850,PCS1900\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.GSMRxBandsSupported";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.";
-  }
-
-  grouping capabilities-umts-self-config-g {
-    description
-      "This object contains parameters relating to the self-configuration capabilities of the FAP. Self-configuration is enabled in {{object|.FAPControl.UMTS.SelfConfig.}}";
-    leaf uarfcn-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the UTRA Absolute Radio Frequency Channel Number (UARFCN). If {{true}} multiple values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.UARFCNDL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.UARFCNDL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.UARFCNConfig";
-    }
-    leaf primary-scrambling-code-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Primary Scrambling Code (PSC). If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig";
-    }
-    leaf maxfap-tx-power-expanded-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig";
-    }
-    leaf pcpich-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the P-CPICH power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}} as an upper bound.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig";
-    }
-    leaf max-ul-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum UL Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig";
-    }
-    leaf lacracura-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the LAC, RAC, and URA. If {{true}} multiple values MAY be provided in {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.LACRACURAConfig";
-    }
-    leaf neighbor-list-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the neighbor list. If {{true}} the ACS uses the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.}} tables to explicitly include or exclude entries and the FAP uses that information to determine the final configuration found in the {{object|.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.}} tables. If {{false}} the ACS uses the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}}, {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.}} tables to only specify the included entries and the FAP uses that list.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.NeighborListConfig";
-    }
-    leaf cell-re-selection-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine cell-reselection values. If {{true}} {{object|.CellConfig.UMTS.RAN.CellSelection.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.CellSelection.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.CellReSelectionConfig";
-    }
-    leaf intra-freq-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine intra-frequency measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.IntraFreqMeasConfig";
-    }
-    leaf inter-freq-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine inter-frequency measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.InterFreqMeasConfig";
-    }
-    leaf inter-rat-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine inter-RAT measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.InterRATMeasConfig";
-    }
-    leaf ue-internal-meas-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine UE internal measurement values. If {{true}} {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} can be self-configured. If {{false}} {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} is provided by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.UEInternalMeasConfig";
-    }
-    leaf noise-rise-limit-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the selfconfiguration capability to determine the Noise Rise Limit. If {{true}} {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} and {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}}. MAY provide a range of values to select from. If {{false}} {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}} provides only a single value to be used. The value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} is ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.UMTS.SelfConfig.";
-  }
-
-  grouping capabilities-lte-g {
-    description
-      "This object contains parameters relating to the system and RF aspect of the FAP device that supports the LTE system.";
-    leaf duplex-mode {
-      type enumeration {
-        enum "fdd-mode" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode - FDDMode";
-        }
-        enum "tdd-mode" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode - TDDMode";
-        }
-      }
-      description
-        "Indicates the mode supported by the LTE FAP. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.DuplexMode";
-    }
-    leaf-list bands-supported {
-      type uint8 {
-        range "1..21 | 33..40";
-      }
-      min-elements 1;
-      max-elements "16";
-      description
-        "{{list}} Indicates the LTE bands that the LTE FAP supports {{bibref|3GPP-TS.36.101|Section 5.5}}. At least one band MUST be supported and multiple bands MAY be supported. Each individual band is identified by arabic number (1, 2,...). The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.36.101}}, the corresponding new band number will be included in the valid band indicators. The followings are examples of valid values: :\"1\" (specifies only band-1 is supported) :\"1,2,11\" (specifies 3 bands are supported) :\"2,11,1\" (specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.BandsSupported";
-    }
-    leaf nnsf-supported {
-      type boolean;
-      description
-        "Indicates whether LTE FAP supports the NAS Node Selection Function (NNSF) or not. NNSF is described in {{bibref|3GPP-TS.36.300|Section 19.2.1.7 and Section 4.6.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.NNSFSupported";
-    }
-    leaf umts-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the LTE FAP hardware supports the receiving function of UMTS or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.UMTSRxSupported";
-    }
-    leaf-list umts-rx-bands-supported {
-      type string;
-      max-elements "16";
-      description
-        "{{list}} Indicates the UMTS receive bands that the LTE FAP supports {{bibref|3GPP-TS.25.104}}, Release 8. If {{param|UMTSRxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. Each individual band is identified by its upper case Roman numeral. The order of the band indicators in the string has no significance. In case a new band is defined in the 3GPP standard in a future release of {{bibref|3GPP-TS.25.104}}, the corresponding new upper case Roman numeral will be included in the valid band indicators. The followings are examples of valid values: :\"I\" (specifies only band-I is supported) :\"I,II,V\" (specifies 3 bands are supported) :\"II,VII,I\" (specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.UMTSRxBandsSupported";
-    }
-    leaf gsm-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the LTE FAP hardware supports the receiving function of GSM or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxSupported";
-    }
-    leaf-list gsm-rx-bands-supported {
-      type enumeration {
-        enum "t-gsm380" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM380";
-        }
-        enum "t-gsm410" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM410";
-        }
-        enum "gsm450" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM450";
-        }
-        enum "gsm480" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM480";
-        }
-        enum "gsm710" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM710";
-        }
-        enum "gsm750" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM750";
-        }
-        enum "t-gsm810" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM810";
-        }
-        enum "gsm850" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - GSM850";
-        }
-        enum "p-gsm900" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - P-GSM900";
-        }
-        enum "e-gsm900" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - E-GSM900";
-        }
-        enum "r-gsm900" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - R-GSM900";
-        }
-        enum "t-gsm900" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - T-GSM900";
-        }
-        enum "dcs1800" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - DCS1800";
-        }
-        enum "pcs1900" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported - PCS1900";
-        }
-      }
-      description
-        "{{list}} Indicates the GSM receive bands that the LTE FAP supports {{bibref|3GPP-TS.45.005}}. If {{param|GSMRxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. {{bibref|3GPP-TS.45.005}} defines 14 GSM bands. {{enum}} The order of the band indicators in the string has no significance. The following is an example of a valid value. :\"GSM850,PCS1900\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.GSMRxBandsSupported";
-    }
-    leaf cdma2000-rx-supported {
-      type boolean;
-      description
-        "Indicates whether the LTE FAP hardware supports the receiving function of CDMA2000 or not.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.CDMA2000RxSupported";
-    }
-    leaf-list cdma2000-rx-bands-supported {
-      type string;
-      max-elements "16";
-      description
-        "{{list}} Indicates the CDMA2000 receive bands that the LTE FAP supports. If {{param|CDMA2000RxSupported}} is {{true}}, then at least one band MUST be supported and multiple bands MAY be supported. The order of the band indicators in the string has no significance. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057-B}}. The following are example values: :\"0\" (specifies US Cellular) :\"1,3,14\" (specifies US PCS, Japan Cellular and US PCS 1.9Ghz) specifies 3 bands are supported)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.CDMA2000RxBandsSupported";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.LTE.";
-  }
-
-  grouping capabilities-cdma2000-g {
-    description
-      "This object contains parameters relating to the capability attributes for CDMA2000 FAP.";
-    leaf remote-ip-access-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of providing remote IP access service as defined in {{bibref|3GPP2-X.S0059}}. If {{true}}, the FAP is capable of remote IP access service. If {{false}}, the FAP is not capable of remote IP access service.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.RemoteIPAccessCapable";
-    }
-    leaf-list band-class-supportedfap-beacon {
-      type string;
-      max-elements "32";
-      description
-        "{{list}} Indicates the band classes that the FAP supports for beacon transmission. One or multiple bands MAY be supported. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057}}. List is empty if FAP can not support beacon transmissions.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.BandClassSupportedFAPBeacon";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.";
-  }
-
-  grouping capabilities-cdma2000-one-x-g {
-    description
-      "This object contains parameters relating to the capability attributes for the CDMA2000 1x radio technology portions of a CDMA2000 FAP.";
-    leaf band-class-supportedfap {
-      type string {
-        length "0..32";
-      }
-      description
-        "{{list}} Indicates the CDMA bands that the FAP supports. At least one band MUST be supported and multiple bands MAY be supported. Bandclass is a 1 or 2-digit number as defined in {{bibref|3GPP2-C.S0057}}. The following are example values: \"0\" (specifies US Cellular) \"1,3,14\" (specifies US PCS, Japan Cellular and US PCS 1.9Ghz)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.BandClassSupportedFAP";
-    }
-    leaf active-handin-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of accepting hand-in of active 1x call from another base station. If {{true}}, the FAP is capable of accepting hand-in. If {{false}}, the FAP is not capable of accepting hand-in.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.ActiveHandinCapable";
-    }
-    leaf femto-overhead-messages-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP supports Access Point Identification, Access Point Pilot Information, and Access Point Identification Text messages specified in {{bibref|3GPP2-C.S0005}}. If {{true}}, the FAP supports these messages. If {{false}}, the FAP does not supports these messages.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.";
-  }
-
-  grouping capabilities-cdma2000-one-x-self-config-g {
-    description
-      "This object contains parameters relating to the self-configuration capabilities of the FAP. Self-configuration is enabled in {{object|.FAPControl.CDMA2000.OneX.SelfConfig.}}.";
-    leaf rfcnfl-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Radio Frequency Channel Number. If {{true}} multiple values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig";
-    }
-    leaf pilot-pn-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the pilot PN offset. If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig";
-    }
-    leaf maxfap-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig";
-    }
-    leaf maxfap-beacon-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Beacon Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.OneX.SelfConfig.";
-  }
-
-  grouping capabilities-cdma2000-hrpd-g {
-    description
-      "This object contains parameters relating to the capability attributes for the CDMA2000 HRPD radio technology portions of a CDMA2000 FAP.";
-    leaf a13-session-transfer-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of supporting A13 session transfer. See {{bibref|3GPP2-C.S0024-B}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.A13SessionTransferCapable";
-    }
-    leaf a16-session-transfer-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of supporting A16 session transfer. See {{bibref|3GPP2-C.S0024-B}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.A16SessionTransferCapable";
-    }
-    leaf local-ip-access-capable {
-      type boolean;
-      description
-        "Indicates whether the FAP is capable of supporting Local IP access. See {{bibref|3GPP2-C.S0024-B}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.LocalIPAccessCapable";
-    }
-    leaf dedicated-hrpd-beacon {
-      type boolean;
-      description
-        "Indicated whether the FAP supports a dedicated transmission of HRPD beacon independent of the generalized beacon.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.DedicatedHRPDBeacon";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.";
-  }
-
-  grouping capabilities-cdma2000-hrpd-self-config-g {
-    description
-      "This object contains parameters relating to the self-configuration capability attributes for the CDMA2000 HRPD radio technology portions of a CDMA2000 FAP.";
-    leaf rfcnfl-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Radio Frequency Channel Number. If {{true}} multiple values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig";
-    }
-    leaf pilot-pn-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the pilot PN offset. If {{true}} multiple values or a range of values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig";
-    }
-    leaf maxfap-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig";
-    }
-    leaf maxfap-beacon-tx-power-config {
-      type boolean;
-      description
-        "Indicates whether the FAP supports the self-configuration capability to determine the Maximum FAP Beacon Transmit Power. If {{true}} a range of values MAY be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}} for the FAP to select from. If {{false}} only a single value SHOULD be provided in {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPBeaconTxPowerConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Capabilities.CDMA2000.HRPD.SelfConfig.";
-  }
-
-  grouping fap-control-g {
-    description
-      "This object contains parameters relating to state management and provisioning aspects of the FAP.";
-    leaf-list self-config-events {
-      type enumeration {
-        enum "initial-rem" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.SelfConfigEvents - InitialREM";
-        }
-      }
-      config false;
-      description
-        "{{list}} Each item is an event that causes the FAP to perform self configuration as defined by {{object|.FAPControl.UMTS.SelfConfig.}}, {{object|.FAPControl.CDMA2000.OneX.SelfConfig.}}, or {{object|.FAPControl.CDMA2000.HRPD.SelfConfig.}}. Vendors can extend the enumerated values with vendor-specific extensions, in which case the rules outlined in {{bibref|TR-106a2|Section3.3}} MUST be adhered to.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.SelfConfigEvents";
-    }
-    leaf enclosure-tampering-detected {
-      type boolean;
-      config false;
-      description
-        "This parameter indicates whether or not physical tampering of the device enclosure occurred, such as illegal opening of the box. If {{true}} device tampering is detected. If {{false}} no sign of device tampering is detected. Tampering state MUST be persisted across reboots and the device MUST never reset it back from {{true}} to {{false}} even after a factory reset.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.EnclosureTamperingDetected";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.";
-  }
-
-  grouping fap-control-umts-g {
-    description
-      "This object contains parameters relating to the UMTS system specific information.";
-    leaf op-state {
-      type boolean;
-      description
-        "Current operational state of the UMTS FAP as defined in {{bibref|ITU-X.731}}. If {{true}} the UMTS FAP is currently enabled. If {{false}} the UMTS FAP is currently disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.OpState";
-    }
-    leaf admin-state {
-      type boolean;
-      config false;
-      description
-        "Lock or unlock the UMTS FAP. This controls the administrative state of the UMTS FAP as defined in {{bibref|ITU-X.731}}. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition UMTS FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the UMTS FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: # location verification (including meeting the governing regulatory requirements) # verifying the UMTS FAP configuration # if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.AdminState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this UMTS FAP RF transmitter. {{true}} indicates that the UMTS FAP Tx transmitter is on. {{false}} indicates that the UMTS FAP Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. :When the ACS sets {{param|AdminState}} to {{true}}, then the UMTS FAP has permission to turn on the RF transmitter. :When the ACS sets {{param|AdminState}} to {{false}}, then the UMTS FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.RFTxStatus";
-    }
-    leaf pm-config {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The value MUST be the path name of a row in the optional ''FAP.PerfMgmt.Config.'' table (see {{bibref|TR-262}}). This is the performance management related configuration for the UMTS FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.PMConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.";
-  }
-
-  grouping fap-control-umts-self-config-g {
-    description
-      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
-    leaf uarfcn-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.UMTS.RAN.CSG.UARFCNDLList}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable";
-    }
-    leaf primary-scrambling-code-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable";
-    }
-    leaf maxfap-tx-power-expanded-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable";
-    }
-    leaf pcpich-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.PCPICHPower}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable";
-    }
-    leaf max-ul-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.MaxULTxPower}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable";
-    }
-    leaf lacracura-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.UMTS.CN.LACRAC}} and {{param|.CellConfig.UMTS.RAN.URAList}}. If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable";
-    }
-    leaf neighbor-list-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values in the object {{object|.CellConfig.UMTS.RAN.NeighborList.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.NeighborListSelfConfigEnable";
-    }
-    leaf cell-re-selection-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine Cell Selection/Reselection-related parameters in {{object|.CellConfig.UMTS.RAN.CellSelection.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.CellReSelectionSelfConfigEnable";
-    }
-    leaf intra-freq-meas-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine intra-frequency measurement -related parameters in {{object|.CellConfig.UMTS.RAN.IntraFreqMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.IntraFreqMeasSelfConfigEnable";
-    }
-    leaf inter-freq-meas-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine inter-frequency measurement -related parameters in {{object|.CellConfig.UMTS.RAN.InterFreqMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.InterFreqMeasSelfConfigEnable";
-    }
-    leaf inter-rat-meas-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine inter-RAT measurement -related parameters in {{object|.CellConfig.UMTS.RAN.InterRATMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.InterRATMeasSelfConfigEnable";
-    }
-    leaf ue-internal-meas-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine UE internal measurement-related parameters in {{object|.CellConfig.UMTS.RAN.UEInternalMeas.}} If {{true}} The FAP self-configures the value. If {{false}} The ACS MUST provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.UEInternalMeasConfigEnable";
-    }
-    leaf noise-rise-limit-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitInUse}}. If {{true}} the FAP self-configures the value, based on the limits specified in {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} and {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}}. If {{false}} the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.SelfConfig.";
-  }
-
-  grouping fap-control-umts-gateway-g {
-    description
-      "This object contains parameters relating to the Gateways that FAP is connected to.";
-    leaf sec-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer1";
-    }
-    leaf sec-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer2";
-    }
-    leaf sec-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third SecGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.SecGWServer3";
-    }
-    leaf fap-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer1";
-    }
-    leaf fap-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer2";
-    }
-    leaf fap-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third FAPGW the FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWServer3";
-    }
-    leaf fap-gw-port {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Port number of FAPGW used for initial Iuh SCTP contact. This value is specified as 29169 according to IANA definition per {{bibref|IANA-portnumbers}}, registered on 2009-09-08. Use of IANA-defined value is recommended.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.FAPGWPort";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.UMTS.Gateway.";
-  }
-
-  grouping fap-control-lte-g {
-    description
-      "This object contains parameters relating to the LTE system specific information.";
-    leaf op-state {
-      type boolean;
-      description
-        "Current operational state of the LTE FAP as defined in {{bibref|ITU-X.731}}. If {{true}} the LTE FAP is currently enabled. If {{false}} the LTE FAP is currently disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.OpState";
-    }
-    leaf admin-state {
-      type boolean;
-      config false;
-      description
-        "Lock or unlock the LTE FAP. This controls the administrative state of the LTE FAP as defined in {{bibref|ITU-X.731}}. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition LTE FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the LTE FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: # location verification (including meeting the governing regulatory requirements) # verifying the LTE FAP configuration # if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.AdminState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this LTE FAP RF transmitter. {{true}} indicates that the LTE FAP Tx transmitter is on. {{false}} indicates that the LTE FAP Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. :When the ACS sets {{param|AdminState}} to {{true}}, then the LTE FAP has permission to turn on the RF transmitter. :When the ACS sets {{param|AdminState}} to {{false}}, then the LTE FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.RFTxStatus";
-    }
-    leaf pm-config {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The value MUST be the path name of a row in optional the ''.FAP.PerfMgmt.Config.'' table (see {{bibref|TR-262}}). This is the performance management related configuration for the LTE FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.PMConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.";
-  }
-
-  grouping fap-control-lte-gateway-g {
-    description
-      "This object contains parameters relating to the Gateways that the LTE FAP is connected to.";
-    leaf sec-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer1";
-    }
-    leaf sec-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer2";
-    }
-    leaf sec-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third SecGW the LTE FAP attempts to establish connection with. Either hostname or IPaddress.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.SecGWServer3";
-    }
-    leaf-list s1-sig-link-server-list {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a S1 signaling connection end point (-GW or MME) the LTE FAP attempts to establish connection with. It is in the form of either hostname or IPaddress. LTE FAP's behavior in terms of the number of S1 connection to established with is determined by {{param|S1ConnectionMode}} parameter. If {{param|S1ConnectionMode}} has the value of {{enum|One|S1ConnectionMode}}, then LTE FAP attempts to establish S1 connection with only one address following the ordering of the list. If {{param|S1ConnectionMode}} has the value of {{enum|All|S1ConnectionMode}}, then LTE FAP attempts to establish connection with all addresses in the list.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1SigLinkServerList";
-    }
-    leaf s1-connection-mode {
-      type enumeration {
-        enum "one" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode - One";
-        }
-        enum "all" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode - All";
-        }
-      }
-      config false;
-      description
-        "Indicates how many of the configured far-end S1 link address(es),as defined in {{param|S1SigLinkServerList}}, LTE FAP SHOULD attempt to establish connection with simultaneously. If {{param}} parameter is not explicitly configured, then LTE FAP shall assume the value to be {{enum|One|S1ConnectionMode}} as default.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1ConnectionMode";
-    }
-    leaf s1-sig-link-port {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Port number of S1AP signaling connection end point (-GW or MME) used for initial S1 SCTP contact. This value is specified as 36412 according to IANA definition per {{bibref|IANA-portnumbers}}, registered on 2009-09-01. Use of IANA-defined value is recommended.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.S1SigLinkPort";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.LTE.Gateway.";
-  }
-
-  grouping fap-control-cdma2000-g {
-    description
-      "This object contains parameters relating to the configuration for the control portions of a CDMA2000 FAP.";
-    leaf home-domain {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "A string containing one of operator's home domains in URI format. FAP is preconfigured with a default home domain, which can be overwritten later by ACS. See {{bibref|3GPP2-X.S0059}}. If the''.ManagementServer.URL'' is null, then the FAP shall use the value of this attribute to construct the ''.ManagementServer.URL'' attribute. If {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} is null, then the FAP shall use the value of this attribute to construct the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} attribute. If the FAP is unable to connect to the management server indicated by the value of the ''.ManagementServer.URL'' attribute and this attribute is not null, the FAP may use the value of this attribute to construct the ''.ManagementServer.URL'' attribute. If the FAP is unable to connect to any security gateway indicated by the value of the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}}, {{param|.FAPControl.CDMA2000.Gateway.SecGWServer2}}, and {{param|.FAPControl.CDMA2000.Gateway.SecGWServer3}} attributes and this attribute is not null, the FAP may use the value of this attribute to construct the {{param|.FAPControl.CDMA2000.Gateway.SecGWServer1}} attribute.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HomeDomain";
-    }
-    leaf remote-ip-access-enable {
-      type boolean;
-      config false;
-      description
-        "Enable or disable remote IP access service as defined in {{bibref|3GPP2-X.S0059}}. If {{true}} remote IP access is enabled. If {{false}} remove IP access is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.RemoteIPAccessEnable";
-    }
-    leaf pm-config {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The value MUST be the path name of a row in the ''.FAP.PerfMgmt.Config.'' table. This is the performance management related configuration for the CDMA2000 FAP. In case of a multiple-radio-technology FAP product, each radio technology can have its own PM configuration or share a common PM configuration. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number. If the referenced object is deleted, the parameter value MUST be set to an empty string.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.PMConfig";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.";
-  }
-
-  grouping fap-control-cdma2000-time-g {
-    description
-      "This object contains parameters related to time syncronization with CDMA2000 System Time (see {{bibref|3GPP2-C.S0005}}).";
-    leaf local-time-zone {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The local time zone for CDMA2000 operational purposes. E.g., \"+HH:MM JST\" for Japan. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.LocalTimeZone";
-    }
-    leaf current-local-time {
-      type string {
-        length "0..64";
-      }
-      description
-        "The current CDMA System Time (see {{bibref|3GPP2-C.S0005}}), expressed as date and time in the CPE's local time zone. The format of this field is \"YYYY-MM-DDThh:mm:ss.sTZD\" (e.g., 1997-07-16T19:20:30.45+01:00), where: YYYY = four-digit year MM = two-digit month (01=January, etc.) DD = two-digit day of month (01 through 31) hh = two digits of hour (00 through 23) (am/pm NOT allowed) mm = two digits of minute (00 through 59) ss = two digits of second (00 through 59) s = one or more digits representing a decimal fraction of a second TZD = time zone designator (Z or +hh:mm or -hh:mm)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.CurrentLocalTime";
-    }
-    leaf leap-seconds {
-      type int64;
-      units "seconds";
-      config false;
-      description
-        "Number of leap seconds (in {{units}} to be applied between CurrentLocalTime and CDMA System Time. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.LeapSeconds";
-    }
-    leaf daylight-savings-used {
-      type boolean;
-      config false;
-      description
-        "Whether or not daylight savings time is in use in the FAP's local time zone with respect to CDMA2000 System Time (see {{bibref|3GPP2-C.S0005}}). {true}} if daylight savings time is being used; otherwise {{false}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.DaylightSavingsUsed";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Time.";
-  }
-
-  grouping fap-control-cdma2000-one-x-g {
-    description
-      "This object contains all global attributes of the 1xFemto application.";
-    leaf admin-state {
-      type enumeration {
-        enum "lock" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState - Lock";
-        }
-        enum "unlock" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState - Unlock";
-        }
-      }
-      config false;
-      description
-        "Administrative state for 1x";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.AdminState";
-    }
-    leaf op-state {
-      type enumeration {
-        enum "enabled" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState - Enabled";
-        }
-        enum "disabled" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState - Disabled";
-        }
-      }
-      description
-        "Operational state of the 1x";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.OpState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this RF transmitter. {{true}} indicates that the 3G Tx transmitter is on. {{false}} indicates that the 3G Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. When the ACS sets AdminState to {{true}}, then the FAP has permission to turn on the RF transmitter. When the ACS sets AdminState to {{false}}, then the FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.RFTxStatus";
-    }
-    leaf daylight {
-      type int64;
-      config false;
-      description
-        "If Daylight Savings Time is being used with respect to CDMA2000 1x overhead parameters (see {{bibref|3GPP2-C.S0005}}), then {{param}} should be set to {{true}}. Otherwise, {{param}} should be set to {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.Daylight";
-    }
-    leaf max-p-rev {
-      type int64;
-      config false;
-      description
-        "Protocol revision supported by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.MaxPRev";
-    }
-    leaf reregister {
-      type uint64;
-      config false;
-      description
-        "{{param}} triggers a re-registration of all mobiles. The FAP triggers re-registration of all registered mobiles everytime this number changes";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.Reregister";
-    }
-    leaf emergency-session-period {
-      type uint16 {
-        range "15..1800";
-      }
-      units "seconds";
-      config false;
-      description
-        "The period (in {{units}}) the session of an unauthorized user is kept alive after an emergency call.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.EmergencySessionPeriod";
-    }
-    leaf location-area-code {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "This is the location area code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.LocationAreaCode";
-    }
-    leaf msc-id {
-      type uint64;
-      config false;
-      description
-        "This is the FAP's MSCID. This ID is used in PANI header.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.MSCId";
-    }
-    leaf active-handin-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP performs active hand-in from another base station. If {{true}} active hand-in is enabled; if {{false}} active hand-in is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.";
-  }
-
-  grouping fap-control-cdma2000-one-x-active-handin-measurement-g {
-    description
-      "CDMA2000 1x active handin operational parameters.";
-    leaf active-handin-measurement-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP performs active hand-in measurement if a request is received. If {{true}} active hand-in measurement is enabled; if {{false}} active hand-in measurement is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.ActiveHandinMeasurementEnable";
-    }
-    leaf active-hand-in-measurement-duration {
-      type uint16 {
-        range "0..65535";
-      }
-      units "1.25 ms slots";
-      config false;
-      description
-        "The minimum duration in {{units}} for which FAP should take a mobile's RL pilot strength measurements for active hand-in purpose when directed by the network. Instead of continuous measurement for this entire duration, a FAP can make multiple measurements by sampling over shorter durations. In such a case, this value specifies the minimum time separation required between the first and last measurement samples.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.ActiveHandInMeasurementDuration";
-    }
-    leaf measurement-report-threshold {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "The threshold (in {{units}}) for the FAP to report an active hand-in measurement. If the metric to be reported is below the threshold, the FAP may not send any report.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.MeasurementReportThreshold";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.ActiveHandinMeasurement.";
-  }
-
-  grouping fap-control-cdma2000-one-x-self-config-g {
-    description
-      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
-    leaf rfcnfl-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable";
-    }
-    leaf pilot-pn-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable";
-    }
-    leaf maxfap-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower}}. If {{true}} the FAP self-configures the value. If {{false}} the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable";
-    }
-    leaf maxfap-beacon-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.OneX.SelfConfig.";
-  }
-
-  grouping fap-control-cdma2000-gateway-g {
-    description
-      "CDMA2000 FAP Security Gateway operational parameters.";
-    leaf sec-gw-server1 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "First SecGW the FAP attempts to contact. Either FQDN or IP address";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer1";
-    }
-    leaf sec-gw-server2 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Second SecGW the FAP attempts to contact. Either FQDN or IP address";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer2";
-    }
-    leaf sec-gw-server3 {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Third SecGW that the FAP attempts to contact. Can contain either FQDN or IP address";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWServer3";
-    }
-    leaf sec-gw-switchover-count {
-      type uint64;
-      description
-        "Counter indicating how many times FAP has switched between SecGW";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.SecGWSwitchoverCount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.Gateway.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-g {
-    description
-      "Operational parameters for the HRPD portion of a CDMA2000 FAP.";
-    leaf op-state {
-      type boolean;
-      description
-        "Current operational state of the FAP as defined in ITU-X.731 [32]. If {{true}} the FAP is currently enabled. If {{false}} the FAP is currently disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.OpState";
-    }
-    leaf admin-state {
-      type boolean;
-      config false;
-      description
-        "Lock or unlock the FAP. This controls the administrative state of the FAP as defined in ITU-X.731 [32]. If {{true}} Unlocked with permission to serve traffic (and enable RF transmitter(s)). If {{false}} Locked. Transition FAP to state where it is NOT permitted to serve traffic. RF transmitter is disabled. Given that this command controls the FAP's RF transmitter, the underlying expectation is that the unlock is done when all necessary conditions are met to allow the transmitter to key on and provide service, including aspects such as: location verification (including meeting the governing regulatory requirements) verifying the FAP configuration if physical tampering is supported and no physical tampering is detected. The default value after power-on is {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.AdminState";
-    }
-    leaf rf-tx-status {
-      type boolean;
-      description
-        "Current status of this RF transmitter. {{true}} indicates that the 3G Tx transmitter is on. {{false}} indicates that the 3G Tx transmitter is off. This state is tied to the Administrative state which is controlled by the ACS. When the ACS sets AdminState to {{true}}, then the FAP has permission to turn on the RF transmitter. When the ACS sets AdminState to {{false}}, then the FAP is not allowed to provide service and MUST turn off the RF transmitter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.RFTxStatus";
-    }
-    leaf a13-session-transfer-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP performs A13 session transfer. If {{true}} A13 session transfer is enabled; if {{false}} A13 session transfer is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13SessionTransferEnable";
-    }
-    leaf local-ip-access-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP can assign local IP address to capable ATs. If {{true}} local IP address is assigned.; if {{false}} local IP address is not assigned.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.LocalIPAccessEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-self-config-g {
-    description
-      "This object contains parameters relating to the controlling of self-configuration capabilities in the FAP.";
-    leaf rfcnfl-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the values of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable";
-    }
-    leaf pilot-pn-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN}}. If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable";
-    }
-    leaf maxfap-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower}} . If {{true}}, the FAP self-configures the value. If {{false}}, the ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable";
-    }
-    leaf max-hrpd-beacon-tx-power-self-config-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the self-configuration capability in the FAP is used or not to determine the value of {{param|.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPower}}. If {{true}} the FAP self-configures the value. If {{false}} The ACS must provide the specific value to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.MaxHRPDBeaconTxPowerSelfConfigEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.SelfConfig.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-a13-g {
-    description
-      "This object contains attributes related to A13 Session Transfer";
-    leaf color-code-to-uati104-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104NumberOfEntries";
-    }
-    leaf hrpd-subnet-to-ip-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIPNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-a13-color-code-to-uati104-g {
-    description
-      "HRPD ColorCode to UATI Mapping Table number of entries.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.Alias";
-    }
-    leaf color-code {
-      type uint16 {
-        range "0..256";
-      }
-      description
-        "Color Code mapped to UATI104 in the following field";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.ColorCode";
-    }
-    leaf uati104 {
-      type binary {
-        length "0..13";
-      }
-      description
-        "The UATI104 of the AT that accesses with the ColorCode field";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.UATI104";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.ColorCodeToUATI104.{i}.";
-  }
-
-  grouping fap-control-cdma2000-hrpd-a13-hrpd-subnet-to-ip-g {
-    description
-      "This object contains attributes related to A13 Session Transfer";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.Alias";
-    }
-    leaf hrpd-subnet-length {
-      type uint8 {
-        range "1..104";
-      }
-      units "bits";
-      config false;
-      description
-        "The number of MSBs (in {{units}}) in the following field that is part of HRPDSubnet";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.HRPDSubnetLength";
-    }
-    leaf hrpd-subnet {
-      type binary {
-        length "0..13";
-      }
-      config false;
-      description
-        "The {{param|HRPDSubnetLength}} MSBs of this field contain the HRPD subnet that maps to the IP address in the following field";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.HRPDSubnet";
-    }
-    leaf a13-ip-address {
-      type inet:ip-address;
-      description
-        "This field contains the IP address of A13 endpoint that corresponds to the HRPD subnet";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.A13IPAddress";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.FAPControl.CDMA2000.HRPD.A13.HRPDSubnetToIP.{i}.";
-  }
-
-  grouping access-mgmt-g {
-    description
-      "This object contains parameters relating to Access Management for the different radio technologies.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.";
-  }
-
-  grouping access-mgmt-umts-g {
-    description
-      "This object contains parameters relating to Access Management for UMTS FAP (ACL, CSG, LIPA). Closed Subscriber Group (CSG) service behavior is specified in {{bibref|3GPP-TS.22.011}}. Note: Cell barring and 3GPP access class parameters are contained in {{object|.CellConfig.UMTS.RAN.CellRestriction.}} (UMTS FAP).";
-    leaf access-mode {
-      type enumeration {
-        enum "open access" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Open Access";
-        }
-        enum "closed access" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Closed Access";
-        }
-        enum "hybrid access" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode - Hybrid Access";
-        }
-      }
-      default "open access";
-      config false;
-      description
-        "Indicates the type of access mode the FAP operates in. {{enum}} When the value is not {{enum|Open Access}} non-CSG-capable UE are handled according to {{param|NonCSGUEAccessDecision}}. Note: This parameter controls the setting of the CSGindicator bit, specified in MIB in {{bibref|3GPP-TS.25.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessMode";
-    }
-    leaf non-csgue-access-decision {
-      type enumeration {
-        enum "local" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - Local";
-        }
-        enum "query fap-gw" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - Query FAPGW";
-        }
-        enum "by core" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision - By Core";
-        }
-      }
-      default "local";
-      config false;
-      description
-        "Indicates how the access decision is made for non-CSG-capable UE. Parameter is ignored when {{param|AccessMode}} is {{enum|Open Access|AccessMode}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.NonCSGUEAccessDecision";
-    }
-    leaf csg-membership-determined-locally {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Indicates how the access decision is made for CSG-capable UE. Parameter is ignored when {{param|AccessMode}} is {{enum|Open Access|AccessMode}}. If {{true}} access decision is determined the same way as for {{param|NonCSGUEAccessDecision}}. (E.g. if core network doesn't (yet) support full CSG functionality.) If {{false}} FAP always allows access for CSG-capable UE. CSG enforcement is performed by MSC/SGSN (with support from HSS), or by FGW. {{bibref|3GPP-TS.22.011}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.CSGMembershipDeterminedLocally";
-    }
-    leaf max-u-es-served {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent UEs allowed at a cell. Valid for any {{param|AccessMode}}. A value of -1 allows an unlimited number of concurrent UEs up to the limit of FAP capacity. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxUEsServed";
-    }
-    leaf max-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent CSG member UEs allowed at a hybrid or closed cell. A value of -1 allows an unlimited number of CSG members up to the limit of FAP capacity. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls. {{bibref|3GPP-TS.22.011}}, {{bibref|3GPP-TS.22.220}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxCSGMembers";
-    }
-    leaf max-non-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurerent non-CSG member UEs allowed at a hybrid cell. Valid only if {{param|AccessMode}} is {{enum|Hybrid Access|AccessMode}}. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxNonCSGMembers";
-    }
-    leaf max-resource-non-csg-members {
-      type uint8 {
-        range "0..100";
-      }
-      config false;
-      description
-        "Maximum percentage of physical resource that can be assigned to non-CSG members aggregately at one time. In UMTS FAP, this applies to RB resource.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxResourceNonCSGMembers";
-    }
-    leaf hnb-name {
-      type string {
-        length "0..48";
-      }
-      config false;
-      description
-        "Home NodeB name. An operator-defined string that is broadcast by a CSG cell or a hybrid cell and displayed on the UE for the purpose of manual cell selection or indication that the UE is camped on the cell as specified in {{bibref|3GPP-TS.22.220|Section 5.4.2}}. Corresponds to parameter 'hnb-Name' specified in SIB20 in {{bibref|3GPP-TS.25.331|Section 10.2.48.8.23}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.HNBName";
-    }
-    leaf csgid {
-      type uint32 {
-        range "0..134217727";
-      }
-      config false;
-      description
-        "Defines the Closed Subscriber Group of the Access Control List. The UMTS FAP broadcasts this CSG ID in SIB3 depending on the AccessMode. The LTE FAP broadcasts this in SIB1, and corresponds to parameter csg-Identity in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.CSGID";
-    }
-    leaf-list access-control-list {
-      type string {
-        length "0..15";
-      }
-      config false;
-      max-elements "1024";
-      description
-        "{{list}} Each entry is an IMSI.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.AccessControlList";
-    }
-    leaf max-member-detail-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.AccessMgmt.UMTS.MemberDetail.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MaxMemberDetailEntries";
-    }
-    leaf member-detail-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetailNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.";
-  }
-
-  grouping access-mgmt-umts-member-detail-g {
-    description
-      "Details for CSG and Non-CSG members.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the MemberDetail entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.Alias";
-    }
-    leaf imsi {
-      type string {
-        length "0..15";
-      }
-      description
-        "International Mobile Subscriber Identity of the UE.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.IMSI";
-    }
-    leaf msisdn {
-      type string {
-        length "0..15";
-      }
-      config false;
-      description
-        "Mobile Station International Subscriber Identity Number. Set to {{empty}} if unknown.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.MSISDN";
-    }
-    leaf membership-expires {
-      type yang:date-and-time;
-      config false;
-      description
-        "Time when the ACL membership expires. An Unknown Time value, as defined in {{bibref|TR-106a2|Section 3.2}}, indicates that the membership doesn't expire. Upon expiry the FAP MUST remove the IMSI from the {{param|.AccessMgmt.UMTS.AccessControlList}}, but the entry in {{object|.AccessMgmt.UMTS.MemberDetail.{i}.}} remains. {{bibref|3GPP-TS.22.011}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.MembershipExpires";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.MemberDetail.{i}.";
-  }
-
-  grouping access-mgmt-umts-local-ip-access-g {
-    description
-      "Local IP access for UMTS FAP.";
-    leaf enable {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enables/disables the Local IP Access (LIPA) functionality.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.Enable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.UMTS.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-lte-g {
-    description
-      "This object contains parameters relating to Access Management, as defined in {{bibref|3GPP-TS.32.592}}/ Closed Subscriber Group (CSG) service behavior is specified in {{bibref|3GPP-TS.22.011}}. Note: Cell barring and 3GPP access class parameters are contained in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-    leaf access-mode {
-      type enumeration {
-        enum "open access" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Open Access";
-        }
-        enum "closed access" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Closed Access";
-        }
-        enum "hybrid access" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode - Hybrid Access";
-        }
-      }
-      default "open access";
-      config false;
-      description
-        "Indicates the type of access mode the FAP operates in. {{enum}} Note: This parameter controls the setting of the CSGindicator bit, specified in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.AccessMode";
-    }
-    leaf max-u-es-served {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent UEs allowed at a cell. Valid for any {{param|AccessMode}}. A value of -1 allows an unlimited number of concurrent UEs up to the limit of FAP capacity. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxUEsServed";
-    }
-    leaf max-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurrent CSG member UEs allowed at a hybrid or closed cell. A value of -1 allows an unlimited number of CSG members up to the limit of FAP capacity. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls. {{bibref|3GPP-TS.22.011}}, {{bibref|3GPP-TS.22.220}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxCSGMembers";
-    }
-    leaf max-non-csg-members {
-      type int64;
-      default "-1";
-      config false;
-      description
-        "Maximum number of concurerent non-CSG member UEs allowed at a hybrid cell. Valid only if {{param|AccessMode}} is {{enum|Hybrid Access|AccessMode}}. The setting cannot be larger than the value of {{param|MaxUEsServed}}. The setting does not affect emergency calls.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxNonCSGMembers";
-    }
-    leaf max-resource-non-csg-members {
-      type uint8 {
-        range "0..100";
-      }
-      config false;
-      description
-        "Maximum percentage of physical resource that can be assigned to non-CSG members aggregately at one time. This applies to PDSCH physical resource blocks.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.MaxResourceNonCSGMembers";
-    }
-    leaf csgid {
-      type uint32 {
-        range "0..134217727";
-      }
-      config false;
-      description
-        "Defines the Closed Subscriber Group of the Access Control List. The LTE FAP broadcasts this in SIB1, and corresponds to parameter csg-Identity in SIB1 in {{bibref|3GPP-TS.36.331}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.CSGID";
-    }
-    leaf hnb-name {
-      type string {
-        length "0..48";
-      }
-      config false;
-      description
-        "Home NodeB name. An operator-defined string that is broadcast by a CSG cell or a hybrid cell and displayed on the UE for the purpose of manual cell selection or indication that the UE is camped on the cell as specified in {{bibref|3GPP-TS.22.220|Section 5.4.2}}. Corresponds to parameter 'hnb-Name' specified in SIB9 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.HNBName";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.";
-  }
-
-  grouping access-mgmt-lte-local-ip-access-g {
-    description
-      "Local IP access for LTE FAP.";
-    leaf enable {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enables/disables the Local IP Access (LIPA) functionality.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.Enable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.LTE.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-cdma2000-g {
-    description
-      "This object contains configurable and observable attributes related to CDMA2000 Access and Admission Control of the FAP.";
-    leaf access-mode {
-      type uint8 {
-        range "0 | 1 | 3";
-      }
-      config false;
-      description
-        "Defines the access control mode of FAP. Allowed modes are Open, Closed, and Signaling Association (refer to {{bibref|3GPP2-A.S0024}}). AccessMode 2 (Hybrid) is not applicable to CDMA2000 FAPs. 0- Open,1-Closed, 2-Reserved, 3-Signaling Association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.AccessMode";
-    }
-    leaf max-total-active-calls-allowed {
-      type uint16 {
-        range "1..1024";
-      }
-      config false;
-      description
-        "Total number of active calls allowed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MaxTotalActiveCallsAllowed";
-    }
-    leaf access-control-list {
-      type string {
-        length "0..1024";
-      }
-      config false;
-      description
-        "{{list}} (maximum item length 15). Each entry is an IMSI.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.AccessControlList";
-    }
-    leaf max-member-detail-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.AccessMgmt.CDMA2000.MemberDetail.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MaxMemberDetailEntries";
-    }
-    leaf member-detail-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetailNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.";
-  }
-
-  grouping access-mgmt-cdma2000-member-detail-g {
-    description
-      "At most one enabled entry in this table can exist with a given value for IMSI and HRPDIdentifierValue. The IMSI field may be empty.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.Alias";
-    }
-    leaf imsi {
-      type string {
-        length "0..15";
-      }
-      description
-        "International Mobile Subscriber Identity of the UE.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.IMSI";
-    }
-    leaf hrpd-identifier-type {
-      type int64;
-      config false;
-      description
-        "Type of identifier used for the HRPD AT. 0-invalid 1-ESN 2-MEID 3-A12NAI. If IMSI in this record is valid, then this attribute is set to 0.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.HRPDIdentifierType";
-    }
-    leaf hrpd-identifier-value {
-      type string {
-        length "0..128";
-      }
-      config false;
-      description
-        "The value of this attribute depends on {{param|HRPDIdentifierType}}. ESN and MEID shall be defined as Hex.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.HRPDIdentifierValue";
-    }
-    leaf membership-expires {
-      type yang:date-and-time;
-      config false;
-      description
-        "The time that the current ACL membership expires.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.MembershipExpires";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.MemberDetail.{i}.";
-  }
-
-  grouping access-mgmt-cdma2000-local-ip-access-g {
-    description
-      "Local IP access support as defined in 3GPP2";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-cdma2000-local-ip-access-hrpd-g {
-    description
-      "Local IP access support as defined in 3GPP2";
-    leaf filter-type {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Value of '0' indicates that the FAP shall allow only IP packets with destination address matching the local IP subnet on Local IP access interface. Value of '1' indicates that the FAP shall allow any IP packets with destination address matching either the local IP subnet or the subnets listed in Local IP egress filter parameter on Local IP access interface. Value of '2' indicates that the FAP shall allow any IP packets with destination addresses that do not match the Local IP egress filter parameter on Local IP access interface.Value of '3' indicates that the FAP shall allow any IP packets on the local IP address interface.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterType";
-    }
-    leaf filter-in-use {
-      type string {
-        length "0..256";
-      }
-      description
-        "This parameter is set to the IPCP Vendor Specific Option which the FAP uses to send Local IP access packet filter on AN-PPP interface.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterInUse";
-    }
-    leaf egress-filter-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilterNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.";
-  }
-
-  grouping access-mgmt-cdma2000-local-ip-access-hrpd-egress-filter-g {
-    description
-      "HRPD LIPA Egress Filter Table entries.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Alias";
-    }
-    leaf subnet {
-      type inet:ipv4-address;
-      description
-        "The IP subnet of the egress filter to be installed to the AT. The meaning of this field depends on the {{param|.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.FilterType}} field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.Subnet";
-    }
-    leaf subnet-mask {
-      type uint8 {
-        range "0..32";
-      }
-      description
-        "The length of the IP subnetmask associated with the IP subnet in the previous field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.SubnetMask";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.CDMA2000.LocalIPAccess.HRPD.EgressFilter.{i}.";
-  }
-
-  grouping access-mgmt-legacy-g {
-    description
-      "This object contains configurable and observable attributes related to Access and Admission Control of the FAP, which are not not covered by 3GPP and 3GPP2 specifications.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.";
-  }
-
-  grouping access-mgmt-legacy-local-ip-access-g {
-    description
-      "Old Local IP access object, included on special request.";
-    leaf enable {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enables/disables the Local IP Access (LIPA) functionality.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Enable";
-    }
-    leaf max-rules-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.MaxRulesEntries";
-    }
-    leaf rule-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.RuleNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.";
-  }
-
-  grouping access-mgmt-legacy-local-ip-access-rule-g {
-    description
-      "Policy for selecting traffic for local IP access. Originated traffic will be NAT'ed. The rule is bi-directional, i.e. return traffic is allowed. Rules do NOT affect traffic to/from the FAP itself (such as TR-069 or control). The rules are applied to the mobile station data traffic (PS-domain) via deep packet inspection or similar method.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the forwarding entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Alias";
-    }
-    leaf dest-ip-address {
-      type inet:ip-address;
-      description
-        "Destination IP Address. {{empty}} indicates no destination address is specified. An entry for which {{param}} and {{param|DestSubnetMask}} are both {{empty}} is a default route.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.DestIPAddress";
-    }
-    leaf dest-subnet-mask {
-      type inet:ip-address;
-      description
-        "Destination subnet mask (IPv4) or prefix (IPv6). {{empty}} indicates no destination subnet mask or prefix is specified. If a destination subnet mask or prefix is specified, {{param}} is ANDed with the destination address before comparing with {{param|DestIPAddress}}. Otherwise, the full destination address is used as-is. An entry for which {{param|DestIPAddress}} and {{param}} are both {{empty}} is a default route.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.DestSubnetMask";
-    }
-    leaf protocol {
-      type int64;
-      description
-        "IP Protocol Identifier. -1 matches any protocol.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Protocol";
-    }
-    leaf action {
-      type enumeration {
-        enum "tunnel" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action - Tunnel";
-        }
-        enum "napt" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action - NAPT";
-        }
-      }
-      config false;
-      description
-        "Action to be taken for traffic matching this rule.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Action";
-    }
-    leaf interface {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "Specifies the egress interface when {{param|Action}} is set to {{enum|NAPT|Action}}. {{reference}} layer-3 connection object. Example: InternetGatewayDevice.LANDevice.{i}.LANEthernetInterfaceConfig.{i}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.Interface";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.AccessMgmt.Legacy.LocalIPAccess.Rule.{i}.";
-  }
-
-  grouping cell-config-g {
-    description
-      "This object contains parameters relating to configuring the FAP.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.";
-  }
-
-  grouping umts-g {
-    description
-      "This object contains parameters relating to configuring UMTS system specific information.";
-    leaf tunnel-instance {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "This is the reference to the IPsec tunnel instance used by the UMTS FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.TunnelInstance";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.";
-  }
-
-  grouping umts-cn-g {
-    description
-      "This object contains parameters relating to configuring UMTS CN.";
-    leaf plmn-type {
-      type enumeration {
-        enum "gsm-map" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType - GSM-MAP";
-        }
-        enum "ansi-41" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType - ANSI-41";
-        }
-      }
-      config false;
-      description
-        "Type of Public Land Mobile Network (PLMN).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNType";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PLMNID";
-    }
-    leaf-list equiv-plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each item is a PLMNID. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.EquivPLMNID";
-    }
-    leaf sac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Service Area Code (SAC) {{bibref|3GPP-TS.23.003}}. The concatenation of PLMN ID (MCC+MNC), LAC, and SAC uniquely identifies the Service Area ID (SAI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.SAC";
-    }
-    leaf broadcast-sac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Service Area Code (SAC) for broadcast. The format of this parameter is the same with {{param|SAC}}, and it uniquely identifies the Service Area ID (SAI) for Earthquake and Tsunami Warning Services (ETWS) {{bibref|3GPP-TS.25.469|Section 9.1.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.BroadcastSAC";
-    }
-    leaf-list lacrac {
-      type string;
-      config false;
-      max-elements "256";
-      description
-        "{{list}} Each item is a LAC/RAC combination expressed in the following format: :<LAC or LACrange>':'<RAC or RACrange> Where LAC and RAC are single values, while LACrange and RACrange are inclusive and can be expressed in the following format: :<Start-value>\"..\"<End-value> Location Area Code (LAC) consists of up to 5 numerical characters. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}. Routing Area Code (RAC) consists of up to 3 numerical characters. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}. The FAP is to select one LAC and RAC from the combination(s) expressed in this parameter for use in {{param|LACInUse}} and {{param|RACInUse}} respectively. If a LAC occurs more than once in the list, this shall not increase the chance that it is selected over other LAC values in the list. The following are examples of the valid LACRAC combination formats: :\"64000:210\" ::(one list item with single value for LAC and RAC) :\"64000..64100:210, 64101:211\" ::(two list items, first item has a LAC range) :\"64000:210..214, 64001:215..219\" ::(two list items, both items have a RAC range for a specific LAC value) :\"64000..64100:210..214\" ::(one list item both have a LAC range and a RAC range)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.LACRAC";
-    }
-    leaf lac-in-use {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "The LAC being used by the FAP. Self-configuration for LAC is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|LACRAC}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first LAC value in {{param|LACRAC}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.LACInUse";
-    }
-    leaf rac-in-use {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "The RAC being used by the FAP. Self-configuration for RAC is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|LACRAC}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first RAC value in {{param|LACRAC}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.RACInUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.";
-  }
-
-  grouping umts-cn-cs-domain-g {
-    description
-      "This object contains parameters relating to configuring the CS domain of the UMTS CN.";
-    leaf t3212 {
-      type uint32 {
-        range "0..91800";
-      }
-      units "seconds";
-      config false;
-      description
-        "T3212 timeout value specified in {{units}} {{bibref|3GPP-TS.24.008|section 10.5.1.12.2}}. The values are implemented by steps of 360 {{units}}, which aligns with values in decihours in {{bibref|3GPP-TS.24.008}}. The value of 0 is used for infinite timeout value i.e. periodic updating shall not be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.T3212";
-    }
-    leaf imsi-attach-detach-enable {
-      type boolean;
-      config false;
-      description
-        "Indicates the UE behavior regarding IMSI attach/detach procedure to the CN {{bibref|3GPP-TS.24.008}}. If {{true}} UE SHALL apply IMSI attach and detach procedure If {{false}} UE SHALL NOT apply IMSI attach and detach procedure";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.IMSIAttachDetachEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.CSDomain.";
-  }
-
-  grouping umts-cn-ps-domain-g {
-    description
-      "This object contains parameters relating to configuring the PS domain of the UMTS CN.";
-    leaf network-mode-operation-combined {
-      type boolean;
-      config false;
-      description
-        "Network Mode of Operation of the CN. {{bibref|3GPP-TS.23.060}} {{bibref|3GPP-TS.24.008}} If {{true}} (Network Mode of Operation II) Combined procedures between CS and PS domain are not supported (i.e. Gs interface is not present). If {{false}} (Network Mode of Operation I) Combined procedures between CS and PS domain are supported (i.e. Gs interface is present).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PSDomain.NetworkModeOperationCombined";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.CN.PSDomain.";
-  }
-
-  grouping umts-ran-g {
-    description
-      "This object contains parameters relating to the RAN-level configuration.";
-    leaf-list ura-list {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      min-elements 1;
-      max-elements "50";
-      description
-        "{{list}} Each item is a URA (UTRAN Registration Area) to which the FAP belongs. The order of the URA values has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.URAList";
-    }
-    leaf ura-in-use {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "The URA being used by the FAP. Self-configuration for URA is controlled by {{param|.Capabilities.UMTS.SelfConfig.LACRACURAConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.LACRACURASelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for URA is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|URAList}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first URA value in {{param|URAList}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.URAInUse";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID allocated to the FAP. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RNCID";
-    }
-    leaf cell-id {
-      type uint32 {
-        range "0..268435455";
-      }
-      config false;
-      description
-        "Cell Identity. {{bibref|3GPP-TS.25.401|Section 6.1.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellID";
-    }
-    leaf t-rat-c {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Guard period in {{units}} before sending a \"RANAP:RESET ACKNOWLEDGE\" message towards the Femto GW. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRatC";
-    }
-    leaf t-raf-c {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} that the FAP SHOULD wait for receiving a \"RANAP:RESET ACKNOWLEDGE\" message from the Femto GW after sending a Reset to the Femto GW. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRafC";
-    }
-    leaf n-raf-c {
-      type uint64 {
-        range "1..max";
-      }
-      config false;
-      description
-        "Maximum number for RESET procedure that can be repeated in FAP. {{bibref|3GPP-TS.25.413|Section 8.26.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NRafC";
-    }
-    leaf tig-or {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Amount of time in {{units}} used to determine when the additional level of traffic reduction in CN overload SHOULD take place. While this timer is running all OVERLOAD messages or signalling pointing to congested information received by the FAP are ignored. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TigOR";
-    }
-    leaf tin-tr {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Amount of time in {{units}} used to determine when the CN overload can be considered cleared. While this timer is running, the FAP is not allowed to increase traffic. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TinTR";
-    }
-    leaf t-data-fwd {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} for Data Forwarding at FAP. Timer is started when a \"RANAP:SRNS Data Forward Command\" message (or a \"RANAP:Relocation Command\" message) is received. At timer expiry the \"SRNS Data Forwarding\" procedure is completed. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TDataFwd";
-    }
-    leaf t-reloc-prep {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} for the Relocation Preparation procedure. Timer is started when a \"RANAP:Relocation Required\" message is sent. Timer is stopped when a \"RANAP:Relocation Command\" or a \"RANAP:Relocation Preparation Failure\" message is received. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRelocPrep";
-    }
-    leaf t-reloc-overall {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Maximum amount of time in {{units}} for protection of the overall Relocation procedure. Timer is started when a \"RANAP:Relocation Command\" message is received. Timer is stopped when a \"RANAP:Iu Release Command\" is received or the relocation procedure is cancelled. {{bibref|3GPP-TS.25.413|Section 9.5}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.TRelocOverall";
-    }
-    leaf hnbid-realm {
-      type string {
-        length "0..182";
-      }
-      config false;
-      description
-        "The \"realm\" portion of the HNB-ID where HNB-ID is defined in {{bibref|3GPP-TS.25.469}} and is shown as follows: 0<IMSI>@<realm> Or 1<OUI>-<SerialNumber>@<realm> The other identifiers before \"@\" are device dependent values. Both <OUI> and <SerialNumber> are defined in {{bibref|TR-069a2|Table 36}}. <IMSI> is obtained from the USIM if it is equipped in the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HNBIDRealm";
-    }
-    leaf hs-flag {
-      type boolean;
-      config false;
-      description
-        "Enables/disables the HSDPA function in the FAP. If {{true}} HSDPA is enabled (this is equivalent to a \"1\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{false}} HSDPA is disabled (this is equivalent to a \"0\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HSFlag";
-    }
-    leaf hs-enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables HSDPA in the cell. If {{true}} HSDPA is enabled (this is equivalent to a \"1\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{false}} HSDPA is not enabled (this is equivalent to a \"0\" in {{bibref|3GPP-TS.32.642|Section 6.3.9}}) If {{param|HSFlag}} is {{false}} then this value MUST be {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.HSEnable";
-    }
-    leaf num-of-hspdsc-hs {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "The number of codes at the defined spreading factor (SF=16), within the complete code tree. {{bibref|3GPP-TS.32.642|Section 6.3.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NumOfHSPDSCHs";
-    }
-    leaf num-of-hsscc-hs {
-      type uint64;
-      config false;
-      description
-        "The number of HS-SCCHs for one cell. {{bibref|3GPP-TS.32.642|Section 6.3.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NumOfHSSCCHs";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.";
-  }
-
-  grouping umts-ran-csg-g {
-    description
-      "This object contains parameters relating to the Closed Subscriber Group (CSG).";
-    leaf csg-indicator {
-      type boolean;
-      description
-        "The CSG-indicator Information Element (IE) in the Master Information Block reflects the access mode of the CSG cell. It is hence dependent on the value of {{param|.AccessMgmt.UMTS.AccessMode}}. If {{true}} the CSG-indicator IE is present, reflecting access to the CSG cell is closed. If {{false}} the CSG-indicator IE is absent, reflecting access to the CSG cell is not closed. {{bibref|3GPP-TS.25.331|Section 10.2.48.8.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGIndicator";
-    }
-    leaf-list uarfcndl-list {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      max-elements "128";
-      description
-        "{{list}} Each item is a UTRA Absolute Radio Frequency Channel Number (UARFCN) in the DL direction dedicated to the CSG cells. {{param}} is broadcast in SIB 11bis {{bibref|3GPP-TS.25.331|Section 10.2.48.8.14a}}. The corresponding UTRA Absolute Radio Frequency Channel Number (UARFCN) in the UL direction is derived based on the fixed offset applicable for the frequency band.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.UARFCNDLList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.";
-  }
-
-  grouping umts-ran-csg-csgpsc-split-info-g {
-    description
-      "This object contains parameters relating to the Primary Scrambling Code (PSC) split information for the CSG. Defined in SIB3/11bis {{bibref|3GPP-TS.25.331|Section 10.3.2.8 and 10.3.2.9}}.";
-    leaf start-psc-range1-coefficient {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "The value of this Information Element (IE) multiplied by 8 specifies the start PSC value of the first PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.StartPSCRange1Coefficient";
-    }
-    leaf number-of-ps-cs {
-      type enumeration {
-        enum "5" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 5";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 10";
-        }
-        enum "15" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 15";
-        }
-        enum "20" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 20";
-        }
-        enum "30" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 30";
-        }
-        enum "40" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 40";
-        }
-        enum "50" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 50";
-        }
-        enum "64" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 64";
-        }
-        enum "80" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 80";
-        }
-        enum "120" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 120";
-        }
-        enum "160" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 160";
-        }
-        enum "256" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - 256";
-        }
-        enum "alltherest" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - alltherest";
-        }
-        enum "spare3" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare3";
-        }
-        enum "spare2" {
-          value 15;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare2";
-        }
-        enum "spare1" {
-          value 16;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs - spare1";
-        }
-      }
-      config false;
-      description
-        "This Information Element (IE) specifies the number of PSCs reserved for CSG cells in each PSC range.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.NumberOfPSCs";
-    }
-    leaf psc-range2-offset {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "If this Information Element (IE) is included, the UE shall calculate the second PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}. If this Information Element (IE) is not included, the UE shall consider the second PSC range to be not present.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.PSCRange2Offset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CSG.CSGPSCSplitInfo.";
-  }
-
-  grouping umts-ran-cell-selection-g {
-    description
-      "This object contains parameters related to cell selection and reselection.";
-    leaf quality-measure-cpich {
-      type enumeration {
-        enum "ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH - Ec/No";
-        }
-        enum "rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH - RSCP";
-        }
-      }
-      config false;
-      description
-        "Which mechanism to use when doing CPICH quality measurements. {{bibref|3GPP-TS.25.331|Section 10.3.7.47}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QualityMeasureCPICH";
-    }
-    leaf qqual-min {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Minimum required quality measure, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3 and Section 10.3.2.4}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QqualMin";
-    }
-    leaf qqual-min-offset {
-      type uint8 {
-        range "1..16";
-      }
-      units "dB";
-      default "1";
-      config false;
-      description
-        "Offset for {{param|QqualMin}} specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QqualMinOffset";
-    }
-    leaf q-rx-lev-min {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Minimum required RX level in the cell, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only odd values are valid, use of an even value MUST be rejected by the CPE. This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QRxLevMin";
-    }
-    leaf delta-q-rx-lev-min {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Delta for the minimum required RX level in the cell, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3 and Section 10.3.2.4}} The actual value of {{param|QRxLevMin}} = {{param|QRxLevMin}} + {{param}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.DeltaQRxLevMin";
-    }
-    leaf q-rx-lev-min-offset {
-      type uint8 {
-        range "2 | 4 | 6 | 8 | 10 | 12 | 14 | 16";
-      }
-      units "dB";
-      default "2";
-      config false;
-      description
-        "Offset for {{param|QRxLevMin}}, specified in {{units}}. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|RSCP|QualityMeasureCPICH}} and it MUST otherwise be ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QRxLevMinOffset";
-    }
-    leaf q-hyst1s {
-      type uint8 {
-        range "0..40";
-      }
-      config false;
-      description
-        "GSM and FDD Cell reselection hysteresis 1. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only even values are valid, use of an odd value MUST be rejected by the CPE.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHyst1s";
-    }
-    leaf q-hyst2s {
-      type uint8 {
-        range "0..40";
-      }
-      config false;
-      description
-        "FDD Cell reselection hysteresis 2. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} Only even values are valid, use of an odd value MUST be rejected by the CPE. This value is only meaningful if {{param|QualityMeasureCPICH}} has the value {{enum|Ec/No|QualityMeasureCPICH}} and it MUST otherwise be ignored. By default when {{param|QHyst1s}} is set and {{param}} is not, then the value for {{param}} SHOULD match the value of {{param|QHyst1s}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHyst2s";
-    }
-    leaf t-reselections {
-      type uint8 {
-        range "0..31";
-      }
-      units "seconds";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. A UE triggers the reselection of a new cell if the cell reselection criteria are fulfilled during the time interval in {{units}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TReselections";
-    }
-    leaf s-intrasearch {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for intra-frequency measurements, and for the HCS measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SIntrasearch";
-    }
-    leaf s-intersearch {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for inter-frequency measurements, and for the HCS measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SIntersearch";
-    }
-    leaf s-search-hcs {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for intrafrequency and interfrequency measurement rules in HCS. Below this limit in the serving cell, the UE initiates measurements of all intrafrequency and interfrequency neighbouring cells of the serving cell. Only odd values are valid, use of an even value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SSearchHCS";
-    }
-    leaf s-search-rat {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the RAT (GSM) specific threshold for inter-RAT measurement rules. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SSearchRAT";
-    }
-    leaf shcsrat {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the RAT (GSM) specific threshold for inter-RAT measurement rules in HCS. Only odd values are valid, use of an even value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SHCSRAT";
-    }
-    leaf s-limit-search-rat {
-      type int64;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the threshold for skipping inter-RAT measurement rules in HCS. Above this RAT (GSM) specific threshold in the serving UTRA cell, the UE does not need to perform any inter-RAT measurements. Only even values are valid, use of an odd value MUST be rejected by the CPE. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.SLimitSearchRAT";
-    }
-    leaf non-hcstcr-max {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - not used";
-        }
-        enum "30" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 30";
-        }
-        enum "60" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 60";
-        }
-        enum "120" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 120";
-        }
-        enum "180" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 180";
-        }
-        enum "240" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax - 240";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the duration in seconds for evaluating the allowed amount of cell reselections. If the number of cell reselections during the time period defined by {{param}} exceeds {{param|NonHCSNCR}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMax";
-    }
-    leaf non-hcsncr {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the maximum number of cell reselections. If the number of cell reselections during the {{param|NonHCSTCRMax}} time period exceeds the value of {{param}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSNCR";
-    }
-    leaf non-hcstcr-max-hyst {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - not used";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 10";
-        }
-        enum "20" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 20";
-        }
-        enum "30" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 30";
-        }
-        enum "40" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 40";
-        }
-        enum "50" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 50";
-        }
-        enum "60" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 60";
-        }
-        enum "70" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst - 70";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the cell reselection hysteresis for reverting from UE high-mobility measurements. The additional time period in seconds before UE reverts to low-mobility measurements. When the number of cell reselections during the time period defined by {{param|TCRMax}} no longer exceeds {{param|NCR}}, UE continues measurements during the time period defined by {{param|TCRMaxHyst}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.2.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NonHCSTCRMaxHyst";
-    }
-    leaf qhcs {
-      type uint8 {
-        range "0..99";
-      }
-      default "0";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the quality threshold levels for applying prioritised hierarchical cell reselection. {{bibref|3GPP-TS.25.331|Section 10.3.7.12 and Section 10.3.7.54a}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.QHCS";
-    }
-    leaf use-of-hcs {
-      type boolean;
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Indicate whether HCS is used in this cell or not. {{bibref|3GPP-TS.25.331|Section 10.3.7.47}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.UseOfHCS";
-    }
-    leaf hcs-prio {
-      type uint8 {
-        range "0..7";
-      }
-      default "0";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the HCS priority of this cell. {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.HCSPrio";
-    }
-    leaf tcr-max {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - not used";
-        }
-        enum "30" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 30";
-        }
-        enum "60" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 60";
-        }
-        enum "120" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 120";
-        }
-        enum "180" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 180";
-        }
-        enum "240" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax - 240";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the duration in seconds for evaluating the allowed amount of cell reselections. If the number of cell reselections during the time period defined by {{param}} exceeds {{param|NCR}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMax";
-    }
-    leaf ncr {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the maximum number of cell reselections. If the number of cell reselections during the {{param|TCRMax}} time period exceeds the value of {{param}}, high mobility has been detected. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.NCR";
-    }
-    leaf tcr-max-hyst {
-      type enumeration {
-        enum "not used" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - not used";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 10";
-        }
-        enum "20" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 20";
-        }
-        enum "30" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 30";
-        }
-        enum "40" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 40";
-        }
-        enum "50" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 50";
-        }
-        enum "60" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 60";
-        }
-        enum "70" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst - 70";
-        }
-      }
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the cell reselection hysteresis for reverting from UE high-mobility measurements. The additional time period in seconds before UE reverts to low-mobility measurements. When the number of cell reselections during the time period defined by {{param|TCRMax}} no longer exceeds {{param|NCR}}, UE continues measurements during the time period defined by {{param}}. Parameter defined in SIB3 {{bibref|3GPP-TS.25.331|Section 10.3.7.12}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.TCRMaxHyst";
-    }
-    leaf ue-tx-pwr-max-rach {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "A member of the set of parameters used for cell reselection functionality. Defines the maximum transmit power level, specified in {{units}}, that an UE MAY use when accessing the cell on RACH. Used to calculate Pcompensation, which is: max(UE_TXPWR_MAX_RACH - P_MAX, 0), where UE_TXPWR_MAX_RACH is {{param}} and P_MAX is the max transmit power for a UE. {{bibref|3GPP-TS.25.331|Section 10.3.2.3}} {{bibref|3GPP-TS.25.304|Section 5.2.3}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.UETxPwrMaxRACH";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellSelection.";
-  }
-
-  grouping umts-ran-rrc-timers-g {
-    description
-      "This object contains parameters related to miscellaneous RRC timers and constants.";
-    leaf t300 {
-      type uint16 {
-        range "100..8000";
-      }
-      units "milliseconds";
-      default "1000";
-      config false;
-      description
-        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T300";
-    }
-    leaf t301 {
-      type uint16 {
-        range "100..8000";
-      }
-      units "milliseconds";
-      default "2000";
-      config false;
-      description
-        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T301";
-    }
-    leaf t302 {
-      type uint16 {
-        range "100..8000";
-      }
-      units "milliseconds";
-      default "4000";
-      config false;
-      description
-        "Timer measured in {{units}}. Only the following values are considered valid: :100, 200, 400, 600, 800, 1000, 1200, 1400, 1600, 1800, 2000, 3000, 4000, 6000, and 8000 Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T302";
-    }
-    leaf t304 {
-      type uint16 {
-        range "100 | 200 | 400 | 1000 | 2000";
-      }
-      units "milliseconds";
-      default "2000";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T304";
-    }
-    leaf t305 {
-      type int64;
-      units "minutes";
-      default "30";
-      config false;
-      description
-        "Timer measured in {{units}}. -1 indicates an unbounded timer in which there is no update. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T305";
-    }
-    leaf t307 {
-      type uint8 {
-        range "5 | 10 | 15 | 20 | 30 | 40 | 50";
-      }
-      units "seconds";
-      default "30";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T307";
-    }
-    leaf t308 {
-      type uint16 {
-        range "40 | 80 | 160 | 320";
-      }
-      units "milliseconds";
-      default "160";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T308";
-    }
-    leaf t309 {
-      type uint8 {
-        range "1..8";
-      }
-      units "seconds";
-      default "5";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T309";
-    }
-    leaf t310 {
-      type uint16 {
-        range "40 | 80 | 120 | 160 | 200 | 240 | 280 | 320";
-      }
-      units "milliseconds";
-      default "160";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T310";
-    }
-    leaf t311 {
-      type uint16 {
-        range "250 | 500 | 750 | 1000 | 1250 | 1500 | 1750 | 2000";
-      }
-      units "milliseconds";
-      default "2000";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T311";
-    }
-    leaf t312 {
-      type uint8 {
-        range "0..15";
-      }
-      units "seconds";
-      default "1";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T312";
-    }
-    leaf t313 {
-      type uint8 {
-        range "0..15";
-      }
-      units "seconds";
-      default "3";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T313";
-    }
-    leaf t314 {
-      type uint8 {
-        range "0 | 2 | 4 | 6 | 8 | 12 | 16 | 20";
-      }
-      units "seconds";
-      default "12";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T314";
-    }
-    leaf t315 {
-      type uint16 {
-        range "0 | 10 | 30 | 60 | 180 | 600 | 1200 | 1800";
-      }
-      units "seconds";
-      default "180";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T315";
-    }
-    leaf t316 {
-      type int64;
-      units "seconds";
-      default "30";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}. -1 indicates an unbounded timer in which there is no update.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T316";
-    }
-    leaf t317 {
-      type uint16 {
-        range "0 | 10 | 30 | 60 | 180 | 600 | 1200 | 1800";
-      }
-      units "seconds";
-      config false;
-      description
-        "Timer measured in {{units}}. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.T317";
-    }
-    leaf n300 {
-      type uint8 {
-        range "0..7";
-      }
-      default "3";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N300";
-    }
-    leaf n301 {
-      type uint8 {
-        range "0..7";
-      }
-      default "2";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N301";
-    }
-    leaf n302 {
-      type uint8 {
-        range "0..7";
-      }
-      default "3";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N302";
-    }
-    leaf n304 {
-      type uint8 {
-        range "0..7";
-      }
-      default "2";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N304";
-    }
-    leaf n310 {
-      type uint8 {
-        range "0..7";
-      }
-      default "4";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N310";
-    }
-    leaf n312 {
-      type uint16 {
-        range "1..1000";
-      }
-      default "1";
-      config false;
-      description
-        "Counter. Only the following values are considered valid: 1, 2, 4, 10, 20, 50, 100, 200, 400, 600, 800, and 1000. Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.44}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N312";
-    }
-    leaf n313 {
-      type uint8 {
-        range "1 | 2 | 4 | 10 | 20 | 50 | 100 | 200";
-      }
-      default "20";
-      config false;
-      description
-        "Counter. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N313";
-    }
-    leaf n315 {
-      type uint16 {
-        range "1..1000";
-      }
-      default "1";
-      config false;
-      description
-        "Counter. Only the following values are considered valid: :1, 2, 4, 10, 20, 50, 100, 200, 400, 600, 800, and 1000. Any value other than those and the CPE MUST reject the request. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 13.1 and Section 10.3.3.43}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.N315";
-    }
-    leaf wait-time {
-      type uint8 {
-        range "0..15";
-      }
-      units "seconds";
-      config false;
-      description
-        "Time period the UE has to wait before repeating the rejected procedure. This is an IE used when sending RRC connection reject, redirecting the requesting UE to another frequency. 0 indicates that repetition is not allowed. {{bibref|3GPP-TS.25.331|Section 10.3.3.50}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.WaitTime";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RRCTimers.";
-  }
-
-  grouping umts-ran-drx-g {
-    description
-      "This object contains parameters related to DRX parameters.";
-    leaf drx-cycle-length-coefficient-cs {
-      type uint8 {
-        range "6..9";
-      }
-      config false;
-      description
-        "Defines the DRX cycle length coefficient for CS domain to optimize paging in idle mode. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 10.3.3.6}}. {{param}} refers to 'k' in the formula as specified in {{bibref|3GPP-TS.25.304}}, Discontinuous reception. Used by the CN CS domain to count paging occasions for discontinuous reception in Idle Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for CN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.DRXCycleLengthCoefficientCS";
-    }
-    leaf drx-cycle-length-coefficient-ps {
-      type uint8 {
-        range "6..9";
-      }
-      config false;
-      description
-        "Defines the DRX cycle length coefficient for PS domain to optimize paging in idle mode. Defined in SIB1 {{bibref|3GPP-TS.25.331|Section 10.3.3.6}}. {{param}} refers to 'k' in the formula as specified in {{bibref|3GPP-TS.25.304}}, Discontinuous reception. Used by the CN PS domain to count paging occasions for discontinuous reception in Idle Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for CN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.DRXCycleLengthCoefficientPS";
-    }
-    leaf utrandrx-cycle-length-coefficient {
-      type uint8 {
-        range "3..9";
-      }
-      config false;
-      description
-        "Defines the DRX cycle length used by UTRAN to count paging occasions for discontinuous reception in Connected Mode. The duration of the DRX cycle is 2 <power> k frames, where 'k' is the used DRX cycle length coefficient for UTRAN. {{param}} SHOULD be used by the UTRAN/FAP for UEs in Cell_PCH/Cell_FACH state. {{bibref|3GPP-TS.25.331|Section 10.3.3.49}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.UTRANDRXCycleLengthCoefficient";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.DRX.";
-  }
-
-  grouping umts-ran-power-control-g {
-    description
-      "This object contains parameters related to power control and RACH.";
-    leaf constant-value {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Used by the UE to calculate the initial output power, specified in {{units}}, on PRACH according to the open loop power control procedure. Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.11}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.ConstantValue";
-    }
-    leaf power-ramp-step-up {
-      type uint8 {
-        range "1..8";
-      }
-      units "dB";
-      config false;
-      description
-        "Used for the Uplink Common Channel. Defines the Power ramp setup, specified in {{units}}, on PRACH preamble when no acquisition indicator (AI) is detected by the UE. Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.54}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PowerRampStepUp";
-    }
-    leaf preamble-retrans-max {
-      type uint8 {
-        range "1..64";
-      }
-      config false;
-      description
-        "Used for the Uplink Common Channel. Defines the maximum number of preambles allowed in one preamble ramping cycle. PRACH Preamble Retrans Max is part of \"PRACH power offset\" which is part of \"PRACH system information list\". Parameter in SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.54}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PreambleRetransMax";
-    }
-    leaf persistence-scale-factor {
-      type uint8 {
-        range "2..9";
-      }
-      config false;
-      description
-        "Persistence Scaling Factor for overload control. Parameter in SIB5. The value is the scaling factor multiplied by 10, e.g. 2 is a scaling factor of 0.2";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.PersistenceScaleFactor";
-    }
-    leaf m-max {
-      type uint8 {
-        range "1..32";
-      }
-      config false;
-      description
-        "Maximum number of RACH preamble cycles. Defines how many times the PRACH preamble ramping procedure can be repeated before UE MAC reports a failure on RACH transmission to higher layers. Maximum number of RACH preamble cycles is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.MMax";
-    }
-    leaf nb01-min {
-      type uint8 {
-        range "0..50";
-      }
-      config false;
-      description
-        "RACH random back-off lower bound. {{param}} is the lower bound of the waiting time in 10 millisecond increments (i.e. 1 corresponds to 10 ms and 50 corresponds to 500 ms). {{param}} is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.NB01Min";
-    }
-    leaf nb01-max {
-      type uint8 {
-        range "0..50";
-      }
-      config false;
-      description
-        "RACH random back-off upper bound. {{param}} is the Upper bound of the waiting time in 10 millisecond increments (i.e. 1 corresponds to 10 ms and 50 corresponds to 500 ms). {{param}} is part of \"RACH transmission parameters\" which is part of \"PRACH system information list\" which is part of SIB5. {{bibref|3GPP-TS.25.331|Section 10.3.6.67}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.NB01Max";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.PowerControl.";
-  }
-
-  grouping umts-ran-cell-restriction-g {
-    description
-      "This object contains parameters related to cell access restriction.";
-    leaf cell-barred {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP is barred from service or not. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.CellBarred";
-    }
-    leaf intra-freq-cell-reselection-indicator {
-      type boolean;
-      config false;
-      description
-        "When {{param|CellBarred}} is {{true}}, this indicates whether the intra-frequency cell re-selection is allowed or not. {{param}} has no meaning if {{param|CellBarred}} is {{false}} and MUST be ignored in such cases. {{true}} means that intra-frequency cell re-selection is allowed. {{false}} means that intra-frequency cell re-selection is not allowed. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.IntraFreqCellReselectionIndicator";
-    }
-    leaf t-barred {
-      type uint16 {
-        range "10 | 20 | 40 | 80 | 160 | 320 | 640 | 1280";
-      }
-      units "seconds";
-      config false;
-      description
-        "The time period in {{units}} during which the UE is barred from accessing the FAP. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.TBarred";
-    }
-    leaf-list access-class-barred-list-cs {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "{{list}} Each entry is an Access Class that is barred from CS service. The order of the list has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.AccessClassBarredListCS";
-    }
-    leaf-list access-class-barred-list-ps {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "{{list}} Each entry is an Access Class that is barred from PS service. The order of the list has no significance. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.AccessClassBarredListPS";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the FAP is reserved for operator use or not. {{bibref|3GPP-TS.25.331|Section 10.3.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.CellReservedForOperatorUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.CellRestriction.";
-  }
-
-  grouping umts-ran-intra-freq-meas-g {
-    description
-      "This object contains parameters relating to the intra-freq HO control parameters.";
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - CPICH RSCP";
-        }
-        enum "pathloss" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity - Pathloss";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for intra-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.38}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the equivalent time constant of the low pass filter applied to the CPICH quality measurements, or {{enum|CPICH Ec/No|MeasurementQuantity}}. {{bibref|3GPP-TS.25.331|Section 8.6.7.2 and Section 10.3.7.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.FilterCoefficient";
-    }
-    leaf-list intra-frequency-event-identity {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each entry is an Event ID from the list of: 1a, 1b, 1c, 1d, 1e, 1f, 1g, 1h, 1i Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.34}} Since the FAP can determine this on its own, it might not be necessary to configure it.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.IntraFrequencyEventIdentity";
-    }
-    leaf-list triggering-condition2-event1a {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Active and Monitored";
-        }
-        enum "detected" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Detected";
-        }
-        enum "detected and monitored" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a - Detected and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1a. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1a";
-    }
-    leaf-list triggering-condition1-event1b {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b - Active and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1b. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1b";
-    }
-    leaf-list triggering-condition2-event1e {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Active and Monitored";
-        }
-        enum "detected" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Detected";
-        }
-        enum "detected and monitored" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e - Detected and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1e. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition2Event1e";
-    }
-    leaf-list triggering-condition1-event1f {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f - Active and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger Event 1f. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TriggeringCondition1Event1f";
-    }
-    leaf reporting-range-event1a {
-      type uint8 {
-        range "0..29";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines a constant in the inequality criterion that needs to be satisfied for an Event 1a to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingRangeEvent1a";
-    }
-    leaf reporting-range-event1b {
-      type uint8 {
-        range "0..29";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines a constant in the inequality criterion that needs to be satisfied for an Event 1b to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingRangeEvent1b";
-    }
-    leaf weighting-factor-event1a {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.WeightingFactorEvent1a";
-    }
-    leaf weighting-factor-event1b {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.WeightingFactorEvent1b";
-    }
-    leaf report-deactivation-threshold-event1a {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Defines the maximum number of cells allowed in the \"active cell set\" for Event 1a to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportDeactivationThresholdEvent1a";
-    }
-    leaf reporting-amount-event1a {
-      type int64;
-      config false;
-      description
-        "Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingAmountEvent1a";
-    }
-    leaf reporting-amount-event1c {
-      type int64;
-      config false;
-      description
-        "Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1c The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingAmountEvent1c";
-    }
-    leaf reporting-interval-event1a {
-      type uint16 {
-        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingIntervalEvent1a";
-    }
-    leaf reporting-interval-event1c {
-      type uint16 {
-        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1c. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReportingIntervalEvent1c";
-    }
-    leaf hysteresis-event1a {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1a";
-    }
-    leaf hysteresis-event1b {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1b";
-    }
-    leaf hysteresis-event1c {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1c";
-    }
-    leaf hysteresis-event1d {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1d";
-    }
-    leaf hysteresis-event1e {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1e";
-    }
-    leaf hysteresis-event1f {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.HysteresisEvent1f";
-    }
-    leaf time-to-trigger-event1a {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1a";
-    }
-    leaf time-to-trigger-event1b {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1b";
-    }
-    leaf time-to-trigger-event1c {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1c";
-    }
-    leaf time-to-trigger-event1d {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1d";
-    }
-    leaf time-to-trigger-event1e {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1e";
-    }
-    leaf time-to-trigger-event1f {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.TimeToTriggerEvent1f";
-    }
-    leaf threshold-used-frequency-event1e {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ThresholdUsedFrequencyEvent1e";
-    }
-    leaf threshold-used-frequency-event1f {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ThresholdUsedFrequencyEvent1f";
-    }
-    leaf replacement-activation-threshold-event1c {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Defines the minimum number of cells allowed in the \"active cell set\" for Event 1c to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.ReplacementActivationThresholdEvent1c";
-    }
-    leaf instance-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.InstanceNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.";
-  }
-
-  grouping umts-ran-intra-freq-meas-instance-g {
-    description
-      "Table containing parameters relating to a particular instance of intra-freq events.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Alias";
-    }
-    leaf intra-frequency-event-identity {
-      type enumeration {
-        enum "1a" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1a";
-        }
-        enum "1b" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1b";
-        }
-        enum "1c" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1c";
-        }
-        enum "1d" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1d";
-        }
-        enum "1e" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1e";
-        }
-        enum "1f" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 1f";
-        }
-      }
-      description
-        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.34}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.IntraFrequencyEventIdentity";
-    }
-    leaf event-description {
-      type string {
-        length "0..256";
-      }
-      description
-        "A free-form description of the way the event instance is meant to be used. E.g. \"hand-out to macro cells\", \"addition of enterprise HNB cell to Active Set\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.EventDescription";
-    }
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - CPICH RSCP";
-        }
-        enum "pathloss" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity - Pathloss";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for intra-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.38}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the equivalent time constant of the low pass filter applied to the CPICH quality measurements, or {{enum|CPICH Ec/No|MeasurementQuantity}}. {{bibref|3GPP-TS.25.331|Section 8.6.7.2 and Section 10.3.7.9}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.FilterCoefficient";
-    }
-    leaf-list triggering-condition {
-      type enumeration {
-        enum "active" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Active";
-        }
-        enum "monitored" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Monitored";
-        }
-        enum "active and monitored" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Active and Monitored";
-        }
-        enum "detected" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Detected";
-        }
-        enum "detected and monitored" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition - Detected and Monitored";
-        }
-      }
-      config false;
-      description
-        "{{list}} Indicates which cells can trigger the event instance. {{enum}} {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TriggeringCondition";
-    }
-    leaf reporting-range {
-      type uint8 {
-        range "0..29";
-      }
-      units "dB";
-      config false;
-      description
-        "Applicable to events 1a, 1b, otherwise not needed. Defines a constant in the inequality criterion that needs to be satisfied for an Event 1b to occur. Actual values of the range are 0.0 to 14.5 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingRange";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Applicable to events 1a, 1b, otherwise not needed. Defines the weighting factor for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.WeightingFactor";
-    }
-    leaf report-deactivation-threshold {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Applicable to events 1a, otherwise not needed. Defines the maximum number of cells allowed in the \"active cell set\" for Event 1a to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportDeactivationThreshold";
-    }
-    leaf reporting-amount {
-      type int64;
-      config false;
-      description
-        "Applicable to events 1a, 1c, otherwise not needed. Defines the maximum number of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a The value -1 is used to represent an unbounded maximum. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingAmount";
-    }
-    leaf reporting-interval {
-      type uint16 {
-        range "0 | 250 | 500 | 1000 | 2000 | 4000 | 8000 | 16000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Applicable to events 1a, 1c, otherwise not needed. Defines the transmission period in {{units}} of MEASUREMENT REPORT messages sent by the UE in case of periodic reporting triggered by an Event 1a. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReportingInterval";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for intra-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 14.1.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for intra-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.TimeToTrigger";
-    }
-    leaf threshold-used-frequency {
-      type int64;
-      config false;
-      description
-        "Applicable to events 1e, 1f, otherwise not needed. Defines the reporting threshold for intra-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.39}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB {{enum|Pathloss|MeasurementQuantity}} has a range of 30 dB to 165 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ThresholdUsedFrequency";
-    }
-    leaf replacement-activation-threshold {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Applicable only to event 1c Defines the minimum number of cells allowed in the \"active cell set\" for Event 1c to occur. {{bibref|3GPP-TS.25.331|Section 14.1.2 and Section 10.3.7.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.ReplacementActivationThreshold";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.IntraFreqMeas.Instance.{i}.";
-  }
-
-  grouping umts-ran-inter-freq-meas-g {
-    description
-      "This object contains parameters relating to the inter-freq HO related control parameters.";
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity - CPICH RSCP";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for inter-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.FilterCoefficient";
-    }
-    leaf-list inter-frequency-event-identity {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each entry is an Event ID from the list of: 2a, 2b, 2c, 2d, 2e,2f Defines the identity of the event used to trigger inter-frequency UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.InterFrequencyEventIdentity";
-    }
-    leaf weighting-factor-event2a {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2a";
-    }
-    leaf weighting-factor-event2b {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2b";
-    }
-    leaf weighting-factor-event2d {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2d";
-    }
-    leaf weighting-factor-event2f {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.WeightingFactorEvent2f";
-    }
-    leaf hysteresis-event2a {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2a";
-    }
-    leaf hysteresis-event2b {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2b";
-    }
-    leaf hysteresis-event2d {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2d";
-    }
-    leaf hysteresis-event2f {
-      type uint8 {
-        range "0..29";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.HysteresisEvent2f";
-    }
-    leaf time-to-trigger-event2a {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2a";
-    }
-    leaf time-to-trigger-event2b {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2b";
-    }
-    leaf time-to-trigger-event2d {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2d";
-    }
-    leaf time-to-trigger-event2f {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.19 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.TimeToTriggerEvent2f";
-    }
-    leaf threshold-used-frequency-event2b {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2b";
-    }
-    leaf threshold-used-frequency-event2d {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2d";
-    }
-    leaf threshold-used-frequency-event2f {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.ThresholdUsedFrequencyEvent2f";
-    }
-    leaf instance-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.InstanceNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.";
-  }
-
-  grouping umts-ran-inter-freq-meas-instance-g {
-    description
-      "Table containing parameters relating to a particular instance of inter-freq events.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Alias";
-    }
-    leaf intra-frequency-event-identity {
-      type enumeration {
-        enum "2a" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2a";
-        }
-        enum "2b" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2b";
-        }
-        enum "2c" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2c";
-        }
-        enum "2d" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2d";
-        }
-        enum "2e" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2e";
-        }
-        enum "2f" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity - 2f";
-        }
-      }
-      description
-        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.IntraFrequencyEventIdentity";
-    }
-    leaf event-description {
-      type string {
-        length "0..256";
-      }
-      description
-        "A free-form description of the way the event instance is meant to be used. E.g. \"detecting cell edge to prepare for hand-out\", \"cancel hand-out preparation\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.EventDescription";
-    }
-    leaf measurement-quantity {
-      type enumeration {
-        enum "cpich ec/no" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity - CPICH Ec/No";
-        }
-        enum "cpich rscp" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity - CPICH RSCP";
-        }
-      }
-      config false;
-      description
-        "Defines the measurement quantity for inter-freq HO measurement when the UE is in Cell-DCH state. Enumeration of: {{enum}} {{bibref|3GPP-TS.25.331|Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.MeasurementQuantity";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.FilterCoefficient";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.WeightingFactor";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-freq HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 14.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-freq HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.TimeToTrigger";
-    }
-    leaf threshold-used-frequency {
-      type int64;
-      config false;
-      description
-        "Applicable to events 2b, 2d, 2f, otherwise not needed. Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.ThresholdUsedFrequency";
-    }
-    leaf threshold-non-used-frequency {
-      type int64;
-      config false;
-      description
-        "Applicable to events 2a, 2b, 2c, 2e otherwise not needed. Defines the reporting threshold for inter-freq HO measurement when the UE is in Cell-DCH state. This is the \"Threshold non used frequency\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.19}}. Each valid value of {{param|MeasurementQuantity}} has a different valid range. {{enum|CPICH RSCP|MeasurementQuantity}} has a range of -120 dBm to -25 dBm {{enum|CPICH Ec/No|MeasurementQuantity}} has a range of -24 dB to 0 dB";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.ThresholdNonUsedFrequency";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterFreqMeas.Instance.{i}.";
-  }
-
-  grouping umts-ran-inter-rat-meas-g {
-    description
-      "This object contains parameters relating to the inter-RAT HO related control parameters. This is specifically for GERAN system.";
-    leaf gsm-filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.29}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.GSMFilterCoefficient";
-    }
-    leaf bsic-verification-required {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the BSIC verification is required or not for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.29}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.BSICVerificationRequired";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.WeightingFactor";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-RAT HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.TimeToTrigger";
-    }
-    leaf threshold-own-system {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold own system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.ThresholdOwnSystem";
-    }
-    leaf threshold-other-system {
-      type int64;
-      config false;
-      description
-        "Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold other system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.ThresholdOtherSystem";
-    }
-    leaf instance-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.InstanceNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.";
-  }
-
-  grouping umts-ran-inter-rat-meas-instance-g {
-    description
-      "Table containing parameters relating to a particular instance of inter-freq events.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Alias";
-    }
-    leaf inter-rat-event-identity {
-      type enumeration {
-        enum "3a" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3a";
-        }
-        enum "3b" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3b";
-        }
-        enum "3c" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3c";
-        }
-        enum "3d" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity - 3d";
-        }
-      }
-      description
-        "Each entry is an Event ID from the list of: {{enum}} Defines the identity of the event used to trigger UE reporting (in case of event-triggered reporting). {{bibref|3GPP-TS.25.331|Section 10.3.7.14}} This attribute is readable, as it is highly dependent on how the FAP makes use of the event.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.InterRATEventIdentity";
-    }
-    leaf event-description {
-      type string {
-        length "0..256";
-      }
-      description
-        "A free-form description of the way the event instance is meant to be used. E.g. \"hand-out to GSM macrocell\", \"cancel hand-out preparation due to decreasing macrocell quality\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.EventDescription";
-    }
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for inter-freq HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.18}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.FilterCoefficient";
-    }
-    leaf bsic-verification-required {
-      type boolean;
-      config false;
-      description
-        "Applicable only to GSM events. Indicates whether the BSIC verification is required or not for inter-RAT HO measurement when the UE is in Cell-DCH state. {{bibref|3GPP-TS.25.331|Section 10.3.7.29}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.BSICVerificationRequired";
-    }
-    leaf weighting-factor {
-      type uint8 {
-        range "0..20";
-      }
-      config false;
-      description
-        "Defines the weighting factor for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the weighting factor are 0.0 to 2.0 in steps of 0.1. The value of {{param}} divided by 10 yields the actual value of the weighting factor. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.WeightingFactor";
-    }
-    leaf hysteresis {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Defines the hysteresis for inter-RAT HO measurement when the UE is in Cell-DCH state. Actual values of the range are 0.0 to 7.5 in steps of 0.5. The value of {{param}} divided by 2 yields the actual value of the hysteresis. {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.Hysteresis";
-    }
-    leaf time-to-trigger {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the time-to-trigger in {{units}} for inter-RAT HO measurement when the UE is in Cell-DCH state. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.39 and Section 10.3.7.64}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.TimeToTrigger";
-    }
-    leaf threshold-own-system {
-      type int64;
-      config false;
-      description
-        "Applicable only to event 3a, otherwise not needed. Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold own system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.ThresholdOwnSystem";
-    }
-    leaf threshold-other-system {
-      type int64;
-      config false;
-      description
-        "Applicable to events 3a, 3b, 3c, otherwise not needed. Defines the reporting threshold for inter-RAT HO measurement when the UE is in Cell-DCH state. This is the \"Threshold other system\" as defined in {{bibref|3GPP-TS.25.331|Section 10.3.7.30}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.ThresholdOtherSystem";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.InterRATMeas.Instance.{i}.";
-  }
-
-  grouping umts-ran-ue-internal-meas-g {
-    description
-      "This object contains parameters relating to the UE internal measurement control parameters.";
-    leaf filter-coefficient {
-      type uint8 {
-        range "0..9 | 11 | 13 | 15 | 17 | 19";
-      }
-      config false;
-      description
-        "Defines the filter coefficient for UE internal measurement. {{bibref|3GPP-TS.25.331|Section 10.3.7.9 and Section 10.3.7.79}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.FilterCoefficient";
-    }
-    leaf ue-tx-pwr-threshold-event6a {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Defines the threshold for UE transmit power above which Event 6a is reported. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.UETxPwrThresholdEvent6a";
-    }
-    leaf time-to-trigger-event6a {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the period in {{units}} between detection of Event 6a and sending of Measurement Report. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.TimeToTriggerEvent6a";
-    }
-    leaf ue-tx-pwr-threshold-event6b {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Defines the threshold for UE transmit power above which Event 6b is reported. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.UETxPwrThresholdEvent6b";
-    }
-    leaf time-to-trigger-event6b {
-      type uint16 {
-        range "0 | 10 | 20 | 40 | 60 | 80 | 100 | 120 | 160 | 200 | 240 | 320 | 640 | 1280 | 2560 | 5000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the period in {{units}} between detection of Event 6b and sending of Measurement Report. Only the specified values are considered valid, any value other than those and the CPE MUST reject the request. {{bibref|3GPP-TS.25.331|Section 10.3.7.80}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.TimeToTriggerEvent6b";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.UEInternalMeas.";
-  }
-
-  grouping umts-ran-rf-g {
-    description
-      "This object contains parameters relating to the RF configuration.";
-    leaf-list uarfcndl {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433|Section 9.2.1.65}} Self-configuration for UARFCN is controlled by {{param|.Capabilities.UMTS.SelfConfig.UARFCNConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for UARFCN is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|UARFCNDLInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The UARFCN values supplied to the list are derived based on the formula defined in {{bibref|3GPP-TS.25.104|Section 5.4.3}} The order of the UARFCN entries has no significance. The carrier spacing in FDD mode is fixed as defined in {{bibref|3GPP-TS.25.104}}. Therefore, the FAP can unambiguously derive the UL UARFCN value based on the selected DL UARFCN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDL";
-    }
-    leaf uarfcndl-in-use {
-      type uint64;
-      description
-        "The DL UARFCN being used by the FAP. Self-configuration for UARFCN is controlled by {{param|.Capabilities.UMTS.SelfConfig.UARFCNConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.UARFCNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|UARFCNDL}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|UARFCNDL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDLInUse";
-    }
-    leaf uarfcnul-in-use {
-      type uint64;
-      description
-        "The UL UARFCN being used by the FAP. The UL UARFCN that corresponds to {{param|UARFCNDLInUse}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNULInUse";
-    }
-    leaf-list uarfcndl-to-protect {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each item is a DL UARFCNs to be protected from adjacent channel interference. \"Adjacent channel\" in this context means offset from the FAP's UARFCN by 5MHz. {{bibref|3GPP-TS.25.104|Section 6.4.6}} If any of the items in the list are adjacent to the FAP's own DL channel, the FAP MUST take the Primary CPICH code power measured on these channels into account as part of its maximum transmit power self-configuration. The UARFCNs in the list can belong to any operator, allowing for protection of the FAP operator's own macro layer as well as that of other operators (only the latter is mandated by the {{bibref|3GPP-TS.25.104}} requirements). The list SHOULD take into account the ability of the FAP to self-configure its own DL UARFCN and so SHOULD include any channels (requiring protection) which can potentially be adjacent to the UARFCN selected by the FAP. For example, if only adjacent operator protection is required and the FAP has the ability to self-configure to any channel owned by its operator, this list would be populated with the UARFCNs immediately above and below the range of channels owned by the FAP operator. Adjacent channel protection can cause the FAP transmit power to be reduced down to as low as 8dBm. If {{empty}} then it indicates that there are no channels adjacent to the FAP that require protection, or that self-configuration of the FAP transmit power is not enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.UARFCNDLToProtect";
-    }
-    leaf-list primary-scrambling-code {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a Primary DL Scrambling Code used by the FDD mode cell with a numeric range between 0 and 511 inclusive. {{bibref|3GPP-TS.25.433|Section 9.2.2.34}} Self-configuration for PSC is controlled by {{param|.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for {{param}} is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|PrimaryScramblingCodeInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PSC values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The following are examples of valid PSC string: :\"20\" ::(explicitly specifies a single PSC value) :\"20,30,40\" ::(specifies 3 possible PSC values to select from) \"20..40\" ::(specifies 21 possible values between 20 and 40, inclusive) \"20..40,50\" ::(specifies 22 possible values between 20 and 40 inclusive and a single value 50) The order of the items has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PrimaryScramblingCode";
-    }
-    leaf primary-scrambling-code-in-use {
-      type uint64;
-      description
-        "The PSC being used by the FAP. Self-configuration for PSC is controlled by {{param|.Capabilities.UMTS.SelfConfig.PrimaryScramblingCodeConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PrimaryScramblingCodeSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|PrimaryScramblingCode}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|PrimaryScramblingCode}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PrimaryScramblingCodeInUse";
-    }
-    leaf maxfap-tx-power-expanded {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power allowed on the FAP, maximum value for the linear sum of the power of all downlink physical channels, that is allowed to be used in a cell. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -30.0 to 20.0 incremented by 0.1 dB. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerExpanded";
-    }
-    leaf maxfap-tx-power-in-use-expanded {
-      type int64;
-      units "dBm";
-      description
-        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -30.0 {{units}} to 20.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxFAPTxPowerExpandedConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxFAPTxPowerExpandedSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPowerExpanded}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxFAPTxPowerInUseExpanded";
-    }
-    leaf max-ul-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power level a UE can use on PRACH. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -50 to 33 incremented by 1. {{bibref|3GPP-TS.25.331|Section 10.3.6.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxULTxPower";
-    }
-    leaf max-ul-tx-power-in-use {
-      type int64;
-      units "dBm";
-      description
-        "The maximum transmission power level a UE can use on PRACH. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.MaxULTxPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.MaxULTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxULTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxULTxPowerInUse";
-    }
-    leaf pcpich-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "The value of the transmission power of the Primary Common PIlot CHannel (P-CPICH). The P-CPICH physical channel carries the common pilots of the cell. Parameter in SIB5. {{param}} is expressed as a range of allowed transmission power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its transmission power. Self-configuration for transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -10.0 to 20.0 incremented by 0.1 dB. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCPICHPower";
-    }
-    leaf pcpich-power-in-use {
-      type int64;
-      units "dBm";
-      description
-        "The P-CPICH power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -10.0 {{units}} to 20.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for transmission power is controlled by {{param|.Capabilities.UMTS.SelfConfig.PCPICHPowerConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.PCPICHPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|PCPICHPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCPICHPowerInUse";
-    }
-    leaf power-offset-pilot-dpdch {
-      type uint8 {
-        range "0..24";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines the power offset between pilot channel and DPDCH. Actual values of the offset are 0.0 {{units}} to 6.0 {{units}} in steps of 0.25 {{units}}. The value of {{param}} divided by 4 yields the actual value of the offset. {{bibref|3GPP-TS.25.331|Section 10.3.6.18}} {{bibref|3GPP-TS.25.214|Section 5.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PowerOffsetPilotDPDCH";
-    }
-    leaf fap-coverage-target {
-      type uint8 {
-        range "50..150";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines the target value measured in {{units}} for the range of the FAP's DL coverage, in terms of RF propagation loss. This value can be used by the FAP's self-configuration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. {{bibref|3GPP-TS.25.967|Section 7.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FAPCoverageTarget";
-    }
-    leaf fap-quality-target-ec-io {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the target value measured in dB for the downlink signal quality of the FAP in terms of CPICH Ec/Io, thereby clarifying the meaning of \"FAPCoverageTarget\". Actual values of the FAPQualityTargetEcIo are -20 dB to 0 dB in steps of 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FAPQualityTargetEcIo";
-    }
-    leaf psch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the Primary SCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PSCHPower";
-    }
-    leaf ssch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the Secondary SCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.SSCHPower";
-    }
-    leaf pich-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the maximum transmission power offset measured in {{units}} of the PICH channel relative to the Primary CPICH transmission power. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.2.1.49A}} {{bibref|3GPP-TS.25.331|Section 10.3.6.50}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PICHPower";
-    }
-    leaf pch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the PCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.1.3.1 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.PCHPower";
-    }
-    leaf fach-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the FACH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 6.3.9}} {{bibref|3GPP-TS.25.433|Section 9.1.6.1 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.FACHPower";
-    }
-    leaf bch-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of the BCH relative to the Primary CPICH power. Actual values of the transmission power offset are -35.0 {{units}} to 15.0 {{units}} in steps of 0.1 {{units}}. The value of {{param}} divided by 10 yields the actual value of the transmission power offset. {{bibref|3GPP-TS.32.642|Section 9.3.11}} {{bibref|3GPP-TS.25.433|Section 9.1.24 and Section 9.2.1.21}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.BCHPower";
-    }
-    leaf aich-power {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Defines the transmission power offset measured in {{units}} of one AICH relative to the Primary CPICH power. Parameter defined in SIB5 {{bibref|3GPP-TS.25.331|Section 10.3.6.3}}. Transmission power level of AICH, AP-AICH and CD/CA-ICH channels compared to CPICH. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 9.2.2.D}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.AICHPower";
-    }
-    leaf ctch-allocation-period {
-      type uint8 {
-        range "1..255";
-      }
-      config false;
-      description
-        "The value defines 'N' multiples of M(TTI) for CBS DRX calculations at the UE side.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.CTCHAllocationPeriod";
-    }
-    leaf cbs-frame-offset {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Value of CBS frame offset (CTCH) on DL FACH. Parameter in SIB5";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.CBSFrameOffset";
-    }
-    leaf max-tti {
-      type uint8 {
-        range "1..255";
-      }
-      config false;
-      description
-        "Defines the number of radio frames in the TTI of the FACH used for CTCH (MTTI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.MaxTTI";
-    }
-    leaf noise-rise-limit-lower-value {
-      type uint16 {
-        range "0..500";
-      }
-      config false;
-      description
-        "Defines the lower value of the Noise Rise Limit range that UMTS FAP is allowed to pick from. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB. the value MUST not exceed the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue}} The Noise Rise Limit range identifies the limits between which the FAP can self-configure its uplink noise rise limit. Self-configuration for noise rise limit is controlled by {{param|.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable}} from an enabled perspective.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue";
-    }
-    leaf noise-rise-limit-upper-value {
-      type uint16 {
-        range "0..500";
-      }
-      config false;
-      description
-        "Defines the upper value of the Noise Rise Limit range that UMTS FAP is allowed to pick from. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB. the value MUST not be below the value of {{param|.CellConfig.UMTS.RAN.RF.NoiseRiseLimitLowerValue}} NoiseRiseLimit identifies the limits between which the FAP can self-configure its uplink noise rise limit. Self-configuration for noise rise limit is controlled by {{param|.Capabilities.UMTS.SelfConfig.NoiseRiseLimitConfig}} from an availability perspective and {{param|.FAPControl.UMTS.SelfConfig.NoiseRiseLimitConfigEnable}} from an enabled perspective.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitUpperValue";
-    }
-    leaf noise-rise-limit-in-use {
-      type uint16 {
-        range "0..500";
-      }
-      description
-        "Actual value of the Noise Rise Limit that the FAP uses. The value is measured in dB and has a range of 0.0 to 50.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.NoiseRiseLimitInUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.RF.";
-  }
-
-  grouping umts-ran-neighbor-list-g {
-    description
-      "This object contains parameters relating to the neighbor list.";
-    leaf max-intra-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.MaxIntraFreqCellEntries";
-    }
-    leaf max-inter-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.MaxInterFreqCellEntries";
-    }
-    leaf intra-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCellNumberOfEntries";
-    }
-    leaf inter-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.";
-  }
-
-  grouping umts-ran-neighbor-list-intra-freq-cell-g {
-    description
-      "Table containing the intra-frequency cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.URA";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.PCPICHTxPower";
-    }
-    leaf collocated-inter-freq-cell {
-      type uint32 {
-        range "0..268435455";
-      }
-      config false;
-      description
-        "Provides identity of collocated inter-frequency Cell. Needed for pathloss estimation, in case the femto environment masks intra-frequency neighbor. Cell Identity. {{bibref|3GPP-TS.25.331|Section 10.3.2.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.CollocatedInterFreqCell";
-    }
-    leaf max-tx-power {
-      type int64;
-      units "0.1 dBm";
-      config false;
-      description
-        "Cell Max Tx Power. Parameter needed in HNB power calibration, for protection of neighbour cells. Actual values of the power are -30.0 dBm to 60.0 dBm in steps of 0.1 dB. The value of MaxTxPower divided by 10 yields the actual value of the power. C.f {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MaxTxPower";
-    }
-    leaf max-dpc-htx-power {
-      type int64;
-      units "0.1 dBm";
-      config false;
-      description
-        "Maximum DL DPCH Tx Power per UE configured in the cell (for CS UEs). Parameter may be used by FAP to protect the DL budget allocated to neighbouring UEs served by neighbour cells. C.f (max 10 dB below max Tx power) {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.104|Section 6.2.1}} Actual values of the power are -40.0 dBm to 50.0 dBm in steps of 0.1 dB. The value of MaxDPCHtxPower divided by 10 yields the actual value of the power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.MaxDPCHtxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-inter-freq-cell-g {
-    description
-      "Table containing the inter-frequency cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.PCPICHTxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-inter-rat-cell-g {
-    description
-      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.25.331|Section 10.3.7.23}}";
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.MaxGSMEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSMNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.";
-  }
-
-  grouping umts-ran-neighbor-list-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GSM provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm 850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM 850";
-        }
-        enum "gsm 900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM 900";
-        }
-        enum "dcs 1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - DCS 1800";
-        }
-        enum "pcs 1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - PCS 1900";
-        }
-      }
-      config false;
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-g {
-    description
-      "This object contains parameters relating to the neighbor list used by the FAP based on its self-configuration capability and {{object|.CellConfig.UMTS.RAN.NeighborList.}} configuration of adding and excluding cells.";
-    leaf max-intra-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.IntraFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.MaxIntraFreqCellEntries";
-    }
-    leaf max-inter-freq-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterFreqCell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.MaxInterFreqCellEntries";
-    }
-    leaf intra-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCellNumberOfEntries";
-    }
-    leaf inter-freq-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-intra-freq-cell-g {
-    description
-      "Table containing the intra-frequency cell list.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "C-ID of the intra-freq neighbour cell {{bibref|3GPP-TS.25.401|Section 6.1.5}}. If {{param|RNCID}} is larger than 4095, then {{param}} will be 12 bits (i.e. a range of [0:4095]), else {{param}} is 16 bits long (i.e. range of [4096:65535]). This is needed to facilitate Femto to Macro handover. Used in {{bibref|3GPP-TS.25.413|Section 9.2.1.28}} as part of Target Cell ID.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.URA";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.PCPICHScramblingCode";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.IntraFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-inter-freq-cell-g {
-    description
-      "Table containing the inter-frequency cell list.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "RNC-ID of an intra-freq neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "C-ID of the intra-freq neighbour cell {{bibref|3GPP-TS.25.401|Section 6.1.5}}. If {{param|RNCID}} is larger than 4095, then {{param}} will be 12 bits (i.e. a range of [0:4095]), else {{param}} is 16 bits long (i.e. range of [4096:65535]). This is needed to facilitate Femto to Macro handover. Used in {{bibref|3GPP-TS.25.413|Section 9.2.1.28}} as part of Target Cell ID.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.PCPICHScramblingCode";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterFreqCell.{i}.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-inter-rat-cell-g {
-    description
-      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.25.331|Section 10.3.7.23}}";
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.UMTS.RAN.NeighborList.InterRATCell.GSM.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.MaxGSMEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSMNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.";
-  }
-
-  grouping umts-ran-neighbor-list-in-use-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GSM.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm 850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM 850";
-        }
-        enum "gsm 900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM 900";
-        }
-        enum "dcs 1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - DCS 1800";
-        }
-        enum "pcs 1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - PCS 1900";
-        }
-      }
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-  }
-
-  grouping umts-rab-g {
-    description
-      "This object contains parameters relating to Radio Access layers {{bibref|3GPP-TS.32.405}}";
-    leaf rab-succ-estab-cs {
-      type uint64;
-      description
-        "The number of successfully established RABs (with or without queueing) for CS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABSuccEstabCS";
-    }
-    leaf rab-fail-estab-cs {
-      type uint64;
-      description
-        "The number of RAB establishment failures for CS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABFailEstabCS";
-    }
-    leaf rab-succ-estab-ps {
-      type uint64;
-      description
-        "The number of successfully established RABs for PS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABSuccEstabPS";
-    }
-    leaf rab-fail-estab-ps {
-      type uint64;
-      description
-        "The number of RABs failed to establish for PS domain.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABFailEstabPS";
-    }
-    leaf rabcs-setup-time-mean {
-      type uint64;
-      units "milliseconds";
-      description
-        "The mean time in {{units}} for a FAP to establish a RAB CS connection. This measurement is obtained by accumulating the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for CS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs over a granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}). This end value of the time will then be divided by the number of successfully established RABs observed in the granularity period to give the arithmetic mean. The accumulator SHALL be reinitialized at the beginning of each granularity period.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABCSSetupTimeMean";
-    }
-    leaf rabcs-setup-time-max {
-      type uint64;
-      units "milliseconds";
-      description
-        "The maximum time in {{units}} for a FAP to establish a RAB CS connection. This measurement is obtained by monitoring the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for CS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs. The high tide mark of this time will be stored in a gauge; the gauge SHALL be reinitialized at the beginning of each granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABCSSetupTimeMax";
-    }
-    leaf rabps-setup-time-mean {
-      type uint64;
-      units "milliseconds";
-      description
-        "The mean time in {{units}} for a FAP to establish a RAB PS connection. This measurement is obtained by accumulating the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for PS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs over a granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}). This end value of the time will then be divided by the number of successfully established RABs observed in the granularity period to give the arithmetic mean. The accumulator SHALL be reinitialized at the beginning of each granularity period.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABPSSetupTimeMean";
-    }
-    leaf rabps-setup-time-max {
-      type uint64;
-      units "milliseconds";
-      description
-        "The maximum time in {{units}} for a FAP to establish a RAB PS connection. This measurement is obtained by monitoring the time intervals for each successful RAB establishment between the receipt by the FAP of a RANAP \"RAB ASSIGNMENT REQUEST\" message to establish a RAB for PS domain, and the first corresponding (based on RAB ID) transmission by the FAP of a RANAP \"RAB ASSIGNMENT RESPONSE\" message for successfully established RABs. The high tide mark of this time will be stored in a gauge; the gauge SHALL be reinitialized at the beginning of each granularity period (Sample Interval {{bibref|3GPP-TS.32.582|Section 6.3.2}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.RABPSSetupTimeMax";
-    }
-    leaf fail-ho {
-      type uint64;
-      description
-        "The number of failed Handovers.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.FailHO";
-    }
-    leaf succ-ho {
-      type uint64;
-      description
-        "The number of successful Handovers.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.SuccHO";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.UMTS.RAB.";
-  }
-
-  grouping lte-g {
-    description
-      "This object contains parameters relating to configuring the LTE FAP.";
-    leaf tunnel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.TunnelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.";
-  }
-
-  grouping lte-tunnel-g {
-    description
-      "This object contains a table of all tunnel instances configured for the LTE FAP.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.Alias";
-    }
-    leaf tunnel-ref {
-      type string {
-        length "0..256";
-      }
-      description
-        "This is the reference to an IPsec tunnel instance used by the LTE FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.TunnelRef";
-    }
-    leaf-list plmnid {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Optional list of PLMM IDs associated with the tunnel, which can be used for selecting the tunnel. Each PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.PLMNID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.Tunnel.{i}.";
-  }
-
-  grouping lte-epc-g {
-    description
-      "This object contains parameters relating to configuring LTE EPC.";
-    leaf-list allowed-ciphering-algorithm-list {
-      type enumeration {
-        enum "eea0" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - EEA0";
-        }
-        enum "128-eea1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - 128-EEA1";
-        }
-        enum "128-eea2" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList - 128-EEA2";
-        }
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a ciphering algorithm allowed to be used for RRC and UP confidentiality protection as defined in {{bibref|3GPP-TS.33.401}}. If the list contains more than 1 item, it is in the order of the preferred algorithm to be used. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedCipheringAlgorithmList";
-    }
-    leaf-list allowed-integrity-protection-algorithm-list {
-      type enumeration {
-        enum "128-eia1" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList - 128-EIA1";
-        }
-        enum "128-eia2" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList - 128-EIA2";
-        }
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a integrity protection algorithm allowed to be used for RRC as defined in {{bibref|3GPP-TS.33.401}}. If the list contains more than 1 item, it is in the order of the preferred algorithm to be used. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.AllowedIntegrityProtectionAlgorithmList";
-    }
-    leaf tac {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "TAC (Tracking Area Code) for LTE FAP as specified in SystemInformationBlockType1 message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.TAC";
-    }
-    leaf eaid {
-      type uint32 {
-        range "0..16777216";
-      }
-      config false;
-      description
-        "Emergency Area ID that uniquely identifies the area of emergency for Earthquake and Tsunami Warning Services (ETWS). Corresponds to Emergency Area ID in {{bibref|3GPP-TS.36.413|Section 9.2.1.47}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.EAID";
-    }
-    leaf max-plmn-list-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.CellConfig.LTE.EPC.PLMNList.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.MaxPLMNListEntries";
-    }
-    leaf plmn-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNListNumberOfEntries";
-    }
-    leaf max-qo-s-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.EPC.QoS.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.MaxQoSEntries";
-    }
-    leaf qo-s-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoSNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.";
-  }
-
-  grouping lte-epc-plmn-list-g {
-    description
-      "This object contains parameters relating to list of PLMN identity specific to LTE EPC definition, called PLMN-IdentityList, as specified in SystemInformationBlockType1 message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Each instance in this object is a PLMN-IdentityInfo which consists of plmn-Identity and cellReservedForOperatorUse IEs. At minimum 1 item MUST be present in this list, and maximum of 6 items.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.Alias";
-    }
-    leaf is-primary {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this {{param|PLMNID}} is a primary PLMN or not. If there is more than one instance in {{object|.CellConfig.LTE.EPC.PLMNList.{i}.}} table, then ACS MUST set this {{param}} set to {{true}} in only one instance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.IsPrimary";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.PLMNID";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the cell is reserved for operator use or not. If {{true}}, it is reserved. If {{false}}, it is not reserved. Corresponds to \"reserved\" \"notReserved\" respectively as defined in PLMN-IdentityInfo in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.CellReservedForOperatorUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.PLMNList.{i}.";
-  }
-
-  grouping lte-epc-qo-s-g {
-    description
-      "This object contains parameters relating to configuring QoS in LTE EPC.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Alias";
-    }
-    leaf qci {
-      type uint8 {
-        range "1..20";
-      }
-      description
-        "QoS class identity as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.QCI";
-    }
-    leaf type {
-      type enumeration {
-        enum "gbr" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type - GBR";
-        }
-        enum "non-gbr" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type - Non-GBR";
-        }
-      }
-      config false;
-      description
-        "Defines the type of the QoS class as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Type";
-    }
-    leaf priority {
-      type uint8 {
-        range "1..20";
-      }
-      config false;
-      description
-        "Priority of the QoS class as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.Priority";
-    }
-    leaf packet-delay-budget {
-      type uint16 {
-        range "50 | 100 | 150 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 1000 | 1500 | 2000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Defines the Packet delay budget, specified in {{units}}, as defined in {{bibref|3GPP-TS.23.203|Section 6.1.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.PacketDelayBudget";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.EPC.QoS.{i}.";
-  }
-
-  grouping lte-ran-g {
-    description
-      "This object contains parameters relating to the LTE RAN level configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.";
-  }
-
-  grouping lte-ran-common-g {
-    description
-      "This object contains parameters relating to the common configuration in LTE RAN.";
-    leaf cell-identity {
-      type uint32 {
-        range "0..268435455";
-      }
-      config false;
-      description
-        "Cell Identity as specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Common.CellIdentity";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Common.";
-  }
-
-  grouping lte-ran-s1-ap-g {
-    description
-      "This object contains parameters relating to the S1AP configuration.";
-    leaf-list t-reloc-prep {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a maximum time for the Handover Preparation procedure in the source LTE FAP, specified in seconds, with a numeric range between 0 and 300 inclusive. Only values in multiple of 5 are valid; use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The timer is started when the LTE FAP sends the HANDOVER REQUIRED message. Upon reception of the HANDOVER COMMAND message the LTE FAP shall stop the timer. Corresponds to parameter TS1RELOCprep defined in {{bibref|3GPP-TS.36.413|Section 8.4.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If the LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then the LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If the LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then the LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.TRelocPrep";
-    }
-    leaf-list t-reloc-overall {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a maximum time for the protection of the overall handover procedure in the source LTE FAP, specified in seconds, with a numeric range between 0 and 300 inclusive. Only values in multiple of 5 are valid; use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The timer is started reception of the HANDOVER COMMAND message. Corresponds to parameter TS1RELOCOverall defined in {{bibref|3GPP-TS.36.413|Section 8.4.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.TRelocOverall";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1AP.";
-  }
-
-  grouping lte-ran-s1-u-g {
-    description
-      "This object contains parameters relating to the S1-U configuration.";
-    leaf gtpu-echo-interval {
-      type uint8 {
-        range "0 | 60..max";
-      }
-      units "seconds";
-      config false;
-      description
-        "Defines the interval in {{units}} between each GTP-U Echo Request that LTE FAP sends to the GTP-U peer, as specified in {{bibref|3GPP-TS.29.281|Section 7.2.1}}. If the value of {{param}} is equal to 0, then this functionality is supressed and thus LTE FAP does not send GTP-U Echo Request. If there is no GTP-U path in use, then no Echo Request is sent regardless of the value of {{param}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1U.GTPUEchoInterval";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.S1U.";
-  }
-
-  grouping lte-ran-rf-g {
-    description
-      "This object contains parameters relating to the RF, see {{bibref|3GPP-TS.32.592|Section 6.1.7.1}}.";
-    leaf-list earfcndl {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is an E-UTRA Absolute Radio Frequency Channel Number in the downlink direction. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter NDL specified in {{bibref|3GPP-TS.36.104|Table 5.7.3.1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.EARFCNDL";
-    }
-    leaf-list earfcnul {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is an E-UTRA Absolute Radio Frequency Channel Number in the uplink direction. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter NUL specified in {{bibref|3GPP-TS.36.104|Table 5.7.3.1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.EARFCNUL";
-    }
-    leaf freq-band-indicator {
-      type uint8 {
-        range "1..40";
-      }
-      config false;
-      description
-        "Frequency band indicator. Corresponds to parameter freqBandIndicator in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.FreqBandIndicator";
-    }
-    leaf-list dl-bandwidth {
-      type uint8 {
-        range "6 | 15 | 25 | 50 | 75 | 100";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a downlink transmission bandwidth, specified in number of Resource Blocks. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter dl_Bandwidth in MIB (Master Information Block) in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.DLBandwidth";
-    }
-    leaf-list ul-bandwidth {
-      type uint8 {
-        range "6 | 15 | 25 | 50 | 75 | 100";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is an uplink transmission bandwidth, specified in number of Resource Blocks. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter ul_Bandwidth in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}. If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.ULBandwidth";
-    }
-    leaf-list reference-signal-power {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a downlink reference-signal transmit power, specified in dBm, with a numeric range between -60 and 50 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then LTE FAP accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of LTE FAP, LTE FAP accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.ReferenceSignalPower";
-    }
-    leaf-list phy-cell-id {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a physical cell ID with a numeric range between 0 and 503 inclusive. Represents the list of physical cell identities LTE FAP to choose from. In case there is more than one item in the list, the first item contains the most preferred value. As specified in {{bibref|3GPP-TS.36.211|Section 6.11}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If LTE FAP supports self-configuration capability for {{param}} and more than one item is configured, then LTE FAP is expected to select one from the list and overwrite this parameter containing only the one selected. If LTE FAP does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PhyCellID";
-    }
-    leaf-list psch-power-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a power offset, specified in dB, of the Primary Synchronization Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PSCHPowerOffset";
-    }
-    leaf-list ssch-power-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a power offset, specified in dB, of the Secondary Synchronization Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.SSCHPowerOffset";
-    }
-    leaf-list pbch-power-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a power offset, specified in dB, of the Physical Broadcast Channel with respect to the ReferenceSignalPower, with a numeric range between -350 and 150 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of {{param}} divided by 10 yields the actual value. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.PBCHPowerOffset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RF.";
-  }
-
-  grouping lte-ran-phy-g {
-    description
-      "This object contains parameters relating to the physical layer level configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.";
-  }
-
-  grouping lte-ran-phy-antenna-info-g {
-    description
-      "This object contains parameters relating to the antenna configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.1}}).";
-    leaf antenna-ports-count {
-      type uint8 {
-        range "1 | 2 | 4";
-      }
-      description
-        "Defines the number of cell specific antenna ports according to {{bibref|3GPP-TS.36.211|Section 6.2.1}}. A UE in IDLE mode acquires the information about the number of transmit antenna ports according to {{bibref|3GPP-TS.36.212|Section 5.3.1.1}}. Corresponds to antennaPortsCount IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.AntennaPortsCount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.AntennaInfo.";
-  }
-
-  grouping lte-ran-phy-pdsch-g {
-    description
-      "This object contains parameters relating to the PDSCH (Physical Downlink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.2}}).";
-    leaf-list pb {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a Eb/Ea value with a numeric range between 0 and 3 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of this parameter is the same for all UEs in the cell. Eb repsents EPRE of PDSCH REs type B, i.e. REs in OFDM symbols that include reference symbols, as specified in {{bibref|3GPP-TS.36.213|Section 5.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.Pb";
-    }
-    leaf-list pa {
-      type int64;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a Ea/Ers value. In case there is more than one item in the list, the first item contains the most preferred value. Ea represents EPRE of PDSCH REs type A, i.e. REs in OFDM symbols that do not include reference symbols. Ers represents EPRE of reference symbols REs. Specified in {{bibref|3GPP-TS.36.213|Section 5.2}}. Actual values of range are -6.00 to 3.00dB. The value of each item in {{param}} divided by 100 yields the actual value. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.Pa";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PDSCH.";
-  }
-
-  grouping lte-ran-phy-srs-g {
-    description
-      "This object contains parameters relating to the UL SRS (Sounding Reference Signal) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.3}}).";
-    leaf srs-enabled {
-      type boolean;
-      config false;
-      description
-        "Indicates whether UL SRS (Sounding RS) is enabled or not. If {{true}}, UL Sounding RS is enabled. If {{false}}, UL Sounding RS is disabled. Corresponds to SoundingRS-UL-ConfigCommonIE defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSEnabled";
-    }
-    leaf-list srs-bandwidth-config {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a index into tables of cell specific SRS Bandwidth Configuration, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. SRS Bandwidth Configuration tables are specified in {{bibref|3GPP-TS.36.211|Table 5.5.3.2-1, 5.5.3.2-2, 5.5.3.2-3 and 5.5.3.2– 4}}. Corresponds to srs-BandwidthConfig IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSBandwidthConfig";
-    }
-    leaf srs-max-up-pts {
-      type boolean;
-      config false;
-      description
-        "Defines whether reconfiguration of SRS applies to UpPTS or not. If {{true}}, SRS applies to UpPTS. If {{false}}, SRS does not apply to UpPTS. Corresponds to srs-MaxUpPts specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and srsMaxUpPts specified in {{bibref|3GPP-TS.36.211|Section 5.5.3.2}}. This parameter is applicable to TDD mode only.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.SRSMaxUpPTS";
-    }
-    leaf ack-nack-srs-simultaneous-transmission {
-      type boolean;
-      config false;
-      description
-        "Defines whether a UE can simultaneously transmit SRS and HARQ ACK/NACK or not. If {{true}}, simultaneous transmission is allowed. If {{false}}, simultaneous transmission is not allowed. Corresponds to ackNackSRS-SimultaneousTransmission specfied in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Simultaneous-AN-and-SRS specified in {{bibref|3GPP-TS.36.213|Section 8.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.AckNackSRSSimultaneousTransmission";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.SRS.";
-  }
-
-  grouping lte-ran-phy-prach-g {
-    description
-      "This object contains parameters relating to the PRACH (Physical Random Access Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.4}}).";
-    leaf-list root-sequence-index {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a Logical root sequence index with a numeric range between 0 and 837 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Logical root sequence index is used to determine 64 physical RACH preamble sequences available in the cell. Corresponds to RACH_ROOT_SEQUENCE parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Section 5.7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.RootSequenceIndex";
-    }
-    leaf-list configuration-index {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is an index to the table defining PRACH resources within the frame with a numeric range between 0 and 63 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to PRACH-Configuration-Index parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Section 5.7.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.ConfigurationIndex";
-    }
-    leaf high-speed-flag {
-      type boolean;
-      config false;
-      description
-        "Indicates whether restricted set or unrestricted set of preambles is used. If {{true}}, indicates restricted set. If {{false}}, indicates unrestricted set. Corresponds to highSpeedFlag parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and high-speed-flag parameter defined in {{bibref|3GPP-TS.36.211|Section 5.7.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.HighSpeedFlag";
-    }
-    leaf-list zero-correlation-zone-config {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a value used for preamble sequence generation with a numeric range between 0 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Each item corresponds to zeroCorrelationZoneConfig parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to NCS parameter defined in {{bibref|3GPP-TS.36.211|Section 5.7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.ZeroCorrelationZoneConfig";
-    }
-    leaf-list freq-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item represents the first available physical resource block number for PRACH. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to prach-FreqOffset parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and nPRBoffsetRA parameter defined {{bibref|3GPP-TS.36.211|Section 5.7.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.FreqOffset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRACH.";
-  }
-
-  grouping lte-ran-phy-pucch-g {
-    description
-      "This object contains parameters relating to the PUCCH (Physical Uplink Control Channel) configuration. (see {{bibref|3GPP-TS.32.592|Section 6.1.1.5}})";
-    leaf delta-pucch-shift {
-      type enumeration {
-        enum "ds1" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds1";
-        }
-        enum "ds2" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds2";
-        }
-        enum "ds3" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift - ds3";
-        }
-      }
-      config false;
-      description
-        "Defines the cyclic shift used for PUCCH formats 1/1a/1b in a resource block used for a mix of formats 1/1a/1b and 2/2a/2b. It is an integer multiple of deltaPUCCHShift within the range of {0, 1, ., 7} . Corresponds to deltaPUCCH-Shift parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Delta-shiftPUCCH parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.DeltaPUCCHShift";
-    }
-    leaf-list nrbcqi {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a value that defines the bandwidth in terms of resource blocks available for use by PUCCH formats 2/2a/2b transmission in each slot, with a numeric range between 0 and 98 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to nRB-CQI parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRB(2) parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive.If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.NRBCQI";
-    }
-    leaf ncsan {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Defines the number of cyclic shift used for PUCCH formats 1/1a/1b in a resource block used for a mix of formats 1/1a/1b and 2/2a/2b. The value is an integer multiple of deltaPUCCHShift within the range of {0, 1, ., 7}. Corresponds to nCS-AN parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRB(1) parameter defined {{bibref|3GPP-TS.36.211|Section 5.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.NCSAN";
-    }
-    leaf-list n1-pucchan {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value that determines resources used for transmission of PUCCH format 1/1a/1b and 2/2a/2b, with a numeric range between 0 and 2047 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to n1PUCCH-AN parameter defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NPUCCH(1) parameter defined {{bibref|3GPP-TS.36.213|Section 10.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.N1PUCCHAN";
-    }
-    leaf-list cqipucch-resource-index {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value that indicates the position of PUCCH, with a numeric range between 0 and 1185 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. . Corresponds to the cqi-PUCCH-ResourceIndex IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. and to parameter nPUCCH(2) specified in {{bibref|3GPP-TS.36.213|Section 7.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.CQIPUCCHResourceIndex";
-    }
-    leaf k {
-      type uint8 {
-        range "1..4";
-      }
-      units "Resource Blocks";
-      description
-        "Sub-band size for sub-band reporting mode expressed in units of physical {{units}}, see {{bibref|3GPP-TS.36.213|Section 7.2.2}}. This parameter corresponds to the K IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.K";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUCCH.";
-  }
-
-  grouping lte-ran-phy-pusch-g {
-    description
-      "This object contains parameters relating to the PUSCH (Physical Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.6}}).";
-    leaf nsb {
-      type uint8 {
-        range "1..4";
-      }
-      config false;
-      description
-        "Defines the number of sub-bands. This parameter corresponds to n-SB parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NSB parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.NSB";
-    }
-    leaf hopping-mode {
-      type enumeration {
-        enum "inter-sub-frame" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode - InterSubFrame";
-        }
-        enum "intra-and-inter-sub-frame" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode - IntraAndInterSubFrame";
-        }
-      }
-      config false;
-      description
-        "Indicates if hopping is \"inter-subframe\" or \"intra and inter-subframe\". Corresponds to hoppingMode parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and Hopping-mode parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingMode";
-    }
-    leaf-list hopping-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a value to compute the set of physical resource blocks to be used for transmission on PUSCH if uplink frequency hopping mode is enabled, with a numeric range between 0 and 98 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. This parameter corresponds to pusch-HoppingOffset parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and NRBHO parameter specified in {{bibref|3GPP-TS.36.211|Section 5.3.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.HoppingOffset";
-    }
-    leaf enable64-qam {
-      type boolean;
-      description
-        "Indicates whether 64QAM is allowed or not. If {{true}}, 64QAM is allowed. If {{false}}, 64QAM is not allowed. Corresponds to enable64QAM parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.Enable64QAM";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.";
-  }
-
-  grouping lte-ran-phy-pusch-ulrs-g {
-    description
-      "This object contains parameters relating to the ULRS (Uplink Reference Signal) of PUSCH (Physical Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.6.1}}).";
-    leaf group-hopping-enabled {
-      type boolean;
-      config false;
-      description
-        "Indicates whether group hopping is enabled or not. If {{true}}, group hopping is enabled. If {{false}}, group hopping is not enabled. Corresponds to groupHoppingEnabled parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.and in {{bibref|3GPP-TS.36.211|Section 5.5.1.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.GroupHoppingEnabled";
-    }
-    leaf group-assignment-pusch {
-      type uint8 {
-        range "0..29";
-      }
-      description
-        "Corresponds to parameter groupAssignmentPUSCH specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.GroupAssignmentPUSCH";
-    }
-    leaf sequence-hopping-enabled {
-      type boolean;
-      config false;
-      description
-        "Indicates whether sequence hopping is enabled or not. If {{true}}, sequence hopping is enabled. If {{false}}, sequence hopping is not enabled. Corresponds to sequenceHoppingEnabled parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.and in {{bibref|3GPP-TS.36.211|Section 5.5.1.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.SequenceHoppingEnabled";
-    }
-    leaf cyclic-shift {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Corresponds to parameter cyclcShift specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.CyclicShift";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PUSCH.ULRS.";
-  }
-
-  grouping lte-ran-phy-ul-power-control-g {
-    description
-      "This object contains parameters relating to the uplink power control configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.7}}).";
-    leaf-list p0-nominal-pusch {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value to compute the UL UE transmit power for transmission on PUSCH for semi-persistant grants, with a numeric range between -126 and 24 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to p0-NominalPUSCH parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and PO_NOMINAL_PUSCH(0) parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.1.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.P0NominalPUSCH";
-    }
-    leaf-list alpha {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a value used to compute the UL UE transmit power for transmission on PUSCH, from the list of 0, 4, 5, 6, 7, 8, 9, 100. In case there is more than one item in the list, the first item contains the most preferred value. Actual values of range are from 0.00 to 1.00. The value of {{param}} divided by 100 yields the actual value. Corresponds to alpha parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to α parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.1.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.Alpha";
-    }
-    leaf-list p0-nominal-pucch {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item is a value to compute the UL UE transmit power for transmission on PUCCH, with a numeric range between -126 and 24 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to p0-NominalPUCCH parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and PO_NOMINAL_PUCCH parameter specified in {{bibref|3GPP-TS.36.211|Section 5.1.2.1}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.P0NominalPUCCH";
-    }
-    leaf delta-fpucch-format1 {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format1 to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(1) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat1";
-    }
-    leaf delta-fpucch-format1b {
-      type uint8 {
-        range "1 | 3 | 5";
-      }
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format1b to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(1b) in {{units}} dB as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat1b";
-    }
-    leaf delta-fpucch-format2 {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format2 to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2";
-    }
-    leaf delta-fpucch-format2a {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format2a to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2a) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2a";
-    }
-    leaf delta-fpucch-format2b {
-      type int64;
-      units "dB";
-      description
-        "Defines deltaF-PUCCH-Format2b to derive the UE transmit power. Corresponds to parameter ?F_PUCCH(2b) in {{units}} as specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.213|Section 5.1.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaFPUCCHFormat2b";
-    }
-    leaf delta-preamble-msg3 {
-      type int64;
-      units "dB";
-      description
-        "Defines the parameter in {{units}} used to compute the UL UE transmit power for transmission of random access response grant. This parameter corresponds to deltaPreambleMsg3 parameter specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and to ?PREAMBLE_Msg3 parameter specified in {{bibref|3GPP-TS.36.213|Section 5.1.1.1}}. Actual value is 2x the value of this parameter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.DeltaPreambleMsg3";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.ULPowerControl.";
-  }
-
-  grouping lte-ran-phy-mbsfn-g {
-    description
-      "This object contains parameters relating to the MBSFN (Multimedia Broadcast multicast service Single Frequency Network) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.8}}).";
-    leaf neigh-cell-config {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Defines the information related to MBSFN and TDD UL/DL configuration of neighbour cells. Corresponds to NeighCellConfig IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Value 0: Not all neighbour cells have the same MBSFN sub-frame allocation as serving cell. Value 1: No MBSFN sub-frames are present in all neighbour cells. Value 2: The MBSFN sub-frame allocations of all neighbour cells are identical to or subsets of that in the serving cell. Value 3: Different UL/DL allocation in neighbouring cells for TDD compared to the serving cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.NeighCellConfig";
-    }
-    leaf max-sf-config-list-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.MaxSFConfigListEntries";
-    }
-    leaf sf-config-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.";
-  }
-
-  grouping lte-ran-phy-mbsfn-sf-config-list-g {
-    description
-      "This object contains parameters relating to the sub-frame that are reserved for MBSFN (Multimedia Broadcast multicast service Single Frequency Network) in downlink direction. For FDD mode, only one entry can exist in this table. For TDD mode, at most one entry can exist with a given value of stratumID (see {{bibref|3GPP-TS.32.592|Section 6.1.1.8}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.Alias";
-    }
-    leaf sync-stratum-id {
-      type uint8 {
-        range "1..8";
-      }
-      config false;
-      description
-        "This parameter is applicable to TDD mode only. Defines the synchronization stratum level to which the MBSFN configuration applies.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.SyncStratumID";
-    }
-    leaf radio-frame-allocation-period {
-      type uint8 {
-        range "1..2 | 4 | 8 | 16 | 32";
-      }
-      description
-        "Defines the period where MBSFN sub-frames occur in the radio frames. Radio frames contain MBSFN sub-frame when the following condition is met: ((SFN mod {{param}}) = {{param|RadioframeAllocationOffset}}). The value of 1 and 2 are only meaningful when the value of {{param|RadioFrameAllocationSize}} parameter is 1. Corresponds to radioFrameAllocationPeriod IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioFrameAllocationPeriod";
-    }
-    leaf radioframe-allocation-offset {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Defines the offset where MBSFN sub-frames occur in the radio frames. Radio frames contain MBSFN sub-frame when the following condition is met: ((SFN mod {{param|RadioFrameAllocationPeriod}}) = {{param}}). Corresponds to radioFrameAllocationOffset IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioframeAllocationOffset";
-    }
-    leaf radio-frame-allocation-size {
-      type uint8 {
-        range "1 | 4";
-      }
-      description
-        "Defines the number of connsecutive frames that the MBSFN allocation pertains to defined by the combination of {{param|RadioFrameAllocationPeriod}} and {{param|RadioframeAllocationOffset}} parameters.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.RadioFrameAllocationSize";
-    }
-    leaf-list sub-frame-allocations {
-      type uint8 {
-        range "0 | 1";
-      }
-      config false;
-      max-elements "64";
-      description
-        "{{list}} The value of \"1\" indicates the position of sub-frames that is allocated to MBSFN within the radio frame. First item defines the MBSFN allocation for sub-frame #1, second item for #2, third item for #3, fourth item for #6, fifth item for #7, sixth item for #8. If the value of {{param|RadioFrameAllocationSize}} is 4, then this pattern repeats in the sequence of the four radio frames. The actual size of this parameter depends on the value of {{param|RadioFrameAllocationSize}} parameter. If the value of {{param|RadioFrameAllocationSize}} is 1, then the size of this parameter is 6; if the size {{param|RadioFrameAllocationSize}} is 4, then the size of this parameter is 24. Corresponds to subframeAllocation IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.SubFrameAllocations";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.MBSFN.SFConfigList.{i}.";
-  }
-
-  grouping lte-ran-phy-prs-g {
-    description
-      "This object contains parameters relating to the PRS (Positioning Reference Signal) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.9}}).";
-    leaf num-prs-resource-blocks {
-      type uint64;
-      units "Resource Blocks";
-      config false;
-      description
-        "Defines the number of RBs ({{units}}) used for PRS. Corresponds to the parameter NRBPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.NumPRSResourceBlocks";
-    }
-    leaf prs-configuration-index {
-      type uint16 {
-        range "0..4095";
-      }
-      config false;
-      description
-        "Corresponds to the PRS configuration index defined as parameter IPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.3 and Table 6.10.4.3.-1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.PRSConfigurationIndex";
-    }
-    leaf num-consecutive-prs-subfames {
-      type uint8 {
-        range "1..2 | 4 | 6";
-      }
-      config false;
-      description
-        "Defines the number of consecutive positioning sub-frames. Corresponds to the parameter NPRS in {{bibref|3GPP-TS.36.211|Section 6.10.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.NumConsecutivePRSSubfames";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.PRS.";
-  }
-
-  grouping lte-ran-phy-tdd-frame-g {
-    description
-      "This object is applicable to TDD mode only. This object contains parameters relating to the TDD frame structure configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.1.10}}).";
-    leaf sub-frame-assignment {
-      type uint8 {
-        range "0..6";
-      }
-      config false;
-      description
-        "Defines the DL/UL sub-frame configuration. Corresponds to subframAssignment specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Table 4.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.SubFrameAssignment";
-    }
-    leaf special-subframe-patterns {
-      type uint8 {
-        range "0..8";
-      }
-      config false;
-      description
-        "Defines the configuration of the special sub-frame that contains the guard period between the downlink and uplink transmissions. Corresponds to the specialSubframePatterns specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and {{bibref|3GPP-TS.36.211|Table 4.2.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.SpecialSubframePatterns";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.PHY.TDDFrame.";
-  }
-
-  grouping lte-ran-mac-g {
-    description
-      "This object contains parameters relating to the MAC (Medium Access Control) configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.";
-  }
-
-  grouping lte-ran-mac-rach-g {
-    description
-      "This object contains parameters relating to the RACH (Random Access Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.1}}).";
-    leaf-list number-of-ra-preambles {
-      type uint8 {
-        range "4..64";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a number of non-dedicated random access preambles. Only values in multiple of 4 are valid (i.e. 4, 8, 12, 16,...64); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter numberOfRA-Preambles specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.NumberOfRaPreambles";
-    }
-    leaf-list size-of-ra-group-a {
-      type uint8 {
-        range "4..60";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a number of non-dedicated random access preambles in Random Acces Preambles group A. Only values in multiple of 4 are valid (i.e. 4, 8, 12, 16,...60); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter sizeOfRA-PreamblesGroupA specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.SizeOfRaGroupA";
-    }
-    leaf-list message-size-group-a {
-      type uint16 {
-        range "56 | 144 | 208 | 256";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a threshold for preamble selection, specified in bits. In case there is more than one item in the list, the first item contains the most preferred value. Defined in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. Corresponds to parameter messageSizeGroupA specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MessageSizeGroupA";
-    }
-    leaf-list message-power-offset-group-b {
-      type int64;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a threshold for preamble selection, specified in dB. In case there is more than one item in the list, the first item contains the most preferred value. Defined in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. Corresponds to parameter messagePowerOffsetGroupB specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. Value of -1 indicates \"minusinfinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MessagePowerOffsetGroupB";
-    }
-    leaf-list power-ramping-step {
-      type uint8 {
-        range "0 | 2 | 4 | 6";
-      }
-      config false;
-      min-elements 1;
-      max-elements "16";
-      description
-        "{{list}} Each item is a power increase factor between subsequent random access preamble transmissions, specified in dB. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter powerRampingStep specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PowerRampingStep";
-    }
-    leaf-list preamble-initial-received-target-power {
-      type int64;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a value used as the baseline for computation for random access transmission power, specified in dBm. Also used as a parameter in the criteria for preamble selection. Only even values are valid (i.e. -120, -118, -116,...-90); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter preambleInitialReceivedTargetPower specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.2}}. and section 5.1.3. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PreambleInitialReceivedTargetPower";
-    }
-    leaf-list preamble-trans-max {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a maximum number of random access preamble transmissions, from the list of 3, 4, 5, 6, 7, 8, 10, 20, 50, 100, 200. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter preambleTransMax specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.4 and section 5.1.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.PreambleTransMax";
-    }
-    leaf-list response-window-size {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a duration of the random access response window, specified in sub-frames, with a numeric range between 2 and 10 inclusive (except value of 9). In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter ra-ResponseWindowSize specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.ResponseWindowSize";
-    }
-    leaf-list contention-resolution-timer {
-      type uint8 {
-        range "8..64";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a contention resolution timer, specified in sub-frames. Only values multiple of 8 are valid (i.e. 8, 16, 24,...64); use of other values within the defined range MUST be rejected by the CPE. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter mac-ContentionResolutionTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.1.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.ContentionResolutionTimer";
-    }
-    leaf-list max-harq-msg3-tx {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a maximum number of Msg3 HARQ transmissions by RRC, with a numeric range between 1 and 8 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter maxHARQ-Msg3Tx specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.MaxHARQMsg3Tx";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.RACH.";
-  }
-
-  grouping lte-ran-mac-drx-g {
-    description
-      "This object contains parameters relating to the DRX (Discontinuous Reception) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.2}}).";
-    leaf drx-enabled {
-      type boolean;
-      config false;
-      description
-        "Specifies whether DRX operation is enabled or not. If {{true}}, DRX operation is enabled. If {{false}}, DRX operation is not enabled. Corresponds to drx-Configuration IE defined in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXEnabled";
-    }
-    leaf-list on-duration-timer {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is the DRX cycle during which UE actively monitors PDCCH, specified in number of PDCCH sub-frames, from the list of 1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50, 60, 80, 100, 200. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter onDurationTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.OnDurationTimer";
-    }
-    leaf-list drx-inactivity-timer {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item defines the number of inactive consecutive PDCCH sub-frame(s) that will activate short DRX cycle, specified in number of PDCCH sub-frames, from the list of 1, 2, 3, 4, 5, 6, 8, 10, 20, 30, 40, 50, 60, 80, 100, 200, 300, 500, 750, 1280, 1920, 2560. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter drx-InactivityTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXInactivityTimer";
-    }
-    leaf-list drx-retransmission-timer {
-      type uint8 {
-        range "1 | 2 | 4 | 6 | 8 | 16 | 24 | 33";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item defines the maximum number of consecutive PDCCH sub-frame(s) UE MUST remain active expecting a DL retransmission, specified in number of PDCCH sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. The timer is started when a HARQ RTT Timer expires and the data in the soft buffer of the corresponding HARQ process was not successfully decoded. There is one timer for each active HARQ process. Corresponds to parameter drx-RetransmissionTimer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.7}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXRetransmissionTimer";
-    }
-    leaf-list long-drx-cycle {
-      type uint16 {
-        range "10 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 256 | 320 | 512 | 640 | 1024 | 1280 | 2048 | 2560";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is long DRX Cycle value, specified in number of sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. If shortDRX-Cycle is configured, this value MUST be a multiple of the {{param|ShortDRXCycle}} value. Corresponds to longDRX-Cycle parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}} and longDRX-CycleStartOffset specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.LongDRXCycle";
-    }
-    leaf-list drx-start-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "512";
-      description
-        "{{list}} Each item defines the starting frame of the DRX cycle within the long DRX cycle, with a numeric range between 0 and 2559 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The valid value range is dependent on {{param|LongDRXCycle}} parameter which defines the upper bound of this range, i.e., range definition is [0: ({{param|LongDRXCycle}}-1)]. Corresponds to drxStartOffset parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. Use of values bigger than ({{param|LongDRXCycle}}-1) MUST be rejected by the CPE. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXStartOffset";
-    }
-    leaf-list short-drx-cycle {
-      type uint16 {
-        range "2 | 5 | 8 | 10 | 16 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 256 | 320 | 512 | 640";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is the short DRX Cycle value, specified in number of sub-frames. In case there is more than one item in the list, the first item contains the most preferred value. If shortDRX-Cycle is configured, the value of {{param|LongDRXCycle}} MUST be a multiple of the {{param}} value. Corresponds to shortDRX-Cycle parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.ShortDRXCycle";
-    }
-    leaf-list drx-short-cycle-timer {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item defined the duration of the short DRX cycle in multiples of {{param|ShortDRXCycle}} parameter, specified in number of sub-frames, with a numeric range between 1 and 16 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Denotes the number of consecutive sub-frame(s)the UE shall follow the short DRX cycle after the DRX Inactivity Timer has expired. Corresponds to drxShortCycleTimer parameter specified in {{bibref|3GPP-TS.36.321|Section 5.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.DRXShortCycleTimer";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.DRX.";
-  }
-
-  grouping lte-ran-mac-ulsch-g {
-    description
-      "This object contains parameters relating to the ULSCH (Uplink Shared Channel) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.2.3}}).";
-    leaf max-harq-tx {
-      type uint8 {
-        range "1..8 | 10 | 12 | 16 | 20 | 24 | 28";
-      }
-      description
-        "Maximum number of UL HARQ transmissions. Corresponds to parameter maxHARQ-Tx specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.MaxHARQTx";
-    }
-    leaf periodic-bsr-timer {
-      type uint16 {
-        range "0 | 5 | 10 | 16 | 20 | 32 | 40 | 64 | 80 | 128 | 160 | 320 | 640 | 1280 | 2560";
-      }
-      units "subframes";
-      description
-        "Timer for Periodic BSR (Buffer Status Report) reporting, specified in number of {{units}}. UE transmits periodic BSR at the expiration of this timer. Corresponds to parameter periodicBSR-Timer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.5}}. Value of 0 indicates \"infinity.\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.PeriodicBSRTimer";
-    }
-    leaf retx-bsr-timer {
-      type uint16 {
-        range "320 | 640 | 1280 | 2560 | 5120 | 10240";
-      }
-      units "subframes";
-      description
-        "Timer for Regular BSR reporting, specified in number of {{units}}. UE transmits a Regular BSR at the expiration of this timer if data is available in the buffer. Corresponds to parameter retxBSR-Timer specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.RetxBSRTimer";
-    }
-    leaf tti-bundling {
-      type boolean;
-      description
-        "Enables/disables TTI bundling. If {{true}}, TTI bundling is enabled. If {{false}}, TTI bundling is disabled. Corresponds to parameter ttiBundling specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.321|Section 5.4.2.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.TTIBundling";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.MAC.ULSCH.";
-  }
-
-  grouping lte-ran-rlc-g {
-    description
-      "This object contains parameters relating to the RLC (Radio Link Control) configuration.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.";
-  }
-
-  grouping lte-ran-rlc-srb1-g {
-    description
-      "This object contains parameters relating to the SRB1 (Signaling Radio Bearer 1) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.3.1}}).";
-    leaf default-configuration {
-      type boolean;
-      config false;
-      description
-        "Indicates the whether default RLC configuration for SRB1 is used or not. If {{true}}, the default RLC configuration is used as specified in {{bibref|3GPP-TS.36.331|Section 9.2.1.1}}. In this case, rest of the parameters defined under the current object are ignored by the CPE. If {{false}}, rest of the parameters defined under the current object are used by the CPE for RLC configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.DefaultConfiguration";
-    }
-    leaf-list t-poll-retransmit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a timer between successive poll transmissions, specified in milliseconds, specified in milliseconds, with a numeric range between 5 and 500 inclusive. Only the multiple of 5 are valid in the range between 5 and 250 inclusive (i.e. 5, 10, 15, 20,... 250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e., 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-PollRetransmit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TPollRetransmit";
-    }
-    leaf-list poll-pdu {
-      type uint16 {
-        range "0 | 4 | 8 | 16 | 32 | 64 | 128 | 256";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a counter of PDUs between successive poll transmissions, specified in the number of PDUs. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollPDU IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates \"infinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.PollPDU";
-    }
-    leaf-list poll-byte {
-      type uint16 {
-        range "0 | 25 | 50 | 75 | 100 | 125 | 250 | 375 | 500 | 750 | 1000 | 1250 | 1500 | 2000 | 3000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a counter of PDU bytes transmitted between successive poll transmissions, specified in kilobytes. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollByte IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates infinite amount of kilobytes. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.PollByte";
-    }
-    leaf-list max-retx-threshold {
-      type uint8 {
-        range "1..4 | 6 | 8 | 16 | 32";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item defines the maximum number of transmission retry used by the RLC entity to limit the number of retransmissions of an AMD PDU. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to maxRetxThreshold IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.MaxRetxThreshold";
-    }
-    leaf-list t-reordering {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an RLC entity in order to detect loss of RLC PDUs at lower layer, specified in milliseconds, with a numeric range between 0 and 200 inclusive. Only the multiple of 5 are valid in the range between 0 and 100 inclusive (i.e. 0, 5, 10, 15,...,100), and only the multiple of 10 are valid in the range between 110 and 200 inclusive (110, 120, 130,...,200). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-Reordering IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.1.2.2. and 5.1.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TReordering";
-    }
-    leaf-list t-status-prohibit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an AM RLC entity in order to prohibit transmission of a STATUS PDU, specified in milliseconds, with a numeric range between 0 and 500 inclusive. Only the multiple of 5 are valid in the range between 0 and 250 inclusive (i.e. 0, 5, 10, 15,...,250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e. 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-StatusProhibit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.3}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.TStatusProhibit";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB1.";
-  }
-
-  grouping lte-ran-rlc-srb2-g {
-    description
-      "This object contains parameters relating to the SRB2 (Signaling Radio Bearer 2) configuration (see {{bibref|3GPP-TS.32.592|Section 6.1.3.1}}).";
-    leaf default-configuration {
-      type boolean;
-      config false;
-      description
-        "Indicates the whether default RLC configuration for SRB1 is used or not. If {{true}}, the default RLC configuration is used as specified in {{bibref|3GPP-TS.36.331|Section 9.2.1.1}}. In this case, rest of the parameters defined under the current object are ignored by the CPE. If {{false}}, rest of the parameters defined under the current object are used by the CPE for RLC configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.DefaultConfiguration";
-    }
-    leaf-list t-poll-retransmit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a timer between successive poll transmissions, specified in milliseconds, with a numeric range between 5 and 500 inclusive. Only the multiple of 5 are valid in the range between 5 and 250 inclusive (i.e. 5, 10, 15, 20,... 250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e., 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-PollRetransmit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TPollRetransmit";
-    }
-    leaf-list poll-pdu {
-      type uint16 {
-        range "0 | 4 | 8 | 16 | 32 | 64 | 128 | 256";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a counter of PDUs between successive poll transmissions, specified in the number of PDUs. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollPDU IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates \"infinity.\" If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.PollPDU";
-    }
-    leaf-list poll-byte {
-      type uint16 {
-        range "0 | 25 | 50 | 75 | 100 | 125 | 250 | 375 | 500 | 750 | 1000 | 1250 | 1500 | 2000 | 3000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a counter of PDU bytes transmitted between successive poll transmissions, specified in kilobytes. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to pollByte IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.2.1}}. Value of 0 indicates infinite amount of kilobytes. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.PollByte";
-    }
-    leaf-list max-retx-threshold {
-      type uint8 {
-        range "1..4 | 6 | 8 | 16 | 32";
-      }
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item defines the maximum number of transmission retry used by the RLC entity to limit the number of retransmissions of an AMD PDU. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to maxRetxThreshold IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.1}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.MaxRetxThreshold";
-    }
-    leaf-list t-reordering {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an RLC entity in order to detect loss of RLC PDUs at lower layer, specified in milliseconds, with a numeric range between 0 and 200 inclusive. Only the multiple of 5 are valid in the range between 0 and 100 inclusive (i.e. 0, 5, 10, 15,...,100), and only the multiple of 10 are valid in the range between 110 and 200 inclusive (110, 120, 130,...,200). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-Reordering IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.1.2.2. and 5.1.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TReordering";
-    }
-    leaf-list t-status-prohibit {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item defines a timer used by the receiving side of an AM RLC entity in order to prohibit transmission of a STATUS PDU, specified in milliseconds, with a numeric range between 0 and 500 inclusive. Only the multiple of 5 are valid in the range between 0 and 250 inclusive (i.e. 0, 5, 10, 15,...,250), and only the multiple of 50 are valid in the range between 300 and 500 inclusive (i.e. 300, 350, 400, 450, 500). If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. This parameter is valid only if {{param|DefaultConfiguration}} paramter under the current object is set to {{false}}. Corresponds to t-StatusProhibit IE specified in {{bibref|3GPP-TS.36.331|Section 6.3.2}} and in {{bibref|3GPP-TS.36.322|Section 5.2.3}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.TStatusProhibit";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RLC.SRB2.";
-  }
-
-  grouping lte-ran-rrc-timers-g {
-    description
-      "This object contains parameters relating to the RRC timers and constants (see {{bibref|3GPP-TS.32.592|Section 6.1.6.1}}) and (see {{bibref|3GPP-TS.32.592|Section 6.1.6.2}}).";
-    leaf-list t300 {
-      type uint16 {
-        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is an interval, in milliseconds, between subsequent transmissions of RRCConnectionRequest. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t300 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T300";
-    }
-    leaf-list t301 {
-      type uint16 {
-        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is an interval, in milliseconds, between subsequent transmissions of RRCConnectionReestablishmentRequest. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t301 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T301";
-    }
-    leaf t302 {
-      type uint16 {
-        range "100 | 200 | 300 | 400 | 600 | 1000 | 1500 | 2000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Time to wait in {{units}} for cell re-selection or RRConnectionSetup after RRCConnectionReject. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T302";
-    }
-    leaf-list t304-eutra {
-      type uint16 {
-        range "50 | 100 | 150 | 200 | 500 | 1000 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a HO failure timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to t304 defined within IE MobilityControlInfo in RRCConnectionReconfiguration message in {{bibref|3GPP-TS.36.331|Section 5.3.5.4 and Section 6.3.4}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T304EUTRA";
-    }
-    leaf-list t304-irat {
-      type uint16 {
-        range "100 | 200 | 500 | 1000 | 2000 | 4000 | 8000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a HO failure timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to t304 defined within IE CellChangeOrder in MobilityFromEUTRACommand message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T304IRAT";
-    }
-    leaf-list t310 {
-      type uint16 {
-        range "0 | 50 | 100 | 200 | 500 | 1000 | 2000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a RLF declaration timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t310 specified in RLF-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T310";
-    }
-    leaf-list t311 {
-      type uint16 {
-        range "1000 | 3000 | 5000 | 10000 | 15000 | 20000 | 30000";
-      }
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a RLF recovery timer, in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t311 specified in RLF-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6}}. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T311";
-    }
-    leaf t320 {
-      type uint8 {
-        range "5 | 10 | 20 | 30 | 60 | 120 | 180";
-      }
-      units "minutes";
-      config false;
-      description
-        "Time in {{units}} after RRCConnection Release in which cell re-selection priority info supplied in RRCConnectionRelease MUST be observed. Start/stop/expirary condition is defined in {{bibref|3GPP-TS.36.331|Section 7.3}}. Corresponds to parameter t320 specified in RRCConnectionRelease message in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. S";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.T320";
-    }
-    leaf n310 {
-      type uint8 {
-        range "1..4 | 6 | 8 | 10 | 20";
-      }
-      config false;
-      description
-        "Number of consecutive \"out-of-sync\" indications received from lower layers that triggers timer T310. Corresponds to parameter n310 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6 and Section 7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.N310";
-    }
-    leaf n311 {
-      type uint8 {
-        range "1..6 | 8 | 10";
-      }
-      config false;
-      description
-        "Number of consecutive \"in-sync\" indications received from lower layers that stops timer T310. Corresponds to parameter n311 specified in UE-TimersAndConstants IE in {{bibref|3GPP-TS.36.331|Section 6.3.6 and Section 7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.N311";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.RRCTimers.";
-  }
-
-  grouping lte-ran-cell-restriction-g {
-    description
-      "This object contains parameters relating to the cell restriction configuration.";
-    leaf cell-barred {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the is barred or not. If {{true}}, the cell is barred. If {{false}}, the cell is not barred. Corresponds to parameter CellBarred specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.CellBarred";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the is reserved for operator's use or not. If {{true}}, the cell is reserved for operator use. If {{false}}, the cell is not reserved for operator use. Corresponds to parameter cellReservedForOperatorUse specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.CellReservedForOperatorUse";
-    }
-    leaf barring-for-emergency {
-      type boolean;
-      config false;
-      description
-        "Indicates whether the is barred for Access Class 10 or not. If {{true}}, the cell is barred for Access Class 10. If {{false}}, the cell is not barred for Access Class 10. Corresponds to parameter ac-BarringForEmergency specified in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.BarringForEmergency";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.CellRestriction.";
-  }
-
-  grouping lte-ran-mobility-g {
-    description
-      "This object contains parameters relating to the UE's mobility configuration. It covers both idle mode and connected mode.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-g {
-    description
-      "This object contains parameters relating to the UE's mobility while it is in idle mode (cell (re-)selection). Parameters under this object determines the content in the SIB (System Information Block) that is broadcast by LTE .";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-common-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration that is common to all cell re-selection scenarios (intra/inter-freq, inter-RAT to UTRA (UMTS), GERAN (GSM) and CDMA2000) (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.1}}).";
-    leaf-list qhyst {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a hysteresis value applied to serving cell for evaluating cell ranking criteria specified in dB, with a numeric range between 0 and 24 inclusive. For the value greater than 6, only even numbers are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter q-Hyst specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.Qhyst";
-    }
-    leaf q-hyst-sf-medium {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Speed-dependent scaling factor for Qhyst in Medium-mobility state, specified in {{units}}. Corresponds to parameter q-HystSF:sf-Medium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.QHystSFMedium";
-    }
-    leaf q-hyst-sf-high {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Speed-dependent scaling factor for Qhyst in High-mobility state, specified in {{units}}. Corresponds to parameter q-HystSF:sf-High specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.QHystSFHigh";
-    }
-    leaf t-evaluation {
-      type uint8 {
-        range "30 | 60 | 120 | 180 | 240";
-      }
-      units "seconds";
-      config false;
-      description
-        "Duration for evaluating allowed amount of cell re-selection(s) required to enter mobility states, specified in {{units}}. Corresponds to parameter t-Evaluation specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter TCRmax specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.TEvaluation";
-    }
-    leaf t-hyst-normal {
-      type uint8 {
-        range "30 | 60 | 120 | 180 | 240";
-      }
-      units "seconds";
-      config false;
-      description
-        "Additional duration for evaluating criteria to enter normal mobility state, specified in {{units}}. Specifies the additional time period for evaluating criteria to enter Normal-mobility state. Corresponds to parameter t-HystNormal specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter TCRmaxHyst specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.THystNormal";
-    }
-    leaf n-cell-change-medium {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "Defines the number of cell re-selections within TEvaluation to enter Medium-mobility state. Corresponds to parameter n-cellChangeMedium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter NCR_M specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.NCellChangeMedium";
-    }
-    leaf n-cell-change-high {
-      type uint8 {
-        range "1..16";
-      }
-      config false;
-      description
-        "Defines the number of cell re-selections within TEvaluation to enter High-mobility state. Corresponds to parameter n-cellChangeHigh specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.4}} and to parameter NCR_H specified in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.NCellChangeHigh";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.Common.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-intra-freq-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for intra-freq re-selection scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.2}}).";
-    leaf-list q-rx-lev-min-sib1 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSRP level of a E-UTRA cell for cell selection, specified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinSIB1";
-    }
-    leaf-list q-rx-lev-min-sib3 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSRP level for intra-frequency E-UTRA cell re-selection, specified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinSIB3";
-    }
-    leaf q-rx-lev-min-offset {
-      type uint8 {
-        range "1..8";
-      }
-      units "dBm";
-      config false;
-      description
-        "Defines offset with respect to QrxLevMin, specified in {{units}}. This offset is taken into account in the computation of Srxlev for cell selection evaluation of cells detected during a periodic search for a higher priority PLMN while camped normally in a VPLMN. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMinOffset in SIB1 specified in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.QRxLevMinOffset";
-    }
-    leaf-list s-intra-search {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a threshold for intra-frequency measurements, specified in dB, with a numeric range between 0 and 31 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter s-IntraSearch specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.SIntraSearch";
-    }
-    leaf-list t-reselection-eutra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for intra-frequency E-UTRA cell re-selection, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionEUTRA specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRA";
-    }
-    leaf-list s-non-intra-search {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a threshold for inter-frequency and inter-RAT measurements with lower or equal priority, specified in dB, with a numeric range between 0 and 31 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter s-NonIntraSearch specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.SNonIntraSearch";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of the E-UTRAN serving carrier frequency used in the inter-frequency and inter-RAT cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.CellReselectionPriority";
-    }
-    leaf p-max {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Used to limit the allowed UE uplink transmission power on the serving frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. Corresponds to parameter p-Max specified in SIB1 and SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1 and Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.PMax";
-    }
-    leaf thresh-serving-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold for serving frequency used in evaluation of re-selection towards lower priority E-UTRAN frequency or inter-RAT, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshServingLow specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.ThreshServingLow";
-    }
-    leaf t-reselection-eutrasf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for intra-frequency TreselectionEUTRA in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-Medium specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRASFMedium";
-    }
-    leaf t-reselection-eutrasf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for intra-frequency TreselectionEUTRA in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-High specified in SIB3 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.TReselectionEUTRASFHigh";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IntraFreq.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-inter-freq-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-freq re-selection scenario .";
-    leaf max-carrier-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.MaxCarrierEntries";
-    }
-    leaf carrier-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.CarrierNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-inter-freq-carrier-g {
-    description
-      "This object contains parameters relating to the carrier information for inter-freq re-selection scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.3}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.Alias";
-    }
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Indicates the ARFCN of this frequency carrier. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.EUTRACarrierARFCN";
-    }
-    leaf-list q-rx-lev-min-sib5 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSRP level on this E-UTRA frequency carrier, spcified in dBm, with a numeric range between -70 and -22 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-rxLevMin in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.QRxLevMinSIB5";
-    }
-    leaf-list q-offset-freq {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is an offset applicable between serving and this frequency carrier, specified in dBm, with a numeric range between -24 and 24 inclusive. For values less than or equal to -6, or values greater than or equal to 6, only the even values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter q-OffsetFreq in SIB5 specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.4.2.6}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.QOffsetFreq";
-    }
-    leaf-list t-reselection-eutra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for inter-frequency cell re-selection to this E-UTRA frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionEUTRA specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRA";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this E-UTRA frequency carrier, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting from a lower priority E-UTRAN frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting from a higher priority E-UTRAN frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.ThreshXLow";
-    }
-    leaf p-max {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Used to limit the allowed UE uplink transmission power on this carrier frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.36.304|Section 5.2.3.2}}. Corresponds to parameter p-Max specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.PMax";
-    }
-    leaf t-reselection-eutrasf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-Medium specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRASFMedium";
-    }
-    leaf t-reselection-eutrasf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionEUTRA-SF:sf-High specified in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.TReselectionEUTRASFHigh";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.InterFreq.Carrier.{i}.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection scenario.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-utra-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to UTRA (UMTS) scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.4}}).";
-    leaf-list t-reselection-utra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for re-selection to a UTRA frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionUTRA specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRA";
-    }
-    leaf t-reselection-utrasf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionUTRA for inter-RAT re-selection to UTRA in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionUTRA-SF:sf-Medium specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRASFMedium";
-    }
-    leaf t-reselection-utrasf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionEUTRA for inter-frequency re-selection to this frequency carrier in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionUTRA-SF:sf-High specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.TReselectionUTRASFHigh";
-    }
-    leaf max-utranfdd-freq-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.MaxUTRANFDDFreqEntries";
-    }
-    leaf utranfdd-freq-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreqNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-utra-utranfdd-freq-g {
-    description
-      "This object contains parameters relating to the channel frequncy related information of UTRA (UMTS) system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.5, 6.1.5.1.6}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.Alias";
-    }
-    leaf utra-carrier-arfcn {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "Indicates the ARFCN of the frequency carrier. Corresponds to parameter CarrierFreq in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.UTRACarrierARFCN";
-    }
-    leaf-list q-rx-lev-min {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSCP level on this UTRA frequency carrier, specified in dBm, with a numeric range between -60 and -13 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2 + 1) yields the actual value. Corresponds to parameter q-RxLevMin in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.QRxLevMin";
-    }
-    leaf-list q-qual-min {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a required minimum received Ec/Io level on this UTRA FDD carrier, specified in dB, with a numeric range between -24 and 0 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter q-QualMin in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.QQualMin";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this UTRA FDD frequency carrier, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a higher priority UTRA FDD frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a lower priority UTRA FDD frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.ThreshXLow";
-    }
-    leaf p-max-utra {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Used to limit the allowed UE uplink transmission power on this UTRA FDD carrier frequency, specified in {{units}}. It is used to calculate the parameter Pcompensation defined in {{bibref|3GPP-TS.25.304|Section 5.2.3.1.2}}. Corresponds to parameter p-MaxUTRA specified in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.PMaxUTRA";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.UTRA.UTRANFDDFreq.{i}.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-geran-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to GERAN (GSM) scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.6}}).";
-    leaf-list t-reselection-geran {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for re-selection to a GERAN frequency carrier, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionGERAN specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to TreselectionGERA in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERAN";
-    }
-    leaf t-reselection-geransf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionGERAN for inter-RAT re-selection to GERAN in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionGERAN-SF:sf-Medium specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERANSFMedium";
-    }
-    leaf t-reselection-geransf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TreselectionGERAN for inter-RAT re-selection to GERAN in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionGERAN-SF:sf-High specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.TReselectionGERANSFHigh";
-    }
-    leaf max-geran-freq-group-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.MaxGERANFreqGroupEntries";
-    }
-    leaf geran-freq-group-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroupNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-geran-geran-freq-group-g {
-    description
-      "This object contains parameters relating to the channel frequncy related information of GERAN (GSM) system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.7}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.Alias";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - GSM850";
-        }
-        enum "gsm900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - GSM900";
-        }
-        enum "dcs1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - DCS1800";
-        }
-        enum "pcs1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator - PCS1900";
-        }
-      }
-      config false;
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.BCCHARFCN";
-    }
-    leaf-list q-rx-lev-min {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is a required minimum received RSSI level on this GERAN frequency carrier for re-selection to this UTRA FDD carrier, specified in dBm, with a numeric range between 0 and 63 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. The value of ({{param}} * 2 - 115) yields the actual value. Corresponds to parameter q-rxLevMin in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to RXLEV_ACCESS_MIN in {{bibref|3GPP-TS.45.008}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.QRxLevMin";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this GERAN frequency group, as used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a higher priority GERAN frequency group than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a lower priority GERAN frequency group than current serving E-UTRA frequency, specified in {{units}} dB. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.ThreshXLow";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.GERAN.GERANFreqGroup.{i}.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-cdma2000-g {
-    description
-      "This object contains parameters relating to the idle mode mobility configuration for inter-RAT (Radio Access Technology) re-selection, specifically for re-selection to CDMA2000 system scenario (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.8}}).";
-    leaf-list search-window-size {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a CDMA2000 parameter affecting the search for neighbouring pilots, with a numeric range between 0 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter searchWindowSize in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP2-C.S0005-A|Table 2.6.6.2.1-1}} and {{bibref|3GPP2-C.S0024-A|Table 8.7.6.2-4}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.SearchWindowSize";
-    }
-    leaf-list t-reselection-cdma2000 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "32";
-      description
-        "{{list}} Each item is a cell re-selection timer for a CDMA2000 band, specified in seconds, with a numeric range between 0 and 7 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter t-ReselectionCDMA2000 specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and to TreselectionCDMA_HRPD or TreselectionCDMA_1xRTT in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000";
-    }
-    leaf t-reselection-cdma2000-sf-medium {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TReselectionCDMA2000 for inter-RAT re-selection to CDMA2000 in Medium-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionCDMA2000-SF:sf-Medium specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000SFMedium";
-    }
-    leaf t-reselection-cdma2000-sf-high {
-      type uint8 {
-        range "25 | 50 | 75 | 100";
-      }
-      config false;
-      description
-        "Scaling factor for TReselectionCDMA2000 for inter-RAT re-selection to CDMA2000 in High-mobility state. The value of {{param}} divided by 100 yields the actual SF value. Corresponds to parameter t-ReselectionCDMA2000-SF:sf-High specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.TReselectionCDMA2000SFHigh";
-    }
-    leaf max-cdma2000-band-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.MaxCDMA2000BandEntries";
-    }
-    leaf cdma2000-band-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000BandNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.";
-  }
-
-  grouping lte-ran-mobility-idle-mode-irat-cdma2000-cdma2000-band-g {
-    description
-      "This object contains parameters relating to the channel frequncy related information of CDMA2000 system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.1.8}}).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.Alias";
-    }
-    leaf band-class {
-      type uint8 {
-        range "0..17";
-      }
-      units "bandclass number";
-      description
-        "Defines the CDMA2000 band in which the CDMA2000 carrier frequency can be found, specified in {{units}}. BandClass is defined in 3GPP2 C.S0057-B Table 1.5-1. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.BandClass";
-    }
-    leaf cell-reselection-priority {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Absolute priority of this CDMA2000 band used by the inter-frequency cell re-selection procedure. Corresponds to parameter CellReselectionPriority specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.7}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.CellReselectionPriority";
-    }
-    leaf thresh-x-high {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a higher priority CDMA2000 band than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-High specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.ThreshXHigh";
-    }
-    leaf thresh-x-low {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Threshold used when re-selecting towards a lower priority CDMA2000 band than current serving E-UTRA frequency, specified in {{units}}. The value of ({{param}} * 2) yields the actual value. Corresponds to parameter threshX-Low specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}} and in {{bibref|3GPP-TS.36.304|Section 5.2.4.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.ThreshXLow";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.IdleMode.IRAT.CDMA2000.CDMA2000Band.{i}.";
-  }
-
-  grouping lte-ran-mobility-conn-mode-g {
-    description
-      "This object contains parameters relating to the UE's mobility while it is in connected mode (handover). Parameters under this object determines the content in the SIB (System Information Block) that is broadcast by LTE .";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.";
-  }
-
-  grouping lte-ran-mobility-conn-mode-eutra-g {
-    description
-      "This object contains parameters relating to the connected mode mobility (handover) configuration within LTE system (see {{bibref|3GPP-TS.32.592|Section 6.1.5.2.1}}).";
-    leaf-list filter-coefficient-rsrp {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for RSRP measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficientRSRP parameter specified in QuantityConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.FilterCoefficientRSRP";
-    }
-    leaf-list filter-coefficient-rsrq {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for RSRQ measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficientRSRQ parameter specified in QuantityConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.FilterCoefficientRSRQ";
-    }
-    leaf a1-threshold-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A1. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.4-1}}. Corresponds to parameter a1-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A1ThresholdRSRP";
-    }
-    leaf a1-threshold-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A1. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in 3GPP TS 36.133}} table 9.1.7-1. Corresponds to parameter a1-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A1ThresholdRSRQ";
-    }
-    leaf a2-threshold-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A2. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.4-1}}. Corresponds to parameter a2-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A2ThresholdRSRP";
-    }
-    leaf a2-threshold-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A2. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133|Table 9.1.7-1}}. Corresponds to parameter a2-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A2ThresholdRSRQ";
-    }
-    leaf-list a3-offset {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "256";
-      description
-        "{{list}} Each item is an offset to be used in evaluation of EUTRA measurement report triggering condition for event A3, with a numeric range between -30 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a3-Offset specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A3Offset";
-    }
-    leaf report-on-leave {
-      type boolean;
-      config false;
-      description
-        "Indicates whether or not the UE shall initiate the measurement reporting procedure when the leaving condition is met for event A3 for a cell in cellsTriggeredList, as specified in {{bibref|3GPP-TS.36.331|Section 5.5.4.1 and Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportOnLeave";
-    }
-    leaf a4-threshold-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A4. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a4-Threshold:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A4ThresholdRSRP";
-    }
-    leaf a4-threshold-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold to be used in EUTRA measurement report triggering condition for event A4. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a4-Threshold:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A4ThresholdRSRQ";
-    }
-    leaf a5-threshold1-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold1 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold1:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold1RSRP";
-    }
-    leaf a5-threshold1-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold1 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold1:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold1RSRQ";
-    }
-    leaf a5-threshold2-rsrp {
-      type uint8 {
-        range "0..97";
-      }
-      config false;
-      description
-        "Threshold2 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRP|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold2:threshold-RSRP specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold2RSRP";
-    }
-    leaf a5-threshold2-rsrq {
-      type uint8 {
-        range "0..34";
-      }
-      config false;
-      description
-        "Threshold2 to be used in EUTRA measurement report triggering condition for event A5. Valid only if {{param|TriggerQuantity}} is {{enum|RSRQ|TriggerQuantity}}. Mapping to actual values is specified in {{bibref|3GPP-TS.36.133}}. Corresponds to parameter a5-Threshold2:threshold-RSRQ specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.A5Threshold2RSRQ";
-    }
-    leaf-list hysteresis {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a hysteresis value applied to entry and leave condition of a report triggering event, with a numeric range between 0 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter hysteresis specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.Hysteresis";
-    }
-    leaf-list time-to-trigger {
-      type uint16 {
-        range "0 | 40 | 64 | 80 | 100 | 128 | 160 | 256 | 320 | 480 | 512 | 640 | 1024 | 1280 | 2560 | 5120";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a time period during which measurement report triggering condition needs to be met in order to trigger a measurement report, specified in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter timeToTrigger specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TimeToTrigger";
-    }
-    leaf trigger-quantity {
-      type enumeration {
-        enum "rsrp" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity - RSRP";
-        }
-        enum "rsrq" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity - RSRQ";
-        }
-      }
-      config false;
-      description
-        "Quantities used to evaluate a measurement report triggering condition. Corresponds to parameter triggerQuantity specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.TriggerQuantity";
-    }
-    leaf report-quantity {
-      type enumeration {
-        enum "same-as-trigger-quantity" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity - SameAsTriggerQuantity";
-        }
-        enum "both" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity - Both";
-        }
-      }
-      config false;
-      description
-        "Measrument quantities to be included in the measurement report. Corresponds to parameter reportQuantity specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The value {{enum|Both}} specifies that both the RSRP and RSRQ quantities are to be included in the measurement report.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportQuantity";
-    }
-    leaf max-report-cells {
-      type uint8 {
-        range "1..8";
-      }
-      description
-        "Maximum number of cells that can be included in a measurement report. Corresponds to parameter maxReportCells specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.MaxReportCells";
-    }
-    leaf report-interval {
-      type uint32 {
-        range "120 | 240 | 480 | 640 | 1024 | 2048 | 5120 | 10240 | 60000 | 360000 | 720000 | 1800000 | 3600000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Interval between successive measurement reports, specified in {{units}}. Corresponds to parameter reportInterval specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportInterval";
-    }
-    leaf report-amount {
-      type uint8 {
-        range "0..2 | 4 | 8 | 16 | 32 | 64";
-      }
-      config false;
-      description
-        "Number of times a measurement report is sent. Corresponds to parameter reportAmount specified in ReportConfigEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. Value of 0 indicates \"infinity.\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.ReportAmount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.EUTRA.";
-  }
-
-  grouping lte-ran-mobility-conn-mode-irat-g {
-    description
-      "This object contains parameters relating to the connected mode mobility (handover) configuration that is common to all inter-RAT handover scenarios (UTRA (UMTS), GERAN (GSM) and CDMA2000) (see {{bibref|3GPP-TS.32.592|Section 6.1.5.2.2}}).";
-    leaf-list qoffsett-utra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a UTRA-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectUTRA specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsettUTRA";
-    }
-    leaf-list filter-coefficient-utra {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for UTRA measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficient parameter specified in QuantityConfigUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.FilterCoefficientUTRA";
-    }
-    leaf meas-quantity-utrafdd {
-      type enumeration {
-        enum "cpich-rscp" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD - CPICH-RSCP";
-        }
-        enum "cpich-ec-n0" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD - CPICH-EcN0";
-        }
-      }
-      config false;
-      description
-        "Measurement quantity used for UTRA measurements. Corresponds to measQuantityUTRA-FDD parameter specified in QuantityConfigUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityUTRAFDD";
-    }
-    leaf b1-threshold-utrarscp {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "RSCP threshold to be used in UTRA measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b1-ThresholdUTRA:utra-RSCP specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdUTRARSCP";
-    }
-    leaf b1-threshold-utra-ec-n0 {
-      type uint8 {
-        range "0..49";
-      }
-      units "dBm";
-      config false;
-      description
-        "EcNo threshold to be used in UTRA measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b1-ThresholdUTRA:utra-EcNo specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdUTRAEcN0";
-    }
-    leaf-list qoffset-geran {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a GERAN-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectGERAN specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsetGERAN";
-    }
-    leaf-list filter-coefficient-geran {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "64";
-      description
-        "{{list}} Each item is a filtering coefficient used for GERAN measurements, with a numeric range between 0 and 19 inclusive. For values greater than 9, only odd values are valid. If the value is other than these, the CPE MUST reject the value. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to filterCoefficient parameter specified in QuantityConfigGERAN IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.FilterCoefficientGERAN";
-    }
-    leaf b1-threshold-geran {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in GERAN measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b1-ThresholdGERAN specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdGERAN";
-    }
-    leaf-list qoffset-cdma2000 {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a CDMA2000-specific offset to be applied when evaluating triggering conditions for measurement reporting in connected mode, with a numeric range between -15 and 15 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter offsetFreq included in the IE MeasObjectCDMA2000 specified in {{bibref|3GPP-TS.36.331}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.QoffsetCDMA2000";
-    }
-    leaf meas-quantity-cdma2000 {
-      type enumeration {
-        enum "pilot-strength" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000 - PilotStrength";
-        }
-        enum "pilot-pn-phase-and-pilot-strength" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000 - PilotPnPhaseAndPilotStrength";
-        }
-      }
-      config false;
-      description
-        "Measurement quantity used for CDMA2000 measurements. Corresponds to measQuantityCDMA2000 parameter specified in QuantityConfigCDMA2000 IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MeasQuantityCDMA2000";
-    }
-    leaf b1-threshold-cdma2000 {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in CDMA2000 measurement report triggering condition for event B1. Mapping to actual {{units}} values is specified in {{bibref|3GPP-TS.45.008}}. Corresponds to parameter b1-ThresholdCDMA2000 specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B1ThresholdCDMA2000";
-    }
-    leaf b2-threshold2-utrarscp {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "RSCP threshold to be used in UTRA measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in {{bibref|3GPP-TS.25.133}}. Corresponds to parameter b2-Threshold2UTRA:utra-RSCP specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2UTRARSCP";
-    }
-    leaf b2-threshold2-utra-ec-n0 {
-      type uint8 {
-        range "0..49";
-      }
-      units "dBm";
-      config false;
-      description
-        "EcNo threshold to be used in UTRA measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 25.133}}. Corresponds to parameter b2-Threshold2UTRA:utra-EcNo specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2UTRAEcN0";
-    }
-    leaf b2-threshold2-geran {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in GERAN measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b2-Threshold2GERAN specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2GERAN";
-    }
-    leaf b2-threshold2-cdma2000 {
-      type uint8 {
-        range "0..63";
-      }
-      units "dBm";
-      config false;
-      description
-        "Threshold to be used in CDMA2000 measurement report triggering condition for event B2. Mapping to actual {{units}} values is specified in 3GPP TS 45.008}}. Corresponds to parameter b2-Threshold2CDMA2000 specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.B2Threshold2CDMA2000";
-    }
-    leaf-list hysteresis {
-      type string;
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a hysteresis value applied to entry and leave condition of an IRAT report triggering event, with a numeric range between 0 and 30 inclusive. In case there is more than one item in the list, the first item contains the most preferred value. Corresponds to parameter hysteresis specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. The multiplicity of the {{param}} values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. If this notation is used, then the list contains at least 2 items: \"<preferred-value>,<lower-bound>..<upper-bound>\". If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.Hysteresis";
-    }
-    leaf-list time-to-trigger {
-      type uint16 {
-        range "0 | 40 | 64 | 80 | 100 | 128 | 160 | 256 | 320 | 480 | 512 | 640 | 1024 | 1280 | 2560 | 5120";
-      }
-      config false;
-      min-elements 1;
-      max-elements "128";
-      description
-        "{{list}} Each item is a time period during which IRAT measurement report triggering condition needs to be met in order to trigger IRAT measurement report, specified in milliseconds. In case there is more than one item in the list, the first item contains the most preferred value.. Corresponds to parameter timeToTrigger specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. If supports self-configuration capability for {{param}} and more than one item is configured, then is expected to select one from the list and overwrite this parameter containing only the one selected. If does not support self-configuration capability for {{param}} and more than one item is configured, then accepts the first value and ignore the rest. If only one item is configured regardless of the self-configuration capability of , accepts the value as an explicit configuration by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.TimeToTrigger";
-    }
-    leaf max-report-cells {
-      type uint8 {
-        range "1..8";
-      }
-      description
-        "Maximum number of IRAT cells that can be included in a measurement report. Corresponds to parameter maxReportCells specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.MaxReportCells";
-    }
-    leaf report-interval {
-      type uint32 {
-        range "120 | 240 | 480 | 640 | 1024 | 2048 | 5120 | 10240 | 60000 | 360000 | 720000 | 1800000 | 3600000";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Interval between successive IRAT measurement reports, specified in {{units}}. Corresponds to parameter reportInterval specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.ReportInterval";
-    }
-    leaf report-amount {
-      type uint8 {
-        range "0..2 | 4 | 8 | 16 | 32 | 64";
-      }
-      config false;
-      description
-        "Number of times an IRAT measurement report is sent. Corresponds to parameter reportAmount specified in ReportConfigInterRAT IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. Value of 0 indicates \"infinity.\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.ReportAmount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.Mobility.ConnMode.IRAT.";
-  }
-
-  grouping lte-ran-neighbor-list-g {
-    description
-      "This object contains parameters relating to the neighbor list.";
-    leaf max-lte-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.MaxLTECellEntries";
-    }
-    leaf lte-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.";
-  }
-
-  grouping lte-ran-neighbor-list-lte-cell-g {
-    description
-      "Table containing the E-UTRA (i.e. intra-RAT) cell list provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.PLMNID";
-    }
-    leaf cid {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Cell Identity. {{bibref|3GPP-TS.36.331|Section 6.3.4}}. Combination of {{param|PLMNID}} and {{param}} constitutes the Cell Global ID (CGI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.CID";
-    }
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If the value of {{param}} is the same with the one currently being used by the, then it implies that this neighbor cell is an intra-frequency cell; otherwise, it is an inter-frequency cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.EUTRACarrierARFCN";
-    }
-    leaf phy-cell-id {
-      type uint16 {
-        range "0..503";
-      }
-      config false;
-      description
-        "Physical cell ID, as specified in {{bibref|3GPP-TS.36.211|Section 6.11}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.PhyCellID";
-    }
-    leaf q-offset {
-      type int64;
-      config false;
-      description
-        "Indicate a cell-specific offset applicable to a specific neighbouring cell. It is used for evaluating the cell as a candidate for cell re-selection in idle mode. Corresponds to parameter q-OffsetCell broadcast in SIB4 for intra-frequency cells and in SIB5 for inter-frequency cells, specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. For the value less than or equal to -8, and bigger than or equal to 8, only even numbers are valid. If the value is other than these, the CPE MUST reject the value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.QOffset";
-    }
-    leaf cio {
-      type int64;
-      config false;
-      description
-        "Cell individual offset applicable to a specific neighbouring cell. It is used for evaluating triggering conditions for measurement reporting in connected mode. Specified by cellIndividualOffset in MeasObjectEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}. For the value less than or equal to -8, and bigger than or equal to 8, only even numbers are valid. If the value is other than these, the CPE MUST reject the value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.CIO";
-    }
-    leaf rs-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.RSTxPower";
-    }
-    leaf blacklisted {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this neighbor cell is allowed for UEs as handover target or not. If {{true}}, handover is prohibited towards this cell. If {{false}}, handover is allowed toward this cell. The {{param}} parameter allows this cell to be prohibited as a handover target, while still allowing this cell to be included in the BCCH SIB4 or 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.Blacklisted";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.LTECell.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-g {
-    description
-      "The inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.36.331|Section 6.3.1 (SIB6, 7, 8)}}.";
-    leaf max-umts-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.}} table. There can be maximum of 16 UTRAN (UMTS) neighbor cells, as specified by carrierFreqListUTRA-FDD in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxUMTSEntries";
-    }
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.}} table. There can be maximum of 16 GERAN (GSM) neighbor cells, as specified by carrierFreqsInfoList in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxGSMEntries";
-    }
-    leaf max-cdma2000-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.}} table. There can be maximum of 32 bandclasses. In each bandclass, there can be maximum of 16 CDMA2000 carrier frequencies. In each carrier, there can be maximum of 16 CDMA2000 neighbor cells (PN offset). It is specified by neighCellList in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.MaxCDMA2000Entries";
-    }
-    leaf umts-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTSNumberOfEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSMNumberOfEntries";
-    }
-    leaf cdma2000-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000NumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-umts-g {
-    description
-      "Table containing the inter-RAT cell list for UTRA (UMTS) provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "RNC-ID of an intra-RAT UMTS neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      config false;
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      config false;
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      config false;
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.PCPICHTxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.UMTS.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GERAN (GSM) provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.MustInclude";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM850";
-        }
-        enum "gsm900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - GSM900";
-        }
-        enum "dcs1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - DCS1800";
-        }
-        enum "pcs1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator - PCS1900";
-        }
-      }
-      config false;
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      config false;
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.GSM.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-inter-rat-cell-cdma2000-g {
-    description
-      "Table containing the inter-RAT cell list for CDMA2000 provided by the ACS. The table contents MAY be added/deleted/modified during operation, in which case these changes shall be reflected in the broadcast information as soon as possible.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables this entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Alias";
-    }
-    leaf must-include {
-      type boolean;
-      config false;
-      description
-        "Indicates whether this instance of the neighbor shall be included or excluded in the FAP's NL configuration.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.MustInclude";
-    }
-    leaf band-class {
-      type uint8 {
-        range "0..17";
-      }
-      config false;
-      description
-        "Defines the CDMA2000 band in which the CDMA2000 frequency carrier can be found, specified in bandclass number. BandClass is defined in {{bibref|3GPP2-C.S0057-B}} Table 1.5-1. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.BandClass";
-    }
-    leaf arfcn {
-      type uint16 {
-        range "0..2047";
-      }
-      config false;
-      description
-        "Defines the CDMA2000 frequency carrier within a CDMA2000 band, as specified by ARFCN-ValueCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and {{bibref|3GPP2-C.S0002-A}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.ARFCN";
-    }
-    leaf pn-offset {
-      type uint16 {
-        range "0..511";
-      }
-      config false;
-      description
-        "Defines the PN offset that represents the \"Physical cell identity\" in CDMA2000 system, as specified by PhysCellIdCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.PNOffset";
-    }
-    leaf type {
-      type enumeration {
-        enum "1x-rtt" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type - 1xRTT";
-        }
-        enum "hrpd" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type - HRPD";
-        }
-      }
-      config false;
-      description
-        "Indicates the type of the cell. This parameter determines the length of the CID parameter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.Type";
-    }
-    leaf cid {
-      type string {
-        length "0..16";
-      }
-      description
-        "Defines the global cell identity of the cell. For a 1xRTT cell, the cell identity is a binary string 47 bits long. For a HRPD cell, the cell identity is a binary string 128 bits long. The value of {{param}} parameter is interpreted as 128-bit long unsigned integer. If {{param|Type}} is {{enum|1xRTT|Type}}, the first 47 bits (6 octet) is used and the rest of this {{param}} parameter MUST be ignored by the CPE. If {{param|Type}} is {{enum|HRPD|Type}}, the entire 16 octet is used as {{param}}. Corresponds to IE CellGlobalIdCDMA2000 specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.CID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborList.InterRATCell.CDMA2000.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-g {
-    description
-      "This object contains parameters relating to the neighbor list used by the FAP based on its self-configuration capability and {{object|.CellConfig.LTE.RAN.NeighborList.}} configuration of adding and excluding cells.";
-    leaf max-lte-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.MaxLTECellEntries";
-    }
-    leaf lte-cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-lte-cell-g {
-    description
-      "Table containing the LTE EUTRA (i.e. intra-RAT) cell list.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.PLMNID";
-    }
-    leaf cid {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Cell Identity. {{bibref|3GPP-TS.36.331|Section 6.3.4}}. Combination of {{param|PLMNID}} and {{param}} constitutes the Cell Global ID (CGI).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.CID";
-    }
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If the value of {{param}} is the same with the one currently being used by the, then it implies that this neighbor cell is an intra-frequency cell; otherwise, it is an inter-frequency cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.EUTRACarrierARFCN";
-    }
-    leaf phy-cell-id {
-      type uint16 {
-        range "0..503";
-      }
-      description
-        "Physical cell ID, as specified in {{bibref|3GPP-TS.36.211|Section 6.11}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.PhyCellID";
-    }
-    leaf q-offset {
-      type int64;
-      description
-        "Indicate a cell-specific offset applicable to a specific neighbouring cell. It is used for evaluating the cell as a candidate for cell re-selection in idle mode. Corresponds to parameter q-OffsetCell broadcast in SIB4 for intra-frequency cells and in SIB5 for inter-frequency cells, specified in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.QOffset";
-    }
-    leaf cio {
-      type int64;
-      description
-        "Cell individual offset applicable to a specific neighbouring cell. It is used for evaluating triggering conditions for measurement reporting in connected mode. Specified by cellIndividualOffset in MeasObjectEUTRA IE in {{bibref|3GPP-TS.36.331|Section 6.3.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.CIO";
-    }
-    leaf rs-tx-power {
-      type int64;
-      units "dBm";
-      description
-        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.RSTxPower";
-    }
-    leaf blacklisted {
-      type boolean;
-      description
-        "Indicates whether this neighbor cell is allowed for UEs as handover target or not. If {{true}}, handover is prohibited towards this cell. If {{false}}, handover is allowed toward this cell. The {{param}} parameter allows this cell to be prohibited as a handover target, while still allowing this cell to be included in the BCCH SIB4 or 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.Blacklisted";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.LTECell.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-g {
-    description
-      "Table containing the inter-RAT cell lists separated by technology. {{bibref|3GPP-TS.36.331|Section 6.3.1 (SIB6, 7, 8)}}.";
-    leaf max-umts-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.}} table. There can be maximum of 16 UTRAN (UMTS) neighbor cells, as specified by carrierFreqListUTRA-FDD in SIB6 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxUMTSEntries";
-    }
-    leaf max-gsm-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.}} table. There can be maximum of 16 GERAN (GSM) neighbor cells, as specified by carrierFreqsInfoList in SIB7 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxGSMEntries";
-    }
-    leaf max-cdma2000-entries {
-      type uint64;
-      description
-        "The maximum number of entries in the {{object|.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.}} table. There can be maximum of 32 banclasses. In each bandclass, there can be maximum of 16 CDMA2000 carrier frequencies. In each carrier, there can be maximum of 16 CDMA2000 neighbor cells (PN offset). It is specified by neighCellList in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.MaxCDMA2000Entries";
-    }
-    leaf umts-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTSNumberOfEntries";
-    }
-    leaf gsm-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSMNumberOfEntries";
-    }
-    leaf cdma2000-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000NumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-umts-g {
-    description
-      "Table containing the inter-RAT cell list for UTRA (UMTS) cell.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PLMNID";
-    }
-    leaf rncid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "RNC-ID of an intra-RAT UMTS neighbor cell. It uniquely identifies an RNC within a PLMN. Normally, RNC-ID consists of 12 bits (i.e. a range of [0:4095]). However, if the value is larger than 4095, then Extended RNC-ID (range of [4096:65535]) is used in RANAP. The RNC-ID and Extended RNC-ID are combined into a single parameter here as there is no explicit need to have them separated. {{bibref|3GPP-TS.25.413|Section 9.2.1.39}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.RNCID";
-    }
-    leaf cid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell Identifier (C-id) that identifies a cell within an RNS. This Cell Identifier together with the controlling RNC (RNC-ID) constitutes the UTRAN Cell ID (UC-ID) and is used to identify a cell uniquely within UTRAN. C-ID is either 12-bit or 16-bit value. {{bibref|3GPP-TS.25.401|Section 6.1.5}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.CID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65533 | 65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC). The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.RAC";
-    }
-    leaf ura {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "UTRAN Registration Area (URA) {{bibref|3GPP-TS.23.401}}. Indicates to the UE which {{param}} it shall use in case of overlapping URAs. {{bibref|3GPP-TS.25.331|Section 10.3.2.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.URA";
-    }
-    leaf uarfcnul {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The UL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.UARFCNUL";
-    }
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The DL UTRA Absolute Radio Frequency Channel Number (UARFCN) in an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.UARFCNDL";
-    }
-    leaf pcpich-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary CPICH scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PCPICHScramblingCode";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      units "dBm";
-      description
-        "Primary CPICH Tx power in {{units}}. Actual values of the power are -10.0 {{units}} to 50.0 {{units}} in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the power. {{bibref|3GPP-TS.32.642|Section 6.3.11}} {{bibref|3GPP-TS.25.433|Section 2.2.33}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.PCPICHTxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.UMTS.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-gsm-g {
-    description
-      "Table containing the inter-RAT cell list for GERAN (GSM) cell.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC). The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the Location Area ID (LAI). {{bibref|3GPP-TS.23.003|Section 4.1}} {{bibref|3GPP-TS.25.413|Section 9.2.3.6}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.LAC";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "BSIC of the cell per {{bibref|3GPP-TS.23.003}}, consisting of: :Bit 7:6 - not used (\"00\") :Bit 5:3 - NCC (PLMN Color Code) :Bit 2:0 - BCC (BS color code) For example, if NCC is 7 and BCC is 2 you would have 00111010 (binary) or 0x3A (hex), and the value of this parameter would be 58.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BSIC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Cell ID of the cell per {{bibref|3GPP-TS.23.003|Section 4.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.CI";
-    }
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM850";
-        }
-        enum "gsm900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - GSM900";
-        }
-        enum "dcs1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - DCS1800";
-        }
-        enum "pcs1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator - PCS1900";
-        }
-      }
-      description
-        "Indicates how to interpret the BCCH ARFCN. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BandIndicator";
-    }
-    leaf bccharfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "ARFCN of this cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.BCCHARFCN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.GSM.{i}.";
-  }
-
-  grouping lte-ran-neighbor-list-in-use-inter-rat-cell-cdma2000-g {
-    description
-      "Table containing the inter-RAT cell list for CDMA2000 cell.";
-    leaf band-class {
-      type uint8 {
-        range "0..17";
-      }
-      description
-        "Defines the CDMA2000 band in which the CDMA2000 frequency carrier can be found, specified in bandclass number. BandClass is defined in {{bibref|3GPP2-C.S0057-B|Table 1.5-1}}. Corresponds to parameter bandClass specified in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.BandClass";
-    }
-    leaf arfcn {
-      type uint16 {
-        range "0..2047";
-      }
-      description
-        "Defines the CDMA2000 frequency carrier within a CDMA2000 band, as specified by ARFCN-ValueCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and {{bibref|3GPP2-C.S0002-A}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.ARFCN";
-    }
-    leaf pn-offset {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Defines the PN offset that represents the \"Physical cell identity\" in CDMA2000 system, as specified by PhysCellIdCDMA2000 in SIB8 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.PNOffset";
-    }
-    leaf type {
-      type enumeration {
-        enum "1x-rtt" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type - 1xRTT";
-        }
-        enum "hrpd" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type - HRPD";
-        }
-      }
-      description
-        "Indicates the type of the cell. This parameter determines the length of the CID parameter.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.Type";
-    }
-    leaf cid {
-      type string {
-        length "0..16";
-      }
-      description
-        "Defines the global cell identity of the cell. For a 1xRTT cell, the cell identity is a binary string 47 bits long. For a HRPD cell, the cell identity is a binary string 128 bits long. The value of {{param}} parameter is interpreted as 128-bit long unsigned integer. If {{param|Type}} is {{enum|1xRTT|Type}}, the first 47 bits (6 octet) is used and the rest of this {{param}} parameter MUST be ignored by the CPE. If {{param|Type}} is {{enum|HRPD|Type}}, the entire 16 octet is used as {{param}}. Corresponds to IE CellGlobalIdCDMA2000 specified in {{bibref|3GPP-TS.36.331|Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.CID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.LTE.RAN.NeighborListInUse.InterRATCell.CDMA2000.{i}.";
-  }
-
-  grouping cdma2000-g {
-    description
-      "This object contains parameters relating to configuring the CDMA2000 FAP.";
-    leaf tunnel-instance {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "This is the reference to the IPsec tunnel instance used by the CDMA2000 FAP. For all root data models, which use the tunnel definition provided in {{bibref|TR-262}} (InternetGatewayDevice:1 {{bibref|TR-098}} and Device:1 {{bibref|TR-181i1}}) the {{param}} MUST point to a row in the 'FAP.Tunnel.IKESA.{i}.' table, defined in {{bibref|TR-262}}. If the root data model used is Device:2 {{bibref|TR-181i2}} than the {{param}} MUST point to IPsec tunnel instance defined in {{bibref|TR-181i2}}. If the referenced object is deleted, the parameter value MUST be set to an empty string. In case of a multiple-radio-technology FAP product, each radio technology can have its own tunnels or share common tunnels. In the former case, {{param}} can contain a unique instance number. In the latter case, {{param}} under all radio technologies can have the same instance number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.TunnelInstance";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.";
-  }
-
-  grouping cdma2000-one-x-g {
-    description
-      "This object contains parameters relating to configuring the CDMA2000 1x FAP.";
-    leaf pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSNNumberOfEntries";
-    }
-    leaf max-batch-pcfpdsn-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.MaxBatchPCFPDSNEntries";
-    }
-    leaf batch-pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSNNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.";
-  }
-
-  grouping cdma2000-one-x-ran-g {
-    description
-      "This object contains parameters relating to RAN configuring the CDMA2000 1x FAP.";
-    leaf one-x-sector-nid {
-      type int64;
-      config false;
-      description
-        "SID for 1x. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXSectorNID";
-    }
-    leaf one-x-sector-sid {
-      type int64;
-      config false;
-      description
-        "NID for 1x . See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXSectorSID";
-    }
-    leaf one-xpzid {
-      type int64;
-      config false;
-      description
-        "packet Zone ID for 1x packet calls";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.OneXPZID";
-    }
-    leaf base-id {
-      type int64;
-      config false;
-      description
-        "Base station ID (needed in SPM). This is also the CellID. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.BaseID";
-    }
-    leaf max-neighbor-list-entries {
-      type uint64;
-      description
-        "Maximum number of entries avaiable in {{object|.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.MaxNeighborListEntries";
-    }
-    leaf neighbor-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.";
-  }
-
-  grouping cdma2000-one-x-ran-rf-g {
-    description
-      "This object contains parameters relating to RF configuration of the FAP.";
-    leaf-list rfcnfl {
-      type string {
-        length "0..256";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a pair of 2-digit Band class number (as defined in {{bibref|3GPP2-C.S0057}}) followed by 4-digit FL Radio Frequency Channel Number (RFCN). Self-configuration for RFCN is controlled by {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}}. If the FAP's self-configuration capability for RFCN is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for RFCNFLInUse. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. An example value is \"010001, 030500\". If multiple items are specified, they are done in the order of preference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFL";
-    }
-    leaf rfcnfl-band-in-use {
-      type string {
-        length "0..16";
-      }
-      description
-        "The FL Band being used by the FAP. Self-configuration for Band and RFCN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in RFCNFL. If the self-configuration capability is not available or not enabled, then this parameter contains the first band class value in RFCNFL.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFLBandInUse";
-    }
-    leaf rfcnfl-in-use {
-      type uint64;
-      description
-        "The FL RFCN being used by the FAP. Self-configuration for RFCN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in RFCNFL. If the self-configuration capability is not available or not enabled, then this parameter contains the first RFCN value in RFCNFL.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.RFCNFLInUse";
-    }
-    leaf-list pilot-pn {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a pilot PN offset in units of 64 PN chips. Self-configuration for pilot PN is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for Pilot PN Offset is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for PilotPNInUse. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PN offset values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The order of the items has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPN";
-    }
-    leaf pilot-pn-in-use {
-      type uint16 {
-        range "0..511";
-      }
-      units "64 PN chips";
-      description
-        "The Pilot PN Offset being used by the FAP in {{units}}. Self-configuration for Pilot PN Offset is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in PilotPN. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in PilotPN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPNInUse";
-    }
-    leaf maxfap-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power allowed on the FAP. MaxFAPTxPower is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>;..<Pmax_high>;\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low>; and <Pmax_high>; are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPower";
-    }
-    leaf maxfap-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      description
-        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.MaxFAPTxPowerInUse";
-    }
-    leaf pch-pwr-percentage {
-      type uint32 {
-        range "1000..1000000";
-      }
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Paging Channel (expressed in {{units}}). For example, 93333 means 93.333% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PchPwrPercentage";
-    }
-    leaf pilot-pwr-percentage {
-      type uint32 {
-        range "1000..1000000";
-      }
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Pilot Channel (expressed in {{units}}). For example, 19950 means 19.95% of total.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.PilotPwrPercentage";
-    }
-    leaf sync-pwr-percentage {
-      type uint32 {
-        range "1000..1000000";
-      }
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Sync Channel (expressed in {{units}}). For example, 23458 means 23.4% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.SyncPwrPercentage";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.RF.";
-  }
-
-  grouping cdma2000-one-x-ran-network-listen-mode-config-g {
-    description
-      "This object contains parameters relating to self-configuration of the MaxFAPTxPower of the FAP.";
-    leaf rfcnfl-margin {
-      type uint64;
-      config false;
-      description
-        "If self-configuration of RFCNFL is enabled, this value indicates the total received signal strength margin to be applied to the entries in RFCNFL when the FAP decides on the RFCNInUse in order to bias the selection of the most preferred frequency.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.RFCNFLMargin";
-    }
-    leaf fap-coverage-target {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Defines the target value measured in dB for the range of the FAP's FL coverage, in terms of RF propagation loss. This value can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. {{param}} is expressed as a range of the minimum coverage path loss and the maximum coverage path loss with \"..\" (two periods) between the minimum and maximum values, i.e., \"<FAPCoverageTarget_min>..<FAPCoverageTarget_max>\". These values can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels in the presence of co-channel and adjacent channel interference. <FAPCoverageTarget_min> and <FAPCoverageTarget_max> are measured in dB and have a range of [50,150] incremented by 1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPCoverageTarget";
-    }
-    leaf fap-beacon-coverage-target {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Defines the target value measured in dB for the range of the FAP's FL Beacon coverage, in terms of RF propagation loss. This value can be used by the FAP's selfconfiguration algorithms to help derive beacon transmit power levels. {{param}} is expressed as a range of the minimum coverage path loss and the maximum coverage path loss with \"..\" (two periods) between the minimum and maximum values, i.e., \"<BeaconCoverageTarget_min>..<BeaconCoverageTarget_max>\". These values can be used by the FAP's selfconfiguration algorithms to help derive transmit power levels for the beacon(s) in the presence of co-channel and adjacent channel interference.\" <BeaconCoverageTarget_min> and <BeaconCoverageTarget_max> are measured in dB and have a range of [50,150] incremented by 1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPBeaconCoverageTarget";
-    }
-    leaf max-coverage-edge-pilot-strength {
-      type int64;
-      units "0.1 dB";
-      config false;
-      description
-        "The maximum strength of the received pilot energy per chip, Ec, to total received spectral density, Io (signal and noise) desired for FAP users at the edge of the FAP coverage target in units of {{units}}. This value can be used by the FAP's self configuration algorithms to help prevent aggressive transmit power level settings .";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.MaxCoverageEdgePilotStrength";
-    }
-    leaf max-allowable-pilot-strength-degradation {
-      type int64;
-      units "0.1 dB";
-      config false;
-      description
-        "The maximum amount in dB by which the strength of the received pilot energy per chip, Ec, to total received spectral density, Io (signal and noise) for alien users can be degraded in the presence of FAP interference at the edge of FAP coverage, in {{units}} units.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.MaxAllowablePilotStrengthDegradation";
-    }
-    leaf-list rfcnfl-to-protect {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a FL RFCN corresponding to a CDMA2000 carrier that is adjacent to the RFCNFLInUse to be protected from adjacent channel interference. If any of the items in the list are adjacent to the FAP's own FL channel, the FAP MUST take the PilotStrength and total received power spectral density (Io) measured on these channels into account as part of its maximum transmit power selfconfiguration. The RFCNs in the list can belong to any operator, allowing for protection of the FAP operator's own macro layer as well as that of other operators. The list should take into account the ability of the FAP to self-configure its own FL RFCN and so SHOULD include any channels (requiring protection) which can potentially be adjacent to the RFCN selected by the FAP. For example, if only adjacent operator protection is needed and the FAP has the ability to self-configure to any channel owned by its operator, this list would be populated with the RFCNs immediately above and below the range of channels owned by the FAP operator. If an empty string then it indicates that there are no channels adjacent to the FAP that require protection, or that self-configuration of the FAP transmit power is not enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.RFCNFLToProtect";
-    }
-    leaf fap-allowed-adj-chan-coverage-hole {
-      type uint8 {
-        range "30..150";
-      }
-      units "dB";
-      config false;
-      description
-        "Defines the maximum allowed coverage hole created on carriers listed in RFCNFLToProtect by the FAP transmission, measured in {{units}}, in terms of RF propagation loss such that the {{param|MaxAllowablePilotStrengthDegradation}} is maintained outside the {{param}} for MS on that {{param|RFCNFLToProtect}}. This value can be used by the FAP's self configuration algorithms to help derive transmit power levels.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.FAPAllowedAdjChanCoverageHole";
-    }
-    leaf acir {
-      type uint64;
-      units "dB";
-      config false;
-      description
-        "AdjacentChannelInterferenceRatio value in {{units}} to be used when determining the coverage hole created on adjacent channels due to leakage.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.ACIR";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NetworkListenModeConfig.";
-  }
-
-  grouping cdma2000-one-x-ran-access-parameters-g {
-    description
-      "The object used for configuring access parameter messages for 1x. See {{bibref|3GPP2-C.S0005}}.";
-    leaf nom-pwr {
-      type int64;
-      config false;
-      description
-        "Nominal power correction factor used by the mobile in open loop power adjustment. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NomPwr";
-    }
-    leaf init-pwr {
-      type int64;
-      config false;
-      description
-        "Initial power offset used by the mobile in open loop power adjustment. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.InitPwr";
-    }
-    leaf pwr-step-indb {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Power step increment in successive access probes. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PwrStepIndb";
-    }
-    leaf nom-pwr-ext {
-      type uint8 {
-        range "0..1";
-      }
-      units "dBm";
-      config false;
-      description
-        "{{param}} should be zero for BC0 and BC1. For other band classes, {{param}} is 1 if Mobile's correction factor is between -24dBm and -9dBm. Otherwise {{param}} is zero. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NomPwrExt";
-    }
-    leaf apm-auth {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Enabling/disabling global authentication. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.APMAuth";
-    }
-    leaf apm-rand-update-prd {
-      type uint16 {
-        range "16..14400";
-      }
-      units "seconds";
-      config false;
-      description
-        "The period (in {{units}}) that the BSS updates the RAND value sent via APM. Only 2 second multiples accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.APMRandUpdatePrd";
-    }
-    leaf initialpwr {
-      type uint8 {
-        range "0..31";
-      }
-      units "dB";
-      config false;
-      description
-        "Initial power offset for access. The base station shall set this field to the correction factor to be used by mobile stations in the open loop power estimate for the initial transmission on an Access Channel, expressed as a two's complement value in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Initialpwr";
-    }
-    leaf pwr-step {
-      type uint8 {
-        range "0..7";
-      }
-      units "dB";
-      config false;
-      description
-        "Power increment. The base station shall set this field to the value by which mobile stations are to increase their transmit power between successive access probes in an access probe sequence, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PwrStep";
-    }
-    leaf num-step {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Number of access probes. The base station shall set this field to one less than the maximum number of access probes mobile stations are to transmit in a single access probe sequence.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.NumStep";
-    }
-    leaf max-cap-size {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Maximum Access Channel message capsule size. The base station shall set this field to the value in the range 0 to 7. {{param}} is set to three less than the maximum number of Access Channel frames in an Access Channel message capsule.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxCapSize";
-    }
-    leaf preamble-size {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Access Channel preamble length. The base station shall set this field to one less than the number of Access Channel frames that mobile stations are to transmit in each Access Channel preamble.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.PreambleSize";
-    }
-    leaf psist09 {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 0 - 9. A value of 63 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist09";
-    }
-    leaf psist10 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 10 (test Mobile). A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist10";
-    }
-    leaf psist11 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 11 (emergency Mobile). A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist11";
-    }
-    leaf psist12 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 12. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist12";
-    }
-    leaf psist13 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 13. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist13";
-    }
-    leaf psist14 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 14. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist14";
-    }
-    leaf psist15 {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence value for access probes sent by mobiles with Access Overload calls values of 15. A value of 7 indicates such mobiles are not allowed to send access probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Psist15";
-    }
-    leaf msg-psist {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence modifier for access channel attempts transmitting a message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MsgPsist";
-    }
-    leaf reg-psist {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Persistence modifier for registration message transmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.RegPsist";
-    }
-    leaf probe-pn-ran {
-      type uint8 {
-        range "0..9";
-      }
-      config false;
-      description
-        "Time randomization for access channel probes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.ProbePNRan";
-    }
-    leaf acc-tmo {
-      type uint8 {
-        range "0..15";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "Access transmission timeout. Two less than the time the mobile has to wait before determining that the probe is not received by the BSS. It is in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.AccTmo";
-    }
-    leaf probe-bkoff {
-      type uint8 {
-        range "0..15";
-      }
-      units "frames";
-      config false;
-      description
-        "One less than maximum number for randomized delay between successive access probes in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.ProbeBkoff";
-    }
-    leaf bkoff {
-      type uint8 {
-        range "0..15";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "One less than maximum number for randomized delay between successive access sequences in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.Bkoff";
-    }
-    leaf max-req-seq {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Maximum number of access probe sequences for an access request.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxReqSeq";
-    }
-    leaf max-rsp-seq {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Maximum number of access probe sequences for an access response";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.MaxRspSeq";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.AccessParameters.";
-  }
-
-  grouping cdma2000-one-x-ran-system-parameters-g {
-    description
-      "The object used for configuring system parameter messages for 1x";
-    leaf reg-zone {
-      type uint16 {
-        range "0..4095";
-      }
-      config false;
-      description
-        "registration zone number (refer to Section 2.6.5.1.5 of {{bibref|3GPP2-C.S0005}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.RegZone";
-    }
-    leaf total-zones {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Total number of zones the mobile shall retain for zone based registration. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.TotalZones";
-    }
-    leaf zone-timer {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "timer value to be used by the mobile in the zone registration timer. Refer to table 3.7.2.3.2.1-1 of the standard {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.ZoneTimer";
-    }
-    leaf reg-period {
-      type uint8 {
-        range "29..85";
-      }
-      config false;
-      description
-        "Registration period for timer based registration. Registration period is calculated from the formula 2^(REG_PRD/4) x 0.08 seconds. Thus a value of 59 corresponds to 1853.6 seconds (~ 1/2 hour). See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.RegPeriod";
-    }
-    leaf srch-win-a {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Search window size to be used ny the mobile for active set and candidate set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 11 corresponds to 130 chips";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinA";
-    }
-    leaf srch-win-n {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Search window size to be used by the mobile for neighbor set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 8 corresponds to 60 chips";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinN";
-    }
-    leaf srch-win-r {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Search window size to be used by the mobile for remaining set. Refer to table 2.6.6.2.1-1 of {{bibref|3GPP2-C.S0005}}. For example, 8 corresponds to 60 chips";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.SrchWinR";
-    }
-    leaf nghbr-max-age {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "neighbor set maximum age beyond which the mobiles are supposed to drop a neighbor. This is the count of neighbout list updat or extended neighbor list updates a mobile shall receive before removing a neighbor from the neighbor list. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.NghbrMaxAge";
-    }
-    leaf pwr-rep-thresh {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Power control reporting threshold. Number of bad frames a mobile should receive before sending a PMRM message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepThresh";
-    }
-    leaf pwr-rep-frames {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Duration (in number of frames) for measuring bad frames - given by equation 2^(PWR_REP_FRAMES/2) x 5 frames. For example, 6 corresponds to 40 frames. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepFrames";
-    }
-    leaf pwr-thresh-enable {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "enable/disable power measurement report message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrThreshEnable";
-    }
-    leaf pwr-period-enable {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "enable/disable periodic power measurement report message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrPeriodEnable";
-    }
-    leaf pwr-rep-delay {
-      type uint8 {
-        range "0..32";
-      }
-      config false;
-      description
-        "Delay (in unit of four frames) following a PMRM before the mobile restarts counting bad frames for power control measuremnt. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.PwrRepDelay";
-    }
-    leaf rescan {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "If {{param}} is set to 1, the mobiles should restart and reinitialize the System Parameters message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Rescan";
-    }
-    leaf tadd {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Power threshold (in {{units}}) for transferring a neighbor from neighbor set or remaining set to active set. For example, a value of 26 corresponds to -13 dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tadd";
-    }
-    leaf tdrop {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "Drop threshold (in {{units}}) to start a handoff timer to drop a neighbor from active or candidate set. For example, 30 corresponds to -15dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tdrop";
-    }
-    leaf tcomp {
-      type uint8 {
-        range "0..15";
-      }
-      units "0.5 dB";
-      config false;
-      description
-        "If a pilot in condidate set exceeds the power of a pilot in active set by threshold, the mobile shall send a power strenght measurement report message. This threshold is defined in unit of {{units}}. For example, 5 corresponds to a threshold of 2.5 dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.Tcomp";
-    }
-    leaf t-tdrop {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Timer value for which an action is taken by the mobile for a neighbor in candidate set or in active set. Refer to Table 2.6.6.2.3-1 of the {{bibref|3GPP2-C.S0005}} for details. For example, 3 corresponds to four seconds";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.TTdrop";
-    }
-    leaf in-traffic-tadd {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "T-ADD value (in {{units}}) used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTadd";
-    }
-    leaf in-traffic-tdrop {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "T-Drop value (in {{units}}) used in in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTdrop";
-    }
-    leaf in-traffic-tcomp {
-      type uint8 {
-        range "0..15";
-      }
-      units "dB";
-      config false;
-      description
-        "T_Comp value (in {{units}}) used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTcomp";
-    }
-    leaf in-traffic-ttdrop {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "T_Tdrop timer value value used for in-traffic system parameter message. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.InTrafficTtdrop";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.SystemParameters.";
-  }
-
-  grouping cdma2000-one-x-ran-extended-system-parameters-g {
-    description
-      "The object used for configuring extended system parameter messages for 1x";
-    leaf prev {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "protocol revision";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.Prev";
-    }
-    leaf p-min-rev {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "minimum protocol revision";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PMinRev";
-    }
-    leaf delete-for-tmsi {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Delete Foreign TMSI. The base station shall set this field to '1' to cause the mobile station to delete its TMSI if the TMSI was assigned in a different TMSI zone from that specified by the TMSI_ZONE field of this message; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.DeleteForTMSI";
-    }
-    leaf use-tmsi {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Use TMSI indicator. The base station shall set this field to the value shown next field corresponding to the type of MSID that the mobile station is to use on the Access Channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.UseTMSI";
-    }
-    leaf pref-msid-type {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Preferred Access Channel Mobile Station Identifier Type. F294. The base station shall set this field to the value shown as below corresponding to the type of MSDI that the mobile station is to use on the Access Channel. [useTMSI] [prefMSIDType] [description] 0 00 IMSI_S and ESN 0 10 IMSI 0 11 IMSI and ESN 1 10 TMSI; IMSI 1 11 TMSI; IMSI and ESN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PrefMSIDType";
-    }
-    leaf mcc {
-      type uint16 {
-        range "0..1023";
-      }
-      config false;
-      description
-        "Mobile Country Code. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MCC";
-    }
-    leaf imsi1112 {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "11th and 12th digits of IMSI. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.IMSI1112";
-    }
-    leaf tmsi-zone-len {
-      type uint8 {
-        range "1..8";
-      }
-      config false;
-      description
-        "TMSI zone length. The base station shall set this field to the number of octets included in the TMSI_ZONE. The base station shall set this field to a value in the range 1 to 8 inclusive.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.TMSIZoneLen";
-    }
-    leaf tmsi-zone {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "TMSI zone. The base station shall set this field to the TMSI zone number as specified in {{bibref|3GPP2-N.S0010}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.TMSIZone";
-    }
-    leaf bcast-index {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Broadcast slot cycle index. To enable periodic broadcast paging, the base station shall set this field to and unsigned 3-bit number in the range 1-7, equal to the broadcast slot cycle index. To disable periodic broadcast paging, the base station shall set this field to '000'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.BcastIndex";
-    }
-    leaf imsit-supported {
-      type int64;
-      config false;
-      description
-        "1: IMISI_T is supported, 0: IMSI_T is not supported. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.IMSITSupported";
-    }
-    leaf soft-slope {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "The slope in the inequality criterion for adding a pilot to the Active Set, or dropping a pilot from the Active Set. The base station shall set this field as an unsigned binary number.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.SoftSlope";
-    }
-    leaf add-intercept {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "The intercept in the inequality criterion for adding a pilot to the Active Set. The base station shall set this field as a two's complement signed binary number, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AddIntercept";
-    }
-    leaf drop-intercept {
-      type uint8 {
-        range "0..63";
-      }
-      units "dB";
-      config false;
-      description
-        "The intercept in the inequality criterion for dropping a pilot from the Active Set. The base station shall set this field as a two's complement signed binary number, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.DropIntercept";
-    }
-    leaf max-num-alt-so {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Maximum number of alternative service options. The base station shall set this field to the maximum number of alternative service option numbers that the mobile station is allowed to include in the Origination Message or the Page Response Message. For mobile stations with MOB_P_REVs less than seven, the alternative service options are those service options defined in TSB-58B and related to SERVICE_OPTION in Origination Message and the Page Response Message. For mobile stations with MOB_P_REVs equal to or greater than seven, the alternative service options are those service options defined in TSB-58B without service group number assigned and related to SERVICE_OPTION in Origination Message and the Page Response Message. The base station sets this field to a value greater than zero, in addition, the base station shall allow the mobile station with MOB_P_REVs equal to or greater than 7 to include - a 4 or 8-bit service option bitmap in the Origination Message and the Page Response Message; - alternative service option numbers, not limited to MAX_ALT_SO_NUM, in the Enhanced Origination Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MaxNumAltSo";
-    }
-    leaf reselected-included {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "System reselection parameters included. If the base station is including system reselection parameters, the base station shall set this field to '1'; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.ReselectedIncluded";
-    }
-    leaf ec-thresh {
-      type uint64;
-      units "dBm";
-      config false;
-      description
-        "Pilot power threshold. If RESELECTINCLUDED is set to '1', the base station shall include the field EC_THRESH and set this field to: [ (pilot_power_threshold + 115 ) ] where pilot_power_threshold is the pilot power, Ec, in {{units}}/1.23 MHz, below which the mobile station is to perform system reselection; otherwise, the base station shall omit this field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.EcThresh";
-    }
-    leaf ec-io-thresh {
-      type uint64;
-      config false;
-      description
-        "Pilot Ec / Io threshold. If RESELECTINCLUDED is set to '1', the base station shall include the field EC_I0_THRESH and set this field to: [ - 20 x log10 (pilot_threshold) ] where pilot_threshold is the pilot Ec/Io below which the mobile station is to perform system reselection; otherwise, the base station shall omit this field.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.EcIoThresh";
-    }
-    leaf pilot-report {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Pilot reporting indicator. The base station shall set this field to '1' if the mobile station is to report the additional pilots which have pilot strength exceeding T_ADD in all Access Channel messages. The base station shall set this field to '0' if the mobile station is to report the additional pilots which have pilot strengths exceeding T_ADD only in the Origination Message and the Page Response Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.PilotReport";
-    }
-    leaf nghbr-set-entry-info {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Neighbor Set access entry handoff information included indicator. If the base station is including information on the Neighbor Set access entry handoff, the base station shall set this field to '1'; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NghbrSetEntryInfo";
-    }
-    leaf access-ho-order {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access entry handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access entry handoff after receiving a message while performing the Mobile Station Order and Message Processing Operation in the Mobile Station Idle State; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHOOrder";
-    }
-    leaf nghbr-set-access-info {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Neighbor Set access handoff included indicator. If the base station is including information on the Neighbor Set access handoff or access probe handoff, the base station shall set this field to '1', otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NghbrSetAccessInfo";
-    }
-    leaf access-ho {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access handoff; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHO";
-    }
-    leaf access-ho-msg-rsp {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access handoff permitted for message response indicator. If AccessHO is set to '1', the base station shall include this field and set it as described below; otherwise, the base station shall omit this field. The base station shall set this field to '1' if the mobile station is permitted to perform an access handoff after receiving a message and before responding to that message in the System Access State; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessHOMsgRsp";
-    }
-    leaf access-probe-ho {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access probe handoff permitted indicator. If NghbrSetEntryInfo is set to '1', the base station shall set this field to '1' if the base station is permitted to perform an access probe handoff; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccessProbeHO";
-    }
-    leaf acc-ho-list-upd {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access handoff list update permitted indicator. If AccessProbeHO is included and is set to '1', the base station shall set this field to '1' if the mobile station is permitted to update the access handoff list during an access attempt; otherwise, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccHOListUpd";
-    }
-    leaf acc-probe-ho-other-msg {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Access probe handoff permitted for messages other than the Origination Message and the Page Response Message. If AccessProbeHO is set to '1', the base station shall set this field to '1' if the mobile station is permitted to perform an access probe handoff for messages other than the Origination Message and the Page Response. The base station shall set this field to '0' if the mobile station is permitted to perform an access probe handoff only for the Origination Message and the Page Response Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.AccProbeHOOtherMsg";
-    }
-    leaf max-num-probe-ho {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "Maximum number of times that mobile station is permitted to perform an access probe handoff. If AccessProbeHO is set to '1', the base station shall set this field to the maximum number of times the mobile station is allowed to perform an access probe handoff within an access attempt minus one.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.MaxNumProbeHO";
-    }
-    leaf brdcast-gps-assit {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "If {{param}} is set to 1, then Braodcast GPS assist is supported. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.BrdcastGPSAssit";
-    }
-    leaf qpch-supported {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Quick Paging Channel Supported Indication. If the base station supports Quick Paging Channel operation, the base station shall set this field to '1'; otherwise the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHSupported";
-    }
-    leaf num-qpch {
-      type uint8 {
-        range "1..3";
-      }
-      config false;
-      description
-        "Number of Quick Paging Channels. If the base station sets QPCHSUPPORTED to '1', the base station shall include this field and set it as described below; otherwise, the base station shall omit this field. The base station shall set this field to the number of Quick Paging Channels on this CDMA Channel. The base station shall not set this field to '00'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.NumQPCH";
-    }
-    leaf qpch-rate {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Quick Paging Channel indicator rate. See {{bibref|3GPP2-C.S0005}}. {{param}} is set as follows: 0: 4800bps; 1: 9600bps.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHRate";
-    }
-    leaf qpch-pwr-level-page {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Quick Paging Channel paging indicator transmit power level. {{param}} is set as follows: 0: 5 dB below; 1: 4 dB below; 2: 3 dB below; 3: 2 dB below; 4: 1 dB below; 5: Same; 6: 1 dB above; 7: 2dB above.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHPwrLevelPage";
-    }
-    leaf qpc-hcci-supported {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Quick Paging Channel configuration change indicator supported. {{param}} is set as follows: if the base station is to support configuration change indicators on the Quick Paging Channel, {{param}} to '1'; otherwise {{param}} is set to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHcciSupported";
-    }
-    leaf qpch-pwr-level-config {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Quick Paging Channel configuration change indicator CONFIG transmit power level. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.QPCHPwrLevelConfig";
-    }
-    leaf sdb-supported {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Short Data Burst supported indicator. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.SDBSupported";
-    }
-    leaf r-lgain-traffic-pilot {
-      type uint8 {
-        range "0..63";
-      }
-      units "0.125 dB";
-      config false;
-      description
-        "Gain adjustment of the Reverse Traffic Channel relative to the Reverse Pilot Channel for Radio Configurations greater than 2. {{param}} is set to the correction factor to be used by mobile stations in setting the power of a reverse traffic channel, expressed as a two's complement value in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RLgainTrafficPilot";
-    }
-    leaf rvs-pwr-ctrl-delay-incl {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Reverse Power Control Delay included indicator. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RvsPwrCtrlDelayIncl";
-    }
-    leaf rvs-pwr-ctrl-delay {
-      type uint8 {
-        range "0..3";
-      }
-      units "1.25 ms";
-      config false;
-      description
-        "The reverse power control delay. {{param}} is setto the closed-loop reverse power control delay minus one (the closed-loop reverse power control delay is the time between the end of a gated-on reverse PCG and the beginning of the Forward Power Control Subchannel in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.RvsPwrCtrlDelay";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ExtendedSystemParameters.";
-  }
-
-  grouping cdma2000-one-x-ran-forward-pwr-ctr-g {
-    description
-      "The object used for configuring extended channel assignment messages for 1x";
-    leaf fpcfch-init-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Initial Fundamental Channel outer loop Eb/Nt setpoint in {{units}}. For example, 56 corresponds to 7 dB. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHInitSetpt";
-    }
-    leaf fpc-subchan-gain {
-      type int64;
-      units "0.25 dB";
-      config false;
-      description
-        "Forward power control subchannel relative to fwd traffic channel in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCSubchanGain";
-    }
-    leaf rl-gain-adj {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Reverse Traffic Channel power relative to access power in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.RLGainAdj";
-    }
-    leaf fpcfchfer {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Fundamental Channel target frame error rate. Refer to table 3.7.3.3.2.25-2 of {{bibref|3GPP2-C.S0005}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHFER";
-    }
-    leaf fpcfch-min-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Minimum Fundamental Channel Outer Loop Eb/Nt setpoint in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHMinSetpt";
-    }
-    leaf fpcfch-max-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Maximum Fundamental Channel Outer Loop Eb/Nt setpoint in {{units}}. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.FPCFCHMaxSetpt";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.ForwardPwrCtr.";
-  }
-
-  grouping cdma2000-one-x-ran-hard-handoff-g {
-    description
-      "This object provides configurable parameters for 1x Handout";
-    leaf handout-enable {
-      type boolean;
-      config false;
-      description
-        "Enabling handout operation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HandoutEnable";
-    }
-    leaf ho-pilot-power-thresh {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "Pilot power threshold (in {{units}} relative to the FAP pilot power) for handout declaration";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HOPilotPowerThresh";
-    }
-    leaf ho-pilot-duration {
-      type uint8 {
-        range "20..50";
-      }
-      units "100ms";
-      config false;
-      description
-        "Timethreshold for handout declaration (in {{units}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.HOPilotDuration";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.";
-  }
-
-  grouping cdma2000-one-x-ran-hard-handoff-stats-g {
-    description
-      "This object contains statistics for all Handouts of the 1x FAP.";
-    leaf tx-ho-required {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of Handout Required messages sent to the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxHORequired";
-    }
-    leaf rx-ho-command {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of Handout Command messegaes received from the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxHOCommand";
-    }
-    leaf ho-required-rejected {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of HO required requests rejected by the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HORequiredRejected";
-    }
-    leaf ho-required-unanswered {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of HO required requests for which no response received from the MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HORequiredUnanswered";
-    }
-    leaf tx-uhdm {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number UHDMs sent to mobiles";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxUHDM";
-    }
-    leaf rx-ns-ack {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of MSAcks received from the mobile in response to UHDM";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxNSAck";
-    }
-    leaf ho-failure-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of Handout attempts declared as failure";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.HOFailureCount";
-    }
-    leaf call-drop-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total numer of call drops after a HO attempt. RTC lost without MSack";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.CallDropCount";
-    }
-    leaf tx-ho-commence {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of Handout Commenced messages sent to MSC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TxHOCommence";
-    }
-    leaf rx-ho-session-clear {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of session clear commands received form the core";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.RxHOSessionClear";
-    }
-    leaf return-on-failure-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of times a Return On Handoff failure was declared";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.ReturnOnFailureCount";
-    }
-    leaf one-pilot-report-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of times only one pilot was reported in HO Required message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.OnePilotReportCount";
-    }
-    leaf two-pilot-report-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of times only two pilot was reported in HO Required message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.TwoPilotReportCount";
-    }
-    leaf three-pilot-report-count {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of times only three pilot was reported in HO Required message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.ThreePilotReportCount";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.HardHandoff.Stats.";
-  }
-
-  grouping cdma2000-one-x-ran-power-control-g {
-    description
-      "Configuration Managed Object for OTA power control attribute.";
-    leaf one-xpcfpc-incl {
-      type int64;
-      config false;
-      description
-        "Whether Forward power control information included in Power Control message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCIncl";
-    }
-    leaf one-xpcfpcfch-min-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "The value for the minimum Fundamental Channel Outer Loop Eb/Nt setpoint, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCFCHMinSetpt";
-    }
-    leaf one-xpcfpcfch-max-setpt {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "The value for the maximum Fundamental Channel Outer Loop Eb/Nt setpoint, in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFPCFCHMaxSetpt";
-    }
-    leaf one-xpcrpc-incl {
-      type int64;
-      config false;
-      description
-        "Whether reverse Power control information included in the Power Control Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCRPCIncl";
-    }
-    leaf one-xpcfch-chan-adj-gain {
-      type int64;
-      units "0.125 dB";
-      config false;
-      description
-        "Channel adjustment gain (in {{units}}) for Reverse Fundamental Channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCFCHChanAdjGain";
-    }
-    leaf one-xpc-pwr-rep-thresh {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The number of bad frames to be received in a measurement period on the channel which carries the Power Control Subchannel before mobile stations are to generate a Power easurement Report Message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepThresh";
-    }
-    leaf one-xpc-pwr-rep-frames {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "Power control reporting frame count. Number of frames over which the mobile station measures frame errors. For example, 7 corresponds to 55 frames. Refer to {{bibref|3GPP2-C.S0005}} for mapping between this value and the actual frame count.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepFrames";
-    }
-    leaf one-x-pwr-thresh-enable {
-      type int64;
-      config false;
-      description
-        "Threshold report mode indicator. If the mobile station is to generate threshold Power Measurement Report Messages, the base station shall set this field to '1'. If the mobile station is not to generate threshold Power Measurement Report Messages, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPwrThreshEnable";
-    }
-    leaf one-xpc-pwr-period-enable {
-      type int64;
-      config false;
-      description
-        "Periodic report mode indicator. If the mobile station is to generate periodic Power Measurement Report Messages, the base station shall set this field to '1'. If the mobile station is not to generate periodic Power Measurement Report Messages, the base station shall set this field to '0'.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrPeriodEnable";
-    }
-    leaf one-xpc-pwr-rep-delay {
-      type uint8 {
-        range "0..31";
-      }
-      units "4 frames";
-      config false;
-      description
-        "Power report delay. The period that the mobile station waits following a Power Measurement Report Message before restarting frame counting for power control purposes. The base station shall set this field to the power report delay values in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.OneXPCPwrRepDelay";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.PowerControl.";
-  }
-
-  grouping cdma2000-one-x-ran-neighbor-list-g {
-    description
-      "This object contains information common to all neighbors of a sector. This object has only one instance.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.Alias";
-    }
-    leaf pilot-inc {
-      type int64;
-      config false;
-      description
-        "pilot increment policy for this network. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.PilotInc";
-    }
-    leaf one-x-neighbor-index {
-      type int64;
-      description
-        "Macro neighbour index. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborIndex";
-    }
-    leaf neighbor-config {
-      type enumeration {
-        enum "same-config" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - SameConfig";
-        }
-        enum "same-paging" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - SamePaging";
-        }
-        enum "diff-paging" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - DiffPaging";
-        }
-        enum "unknown" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig - Unknown";
-        }
-      }
-      config false;
-      description
-        "Neighbor configuration in terms of number of frequencies having paging channels as defined in Section 3.7.2.3.2 of the {{bibref|3GPP2-C.S0005}} standard";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborConfig";
-    }
-    leaf neighbor-pn {
-      type int64;
-      description
-        "PN offset of the neighbor. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborPN";
-    }
-    leaf search-priority {
-      type enumeration {
-        enum "low" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - Low";
-        }
-        enum "medium" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - Medium";
-        }
-        enum "high" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - High";
-        }
-        enum "very-high" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority - VeryHigh";
-        }
-      }
-      config false;
-      description
-        "priority level for serching this neighbor. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.SearchPriority";
-    }
-    leaf neighbor-band {
-      type enumeration {
-        enum "0" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 0";
-        }
-        enum "1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 1";
-        }
-        enum "2" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 2";
-        }
-        enum "3" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 3";
-        }
-        enum "4" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 4";
-        }
-        enum "5" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 5";
-        }
-        enum "6" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand - 6";
-        }
-      }
-      config false;
-      description
-        "Neighbor band class. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborBand";
-    }
-    leaf neighbor-frequency {
-      type int64;
-      config false;
-      description
-        "frequency of neighbor. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.NeighborFrequency";
-    }
-    leaf frequency-included {
-      type int64;
-      config false;
-      description
-        "Flag to indicate if the channel id included. See {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.FrequencyIncluded";
-    }
-    leaf in-traffic {
-      type int64;
-      config false;
-      description
-        "whether this neighbor can be used for in-traffic neighborlist message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.InTraffic";
-    }
-    leaf overhead-msg {
-      type int64;
-      config false;
-      description
-        "whether this neighbor can be used for overhead neighborlist message";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OverheadMsg";
-    }
-    leaf base-identifier {
-      type int64;
-      config false;
-      description
-        "unique identifire of the neighboring cell (optional)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.BaseIdentifier";
-    }
-    leaf air-interface {
-      type enumeration {
-        enum "one-x" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - OneX";
-        }
-        enum "is95" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - IS95";
-        }
-        enum "hrpd" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - HRPD";
-        }
-        enum "other" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface - Other";
-        }
-      }
-      config false;
-      description
-        "Air interface technology of the neighbor.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.AirInterface";
-    }
-    leaf hand-out-capable {
-      type int64;
-      config false;
-      description
-        "Flag to indicate if the handOutCapability is possible.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.HandOutCapable";
-    }
-    leaf one-x-neighbor-longitude {
-      type string {
-        length "0..16";
-      }
-      config false;
-      description
-        "Longitude for this neighbor. Parameter is a string representing a floating point real number (+/- XXX.YY). Where + for East, - for West, XXX.Y ranges between 0.0 and 180.0 .";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborLongitude";
-    }
-    leaf one-x-neighbor-latitude {
-      type string {
-        length "0..16";
-      }
-      config false;
-      description
-        "Lattitude for this neighbor. Parameter is a string representing a floating point number (+/-XX.Y). + for North, - for South, XX.Y ranges between 0.0 and 90.0.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborLatitude";
-    }
-    leaf one-x-neighbor-msc-id {
-      type uint32 {
-        range "0..16777215";
-      }
-      config false;
-      description
-        "IOS MSCID of the neighbors. See {{bibref|3GPP2-A.S0014}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborMSCId";
-    }
-    leaf one-x-neighbor-ios-cell-id {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Cell Identifier of the neighbor (formatted according to Cell Identification Discriminator = '0000 0010', i.e., 12-bit cell value and 4-bit sector value). See {{bibref|3GPP2-A.S0014}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.OneXNeighborIOSCellId";
-    }
-    leaf force-in-overhead {
-      type boolean;
-      config false;
-      description
-        "If {{param}} is set to {{true}}, the FAP SHOULD include this Neighbor List entry in the Neighbor List overhead messages (see {{bibref|3GPP2-C.S0005}}. Otherwise, {{param}} is set to {{false}}, in which case the FAP MAY include this Neighbor List entry in the Neighbor List overhead messages.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.ForceInOverhead";
-    }
-    leaf included-in-overhead {
-      type boolean;
-      description
-        "If {{param}} is set to {{true}}, the FAP is currently including this Neighbor List entry in the Neighbor List overhead messages (see {{bibref|3GPP2-C.S0005}}. Otherwise, {{param}} is set to {{false}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.IncludedInOverhead";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.NeighborList.{i}.";
-  }
-
-  grouping cdma2000-one-x-ran-apidm-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf association-type {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "The FAP shall set this field to the value shown in {{bibref|3GPP2-C.S0005}} corresponding to the configuration of the base station.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.AssociationType";
-    }
-    leaf apidlen {
-      type uint8 {
-        range "0..15";
-      }
-      config false;
-      description
-        "The FAP shall set this field to the length of the access point identification in units of 16 bits. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APIDLEN";
-    }
-    leaf apid {
-      type binary {
-        length "0..16";
-      }
-      config false;
-      description
-        "Access Point Identification. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APID";
-    }
-    leaf apidmask {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Access Point identification Mask. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.APIDMASK";
-    }
-    leaf iosmscid {
-      type uint32 {
-        range "0..16777215";
-      }
-      config false;
-      description
-        "MSC_ID of the base station. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.IOSMSCID";
-    }
-    leaf ioscellid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "CELL_ID of the base station. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.IOSCELLID";
-    }
-    leaf intrafreqhohysincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTRAFREQHOHYS field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOHYSINCL";
-    }
-    leaf intrafreqhohys {
-      type uint8 {
-        range "0..127";
-      }
-      config false;
-      description
-        "Intra Frequency Handoff Hysteresis. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOHYS";
-    }
-    leaf intrafreqhoslopeincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTRAFREQHOSLOPE field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOSLOPEINCL";
-    }
-    leaf intrafreqhoslope {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "Intra Frequency Handoff Slope. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTRAFREQHOSLOPE";
-    }
-    leaf interfreqhohysincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTERFREQHOHYS field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOHYSINCL";
-    }
-    leaf interfreqhohys {
-      type uint8 {
-        range "0..127";
-      }
-      config false;
-      description
-        "Inter frequency handoff hysteresis. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOHYS";
-    }
-    leaf interfreqhoslopeincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTERFREQHOSLOPE field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOSLOPEINCL";
-    }
-    leaf interfreqhoslope {
-      type uint8 {
-        range "0..63";
-      }
-      config false;
-      description
-        "Inter frequency handoff slope. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQHOSLOPE";
-    }
-    leaf interfreqsrchthincl {
-      type boolean;
-      config false;
-      description
-        "This field indicates whether the INTERFREQSRCHTH field is valid and included in Access Point Identification message. Refer {{bibref|3GPP2-C.S0005}} for definition.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQSRCHTHINCL";
-    }
-    leaf interfreqsrchth {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Inter-frequency search threshold. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.INTERFREQSRCHTH";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDM.";
-  }
-
-  grouping cdma2000-one-x-ran-apidtm-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf apidtextcha-ri-len {
-      type uint16 {
-        range "0..256";
-      }
-      config false;
-      description
-        "Access Point identification Text CHARi field Length ({{param|APIDTEXTCHARi}}). Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTCHARiLEN";
-    }
-    leaf apidtextmsgencoding {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Access Point identification Text message encoding. Refer {{bibref|3GPP2-C.S0005}} and {{bibref|3GPP2-C.R1001}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTMSGENCODING";
-    }
-    leaf apidtextcha-ri {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "Access Point Identification Text. Refer {{bibref|3GPP2-C.S0005}} and {{bibref|3GPP2-C.R1001}} for definitions.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.APIDTEXTCHARi";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APIDTM.";
-  }
-
-  grouping cdma2000-one-x-ran-appim-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf lifetime {
-      type uint8 {
-        range "0..255";
-      }
-      config false;
-      description
-        "Lifetime of the information in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.LIFETIME";
-    }
-    leaf numappirec {
-      type uint16 {
-        range "0..511";
-      }
-      config false;
-      description
-        "The number of entries for {{object|.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.NUMAPPIREC";
-    }
-    leaf appirec-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIRECNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.";
-  }
-
-  grouping cdma2000-one-x-ran-appim-appirec-g {
-    description
-      "This object can be configured only if {{param|.Capabilities.CDMA2000.OneX.FemtoOverheadMessagesCapable}} is set to {{true}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.Alias";
-    }
-    leaf apassntype {
-      type uint8 {
-        range "0..7";
-      }
-      config false;
-      description
-        "Access point association type the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APASSNTYPE";
-    }
-    leaf apsidsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "SID same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APSIDSAMEASPREVIOUS";
-    }
-    leaf apnidsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "NID same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APNIDSAMEASPREVIOUS";
-    }
-    leaf apbandsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Bandclass same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APBANDSAMEASPREVIOUS";
-    }
-    leaf apfreqsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Frequency same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APFREQSAMEASPREVIOUS";
-    }
-    leaf appnrecsameasprevious {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "PN offset same as previous indicator in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECSAMEASPREVIOUS";
-    }
-    leaf apsid {
-      type uint16 {
-        range "0..32767";
-      }
-      description
-        "Access point SID in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APSID";
-    }
-    leaf apnid {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Access point NID in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APNID";
-    }
-    leaf apband {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Access point bandclass in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APBAND";
-    }
-    leaf apfreq {
-      type uint16 {
-        range "0..2047";
-      }
-      description
-        "Access point frequency in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APFREQ";
-    }
-    leaf appnrectype {
-      type uint8 {
-        range "0..7";
-      }
-      description
-        "Access point PN offset in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECTYPE";
-    }
-    leaf appnreclen {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Length in octets of the access point PN record ({{param|APPNREC}}) in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNRECLEN";
-    }
-    leaf appnrec {
-      type binary {
-        length "0..31";
-      }
-      description
-        "Access point PN Record in the access point pilot information record. Refer {{bibref|3GPP2-C.S0005}} for definitions";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.APPNREC";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.RAN.APPIM.APPIREC.{i}.";
-  }
-
-  grouping cdma2000-one-x-pcf-config-g {
-    description
-      "CDMA2000 1x PCF configuration information.";
-    leaf pcfpdsn-health-monitor-interval {
-      type uint8 {
-        range "0..180";
-      }
-      units "seconds";
-      config false;
-      description
-        "PDSN health check monitor interval in {{units}}. Setting the value to 0 disables the PDSN Health Monitoring Feature. Setting any non-zero value enables the PDSN Health Monitoring Feature and sets that non-zero value as the timer interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPDSNHealthMonitorInterval";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.";
-  }
-
-  grouping cdma2000-one-x-pcf-config-pcf-performance-stats-g {
-    description
-      "This object is used in obtaining the PCF stats";
-    leaf a10-setup-failure-no-reason {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with an unspecified reason (A11 error code : 0x80)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureNoReason";
-    }
-    leaf a10-setup-failure-admin-prohibit {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Admin Prohibited\" (A11 error code : 0x81).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureAdminProhibit";
-    }
-    leaf a10-setup-failure-insuff-resources {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Insufficient Resources\" (A11 error code: 0x82).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureInsuffResources";
-    }
-    leaf a10-setup-failure-failed-auth {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureFailedAuth";
-    }
-    leaf a10-setup-failure-id-mismatch {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Id Mismatch\" (A11 error code: 0x85)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureIdMismatch";
-    }
-    leaf a10-setup-failure-malformed-req {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Malformed Request\" (A11 error code: 0x86)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureMalformedReq";
-    }
-    leaf a10-setup-failure-unknown-pdsn {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unknown PDSN\" (A11 error code: 0x88)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureUnknownPDSN";
-    }
-    leaf a10-setup-failure-unsupp-vend-id {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unsupported Vendor Id\" (A11 error code: 0x89)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10SetupFailureUnsuppVendId";
-    }
-    leaf total-a10-closed-by-rnc {
-      type uint64;
-      description
-        "Number of A10 closed by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10ClosedByRnc";
-    }
-    leaf total-a10-closed-by-pdsn {
-      type uint64;
-      description
-        "Number of A10 closed by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10ClosedByPDSN";
-    }
-    leaf total-a10-success-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCFsucceeded.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10SuccessPages";
-    }
-    leaf total-a10-failed-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCF failed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10FailedPages";
-    }
-    leaf total-a10-ingress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} received from the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10IngressBytes";
-    }
-    leaf total-a10-egress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} transmitted to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10EgressBytes";
-    }
-    leaf a10-reg-update-received {
-      type uint64;
-      description
-        "Number of A10 Registration updates received by the FAP PCF";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.A10RegUpdateReceived";
-    }
-    leaf total-a10-dropped-pages {
-      type uint64;
-      description
-        "Number of A10 Pages initiated by PCF dropped";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.TotalA10DroppedPages";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFConfig.PCFPerformanceStats.";
-  }
-
-  grouping cdma2000-one-x-batch-pcfpdsn-g {
-    description
-      "The Batch configuration Object used to configure PDSN table using a start and end IP address. The order of the address is used as part of PDSN selection algorithm, e.g., the first element is considered PDSN number 0. (Refer to {{bibref|3GPP2-A.S0013}}). To get individual PDSN entries use the {{object|.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.Alias";
-    }
-    leaf batch-table-number {
-      type int64;
-      description
-        "The BatchTable Number should be given only once during the creation of a Batch Table. This is the Key Attribute that uniquely identifies a BatchTable entry. This number indicates the index of this batch to determine the PDSN number in the PDSN selection algorithm ({{bibref|3GPP2-A.S0013}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableNumber";
-    }
-    leaf batch-table-start-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "Start IP address of the range of PDSNs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableStartIPAddress";
-    }
-    leaf batch-table-end-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "End IP address of the range of PDSNs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableEndIPAddress";
-    }
-    leaf batch-table-security-parameter-index {
-      type uint32 {
-        range "0 | 256..4294967295";
-      }
-      config false;
-      description
-        "Security Parameter Index to be used.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableSecurityParameterIndex";
-    }
-    leaf batch-table-secret-key {
-      type binary {
-        length "0..16";
-      }
-      config false;
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableSecretKey";
-    }
-    leaf batch-table-ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "IOS Version of this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTableIOSVersion";
-    }
-    leaf batch-table-pdsn-admin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.BatchTablePDSNAdminStatus";
-    }
-    leaf pdsn-type {
-      type enumeration {
-        enum "one-x" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - OneX";
-        }
-        enum "hrpd-rev0" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - HRPDRev0";
-        }
-        enum "hrpd-rev-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType - HRPDRevA";
-        }
-      }
-      config false;
-      description
-        "Indicates the PDSN type for this batch.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.PDSNType";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-one-x-pcfpdsn-g {
-    description
-      "PCFPDSN Object configured for 1x. {{object|.CellConfig.CDMA2000.OneX.BatchPCFPDSN.{i}.}} table should be used to configure PDSN details.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.Alias";
-    }
-    leaf pdsn-number {
-      type int64;
-      description
-        "Index of this PDSN object in the PCFPDSNCollection array. The index is used as PDSN number in PDSN selection algorithm. ({{bibref|3GPP2-A.S0013}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNNumber";
-    }
-    leaf security-parameter-index {
-      type uint32 {
-        range "0 | 256..4294967295";
-      }
-      description
-        "Security Parameter Index used";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.SecurityParameterIndex";
-    }
-    leaf security-key {
-      type binary {
-        length "0..16";
-      }
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.SecurityKey";
-    }
-    leaf ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "HRPD IOS Version of this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.IOSVersion";
-    }
-    leaf pds-nadmin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNadminStatus";
-    }
-    leaf pdsn-health-status {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Reachability status of this PDSN. 0-unreachable, 1-reachable.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNHealthStatus";
-    }
-    leaf pdsnip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "IP address of the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PDSNIPAddress";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-one-x-pcfpdsn-a11-reg-update-stats-g {
-    description
-      "This object is used in obtaining the A11 Registration Update stats for each PDSN";
-    leaf pdsn-number-reg-update-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.PDSNNumberRegUpdatePerf";
-    }
-    leaf pdsnip-address-reg-update-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the A11 Reg Update stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.PDSNIPAddressRegUpdatePerf";
-    }
-    leaf a11-reg-update-received-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-update messages receieved from a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateReceivedPDSN";
-    }
-    leaf a11-reg-update-id-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages receieved from a PDSN that failed ID validation";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateIDCheckFailPDSN";
-    }
-    leaf a11-reg-update-auth-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN that failed Authentication";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAuthCheckFailPDSN";
-    }
-    leaf a11-reg-update-for-unknown-psipdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unknown PSI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateForUnknownPSIPDSN";
-    }
-    leaf a11-reg-update-unspecified-reason-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unspecified reason code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnspecifiedReasonPDSN";
-    }
-    leaf a11-reg-update-ppp-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PPP Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePppTimeoutPDSN";
-    }
-    leaf a11-reg-update-registration-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Registration Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateRegistrationTimeoutPDSN";
-    }
-    leaf a11-reg-update-pdsn-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNErrorPDSN";
-    }
-    leaf a11-reg-update-inter-pcf-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PCF Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPCFHandoffPDSN";
-    }
-    leaf a11-reg-update-inter-pdsn-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PDSN Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPDSNHandoffPDSN";
-    }
-    leaf a11-reg-update-pdsnoamp-intervention-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN OAMP Intervention\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNOAMPInterventionPDSN";
-    }
-    leaf a11-reg-update-accounting-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Accounting Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAccountingErrorPDSN";
-    }
-    leaf a11-reg-update-user-failed-authentication-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"User Failed Authentication\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUserFailedAuthenticationPDSN";
-    }
-    leaf a11-reg-update-unknown-cause-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with Unknown Cause Code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnknownCauseCodePDSN";
-    }
-    leaf a11-reg-update-without-reason-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with PDSN Code Not Included";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateWithoutReasonCodePDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.A11RegUpdateStats.";
-  }
-
-  grouping cdma2000-one-x-pcfpdsn-pcfpdsn-stats-g {
-    description
-      "This object is used in obtaining the PCF PDSN stats for each PDSN";
-    leaf a10-setup-attempts-pdsn {
-      type uint64;
-      description
-        "Number of attempts the PCF made to establish an A10 connection with PDSN. If PCF fails establishing such a connection on this PDSN and goes on to use another PDSN for that connection, it will be counted as two setup attempts.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupAttemptsPDSN";
-    }
-    leaf a10-setup-successes-pdsn {
-      type uint64;
-      description
-        "Number of times PCF succeeded in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupSuccessesPDSN";
-    }
-    leaf a10-setup-blocks-pdsn {
-      type uint64;
-      description
-        "Number of times PCF was blocked in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10SetupBlocksPDSN";
-    }
-    leaf a11-reg-req-denied-id-mismatch-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Id Mismatch\" (A11 error code: 0x85) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedIdMismatchPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-pdsnpdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Unknown PDSN\" (A11 error code: 0x88)by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownPDSNPDSN";
-    }
-    leaf a11-reg-req-denied-no-reason-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with no reason code by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedNoReasonPDSN";
-    }
-    leaf a11-reg-req-denied-admin-prohibit-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Admin Prohibited\" (A11 error code : 0x81) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedAdminProhibitPDSN";
-    }
-    leaf a11-reg-req-denied-insuff-resources-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Insufficient Resources\" (A11 error code: 0x82) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedInsuffResourcesPDSN";
-    }
-    leaf a11-reg-req-denied-failed-auth-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedFailedAuthPDSN";
-    }
-    leaf a11-reg-req-denied-malformed-req-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Malformed Request\" (A11 error code: 0x86) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedMalformedReqPDSN";
-    }
-    leaf a11-reg-req-denied-unsupp-vend-id-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Unsupported Vendor Id\" (A11 error code: 0x8D)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnsuppVendIdPDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-unavailable-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Unavailable\" (A11 error code: 0x89)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelUnavailablePDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-tbit-not-set-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Tbit Not Set\" (A11 error code: 0x8A)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelTbitNotSetPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-error-code-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with an unspecified reason (A11 error code : 0x80) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownErrorCodePDSN";
-    }
-    leaf a10-reg-req-for-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 setup";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-re-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 reregistration";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-release-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 realease";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReleaseRetransmissionsPDSN";
-    }
-    leaf pdsn-number-pdsn-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.PDSNNumberPDSNPerf";
-    }
-    leaf pds-nip-address-pdsn-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.PDSNipAddressPDSNPerf";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.PCFPDSN.{i}.PCFPDSNStats.";
-  }
-
-  grouping cdma2000-one-x-stats-g {
-    description
-      "This object contains 1x FAP statistics aggregated over all connections of all users over all sectors.";
-    leaf registration-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of registration attempts";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationAttempts";
-    }
-    leaf registration-fails {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of registrations failed";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationFails";
-    }
-    leaf registrations-blocked {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Unauthorized registrations blocked by admission control";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RegistrationsBlocked";
-    }
-    leaf page-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of attemots to page requests received from the core";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.PageAttempts";
-    }
-    leaf page-fails {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of page requests rejected or not responded";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.PageFails";
-    }
-    leaf voice-call-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of voice call attempts";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallAttempts";
-    }
-    leaf voice-call-failures {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of voice call attempts which failed for various reasons";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallFailures";
-    }
-    leaf voice-calls-blocked {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of voice calls blocked due to lack of authorization";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallsBlocked";
-    }
-    leaf voice-calls-dropped {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Number of voice calls dropped due to various reasons other than a normal call release";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.VoiceCallsDropped";
-    }
-    leaf data-call-attempts {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data call attempts";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallAttempts";
-    }
-    leaf data-call-failures {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data call attemots failed for various reasons";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallFailures";
-    }
-    leaf data-calls-blocked {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data calls failed due to lack of authorization";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallsBlocked";
-    }
-    leaf data-calls-dropped {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of data calls dropped due to reasons other than a normal release.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.DataCallsDropped";
-    }
-    leaf average-voice-call {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "milliseconds";
-      description
-        "Average voice call duration in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageVoiceCall";
-    }
-    leaf average-data-call {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "milliseconds";
-      description
-        "Average data call duration in {{units}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageDataCall";
-    }
-    leaf average-session-in-sec {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "seconds";
-      description
-        "Average session duration in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.AverageSessionInSec";
-    }
-    leaf total-voice-calls {
-      type uint32 {
-        range "0..4294967295";
-      }
-      units "seconds";
-      description
-        "Total number of successful voice calls";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.TotalVoiceCalls";
-    }
-    leaf total-data-calls {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Total number of successful data calls";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.TotalDataCalls";
-    }
-    leaf fwd-voice-packet-drop-percentage {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Percentage of voice packets dropped in MAC due to signaling";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.FwdVoicePacketDropPercentage";
-    }
-    leaf rev-voice-packet-drop-percentage {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Percentage of voice packets received with bad FQI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RevVoicePacketDropPercentage";
-    }
-    leaf fwd-avg-data-rate {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Average data rate of the scheduler on the forward link";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.FwdAvgDataRate";
-    }
-    leaf rev-avg-data-rate {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Average data rate of the scheduler on reverse link";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.RevAvgDataRate";
-    }
-    leaf bc-index-zero-to-one-transitions {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Num of times the bcIndex was changed from 0 to 1 in the Extended System Parameters Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.BcIndexZeroToOneTransitions";
-    }
-    leaf bc-index-one-to-zero-transitions {
-      type uint32 {
-        range "0..4294967295";
-      }
-      description
-        "Num of times the bcIndex was changed from 0 to 1 in the Extended System Parameters Message.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.BcIndexOneToZeroTransitions";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Stats.";
-  }
-
-  grouping cdma2000-one-x-redirect-g {
-    description
-      "CDMA2000 1x service redirection parameters.";
-    leaf redirect-channel-number {
-      type uint16 {
-        range "0..2047";
-      }
-      config false;
-      description
-        "The channel number set from ACS that the FAP uses to redirect the MS in case of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..2047.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.RedirectChannelNumber";
-    }
-    leaf redirect-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The bandclass set from ACS that the FAP uses to redirect the MS incase of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the MS. The supported range is 0..9.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.RedirectBandClass";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.OneX.Redirect.";
-  }
-
-  grouping cdma2000-hrpd-g {
-    description
-      "The object contains attributes related to HRPD.";
-    leaf pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSNNumberOfEntries";
-    }
-    leaf max-batch-pcfpdsn-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.MaxBatchPCFPDSNEntries";
-    }
-    leaf batch-pcfpdsn-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSNNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.";
-  }
-
-  grouping cdma2000-hrpd-ran-g {
-    description
-      "The object contains attributes related to HRPD RAN.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.";
-  }
-
-  grouping cdma2000-hrpd-ran-rf-g {
-    description
-      "Contains the details related to HRPD RF";
-    leaf hrpd-car-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The Band Class this HRPD Carrier object is to operate on. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDCarBandClass";
-    }
-    leaf-list rfcnfl {
-      type string {
-        length "0..64";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a FL Radio Frequency Channel Number (RFCN). Self-configuration for RFCNFL is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for RFCNFL is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|RFCNFLInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. If multiple items are specified, they are done in the order of preference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFL";
-    }
-    leaf rfcnfl-in-use {
-      type uint64;
-      description
-        "The FL RFCN being used by the FAP. Self-configuration for RFCNFL is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.RFCNFLConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.RFCNFLSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|RFCNFL}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|RFCNFL}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RFCNFLInUse";
-    }
-    leaf-list pilot-pn {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "{{list}} (maximum length 32) (minimum 1 items) of strings. Each item is a pilot PN offset in units of 64 PN chips. Self-configuration for pilot PN is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the FAP's self-configuration capability for Pilot PN Offset is available and enabled, this parameter MAY contain more than one item and the FAP is expected to select one from the list for {{param|PilotPNInUse}}. If the self-configuration capability is not available or not enabled, then this parameter SHOULD contain only a single item. The multiplicity of the PN offsets values can also be expressed by defining a range using \"..\" (two periods) between two values. In this case, the combination of two values defines the lower-bound and upper-bound of the range inclusive. The order of the items has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPN";
-    }
-    leaf pilot-pn-in-use {
-      type uint64;
-      config false;
-      description
-        "The Pilot PN Offset being used by the FAP. Self-configuration for Pilot PN Offset is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.PilotPNConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.PilotPNSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the choices provided in {{param|PilotPN}}. If the self-configuration capability is not available or not enabled, then this parameter contains the first value in {{param|PilotPN}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.PilotPNInUse";
-    }
-    leaf maxfap-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Defines the maximum transmission power allowed on the FAP. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<;Pmax_low>..<;Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum transmit power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. <;Pmax_low> and <;Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPower";
-    }
-    leaf maxfap-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      config false;
-      description
-        "The maximum transmission power measured in {{units}} currently used by the FAP. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of {{units}}. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power. Self-configuration for maximum transmission power is controlled by {{param|.Capabilities.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.HRPD.SelfConfig.MaxFAPTxPowerSelfConfigEnable}} from an enabled perspective. If the self-configuration capability is available and enabled, this parameter indicates the value selected by the FAP among the range provided in {{param|MaxFAPTxPower}}. If the self-configuration capability is not available or not enabled, then this parameter contains a value selected by the ACS.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.MaxFAPTxPowerInUse";
-    }
-    leaf control-channel-rate {
-      type int64;
-      config false;
-      description
-        "The data rate of the Control Channel of this HRPD SectorElement object. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-10.4.1.3.2.4";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ControlChannelRate";
-    }
-    leaf sync-capsule-offset {
-      type int64;
-      config false;
-      description
-        "The offset from the control channel cycle boundary at which the synchronous capsules are to be transmitted for this HRPD SectorElement object. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-9.2.6.1.4.1.2";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SyncCapsuleOffset";
-    }
-    leaf rab-length {
-      type int64;
-      config false;
-      description
-        "The Reverse Activity Bit (RAB) length measured in slots for this HRPD SectorElement object. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-7.8.6.2.2, Table 9.7.6.2-2.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RabLength";
-    }
-    leaf rab-offset {
-      type int64;
-      config false;
-      description
-        "The Reverse Activity Bit (RAB) offset for this HRPD SectorElement object. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification, section-7.8.6.2.2.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RabOffset";
-    }
-    leaf sector-id {
-      type binary {
-        length "16";
-      }
-      config false;
-      description
-        "The 128 bit Sector ID for this HRPD SectorElement object. The Sector ID is used in the computation of the long code mask. See {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SectorID";
-    }
-    leaf color-code {
-      type int64;
-      config false;
-      description
-        "The HRPD color code associated with this sector-element. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ColorCode";
-    }
-    leaf subnet-mask-length {
-      type int64;
-      units "bits";
-      config false;
-      description
-        "{{param}} is the length of the HRPD SubnetMask in {{units}}. See {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.SubnetMaskLength";
-    }
-    leaf hrpd-sec-el-reverse-link-silence-duration {
-      type int64;
-      units "frames";
-      config false;
-      description
-        "Duration of the Reverse Link Silence Interval in units of {{units}}. The duration of the silence interval to be maintained on the reverse link. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.1.4.1.1.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDSecElReverseLinkSilenceDuration";
-    }
-    leaf hrpd-sec-el-reverse-link-silence-period {
-      type int64;
-      units "frames";
-      config false;
-      description
-        "The Reverse Link Silence Interval is defined as the time interval of duration ReverseLinkSilenceDuration frames that starts at times T where T is the CDMA System Time in units of {{units}} and it satisfies the following equation: T mod (2048 x 2^(ReverseLinkSilencePeriod) - 1) = 0. The period in the access cycle duration for which the silence interval shall be maintained on the reverse link. {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.1.4.1.1.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.HRPDSecElReverseLinkSilencePeriod";
-    }
-    leaf open-loop-adjust {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "The open loop adjustment (in {{units}}) for the access parameters of this sector-element. FAP sets this field to the negative of the nominal power to be used by ATs in the open loop power estimate, expressed as an unsigned value in units of 1 dB. The value used by the AT is -1 times the value of this field. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.OpenLoopAdjust";
-    }
-    leaf probe-initial-adjust {
-      type int64;
-      units "dB";
-      config false;
-      description
-        "The probe initial adjustment (in {{units}}) for the access parameters of this sector-element. FAP sets this field to the correction factor to be used by ATs in the open loop power estimate for the initial transmission on the Access Channel, expressed as a two's complement value in units of 1 dB. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbeInitialAdjust";
-    }
-    leaf probe-num-steps {
-      type int64;
-      config false;
-      description
-        "The number of power level steps for access probes for the access parameters of this sector-element. FAP sets this field to the maximum number of access probes ATs are to transmit in a single access probe sequence. The access network shall set this field to a value in the range [1 ... 15]. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbeNumSteps";
-    }
-    leaf probe-power-step {
-      type int64;
-      units "0.5 dB";
-      config false;
-      description
-        "The power step size (in {{units}}) applied to successive probes on the access channel associated with this sector-element. Probe power increase step. FAPsets this field to the increase in power between probes, in resolution of 0.5 dB. Reference -{{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ProbePowerStep";
-    }
-    leaf a-persistence {
-      type string {
-        length "0..16";
-      }
-      config false;
-      description
-        "The A-Persistence vector, as per HRPD specification, for controlling contention access on the access channel associated with this sector-element. Reference - {{bibref|3GPP2-C.S0024-B}}, CDMA2000 High Rate Packet Data Air Interface Specification. Section-9.4.6.2.6. Format is \"0xAABBCCDD\", where AA, BB, CC, DD are in the range \"01\" through \"3F\" hex.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.APersistence";
-    }
-    leaf rssirab-threshold {
-      type int64;
-      units "0.125 dBm";
-      config false;
-      description
-        "RAB threshold for RSSI based RAB algorithm.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RSSIRABThreshold";
-    }
-    leaf load-rab-threshold {
-      type uint16 {
-        range "0..480";
-      }
-      units "0.125 dB";
-      config false;
-      description
-        "RAB threshold for Load based RAB algorithm in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.LoadRABThreshold";
-    }
-    leaf connection-rate-limit {
-      type uint8 {
-        range "0..3";
-      }
-      config false;
-      description
-        "4 different configurations.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.ConnectionRateLimit";
-    }
-    leaf rfe-rl-balance-ratio {
-      type uint8 {
-        range "1..20";
-      }
-      config false;
-      description
-        "Config Parameter for DRC based rate control";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.RfeRLBalanceRatio";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RAN.RF.";
-  }
-
-  grouping cdma2000-hrpd-pcf-config-g {
-    description
-      "CDMA2000 HRPD PCF configuration parameters.";
-    leaf pcfpdsn-health-monitor-interval {
-      type uint8 {
-        range "0..180";
-      }
-      units "seconds";
-      config false;
-      description
-        "PDSN health check monitor interval in {{units}}. Setting the value to 0 disables the PDSN Health Monitoring Feature. Setting any non-zero value enables the PDSN Health Monitoring Feature and sets that non-zero value as the timer interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPDSNHealthMonitorInterval";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.";
-  }
-
-  grouping cdma2000-hrpd-pcf-config-pcf-performance-stats-g {
-    description
-      "This object is used in obtaining the PCF stats";
-    leaf a10-setup-failure-no-reason {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with an unspecified reason (A11 error code : 0x80)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureNoReason";
-    }
-    leaf a10-setup-failure-admin-prohibit {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Admin Prohibited\" (A11 error code : 0x81).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureAdminProhibit";
-    }
-    leaf a10-setup-failure-insuff-resources {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Insufficient Resources\" (A11 error code: 0x82).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureInsuffResources";
-    }
-    leaf a10-setup-failure-failed-auth {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureFailedAuth";
-    }
-    leaf a10-setup-failure-id-mismatch {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Id Mismatch\" (A11 error code: 0x85)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureIdMismatch";
-    }
-    leaf a10-setup-failure-malformed-req {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Malformed Request\" (A11 error code: 0x86)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureMalformedReq";
-    }
-    leaf a10-setup-failure-unknown-pdsn {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unknown PDSN\" (A11 error code: 0x88)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureUnknownPDSN";
-    }
-    leaf a10-setup-failure-unsupp-vend-id {
-      type uint64;
-      description
-        "Number of times the PCF was refused an A10 connection with a reason \"Unsupported Vendor Id\" (A11 error code: 0x89)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10SetupFailureUnsuppVendId";
-    }
-    leaf total-a10-closed-by-rnc {
-      type uint64;
-      description
-        "Number of A10 closed by the FAP RNC";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10ClosedByRnc";
-    }
-    leaf total-a10-closed-by-pdsn {
-      type uint64;
-      description
-        "Number of A10 closed by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10ClosedByPDSN";
-    }
-    leaf total-a10-success-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCFsucceeded";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10SuccessPages";
-    }
-    leaf total-a10-failed-pages {
-      type uint64;
-      description
-        "Numebr of A10 Pages initiated by PCF failed";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10FailedPages";
-    }
-    leaf total-a10-ingress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} received from the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10IngressBytes";
-    }
-    leaf total-a10-egress-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of {{units}} transmitted to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10EgressBytes";
-    }
-    leaf a10-reg-update-received {
-      type uint64;
-      description
-        "Number of A10 Registration updates received by the FAP PCF";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.A10RegUpdateReceived";
-    }
-    leaf total-a10-dropped-pages {
-      type uint64;
-      description
-        "Number of A10 Pages initiated by PCF dropped";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.TotalA10DroppedPages";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFConfig.PCFPerformanceStats.";
-  }
-
-  grouping cdma2000-hrpd-batch-pcfpdsn-g {
-    description
-      "The Batch configuration Object used to configure PDSN table using a start and end IP address. The order of the address is used as part of PDSN selection algorithm, e.g., the first element is considered PDSN number 0 (refer to {{bibref|3GPP2-A.S0008}} and {{bibref|3GPP2-A.S0009}}). To get individual PDSN entries use the {{object|.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.Alias";
-    }
-    leaf batch-table-number {
-      type int64;
-      description
-        "The BatchTable Number should be given only once during the creation of a Batch Table. This is the Key Attribute that uniquely identifies a BatchTable entry";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableNumber";
-    }
-    leaf batch-table-start-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "Start IP address of the range of PDSNs";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableStartIPAddress";
-    }
-    leaf batch-table-end-ip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "End IP address of the range of PDSNs";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableEndIPAddress";
-    }
-    leaf batch-table-security-parameter-index {
-      type uint32 {
-        range "0 | 256..4294967295";
-      }
-      description
-        "Security Parameter Index to be used";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableSecurityParameterIndex";
-    }
-    leaf batch-table-secret-key {
-      type binary {
-        length "0..16";
-      }
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableSecretKey";
-    }
-    leaf batch-table-ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "HRPD IOS Version of this PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTableIOSVersion";
-    }
-    leaf batch-table-pdsn-admin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.BatchTablePDSNAdminStatus";
-    }
-    leaf pdsn-type {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Indicates the PDSN type for this batch.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.PDSNType";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-g {
-    description
-      "PCFPDSN Object configured for HRPD. {{object|.CellConfig.CDMA2000.HRPD.BatchPCFPDSN.{i}.}} table should be used to configure PDSN details.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.Alias";
-    }
-    leaf pdsn-number {
-      type int64;
-      description
-        "Index of this PDSN object in the PCFPDSNCollection array. The index is used as PDSN number in PDSN selection algorithm (refer to {{bibref|3GPP2-A.S0008}} and {{bibref|3GPP2-A.S0009}})";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNNumber";
-    }
-    leaf security-parameter-index {
-      type uint32 {
-        range "256..4294967295";
-      }
-      description
-        "Security Parameter Index used";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.SecurityParameterIndex";
-    }
-    leaf security-key {
-      type binary {
-        length "0..16";
-      }
-      description
-        "Secret key in 32-digit hexidecimal representation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.SecurityKey";
-    }
-    leaf ios-version {
-      type enumeration {
-        enum "tia-878-ballot" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-ballot";
-        }
-        enum "tia-878-1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-1";
-        }
-        enum "tia-878-a" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-a";
-        }
-        enum "tia-878-legacy" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion - TIA-878-legacy";
-        }
-      }
-      config false;
-      description
-        "HRPD IOS Version of this PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.IOSVersion";
-    }
-    leaf pds-nadmin-status {
-      type int64;
-      config false;
-      description
-        "Administrative status of this PDSN. 0- UP 1-DOWN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNadminStatus";
-    }
-    leaf pdsn-health-status {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Reachability status of this PDSN. 0-unreachable, 1-reachable.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNHealthStatus";
-    }
-    leaf pdsnip-address {
-      type inet:ip-address;
-      config false;
-      description
-        "IP address of the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PDSNIPAddress";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-a11-session-update-stats-g {
-    description
-      "This object is used in obtaining the A11 Session Update stats for each PDSN";
-    leaf pdsn-number-session-update-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.PDSNNumberSessionUpdatePerf";
-    }
-    leaf pdsnip-address-session-update-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the A11 Session Update stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.PDSNIPAddressSessionUpdatePerf";
-    }
-    leaf a11-session-update-received-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateReceivedPDSN";
-    }
-    leaf a11-session-update-accepted-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates accepted for a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateAcceptedPDSN";
-    }
-    leaf a11-session-update-extended-apipdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN that contained extended API";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateExtendedAPIPDSN";
-    }
-    leaf a11-session-update-for-unknown-psipdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN that conatained unknown PSI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateForUnknownPSIPDSN";
-    }
-    leaf a11-session-update-denied-id-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"ID Check Failed \"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedIDCheckFailPDSN";
-    }
-    leaf a11-session-update-denied-auth-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code\"Auth Check Failed\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedAuthCheckFailPDSN";
-    }
-    leaf a11-session-update-denied-reason-unspecified-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Unspecified Reason\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedReasonUnspecifiedPDSN";
-    }
-    leaf a11-session-update-denied-poorly-formed-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Poorly Formed\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedPoorlyFormedPDSN";
-    }
-    leaf a11-session-update-denied-session-params-not-updated-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Parameters Not Updated\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedSessionParamsNotUpdatedPDSN";
-    }
-    leaf a11-session-update-denied-qo-s-profile-id-not-supported-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"QoS Profile Id Not Updated\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedQoSProfileIdNotSupportedPDSN";
-    }
-    leaf a11-session-update-denied-insufficient-resources-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code \"Insufficient Resources\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedInsufficientResourcesPDSN";
-    }
-    leaf a11-session-update-denied-handoff-in-progress-pdsn {
-      type uint64;
-      description
-        "Number of A11 Session Updates received from this PDSN denied due to reason code\"Handoff In Progress\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.A11SessionUpdateDeniedHandoffInProgressPDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11SessionUpdateStats.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-a11-reg-update-stats-g {
-    description
-      "This object is used in obtaining the A11 Registration Update stats for each PDSN.";
-    leaf pdsn-number-reg-update-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.PDSNNumberRegUpdatePerf";
-    }
-    leaf pdsnip-address-reg-update-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the A11 Reg Update stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.PDSNIPAddressRegUpdatePerf";
-    }
-    leaf a11-reg-update-received-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-update messages receieved from a PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateReceivedPDSN";
-    }
-    leaf a11-reg-update-id-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages receieved from a PDSN that failed ID validation";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateIDCheckFailPDSN";
-    }
-    leaf a11-reg-update-auth-check-fail-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN that failed Authentication";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAuthCheckFailPDSN";
-    }
-    leaf a11-reg-update-for-unknown-psipdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unknown PSI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateForUnknownPSIPDSN";
-    }
-    leaf a11-reg-update-unspecified-reason-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with unspecified reason code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnspecifiedReasonPDSN";
-    }
-    leaf a11-reg-update-ppp-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PPP Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePppTimeoutPDSN";
-    }
-    leaf a11-reg-update-registration-timeout-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Registration Timeout\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateRegistrationTimeoutPDSN";
-    }
-    leaf a11-reg-update-pdsn-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNErrorPDSN";
-    }
-    leaf a11-reg-update-inter-pcf-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PCF Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPCFHandoffPDSN";
-    }
-    leaf a11-reg-update-inter-pdsn-handoff-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Inter PDSN Handoff\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateInterPDSNHandoffPDSN";
-    }
-    leaf a11-reg-update-pdsnoamp-intervention-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"PDSN OAMP Intervention\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdatePDSNOAMPInterventionPDSN";
-    }
-    leaf a11-reg-update-accounting-error-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"Accounting Error\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateAccountingErrorPDSN";
-    }
-    leaf a11-reg-update-user-failed-authentication-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with reason code \"User Failed Authentication\"";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUserFailedAuthenticationPDSN";
-    }
-    leaf a11-reg-update-unknown-cause-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with Unknown Cause Code";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateUnknownCauseCodePDSN";
-    }
-    leaf a11-reg-update-without-reason-code-pdsn {
-      type uint64;
-      description
-        "Number of A10 Reg-Update messages received from a PDSN with PDSN Code Not Included";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.A11RegUpdateWithoutReasonCodePDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.A11RegUpdateStats.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-aux-a10-stats-g {
-    description
-      "This object is used in obtaining the Auxillary A10 Connection stats for each PDSN";
-    leaf pdsn-number-aux-a10-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.PDSNNumberAuxA10Perf";
-    }
-    leaf pdsnip-address-aux-a10-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.PDSNIPAddressAuxA10Perf";
-    }
-    leaf aux-a10-connections-created-in-first-reg-req-pdsn {
-      type uint64;
-      description
-        "Number of Auxillary A10 Connections Created in the First Registration Request Message to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10ConnectionsCreatedInFirstRegReqPDSN";
-    }
-    leaf aux-a10-connections-created-in-subsequent-reg-req-pdsn {
-      type uint64;
-      description
-        "Number of Auxillary A10 Connections Created in Subsequent Registration Request Messages to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10ConnectionsCreatedInSubsequentRegReqPDSN";
-    }
-    leaf aux-a10-fwd-ip-flows-created-pdsn {
-      type uint64;
-      description
-        "Number of Forward IP Flows created with this PDSN for the Auxillary A10s";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10FwdIpFlowsCreatedPDSN";
-    }
-    leaf aux-a10-rev-ip-flows-created-pdsn {
-      type uint64;
-      description
-        "Number of Forward IP Flows created with this PDSN for the Auxillary A10s";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10RevIpFlowsCreatedPDSN";
-    }
-    leaf aux-a10-ip-flow-accounting-reg-requests-pdsn {
-      type uint64;
-      description
-        "Number of IP flow Accounting Reg Requests sent to the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.AuxA10IpFlowAccountingRegRequestsPDSN";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.AuxA10Stats.";
-  }
-
-  grouping cdma2000-hrpd-pcfpdsn-pcfpdsn-stats-g {
-    description
-      "This object is used in obtaining the PCF PDSN stats for each PDSN";
-    leaf a10-setup-attempts-pdsn {
-      type uint64;
-      description
-        "Number of attempts the PCF made to establish an A10 connection with PDSN. If PCF fails establishing such a connection on this PDSN and goes on to use another PDSN for that connection, it will be counted as two setup attempts.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupAttemptsPDSN";
-    }
-    leaf a10-setup-successes-pdsn {
-      type uint64;
-      description
-        "Number of times PCF succeeded in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupSuccessesPDSN";
-    }
-    leaf a10-setup-blocks-pdsn {
-      type uint64;
-      description
-        "Number of times PCF was blocked in establishing an A10 connection with this PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10SetupBlocksPDSN";
-    }
-    leaf a11-reg-req-denied-id-mismatch-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Id Mismatch\" (A11 error code: 0x85) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedIdMismatchPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-pdsnpdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Unknown PDSN\" (A11 error code: 0x88)by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownPDSNPDSN";
-    }
-    leaf a11-reg-req-denied-no-reason-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with no reason code by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedNoReasonPDSN";
-    }
-    leaf a11-reg-req-denied-admin-prohibit-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Admin Prohibited\" (A11 error code : 0x81) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedAdminProhibitPDSN";
-    }
-    leaf a11-reg-req-denied-insuff-resources-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Insufficient Resources\" (A11 error code: 0x82) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedInsuffResourcesPDSN";
-    }
-    leaf a11-reg-req-denied-failed-auth-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Mobile Node Authentication Failure\" (A11 error code: 0x83) by the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedFailedAuthPDSN";
-    }
-    leaf a11-reg-req-denied-malformed-req-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with a reason \"Malformed Request\" (A11 error code: 0x86) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedMalformedReqPDSN";
-    }
-    leaf a11-reg-req-denied-unsupp-vend-id-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Unsupported Vendor Id\" (A11 error code: 0x8D)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnsuppVendIdPDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-unavailable-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Unavailable\" (A11 error code: 0x89)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelUnavailablePDSN";
-    }
-    leaf a11-reg-req-denied-reverse-tunnel-tbit-not-set-pdsn {
-      type uint64;
-      description
-        "Number ofA11 Registration Request denied with a reason \"Reverse Tunnel Tbit Not Set\" (A11 error code: 0x8A)by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedReverseTunnelTbitNotSetPDSN";
-    }
-    leaf a11-reg-req-denied-unknown-error-code-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Request denied with an unspecified reason (A11 error code : 0x80) by the PDSN";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A11RegReqDeniedUnknownErrorCodePDSN";
-    }
-    leaf a10-reg-req-for-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 setup";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-re-registration-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 reregistration";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReRegistrationRetransmissionsPDSN";
-    }
-    leaf a10-reg-req-for-release-retransmissions-pdsn {
-      type uint64;
-      description
-        "Number of A11 Registration Requests retransmitted during A10 realease";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.A10RegReqForReleaseRetransmissionsPDSN";
-    }
-    leaf pdsn-number-pdsn-perf {
-      type int64;
-      description
-        "The PDSN Number";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.PDSNNumberPDSNPerf";
-    }
-    leaf pds-nip-address-pdsn-perf {
-      type inet:ip-address;
-      description
-        "The IP Address of the PDSN for which the PCF PDSN stats is obtained";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.PDSNipAddressPDSNPerf";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.PCFPDSN.{i}.PCFPDSNStats.";
-  }
-
-  grouping cdma2000-hrpd-redirect-g {
-    description
-      "CDMA2000 HRPD service redirection parameters.";
-    leaf redirect-channel-number {
-      type uint16 {
-        range "0..2047";
-      }
-      config false;
-      description
-        "The channel number set from ACS that the FAP uses to redirect the AT in case of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..2047.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.RedirectChannelNumber";
-    }
-    leaf redirect-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "The bandclass set from ACS that the FAP uses to redirect the AT incase of closed access or when exceeding session capacity. The ACS shall push this if the the operator has provided this information in a configuration file. If this is not configured, the FAP rejects the AT. The supported range is 0..9.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.RedirectBandClass";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.Redirect.";
-  }
-
-  grouping cdma2000-hrpd-call-control-stats-g {
-    description
-      "Details on call control stats";
-    leaf num-session-setup-attempts {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of session instances that are created on a specific FAP when a regular session setup attempt is initiated with an unknown RATI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupAttempts";
-    }
-    leaf num-session-setup-successful {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of successful regular session setup attempts that are initiated with an unknown RATI";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupSuccessful";
-    }
-    leaf num-current-sessions-established {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of successfully established HRPD Sessions that exists on a specific picasso";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumCurrentSessionsEstablished";
-    }
-    leaf num-page-messages-to-at {
-      type uint64;
-      description
-        "The number of times a Page Message was sent to the AT to facilitate the setup of a connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumPageMessagesToAt";
-    }
-    leaf num-pages-succeeded {
-      type uint64;
-      description
-        "The total number of pages succeeded";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumPagesSucceeded";
-    }
-    leaf num-connections-opened {
-      type uint64;
-      description
-        "Total HRPD Connections Opened";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumConnectionsOpened";
-    }
-    leaf num-session-setups-failed-to-term-auth {
-      type uint64;
-      description
-        "This parameter is a counter for the total number of HRPD session setups that are aborted due to various failure reasons";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumSessionSetupsFailedToTermAuth";
-    }
-    leaf num-forward-rlp-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "Number of HRPD packets(bytes) sent from PDSN to AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumForwardRLPBytes";
-    }
-    leaf num-reverse-rlp-bytes {
-      type uint64;
-      units "bytes";
-      description
-        "No. of HRPD packets(bytes) sent from AT to PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumReverseRLPBytes";
-    }
-    leaf average-session-setup-time {
-      type uint64;
-      units "10 ms";
-      description
-        "This parameter maintains a record of the average session setup time for all successfully setup sessions on a specific FAP. The average session setup time is in units of {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.AverageSessionSetupTime";
-    }
-    leaf average-page-setup-time {
-      type uint64;
-      description
-        "The average connection setup time in response to a FAP initiated page. The time is from initiation of Page to the time the connection is declared open";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.AveragePageSetupTime";
-    }
-    leaf num-conn-setups-aborted {
-      type uint64;
-      description
-        "The number of connection setups that were aborted";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumConnSetupsAborted";
-    }
-    leaf num-forward-pre-rlp-dropped-pkts {
-      type uint64;
-      description
-        "Number of packets dropped at Pre-RLP queue due to overflow in forward direction. This counter will also be written to the performance log.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.NumForwardPreRLPDroppedPkts";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.CallControlStats.";
-  }
-
-  grouping cdma2000-hrpd-qo-s-stats-g {
-    description
-      "This object is used in obtaining the QoS Common Performance stats";
-    leaf num-qo-s-subscriber-profile-updates-rcvd {
-      type uint64;
-      description
-        "Number of subscriber QoS profile updates received from the PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSubscriberProfileUpdatesRcvd";
-    }
-    leaf num-pdsnip-flow-updates-msg-rcvd {
-      type uint64;
-      description
-        "Number of PDSN IP flow update messages received from PDSN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumPDSNIPFlowUpdatesMsgRcvd";
-    }
-    leaf num-pdsnip-flow-updates-msg-failed {
-      type uint64;
-      description
-        "Number of PDSN IP Flow updates messages that failed per RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumPDSNIPFlowUpdatesMsgFailed";
-    }
-    leaf num-qo-s-setup-requests-received {
-      type uint64;
-      description
-        "Number of QoS setup requests received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsReceived";
-    }
-    leaf num-qo-s-setup-requests-accepted {
-      type uint64;
-      description
-        "Number of QoS setup requests received from the AT that the FAP RNC accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsAccepted";
-    }
-    leaf num-qo-s-setup-requests-rejected {
-      type uint64;
-      description
-        "Number of QoS setup requests from the AT that the FAP RNC rejected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSSetupRequestsRejected";
-    }
-    leaf num-reservation-on-requests-received {
-      type uint64;
-      description
-        "Number of ReservationOnRequest messages received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsReceived";
-    }
-    leaf num-reservation-on-requests-accepted {
-      type uint64;
-      description
-        "Number of ReservationOnRequest messages received from the AT that the FAP RNC accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsAccepted";
-    }
-    leaf num-reservation-on-requests-rejected {
-      type uint64;
-      description
-        "Number of ReservationOnRequest message received from the AT that the FAP RNC rejected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsRejected";
-    }
-    leaf num-reservation-on-requests-failed {
-      type uint64;
-      description
-        "Number of ReservationOnRequest message received from the AT that the FAP RNC failed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOnRequestsFailed";
-    }
-    leaf num-fwd-reservation-on-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a FwdReservationOn message to the AT to activate a forward Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumFwdReservationOnMessagesSent";
-    }
-    leaf num-rev-reservation-on-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a RevReservationOn message to the AT to activate a reverse Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumRevReservationOnMessagesSent";
-    }
-    leaf num-reservation-off-requests-received {
-      type uint64;
-      description
-        "Number of ReservationOffRequest message is received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsReceived";
-    }
-    leaf num-reservation-off-requests-accepted {
-      type uint64;
-      description
-        "Number of ReservationOffRequest messages received from the AT that the FAP RNC accepted.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsAccepted";
-    }
-    leaf num-reservation-off-requests-rejected {
-      type uint64;
-      description
-        "Number of ReservationOffRequest messages received from the AT that the FAP RNC rejected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumReservationOffRequestsRejected";
-    }
-    leaf num-fwd-reservation-off-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a FwdReservationOff message to the AT to deactivate a forward Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumFwdReservationOffMessagesSent";
-    }
-    leaf num-rev-reservation-off-messages-sent {
-      type uint64;
-      description
-        "Number of times the FAP RNC sent a RevReservationOff message to the AT to deactivate a reverse Reservation.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumRevReservationOffMessagesSent";
-    }
-    leaf num-qo-s-release-requests-received {
-      type uint64;
-      description
-        "Number of QoS release requests received from the AT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumQoSReleaseRequestsReceived";
-    }
-    leaf num-connection-close-initiated-no-ran-rsr {
-      type uint64;
-      description
-        "Number of times FAP RNC initiated a connection close in response to the ReservationOnRequest because it did not have the RAN resources to satisfy one or more Reservations included in the request.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.NumConnectionCloseInitiatedNoRANRsr";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.QoSStats.";
-  }
-
-  grouping cdma2000-hrpd-rnc-sig-apps-stats-g {
-    description
-      "Stats for HRPD RNC signaling procedures.";
-    leaf c-num-page-requests {
-      type uint64;
-      description
-        "Number of HRPD Page requests made after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumPageRequests";
-    }
-    leaf s-num-page-requests {
-      type uint64;
-      description
-        "Number of HRPD Page requests made before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumPageRequests";
-    }
-    leaf s-num-connection-setup-attempts {
-      type uint64;
-      description
-        "Number of HRPD Connection setups attempted before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumConnectionSetupAttempts";
-    }
-    leaf c-num-connection-setup-attempts {
-      type uint64;
-      description
-        "Number of HRPD Connection setups attempted after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumConnectionSetupAttempts";
-    }
-    leaf s-num-connection-setup-success {
-      type uint64;
-      description
-        "Number of HRPD Connection setups succeeded before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumConnectionSetupSuccess";
-    }
-    leaf c-num-connection-setup-success {
-      type uint64;
-      description
-        "Number of HRPD Connection setups succeeded after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumConnectionSetupSuccess";
-    }
-    leaf s-num-normal-connection-closes {
-      type uint64;
-      description
-        "The number of HRPD connections that were closed normally before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNormalConnectionCloses";
-    }
-    leaf c-num-normal-connection-closes {
-      type uint64;
-      description
-        "The number of HRPD connections that were closed normally after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNormalConnectionCloses";
-    }
-    leaf s-num-total-connection-closes {
-      type uint64;
-      description
-        "The total number of HRPD connections closed, normally or abnormally, data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumTotalConnectionCloses";
-    }
-    leaf c-num-total-connection-closes {
-      type uint64;
-      description
-        "The total number of HRPD connections closed, normally or abnormally, after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumTotalConnectionCloses";
-    }
-    leaf s-num-rf-related-drops {
-      type uint64;
-      description
-        "Number of HRPD connection close because of RTC loss or No FTC before data has flowed on the A10 connection";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDrops";
-    }
-    leaf c-num-rf-related-drops {
-      type uint64;
-      description
-        "Number of HRPD connection close because of RTC loss or No FTC after data has flowed on the A10 connection";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDrops";
-    }
-    leaf s-num-page-responses {
-      type uint64;
-      description
-        "Total number of successful responses to HRPD page requests that were received from the AT before the final page timeout and before data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumPageResponses";
-    }
-    leaf c-num-page-responses {
-      type uint64;
-      description
-        "Total number of successful responses to HRPD page requests that were received from the AT before the final page timeout and after data has flowed on the A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumPageResponses";
-    }
-    leaf s-num-rf-related-drops-rtc-lost {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped before data has flowed on the A10 connection because a Reverse Traffic Channel (RTC) lost indication was received, and as a result, no reverse link for the connection were available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDropsRTCLost";
-    }
-    leaf c-num-rf-related-drops-rtc-lost {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped after data has flowed on the A10 connection because a Reverse Traffic Channel (RTC) lost indication was received, and as a result, no reverse link for the connection were available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDropsRTCLost";
-    }
-    leaf s-num-rf-related-drops-no-ftc {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection because of indications that there is no active Forward Traffic Channel (FTC) available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumRFRelatedDropsNoFTC";
-    }
-    leaf c-num-rf-related-drops-no-ftc {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection because of indications that there is no active Forward Traffic Channel (FTC) available.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumRFRelatedDropsNoFTC";
-    }
-    leaf s-num-network-error-drops {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the open A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDrops";
-    }
-    leaf c-num-network-error-drops {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the open A10 connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDrops";
-    }
-    leaf s-num-network-error-drops-rnc-internal {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the A10 connection due to internal failures.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsRNCInternal";
-    }
-    leaf c-num-network-error-drops-rnc-internal {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the A10 connection due to internal failures.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsRNCInternal";
-    }
-    leaf s-num-network-error-drops-rnc-external {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because the FAP closed the A10 connection due to the PDSN unreachablity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsRNCExternal";
-    }
-    leaf c-num-network-error-drops-rnc-external {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because the FAP closed the A10 connection due to the PDSN unreachablity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsRNCExternal";
-    }
-    leaf s-num-network-error-drops-a10-setup-fail {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed before data has flowed on the A10 connection because there was failure in the A10 connection set-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumNetworkErrorDropsA10SetupFail";
-    }
-    leaf c-num-network-error-drops-a10-setup-fail {
-      type uint64;
-      description
-        "This statistic counts the number of open HRPD connections that were closed after data has flowed on the A10 connection because there was failure in the A10 connection set-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumNetworkErrorDropsA10SetupFail";
-    }
-    leaf s-num-misc-drops-sector-down {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection because there is only one pilot available for the connection and a sector down indication has been received for that pilot.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsSectorDown";
-    }
-    leaf c-num-misc-drops-sector-down {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection because there is only one pilot available for the connection and a sector down indication has been received for that pilot.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsSectorDown";
-    }
-    leaf s-num-misc-drops-internal-error {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped before data has flowed on the A10 connection due to internal software errors.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsInternalError";
-    }
-    leaf c-num-misc-drops-internal-error {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection due to internal software errors.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsInternalError";
-    }
-    leaf c-num-misc-drops-state-mismatch {
-      type uint64;
-      description
-        "This statistic counts the number of HRPD connections that were dropped after data has flowed on the A10 connection when the FAP finds a state mismatch between itself andthe AT. Such a mismatch is found when a connection request message is received from the AT, and the connection is already open as perceived by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsStateMismatch";
-    }
-    leaf s-num-misc-drops-state-mismatch {
-      type uint64;
-      description
-        "This statistic counts the number of connections that were dropped before the demarcation point when the FAP finds a state mismatch between itself and the AT. Such a mismatch is found when a connection request message is received from the AT, and the connection is already open as perceived by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsStateMismatch";
-    }
-    leaf s-num-misc-drops-due-to-rlp {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped before data has flowed on the A10 connection at the request of the Radio Link Protocol. This request is generated when the HDR Fast Path component finds that the reset acknowledgment timeout has expired for the connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.SNumMiscDropsDueToRLP";
-    }
-    leaf c-num-misc-drops-due-to-rlp {
-      type uint64;
-      description
-        "This statistic counts the number of times the HRPD connection was dropped after data has flowed on the A10 connection at the request of the Radio Link Protocol. This request is generated when the HDR Fast Path component finds that the reset acknowledgment timeout has expired for the connection.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.CNumMiscDropsDueToRLP";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.RNCSigAppsStats.";
-  }
-
-  grouping cdma2000-hrpd-access-auth-config-g {
-    description
-      "HRPD A12-related service stats.";
-    leaf a12-access-authentication-enable {
-      type int64;
-      config false;
-      description
-        "Flag to enable/Disable HRPD Access Authentication. {{true}} - Enabled, {{false}} - Disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.A12AccessAuthenticationEnable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthConfig.";
-  }
-
-  grouping cdma2000-hrpd-access-auth-stats-g {
-    description
-      "This object is used in obtaining the Access Authentication related stats.";
-    leaf an-ppp-authentication-attempts-by-node {
-      type uint64;
-      description
-        "Number of AnPppAuthentications attempted by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AnPppAuthenticationAttemptsByNode";
-    }
-    leaf a12-requests-sent-from-node {
-      type uint64;
-      description
-        "Number of A12 Access Requests Sent from the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RequestsSentFromNode";
-    }
-    leaf a12-rejects-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Rejects received from the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RejectsReceivedByNode";
-    }
-    leaf a12-accepts-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Accepts received by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12AcceptsReceivedByNode";
-    }
-    leaf a12-access-challenges-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Challenges received by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12AccessChallengesReceivedByNode";
-    }
-    leaf a12-retransmits-sent-from-node {
-      type uint64;
-      description
-        "Number of A12 Access Requests retransmitted from the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12RetransmitsSentFromNode";
-    }
-    leaf a12-timeouts-events-for-node {
-      type uint64;
-      description
-        "Number of A12 Timeout events occurred at the FAP due to unreachability of the AAA server/ no response from the AAA server.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TimeoutsEventsForNode";
-    }
-    leaf a12-malformedresponse-received-by-node {
-      type uint64;
-      description
-        "Number of Malformed A12 Access Response received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12MalformedresponseReceivedByNode";
-    }
-    leaf a12-bad-authenticator-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Access Response with Bad Authenticator received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12BadAuthenticatorReceivedByNode";
-    }
-    leaf a12-unknown-type-received-by-node {
-      type uint64;
-      description
-        "Number of A12 Packet of unknown type received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownTypeReceivedByNode";
-    }
-    leaf a12-unknown-pkt-received-by-node {
-      type uint64;
-      description
-        "Number of unknown A12 packets received by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownPktReceivedByNode";
-    }
-    leaf a12-unknown-server-received-by-node {
-      type uint64;
-      description
-        "Number of A12 packets received from unknown AAA server by the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12UnknownServerReceivedByNode";
-    }
-    leaf a12-other-failure-occurences-in-node {
-      type uint64;
-      description
-        "Number of A12 packets failed due to other failure occurences in the AAA server.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12OtherFailureOccurencesInNode";
-    }
-    leaf a12-by-pass-num-ats-with-unknown-mfr-code-by-node {
-      type uint64;
-      description
-        "Number of ATs with UnknowMfrCode detected in the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12ByPassNumAtsWithUnknownMfrCodeByNode";
-    }
-    leaf a12-tx-path-fail-due-to-an-ppp-error-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"AnPPP Error\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToAnPppErrorByNode";
-    }
-    leaf a12-tx-path-fail-due-to-no-server-available-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"No Server Available\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToNoServerAvailableByNode";
-    }
-    leaf a12-tx-path-fail-due-to-internal-error-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"internal error\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToInternalErrorByNode";
-    }
-    leaf a12-tx-path-fail-due-to-no-packet-id-available-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"No packet id available\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToNoPacketIdAvailableByNode";
-    }
-    leaf a12-tx-path-fail-due-to-transmit-error-by-node {
-      type uint64;
-      description
-        "Number of times sending of A12 packet failed in Tx Path in the FAP RNC due to \"Transmit Error\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12TxPathFailDueToTransmitErrorByNode";
-    }
-    leaf a12-svr-timeouts-for-node {
-      type uint64;
-      description
-        "Number of A12 server timeouts happened in the FAP RNC.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12SvrTimeoutsForNode";
-    }
-    leaf a12-enh-ta-bypass-lcp-timeout-by-node {
-      type uint64;
-      description
-        "Number of LCP timeouts happened in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassLcpTimeoutByNode";
-    }
-    leaf a12-enh-ta-bypass-chap-timeout-by-node {
-      type uint64;
-      description
-        "Number of CHAP timeouts happened in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapTimeoutByNode";
-    }
-    leaf a12-enh-ta-bypass-chap-invalid-by-node {
-      type uint64;
-      description
-        "Number of CHAP Challenge response received from the AT when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapInvalidByNode";
-    }
-    leaf a12-enh-ta-bypass-chap-nai-matches-a12-bypass-list-by-node {
-      type uint64;
-      description
-        "Number of times the CHAP NAI received from the AT matches with A12Bypass List in the FAP RNC when Enhanced TA A12Bypass mode is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12EnhTaBypassChapNaiMatchesA12BypassListByNode";
-    }
-    leaf a12-session-ta-timeout-by-node {
-      type uint64;
-      description
-        "Number of times Session timeouts occurred due to TA.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.A12SessionTaTimeoutByNode";
-    }
-    leaf access-auth-failed-due-to-session-close-total {
-      type uint64;
-      description
-        "Number of times the Access Authenticaiton failed due to Sesion close.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AccessAuthFailedDueToSessionCloseTotal";
-    }
-    leaf access-auth-succeeded {
-      type uint64;
-      description
-        "Number of times the Access Authenticaiton succeeded.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.AccessAuthSucceeded";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.HRPD.AccessAuthStats.";
-  }
-
-  grouping cdma2000-beacon-g {
-    description
-      "This object models the attributes to control the generalized beacon. The beacon is modeled as a beacon frame composed of multiple beacon intervals. The beacon frame start is time-aligned to the instant when 1x 80ms paging frames and HRPD control channel frames align (occurs once every 1.28s).";
-    leaf beacon-admin-status {
-      type enumeration {
-        enum "locked" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus - Locked";
-        }
-        enum "unlocked" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus - Unlocked";
-        }
-      }
-      config false;
-      description
-        "Allows administrative control of beacon.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconAdminStatus";
-    }
-    leaf beacon-oper-status {
-      type enumeration {
-        enum "locked" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Locked";
-        }
-        enum "unlocked" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Unlocked";
-        }
-        enum "fault" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus - Fault";
-        }
-      }
-      description
-        "Reports operational status of beacon.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconOperStatus";
-    }
-    leaf hrpd-beacon-enable {
-      type boolean;
-      config false;
-      description
-        "If set to {{true}} the HRPD-specific beacon described by {{object|HRPDBeaconList}} object is enabled. If set to {{false}}, all HRPD beacons (if any) are contained in the BeaconList object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconEnable";
-    }
-    leaf period {
-      type uint16 {
-        range "0..32767";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "Length and periodicity of the beacon frame in {{units}}. Reference - {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.Period";
-    }
-    leaf maxfap-beacon-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Maximum transmission power allowed on the FAP Beacon frequencies. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<;Pmax_low>..<;Pmax_high>\". {{param}} identifies the limits between which the FAP can self-configure its maximum beacon transmit power. Self-configuration for maximum beacon transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable}} from an enabled perspective. <;Pmax_low> and <;Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPower";
-    }
-    leaf maxfap-beacon-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      description
-        "Maximum beacon transmission power measured in {{units}} currently used by the FAP on any beacon frequency. Actual values of the maximum transmission power are -40.0 dBm to 20.0 dBm in steps of 0.1 dB. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxFAPBeaconTxPowerInUse";
-    }
-    leaf beacon-pch-pwr-percentage {
-      type int64;
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Paging Channel (expressed in {{units}}). For example, 93333 means 93.333% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconPchPwrPercentage";
-    }
-    leaf max-hrpd-beacon-tx-power {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Maximum transmission power allowed on the dedicated HRPD beacon. {{param}} is expressed as a range of allowed maximum power levels with \"..\" (two periods) between the upper and lower values, i.e. \"<Pmax_low>..<Pmax_high>\". MaxHRPDBeaconTxPower identifies the limits between which the FAP can self-configure its maximum beacon transmit power. Self-configuration for maximum beacon transmission power is controlled by {{param|.Capabilities.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerConfig}} from an availability perspective and {{param|.FAPControl.CDMA2000.OneX.SelfConfig.MaxFAPBeaconTxPowerSelfConfigEnable}} from an enabled perspective. <Pmax_low> and <Pmax_high> are measured in dBm and have a range of -40.0 to 20.0 incremented by 0.1 dB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPower";
-    }
-    leaf max-hrpd-beacon-tx-power-in-use {
-      type int64;
-      units "0.1 dBm";
-      description
-        "Maximum beacon transmission power measured in dBm currently used by the FAP on any beacon frequency. Actual values of the maximum transmission power are -40.0 dBm to 20.0 in units of {{units}}. The value of {{param}} divided by 10 yields the actual value of the maximum transmission power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconTxPowerInUse";
-    }
-    leaf beacon-pilot-pwr-percentage {
-      type int64;
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Pilot Channel (expressed in {{units}}). For example, 19950 means 19.950% of total.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconPilotPwrPercentage";
-    }
-    leaf beacon-sync-pwr-percentage {
-      type int64;
-      units "0.001 percent";
-      config false;
-      description
-        "Percentage of Max Sector Power Used By Sync Channel (expressed in {{units}}). For example, 23458 means 23.458% of the max sector power.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconSyncPwrPercentage";
-    }
-    leaf max-beacon-list-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.Beacon.BeaconList.{i}.}} object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxBeaconListEntries";
-    }
-    leaf beacon-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconListNumberOfEntries";
-    }
-    leaf max-hrpd-beacon-list-entries {
-      type uint64;
-      description
-        "Maximum number of entries in the {{object|.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.}} object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.MaxHRPDBeaconListEntries";
-    }
-    leaf hrpd-beacon-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.";
-  }
-
-  grouping cdma2000-beacon-beacon-list-g {
-    description
-      "This object models an individual beacon intervals. It may be used to model both 1x and HRPD beacons with offset from start of beacon frame measured in 80ms slots.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Alias";
-    }
-    leaf beacon-index {
-      type int64;
-      description
-        "Instance identifier for this beacon interval. Allowed range is 0..(BeaconListNumberOfEntries-1).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconIndex";
-    }
-    leaf offset {
-      type uint16 {
-        range "0..32767";
-      }
-      config false;
-      description
-        "Offset from the start of the beacon frame in 80ms slots.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Offset";
-    }
-    leaf duration {
-      type uint16 {
-        range "0..32767";
-      }
-      units "80 ms slots";
-      config false;
-      description
-        "Duration of this beacon interval in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.Duration";
-    }
-    leaf transmission-format {
-      type enumeration {
-        enum "0" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat - 0";
-        }
-        enum "1" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat - 1";
-        }
-      }
-      config false;
-      description
-        "Determines if this beacon interval shall transmit HRPD (HRPD) or CDMA2000 1x.{HRPD=\"0\", 1x=\"1\"}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TransmissionFormat";
-    }
-    leaf beacon-band-class {
-      type int64;
-      config false;
-      description
-        "Band class for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconBandClass";
-    }
-    leaf beacon-channel-freq {
-      type uint16 {
-        range "0..2016";
-      }
-      config false;
-      description
-        "Channel number for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconChannelFreq";
-    }
-    leaf-list beacon-pn-offset {
-      type string {
-        length "0..32";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a pilot PN offset of the pilot beacon for this channel in units of 64 PN chips. If this parameter contains more than one item, then the FAP is expected to select one from the list as the PilotPN to be used for this channel. If the self-configuration capability is not to be used, then this parameter SHALL contain only a single item.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconPNOffset";
-    }
-    leaf tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "TX power for the beacon interval (in {{units}}). If self-configuration of the Beacon Tx Power is enabled, then this value is determined by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.TxPower";
-    }
-    leaf beacon-sid {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "SID for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconSID";
-    }
-    leaf beacon-nid {
-      type uint16 {
-        range "0..32767";
-      }
-      config false;
-      description
-        "NID for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconNID";
-    }
-    leaf beacon-pzid {
-      type uint64;
-      config false;
-      description
-        "PZID for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.BeaconPZID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.BeaconList.{i}.";
-  }
-
-  grouping cdma2000-beacon-hrpd-beacon-list-g {
-    description
-      "This object models individual HRPD beacon intervals where the beacon start is expressed as a number of HRPD control channel slots from the start of the beacon frame.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Alias";
-    }
-    leaf beacon-index {
-      type int64;
-      description
-        "Instance identifier for this beacon interval. Allowed range is 0..(HRPDBeaconListNumberOfEntries-1).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconIndex";
-    }
-    leaf c-coffset {
-      type uint16 {
-        range "0..2048";
-      }
-      config false;
-      description
-        "Offset of the current beacon interval from the start of the beacon frame, in Control Channel cycles. The HRPDBeaconList interval SHOULD not overlap in time with any beacon interval for the same channel defined in the BeaconList object.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.CCoffset";
-    }
-    leaf offset {
-      type int64;
-      config false;
-      description
-        "Start of beacon transmission with respect to the Control Channel boundary.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Offset";
-    }
-    leaf duration {
-      type uint16 {
-        range "0..256";
-      }
-      config false;
-      description
-        "Duration of the beacon transmission within a Control Channel cycle, in slots. Beacon is transmitted starting offset from the CC boundary for duration. Transmission restarts offset from the next CC boundary, given that beacon interval spans more than 1 CC cycles.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.Duration";
-    }
-    leaf num-c-ccycles {
-      type uint8 {
-        range "0..48";
-      }
-      config false;
-      description
-        "Number of Control Channel Cycles this beacon interval spans.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.NumCCcycles";
-    }
-    leaf beacon-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      config false;
-      description
-        "Band class for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconBandClass";
-    }
-    leaf beacon-channel-freq {
-      type uint16 {
-        range "0..2016";
-      }
-      config false;
-      description
-        "Channel number for this beacon interval.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconChannelFreq";
-    }
-    leaf-list beacon-pn-offset {
-      type string {
-        length "0..256";
-      }
-      config false;
-      min-elements 1;
-      description
-        "{{list}} Each item is a pilot PN offset of the pilot beacon for this channel in units of 64 PN chips. If this parameter contains more than one item, then the FAP is expected to select one from the list as the PilotPN to be used for this channel. If the self-configuration capability is not to be used, then this parameter SHALL contain only a single item.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.BeaconPNOffset";
-    }
-    leaf tx-power {
-      type int64;
-      units "dBm";
-      config false;
-      description
-        "TX power for the beacon interval. If self-configuration of the HRPD Beacon Tx Power is enabled, then this value is determined by the FAP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.TxPower";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.CellConfig.CDMA2000.Beacon.HRPDBeaconList.{i}.";
-  }
-
-  grouping rem-g {
-    description
-      "This object contains parameters relating to REM (Radio Environment Measurement).";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.";
-  }
-
-  grouping rem-umts-g {
-    description
-      "This object contains Radio Environment Measurement parameters for UMTS FAP.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.";
-  }
-
-  grouping rem-umts-wcdma-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the UMTS system.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling - Delayed";
-        }
-      }
-      default "immediate";
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      default "true";
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanOnBoot";
-    }
-    leaf scan-periodically {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enable Periodic Radio Environment Measurement on all enabled RAT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.PeriodicTime";
-    }
-    leaf-list remplmn-list {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each item is a PLMN ID to measure. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. If {{empty}}, then no specific PLMN ID is provided, meaning that the FAP is required to scan all available PLMN IDs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.REMPLMNList";
-    }
-    leaf-list rem-band-list {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "{{list}} Each item is a UMTS Band to measure. Each band is identified in by a roman numeral {{bibref|3GPP-TS.25.104}}. If {{empty}} then no specific UMTS band is provided, meaning that the FAP is required to scan all available bands. The order of the band indicator has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.REMBandList";
-    }
-    leaf-list uarfcndl-list {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each entry is a UARFCN in the DL direction to measure. If {{empty}}, then no specific UARFCN is provided, meaning that the FAP is required to scan all UARFCNs that it is aware of.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.UARFCNDLList";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last UMTS system radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.LastScanTime";
-    }
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.UMTS.WCDMA.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.CellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.";
-  }
-
-  grouping rem-umts-wcdma-cell-g {
-    leaf rem-umts-wcdma-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.";
-  }
-
-  grouping rem-umts-wcdma-cell-rf-g {
-    description
-      "Table indicating the RF aspect of the discovered cells.";
-    leaf uarfcndl {
-      type uint16 {
-        range "0..16383";
-      }
-      description
-        "The UTRA Absolute Radio Frequency Channel Number (UARFCN) in the DL direction of an FDD mode cell. {{bibref|3GPP-TS.25.433}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.UARFCNDL";
-    }
-    leaf cpichrscp {
-      type int64;
-      units "dBm";
-      description
-        "Received signal level in {{units}} of the CPICH channel. (Ref. 3GPP TS 25.133)";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.CPICHRSCP";
-    }
-    leaf cpich-ec-no {
-      type int64;
-      units "dB";
-      description
-        "Measured EcNo. (energy per chip to interference power density) in {{units}} received in the downlink pilot channel. Actual values of the range are -24.0 {{units}} to 0.0 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 2 yields the actual value of the range. {{bibref|3GPP-TS.25.133|Section 9.1.2.3}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.CPICHEcNo";
-    }
-    leaf rssi {
-      type int64;
-      units "dBm";
-      description
-        "This measurement is for Inter-frequency handover evaluation, measured in total {{units}} in the band. {{bibref|3GPP-TS.25.133|Section9.1.3}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.RSSI";
-    }
-    leaf primary-scrambling-code {
-      type uint16 {
-        range "0..511";
-      }
-      description
-        "Primary scrambling code.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.PrimaryScramblingCode";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.RF.";
-  }
-
-  grouping rem-umts-wcdma-cell-bcch-g {
-    description
-      "Table containing the system information broadcast in the BCCH logical channel.";
-    leaf plmn-type {
-      type enumeration {
-        enum "gsm-map" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType - GSM-MAP";
-        }
-        enum "ansi-41" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType - ANSI-41";
-        }
-      }
-      description
-        "Type of Public Land Mobile Network (PLMN).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNType";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Location Area Code (LAC) as defined in SIB 1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the LAI (Location Area ID) {{bibref|3GPP-TS.23.003}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC) as defined in SIB 1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the RAI (Routing Area ID) {{bibref|3GPP-TS.23.003}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.RAC";
-    }
-    leaf cell-id {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Cell Identity as defined in SIB3 {{bibref|3GPP-TS.25.331|Section10.3.2.2}}. {{bibref|3GPP-TS.24.008}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CellID";
-    }
-    leaf pcpich-tx-power {
-      type int64;
-      description
-        "Primary Common Pilot Channel (CPICH) power level on SIB 5/6 {{bibref|3GPP-TS.25.331|Section10.3.6.55}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.PCPICHTxPower";
-    }
-    leaf csg-indicator {
-      type boolean;
-      description
-        "The CSG-indicator Information Element (IE) in the Master Information Block reflects the access mode of the CSG cell. It is hence dependent on the value of {{param|.AccessMgmt.UMTS.AccessMode}}. If {{true}} the CSG-indicator IE is present, reflecting closed access to the CSG cell. If {{false}} the CSG-indicator IE is absent, reflecting the access mode as \"not a closed-access\". {{bibref|3GPP-TS.25.331|Section 10.2.48.8.1}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGIndicator";
-    }
-    leaf csgid {
-      type uint32 {
-        range "0..134217727";
-      }
-      description
-        "Defines the Closed Subscriber Group of the Access Control List. FAP broadcasts this CSG ID in SIB3 {{bibref|3GPP-TS.25.331|Section10.3.2.8}} depending on the AccessMode.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGID";
-    }
-    leaf-list uarfcndl-list {
-      type uint16 {
-        range "0..16383";
-      }
-      max-elements "128";
-      description
-        "{{list}} Each item is a UTRA Absolute Radio Frequency Channel Number (UARFCN} in the DL direction dedicated to the CSG cells. {{param}} is broadcast in SIB 11bis {{bibref|3GPP-TS.25.331|Section 10.2.48.8.14a}}. The corresponding UTRA Absolute Radio Frequency Channel Number (UARFCN} in the UL direction is derived based on the fixed offset applicable for the frequency band.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.UARFCNDLList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.";
-  }
-
-  grouping rem-umts-wcdma-cell-bcch-csgpsc-split-info-g {
-    description
-      "This object contains parameters relating to the Primary Scambling Code (PSC) split information for the CSG. Defined in SIB3/11bis {{bibref|3GPP-TS.25.331|Section 10.3.2.8 and 10.3.2.9}}.";
-    leaf start-psc-range1-coefficient {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "The value of this Information Element (IE) multiplied by 8 specifies the start PSC value of the first PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.StartPSCRange1Coefficient";
-    }
-    leaf number-of-ps-cs {
-      type enumeration {
-        enum "5" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 5";
-        }
-        enum "10" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 10";
-        }
-        enum "15" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 15";
-        }
-        enum "20" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 20";
-        }
-        enum "30" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 30";
-        }
-        enum "40" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 40";
-        }
-        enum "50" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 50";
-        }
-        enum "64" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 64";
-        }
-        enum "80" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 80";
-        }
-        enum "120" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 120";
-        }
-        enum "160" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 160";
-        }
-        enum "256" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - 256";
-        }
-        enum "alltherest" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - alltherest";
-        }
-        enum "spare3" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare3";
-        }
-        enum "spare2" {
-          value 15;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare2";
-        }
-        enum "spare1" {
-          value 16;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs - spare1";
-        }
-      }
-      description
-        "This Information Element (IE) specifies the number of PSCs reserved for CSG cells in each PSC range.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.NumberOfPSCs";
-    }
-    leaf psc-range2-offset {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "If this Information Element (IE) is included, the UE shall calculate the second PSC range as specified in {{bibref|3GPP-TS.25.331|Section 8.6.2.4}}. If this Information Element (IE) is not included, the UE shall consider the second PSC range to be not present.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.PSCRange2Offset";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.CSGPSCSplitInfo.";
-  }
-
-  grouping rem-umts-wcdma-cell-bcch-reference-position-g {
-    description
-      "This object defines parameters related to the surface point of the ellipsoid. {{bibref|3GPP-TS.23.032|Section 5}} It is characterized by the co-ordinates of an ellipsoid point with altitude, distances, and an angle of orientation. This information is used to refer to a point on the Earth's surface, or close to the Earth's surface, with the same longitude and latitude.";
-    leaf latitude {
-      type int64;
-      description
-        "This parameter specifies the latitude of the device's position in degrees, multiplied by 1 million. The positive value signifies the direction, north of the equator. The negative value signifies the direction, south of the equator. Range is from: 90.00.00' South (-90,000,000) to 90.00.00' North (90,000,000). Example: A latitude of 13.19.43' N would be represented as 13,323,833, derived as (13*1,000,000)+((19.43*1,000,000)/60). Latitude of 50.00.00' S would be represented as value -50,000,000. If 0 then SIB15 is not detected in the specific cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Latitude";
-    }
-    leaf longitude {
-      type int64;
-      description
-        "This parameter specifies the longitude of the device's position in degrees, multiplied by 1 million. The positive value signifies the direction, east of the prime meridian. The negative value signifies the direction, west of the prime meridian. Range is from: 180.00.00' West (-180,000,000) to 180.00.00' East (180,000,000). Example: A longitude of 13.19.43' E would be represented as 13,323,833, derived as (13*1,000,000)+((19.43*1,000,000)/60). A longitude of 50.00'0'' W would be represented as value -50,000,000. If 0 then SIB15 is not detected in the specific cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Longitude";
-    }
-    leaf uncertainty-semi-major {
-      type uint8 {
-        range "0..127";
-      }
-      description
-        "The uncertainty r is derived from the \"uncertainty code\" k by r = 10 x ( 1.1 <power> (k-1) ) {{bibref|3GPP-TS.23.032|Section6.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.UncertaintySemiMajor";
-    }
-    leaf uncertainty-semi-minor {
-      type uint8 {
-        range "0..127";
-      }
-      description
-        "The uncertainty r is derived from the \"uncertainty code\" k by r = 10 x ( 1.1 <power> (k-1) ) {{bibref|3GPP-TS.23.032|Section6.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.UncertaintySemiMinor";
-    }
-    leaf orientation-of-major-axis {
-      type uint8 {
-        range "0..89";
-      }
-      description
-        "The Information Element (IE) value 'N' is derived by this formula: 2N <= a < 2(N+1) Where 'a' is the orientation in degrees (0..179).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.OrientationOfMajorAxis";
-    }
-    leaf confidence {
-      type uint8 {
-        range "0..100";
-      }
-      units "percent";
-      description
-        "The degree of confidence in the ellipsoid's points expressed in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.Confidence";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.WCDMA.Cell.{i}.BCCH.ReferencePosition.";
-  }
-
-  grouping rem-umts-gsm-g {
-    description
-      "This object contains parameters relating to GSM REM capabilities.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling - Delayed";
-        }
-      }
-      default "immediate";
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      default "true";
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanOnBoot";
-    }
-    leaf scan-periodically {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enable Periodic Radio Environment Measurement on all enabled RAT.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.PeriodicTime";
-    }
-    leaf-list remplmn-list {
-      type string {
-        length "0..6";
-      }
-      config false;
-      description
-        "{{list}} Each item is a PLMNID. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5. If {{empty}} no specific PLMN ID is provided, meaning that the FAP is required to report all available PLMN IDs. If a list is provided, the FAP is expected to limit the REM measurement to the PLMN(s) specified in this list only and ignore others even if they are detected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMPLMNList";
-    }
-    leaf-list rem-band-list {
-      type enumeration {
-        enum "t-gsm380" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM380";
-        }
-        enum "t-gsm410" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM410";
-        }
-        enum "gsm450" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM450";
-        }
-        enum "gsm480" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM480";
-        }
-        enum "gsm710" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM710";
-        }
-        enum "gsm750" {
-          value 6;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM750";
-        }
-        enum "t-gsm810" {
-          value 7;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM810";
-        }
-        enum "gsm850" {
-          value 8;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - GSM850";
-        }
-        enum "p-gsm900" {
-          value 9;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - P-GSM900";
-        }
-        enum "e-gsm900" {
-          value 10;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - E-GSM900";
-        }
-        enum "r-gsm900" {
-          value 11;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - R-GSM900";
-        }
-        enum "t-gsm900" {
-          value 12;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - T-GSM900";
-        }
-        enum "dcs1800" {
-          value 13;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - DCS1800";
-        }
-        enum "pcs1900" {
-          value 14;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList - PCS1900";
-        }
-      }
-      config false;
-      description
-        "{{list}} Each item is a GSM Band to measure. {{enum}} If {{empty}} then no specific GSM band is provided, meaning that the FAP MUST scan all bands. If a list is provided, the FAP is expected to limit the REM measurement to the band(s) specified in this list only and ignore others even if they are detected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.REMBandList";
-    }
-    leaf-list arfcn-list {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each item is a GSM ARFCN to measure. If {{empty}} then no specific ARFCN is provided, meaning that the FAP is required to scan all ARFCNs. If a list is provided, the FAP is expected to limit the REM measurement to the ARFCN(s) specified in this list only and ignore others even if they are detected.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ARFCNList";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last GSM radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.LastScanTime";
-    }
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries allowed in the {{object|.REM.UMTS.GSM.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.CellNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.";
-  }
-
-  grouping rem-umts-gsm-cell-g {
-    description
-      "Table indicating the components of the discovered cells.";
-    leaf band-indicator {
-      type enumeration {
-        enum "gsm 850" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - GSM 850";
-        }
-        enum "gsm 900" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - GSM 900";
-        }
-        enum "dcs 1800" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - DCS 1800";
-        }
-        enum "pcs 1900" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator - PCS 1900";
-        }
-      }
-      description
-        "Indicates how to interpret the BCCH ARFCN.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BandIndicator";
-    }
-    leaf arfcn {
-      type uint16 {
-        range "0..1023";
-      }
-      description
-        "Absolute Radio Frequency Channel Number (ARFCN) {{bibref|3GPP-TS.05.05}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.ARFCN";
-    }
-    leaf bsic {
-      type uint8 {
-        range "0..63";
-      }
-      description
-        "Base Station Identity Code {{bibref|3GPP-TS.03.03}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.BSIC";
-    }
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of the PLMNID is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.PLMNID";
-    }
-    leaf lac {
-      type uint16 {
-        range "1..65535";
-      }
-      description
-        "Location Area Code (LAC) as defined in SIB1 {{bibref|3GPP-TS.25.331}}. The concatenation of PLMN ID (MCC+MNC) and LAC uniquely identifies the LAI (Location Area ID) {{bibref|3GPP-TS.23.003}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.LAC";
-    }
-    leaf rac {
-      type uint8 {
-        range "0..255";
-      }
-      description
-        "Routing Area Code (RAC) consists of up to 3 numerical characters. The concatenation of PLMN ID (MCC+MNC), LAC, and RAC uniquely identifies the Routing Area ID (RAI). {{bibref|3GPP-TS.23.003|Section 4.2}} {{bibref|3GPP-TS.25.413|Section 9.2.3.7}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.RAC";
-    }
-    leaf ci {
-      type uint16 {
-        range "0..63535";
-      }
-      description
-        "Cell Identity. {{bibref|3GPP-TS.25.331|Section 10.3.2.2}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.CI";
-    }
-    leaf rssi {
-      type int64;
-      units "dBm";
-      description
-        "Received signal level in {{units}} of the BCCH carrier.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.RSSI";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.UMTS.GSM.Cell.{i}.";
-  }
-
-  grouping rem-lte-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the LTE system.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling - Delayed";
-        }
-      }
-      default "immediate";
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      default "true";
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanOnBoot";
-    }
-    leaf scan-periodically {
-      type boolean;
-      default "false";
-      config false;
-      description
-        "Enable Periodic Radio Environment Measurement on LTE EUTRAN bands.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.PeriodicTime";
-    }
-    leaf-list remplmn-list {
-      type string;
-      config false;
-      max-elements "32";
-      description
-        "{{list}} Each item is a PLMN ID to measure. PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. If {{empty}}, then no specific PLMN ID is provided, meaning that the FAP is required to scan all available PLMN IDs.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.REMPLMNList";
-    }
-    leaf-list rem-band-list {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "{{list}} Each item is a LTE Band to measure. Corresponds to frequency band indicator defined in {{bibref|3GPP-TS.36.101|Table 5.5-1}}. If {{empty}} then no specific LTE band is provided, meaning that the FAP is required to scan all available bands. The order of the band indicator has no significance.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.REMBandList";
-    }
-    leaf-list eutra-carrier-arfcndl-list {
-      type string;
-      config false;
-      max-elements "64";
-      description
-        "{{list}} Each entry is a EUTRA ARFCN in the DL direction to measure. Corrsponds to the parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}. If {{empty}}, then no specific EUTRA ARFCN is provided, meaning that the FAP is required to scan all ARFCNs that it is aware of.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.EUTRACarrierARFCNDLList";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either {{enum|Error|ScanStatus}} or {{enum|Error_TIMEOUT|ScanStatus}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last LTE system radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.LastScanTime";
-    }
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.LTE.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CellNumberOfEntries";
-    }
-    leaf max-carrier-meas-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.LTE.CarrierMeas.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.MaxCarrierMeasEntries";
-    }
-    leaf carrier-meas-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeasNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.";
-  }
-
-  grouping rem-lte-cell-g {
-    leaf rem-lte-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.";
-  }
-
-  grouping rem-lte-cell-rf-g {
-    description
-      "Table indicating the RF aspect of the discovered cells.";
-    leaf eutra-carrier-arfcn {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Indicates the ARFCN of this carrier frequency. Corresponds to parameter dl-CarrierFreq in SIB5 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}, and parameter NDL in {{bibref|3GPP-TS.36.101|Section 5.7.3}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.EUTRACarrierARFCN";
-    }
-    leaf phy-cell-id {
-      type uint16 {
-        range "0..503";
-      }
-      description
-        "Physical cell ID of the detected EUTRAN cell, as specified in {{bibref|3GPP-TS.36.101|Section 5.6}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.PhyCellID";
-    }
-    leaf rsrp {
-      type int64;
-      units "dBm";
-      description
-        "Received RSRP level of the detected EUTRA cell, specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.1}}. The reporting range is specified in {{bibref|3GPP-TS.36.133|Section 9.1.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSRP";
-    }
-    leaf rsrq {
-      type int64;
-      units "dB";
-      description
-        "Received RSRQ level of the detected EUTRA cell, specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.3}}. Actual measured values range between -24.0 {{units}} and 0.0 {{units}} in steps of 0.5 {{units}}. The value of {{param}} divided by 10 yields the actual measured value. Only values in multiple of 5 are valid.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSRQ";
-    }
-    leaf rssi {
-      type int64;
-      units "dBm";
-      description
-        "E-UTRA Carrier Received Signal Strength Indicator (RSSI), specified in {{units}}, as specified in {{bibref|3GPP-TS.36.214|Section 5.1.3}}. It comprises the linear average of the total received power (in [W]) observed only in OFDM symbols containing reference symbols for antenna port 0, in the measurement bandwidth, over N number of resource blocks by the UE from all sources, including co-channel serving and non-serving cells, adjacent channel interference, thermal noise etc.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.RSSI";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.RF.";
-  }
-
-  grouping rem-lte-cell-bcch-g {
-    description
-      "Table containing the system information broadcast in the BCCH logical channel.";
-    leaf dl-bandwidth {
-      type uint8 {
-        range "6 | 15 | 25 | 50 | 75 | 100";
-      }
-      units "resource blocks";
-      description
-        "Downlink transmission bandwidth, specified in number of {{units}}. Corresponds to parameter dl_Bandwidth in Master Information Block in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.DLBandwidth";
-    }
-    leaf ul-bandwidth {
-      type uint8 {
-        range "6 | 15 | 25 | 50 | 75 | 100";
-      }
-      units "resource blocks";
-      description
-        "Uplink transmission bandwidth, specified in number of {{units}}. Corresponds to parameter ul_Bandwidth in SIB2 in {{bibref|3GPP-TS.36.331|Section 6.3.1}}. and to parameter NRB in {{bibref|3GPP-TS.36.101|Table 5.6-1}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.ULBandwidth";
-    }
-    leaf rs-tx-power {
-      type int64;
-      units "dBm";
-      description
-        "The downlink reference-signal transmit power, specified in {{units}}. Defined as the linear average over the power contributions (in W) of all resource elements that carry cell-specific reference signals within the operating system bandwidth. Corresponds to parameter referenceSignalPower in SIB4 as a part of PDSCH-Config IE in {{bibref|3GPP-TS.36.331|Section 6.3.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.RSTxPower";
-    }
-    leaf tac {
-      type uint16 {
-        range "0..65535";
-      }
-      description
-        "Tracking Area Code that is common for all the PLMNs listed. Corresponds to trackingAreaCode as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.TAC";
-    }
-    leaf cell-id {
-      type uint32 {
-        range "0..268435455";
-      }
-      description
-        "Defines the cell identify, defines as a 28-bit binary number. Corresponds to cellIdentity as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2 and Section 6.3.4}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CellID";
-    }
-    leaf cell-barred {
-      type boolean;
-      description
-        "Indicates whether the cell is barred or not. If {{true}}, the cell is barred. If {{false}}, the cell is not barred. Corresponds to cellBarred as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}} and {{bibref|3GPP-TS.36.304}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CellBarred";
-    }
-    leaf csg-indication {
-      type boolean;
-      description
-        "Indicates whether CSG is used in this cell or not. If {{true}}, the UE is only allowed to access the cell if the CSG identity matches an entry in the allowed CSG list that the UE has stored. Corresponds to csg-Indication as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CSGIndication";
-    }
-    leaf csg-identity {
-      type uint32 {
-        range "0..134217727";
-      }
-      description
-        "Defines the CSG ID value if {{param|CSGIndication}} parameter indicates that CSG is used in this cell. Corresponds to csg-Identity as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.CSGIdentity";
-    }
-    leaf max-plmn-list-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.MaxPLMNListEntries";
-    }
-    leaf plmn-list-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNListNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.";
-  }
-
-  grouping rem-lte-cell-bcch-plmn-list-g {
-    description
-      "Table containing the PLMN list in the system information broadcast in the BCCH logical channel. Correspnds to plmn-IdentityList as specified in SIB1 in {{bibref|3GPP-TS.36.331|Section 6.2.2}}. Each instance in this object is a PLMN-IdentityInfo which consists of plmn-Identity and cellReservedForOperatorUse IEs.";
-    leaf plmnid {
-      type string {
-        length "0..6";
-      }
-      description
-        "PLMN ID consists of Mobile Country Code (MCC) and Mobile Network Code (MNC) {{bibref|3GPP-TS.23.003}}, {{bibref|3GPP-TS.24.008}}. Mobile Country Code consists of three digits and uniquely identifies the country of domicile of the subscriber. Mobile Network Code consists of two or three digits and identifies the Home PLMN within a country. For a 2-digit MNC the total string length of {{param}} is 5.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.PLMNID";
-    }
-    leaf cell-reserved-for-operator-use {
-      type boolean;
-      description
-        "Indicates whether the cell is reserved for operator use or not. If {{true}}, it is reserved. If {{false}}, it is not reserved. Corresponds to \"reserved\" \"notReserved\" respectively as defined in PLMN-IdentityInfo in {{bibref|3GPP-TS.36.331|Section 6.2.2}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.CellReservedForOperatorUse";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.Cell.{i}.BCCH.PLMNList.{i}.";
-  }
-
-  grouping rem-lte-carrier-meas-g {
-    description
-      "Table indicating the measurement of the discovered carrier. The information stored in this object is strictly in the physical layer level and may not necessarily be associated with any particular E-UTRAN cell (e.g. interference level generated by sources other than E-UTRAN cell).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the CarrierMeas entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.Alias";
-    }
-    leaf carrier-arfcndl {
-      type int64;
-      units "MHz";
-      description
-        "Lower bound of the EUTRA ARFCN as specified in {{bibref|3GPP-TS.36.101|Section 5.7.3}} in the DL direction that is requested to measure. Unit in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierARFCNDL";
-    }
-    leaf carrier-ch-width {
-      type int64;
-      units "ARFCN";
-      description
-        "Number of {{units}} in DL direction, as specified in {{bibref|3GPP-TS.36.101|Section 5.6}}, that is requested to measure. The range bounded by {{param|CarrierARFCNDL}} as the lower bound and the value of ({{param|CarrierARFCNDL}} + {{param}}) as the upper bound expresses the total carrier frequency range to be measured.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierChWidth";
-    }
-    leaf carrier-rssi {
-      type int64;
-      units "ARFCN";
-      description
-        "Received Signal Strength Indicator (RSSI) as specified in {{bibref|3GPP-TS.36.214|Sec 5.1.3}} over the carrier frequency range from {{param|CarrierARFCNDL}} as the lower bound and the value of ({{param|CarrierARFCNDL}} + {{param|CarrierChWidth}}) as the upper bound.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.CarrierRSSI";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.LTE.CarrierMeas.{i}.";
-  }
-
-  grouping rem-cdma2000-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the CDMA2000 system.";
-    leaf in-service-handling {
-      type enumeration {
-        enum "immediate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling - Immediate";
-        }
-        enum "delayed" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling - Delayed";
-        }
-      }
-      config false;
-      description
-        "FAP REM behavior with respect to ongoing active connections. {{enum}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.InServiceHandling";
-    }
-    leaf scan-on-boot {
-      type boolean;
-      config false;
-      description
-        "Enables or disables Radio Environment Measurement during the FAP start up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanOnBoot";
-    }
-    leaf scan-now {
-      type boolean;
-      config false;
-      description
-        "Directs FAP to perform radio environment measurements immediately (but respecting the setting of {{param|InServiceHandling}}) and report back. After performing the action, the FAP resets the ScanNow value to \"0\" ({{false}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanNow";
-    }
-    leaf return-timer {
-      type uint64 {
-        range "1..max";
-      }
-      units "seconds";
-      config false;
-      description
-        "Time in {{units}} within which the action should be performed by the FAP. Only applies if {{param|InServiceHandling}} is set to Delayed.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReturnTimer";
-    }
-    leaf scan-periodically {
-      type boolean;
-      config false;
-      description
-        "Enables periodic reporting of radio environment measurements.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanPeriodically";
-    }
-    leaf periodic-interval {
-      type uint64 {
-        range "1..max";
-      }
-      units "seconds";
-      config false;
-      description
-        "When {{param|ScanPeriodically}} is {{true}}, this value indicates the interval in {{units}} which REM is performed while the FAP service is enabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.PeriodicInterval";
-    }
-    leaf periodic-time {
-      type yang:date-and-time;
-      config false;
-      description
-        "An absolute time reference in UTC to determine when the CPE will initiate the periodic REM. Each REM MUST occur at (or as soon as possible after) this reference time plus or minus an integer multiple of the {{param|PeriodicInterval}}. {{param}} is used only to set the \"phase\" of the REM. The actual value of {{param}} can be arbitrarily far into the past or future. For example, if {{param|PeriodicInterval}} is 86400 (a day) and if {{param}} is set to UTC midnight on some day (in the past, present, or future) then periodic REMs will occur every day at UTC midnight. These MUST begin on the very next midnight, even if {{param}} refers to a day in the future. The Unknown Time value defined in {{bibref|TR-106a2|Section 3.2}} indicates that no particular time reference is specified. That is, the CPE MAY locally choose the time reference, and needs only to adhere to the specified PeriodicInformInterval. If absolute time is not available to the CPE, its periodic REM behavior MUST be the same as if {{param}} parameter was set to the Unknown Time value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.PeriodicTime";
-    }
-    leaf report-overheads {
-      type enumeration {
-        enum "all" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - All";
-        }
-        enum "one-x" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - OneX";
-        }
-        enum "hrpd" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - HRPD";
-        }
-        enum "none" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads - None";
-        }
-      }
-      config false;
-      description
-        "If {{param}} is set to {{enum|All}}, the FAP shall report the overheads from the sectors as well.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ReportOverheads";
-    }
-    leaf scan-timeout {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Specifies the time-out value in {{units}}, measured from the start of the REM scan, before the REM scan will time out.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanTimeout";
-    }
-    leaf scan-status {
-      type enumeration {
-        enum "indeterminate" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Indeterminate";
-        }
-        enum "in-progress" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - InProgress";
-        }
-        enum "success" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Success";
-        }
-        enum "error" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Error";
-        }
-        enum "error-timeout" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus - Error_TIMEOUT";
-        }
-      }
-      description
-        "Indicates the current status of this scan.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ScanStatus";
-    }
-    leaf error-details {
-      type string {
-        length "0..256";
-      }
-      description
-        "Provides more detail when the {{param|ScanStatus}} is either \"Error\" or \"Error_TIMEOUT\".";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.ErrorDetails";
-    }
-    leaf last-scan-time {
-      type yang:date-and-time;
-      description
-        "The time of the last system radio environment measurement.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.LastScanTime";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.";
-  }
-
-  grouping rem-cdma2000-one-x-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the 1x system.";
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.CDMA2000.OneX.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.CellNumberOfEntries";
-    }
-    leaf max-channel-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.CDMA2000.OneX.Channel.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.MaxChannelEntries";
-    }
-    leaf channel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.ChannelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.";
-  }
-
-  grouping rem-cdma2000-one-x-channel-g {
-    description
-      "REM specific configuration and reporting.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.Alias";
-    }
-    leaf sniffing-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Config parameter to set band class. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.SniffingBandClass";
-    }
-    leaf sniffing-channel-number {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the forward direction.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.SniffingChannelNumber";
-    }
-    leaf-list pn-list {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment> If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.PNList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Channel.{i}.";
-  }
-
-  grouping rem-cdma2000-one-x-cell-g {
-    leaf rem-cdma2000-one-x-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.";
-  }
-
-  grouping rem-cdma2000-one-x-cell-rf-g {
-    description
-      "RF REM results for each detected cell.";
-    leaf band {
-      type int64;
-      description
-        "CDMA band for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.Band";
-    }
-    leaf rfcnfl {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the FL direction for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.RFCNFL";
-    }
-    leaf io {
-      type int64;
-      units "dBm";
-      description
-        "The total received power spectral density in {{units}}, including signal and interference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.Io";
-    }
-    leaf p-ilot-pn {
-      type uint16 {
-        range "0..511";
-      }
-      units "64 PN chips";
-      description
-        "Pilot PN Offset (in units of {{units}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PIlotPN";
-    }
-    leaf p-ilot-pn-phase {
-      type uint64;
-      units "chips";
-      description
-        "Pilot PN phase in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PIlotPNPhase";
-    }
-    leaf pilot-strength-ecp {
-      type int64;
-      units "dBm";
-      description
-        "The strength estimate of the received pilot energy per chip, Ecp, in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PilotStrengthEcp";
-    }
-    leaf pilot-strength-ecp-io {
-      type int64;
-      units "dB";
-      description
-        "The strength estimate of the received pilot energy per chip, Ecp, to total received spectral density, Io (signal and noise) in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.PilotStrengthEcpIo";
-    }
-    leaf overheads-available {
-      type boolean;
-      description
-        "If set to {{true}}, the overhead messages for this particular cell is included in {{object|.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.OverheadsAvailable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.RF.";
-  }
-
-  grouping rem-cdma2000-one-x-cell-control-channel-g {
-    description
-      "Table containing information broadcast on control channel.";
-    leaf sid {
-      type int64;
-      description
-        "System identification. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.SID";
-    }
-    leaf nid {
-      type int64;
-      description
-        "Network identification. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.NID";
-    }
-    leaf regzone {
-      type int64;
-      description
-        "Registration Zone. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.REGZONE";
-    }
-    leaf baselat {
-      type int64;
-      description
-        "Basestation latitude. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASELAT";
-    }
-    leaf baselong {
-      type int64;
-      description
-        "Basestation longtitude. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASELONG";
-    }
-    leaf mcc {
-      type int64;
-      description
-        "Mobile Country Code. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.MCC";
-    }
-    leaf mncimsi1112 {
-      type int64;
-      description
-        "the 11th and 12th digits of IMSI, i.e., Mobile Network Code. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.MNCIMSI1112";
-    }
-    leaf baseid {
-      type int64;
-      description
-        "Basestation identification. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.BASEID";
-    }
-    leaf apid {
-      type string {
-        length "0..32";
-      }
-      description
-        "Access Point Identification. Set to empty string if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APID";
-    }
-    leaf apidmask {
-      type int64;
-      description
-        "Access Point Identification Mask. Set to zero if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APIDMASK";
-    }
-    leaf apidtext {
-      type string {
-        length "0..256";
-      }
-      description
-        "Access Point Identification Text. Set to empty string if not available. Refer to {{bibref|3GPP2-C.S0005}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.APIDTEXT";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.OneX.Cell.{i}.ControlChannel.";
-  }
-
-  grouping rem-cdma2000-hrpd-g {
-    description
-      "This object contains parameters relating to radio environment measurement capabilities for the HRPD system.";
-    leaf max-cell-entries {
-      type uint64;
-      description
-        "The maximum number of entries available in the {{object|.REM.CDMA2000.HRPD.Cell.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.MaxCellEntries";
-    }
-    leaf cell-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.CellNumberOfEntries";
-    }
-    leaf max-channel-entries {
-      type uint64;
-      description
-        "The maximum number of entries in {{object|.REM.CDMA2000.HRPD.Channel.{i}.}} table.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.MaxChannelEntries";
-    }
-    leaf channel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.ChannelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.";
-  }
-
-  grouping rem-cdma2000-hrpd-channel-g {
-    description
-      "REM specific configuration and reporting.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.Alias";
-    }
-    leaf sniffing-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Config parameter to set band class. Reference - {{bibref|3GPP2-C.S0057}}, Band Class Specification for CDMA2000 Spread Spectrum Systems.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.SniffingBandClass";
-    }
-    leaf sniffing-channel-number {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the FL direction.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.SniffingChannelNumber";
-    }
-    leaf-list pn-list {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment>. If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.PNList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Channel.{i}.";
-  }
-
-  grouping rem-cdma2000-hrpd-cell-g {
-    leaf rem-cdma2000-hrpd-cell-key {
-      type string;
-      description
-        "Key value for this object, which could be an item of a list.";
-    }
-    description
-      "Table indicating the components of the discovered cells.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.";
-  }
-
-  grouping rem-cdma2000-hrpd-cell-rf-g {
-    description
-      "RF REM results for each detected cell.";
-    leaf band {
-      type int64;
-      description
-        "CDMA band for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.Band";
-    }
-    leaf rfcnfl {
-      type uint16 {
-        range "0..2016";
-      }
-      description
-        "The Radio Frequency Channel Number (RFCN) in the FL direction for the reported cell.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.RFCNFL";
-    }
-    leaf io {
-      type int64;
-      units "dBm";
-      description
-        "The total received power spectral density in {{units}}, including signal and interference.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.Io";
-    }
-    leaf p-ilot-pn {
-      type uint16 {
-        range "0..511";
-      }
-      units "64 PN chips";
-      description
-        "Pilot PN Offset (in units of {{units}}).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PIlotPN";
-    }
-    leaf p-ilot-pn-phase {
-      type uint64;
-      units "chips";
-      description
-        "Pilot PN phase in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PIlotPNPhase";
-    }
-    leaf pilot-strength-ecp {
-      type int64;
-      units "dBm";
-      description
-        "The strength estimate of the received pilot energy per chip in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PilotStrengthEcp";
-    }
-    leaf pilot-strength-ecp-io {
-      type int64;
-      units "dB";
-      description
-        "The strength estimate of the received pilot energy per chip, Ecp, to total received spectral density, Io (signal and noise) in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.PilotStrengthEcpIo";
-    }
-    leaf overheads-available {
-      type boolean;
-      description
-        "If set to {{true}}, the overhead messages for this particular cell is included in {{object|.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.OverheadsAvailable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.RF.";
-  }
-
-  grouping rem-cdma2000-hrpd-cell-control-channel-g {
-    description
-      "Table containing information braodcast on control channel.";
-    leaf color-code {
-      type int64;
-      description
-        "The color code of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.ColorCode";
-    }
-    leaf sector-id {
-      type binary {
-        length "16";
-      }
-      description
-        "The sector ID of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.SectorID";
-    }
-    leaf subnet-mask {
-      type int64;
-      units "bits";
-      description
-        "The length of the subnet mask in {{units}} for the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.SubnetMask";
-    }
-    leaf country-code {
-      type int64;
-      description
-        "The country code of the measured sector as defined in {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.CountryCode";
-    }
-    leaf latitude {
-      type int64;
-      units "0.25 arc seconds";
-      description
-        "The reported lattitude of the cell in units of {{units}}, expressed as a two's complement signed number with positive numbers signifying North latitudes in the range -1296000 to 1296000 inclusive corresponding to a range of -90 to +90) Refer to {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.Latitude";
-    }
-    leaf longitude {
-      type int64;
-      units "0.25 arc seconds";
-      description
-        "The reported longitude of the cell in units of {{units}}, expressed as a two's complement signed number with positive numbers signifying East longitude in the range -2592000 to 2592000 inclusive (corresponding to a range of -180 to +180). Refer to {{bibref|3GPP2-C.S0024}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.Longitude";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.HRPD.Cell.{i}.ControlChannel.";
-  }
-
-  grouping rem-cdma2000-macro-timing-g {
-    description
-      "Parameters for controlling CDMA2000 system timing derived from macro system sniffing.";
-    leaf admin-state {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "This is the Admin State of Macro Timing. Lock means MacroTiming feature is Enabled. Unlock means MacroTiming feature is disabled. 0 - Lock (Enabled), 1 - Unlock (Disabled).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.AdminState";
-    }
-    leaf tracking-channel-number {
-      type uint64;
-      description
-        "Channel number of Macro Base Station currently used for MacroTiming.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingChannelNumber";
-    }
-    leaf tracking-band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "BandClass of Macro Base Station currently used for MacroTiming.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingBandClass";
-    }
-    leaf-list tracking-pn-offset {
-      type string {
-        length "0..256";
-      }
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips of a Macro Base Station currently used for MacroTiming.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TrackingPNOffset";
-    }
-    leaf timing-source {
-      type uint8 {
-        range "0..1";
-      }
-      description
-        "This parameter indicates the timing source for the FAP: 0 - GPS 1 - Macro Timing The other read-only parameters in this object only have valid values when timingsource is set to 1.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.TimingSource";
-    }
-    leaf channel-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.ChannelNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.";
-  }
-
-  grouping rem-cdma2000-macro-timing-channel-g {
-    description
-      "Object used to configure list of channels to be used for Macto Timing.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the {{object}} entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Enable";
-    }
-    leaf alias {
-      type string {
-        length "1..64";
-      }
-      description
-        "{{datatype|expand}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Alias";
-    }
-    leaf air-interface-type {
-      type uint8 {
-        range "0..1";
-      }
-      config false;
-      description
-        "Air interface type of the configured Band class and Channel. 0 - 1x, 1 - HRPD.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.AirInterfaceType";
-    }
-    leaf band-class {
-      type uint8 {
-        range "0..31";
-      }
-      description
-        "Bandclass of the Macro timing channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.BandClass";
-    }
-    leaf channel-number {
-      type uint64;
-      description
-        "Macro timing acquisition channel.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.ChannelNumber";
-    }
-    leaf priority {
-      type uint64;
-      config false;
-      description
-        "Priority of the channle to use for acquisition. FAP should prioritize lower values over higher.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.Priority";
-    }
-    leaf-list pn-list {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "{{list}} Each item is a (single value) PN offset in units of 64 PN chips or PNrange expressed in the following format: <Start-value>\"..\"<End-value>:<Increment> If an empty string, then no specific PNList is provided, meaning that the FAP is required to pick a PN list to scan on its own.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.PNList";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.REM.CDMA2000.MacroTiming.Channel.{i}.";
-  }
-
-  grouping transport-g {
-    description
-      "This object contains parameters relating to the transport.";
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.";
-  }
-
-  grouping transport-sip-g {
-    description
-      "This object contains parameters relating to SIP as a transport protocol. SIP is defined in {{bibref|RFC3261}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the whole SIP object and allows the setup or release of SIP associations and their related streams.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.Enable";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.";
-  }
-
-  grouping transport-sip-fcs-g {
-    description
-      "This object models SIP Femtocell Convergence Server (FCS) parameters.";
-    leaf fcsuri {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The request URI for MESSAGE method sent to Femtocell Convergence Server (FCS). The string MUST contain a URI as defined in {{bibref|RFC3986}}. The device MUST support SIP URI and MAY support other URI schemes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.FCSURI";
-    }
-    leaf out-going-proxy-uri {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The request URI for Outgoing Proxy. The string MUST contain a URI as defined in {{bibref|RFC3986}}. The device MUST support SIP URI and MAY support other URI schemes.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.OutGoingProxyURI";
-    }
-    leaf p-access-net-info-header {
-      type string {
-        length "0..256";
-      }
-      description
-        "This string will be populated as the value for P-Access-Network-Info header. This header is generated by the device. See {{bibref|3GPP2-X.S0059}} and {{bibref|RFC3455}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.PAccessNetInfoHeader";
-    }
-    leaf realm {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "The FQDN or IP Address representing the Home Domain of the device. The request URI for REGISTER will be formed by prefixing \"sip:\" to this value.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.Realm";
-    }
-    leaf impu {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The \"IP Multimedia Public User\" (IMPU) Identity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.IMPU";
-    }
-    leaf impi {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "The \"IP Multimedia Private Identity\" (IMPI). This value is ignored when {{param|SIPAuthMethod}} is set to {{enum|TNA|SIPAuthMethod}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.IMPI";
-    }
-    leaf sip-password {
-      type string {
-        length "0..32";
-      }
-      config false;
-      description
-        "Password to Authenticate the IMS core. This value is ignored when {{param|SIPAuthMethod}} is set to {{enum|TNA|SIPAuthMethod}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPPassword";
-    }
-    leaf-list sip-auth-capability {
-      type enumeration {
-        enum "tna" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability - TNA";
-        }
-        enum "sip-digest" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability - SIPDigest";
-        }
-      }
-      description
-        "Represents the SIP authentication mechanisms supported by this device.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthCapability";
-    }
-    leaf sip-auth-method {
-      type string {
-        length "0..256";
-      }
-      config false;
-      description
-        "Represents the authentication method used by this device for SIP registration. If value is {{enum|SIPDigest}}, the {{param|SIPPassword}} MUST not be {{empty}}. If value is {{enum|TNA}}, {{param|SIPPassword}} and {{param|IMPI}} are ignored.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPAuthMethod";
-    }
-    leaf sip-local-port {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "Local port number for initiating SIP traffic.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPLocalPort";
-    }
-    leaf rtp-port-low-limit {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "The low limit of port number for originating and receiving RTP/RTCP traffic.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.RTPPortLowLimit";
-    }
-    leaf rtp-port-high-limit {
-      type uint16 {
-        range "0..65535";
-      }
-      config false;
-      description
-        "The high limit of port number for originating and receiving RTP/RTCP traffic.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.RTPPortHighLimit";
-    }
-    leaf sip-reg-expiry {
-      type uint64;
-      config false;
-      description
-        "SIP registration expiry value, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPRegExpiry";
-    }
-    leaf sip-session-expiry {
-      type uint64 {
-        range "90..max";
-      }
-      units "seconds";
-      default "1800";
-      config false;
-      description
-        "SIP session timer expiry value, in {{units}}, as defined in {{bibref|RFC4028}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.SIPSessionExpiry";
-    }
-    leaf-list emergency-numbers-list {
-      type string {
-        length "0..64";
-      }
-      config false;
-      description
-        "Indicates the dialed digit pattern matching strings used to determine if the call is an emergency call that MAY bypass access control and receive priority treatment.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.EmergencyNumbersList";
-    }
-    leaf timer-t1 {
-      type uint64 {
-        range "1..max";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Value of SIP timer T1, in {{units}}, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT1";
-    }
-    leaf timer-t2 {
-      type uint64 {
-        range "1..max";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Value of SIP timer T2, in {{units}}, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT2";
-    }
-    leaf timer-t4 {
-      type uint64 {
-        range "1..max";
-      }
-      units "milliseconds";
-      config false;
-      description
-        "Value of SIP timer T4, in {{units}}, as defined in {{bibref|RFC3261}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.TimerT4";
-    }
-    leaf t3210 {
-      type uint8 {
-        range "1..20";
-      }
-      units "seconds";
-      config false;
-      description
-        "This value specifies how much time to wait, in {{units}}, before time out on location update accept/reject. See {{bibref|3GPP2-A.S0014}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.T3210";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SIP.FCS.";
-  }
-
-  grouping transport-sctp-g {
-    description
-      "This object contains parameters relating to SCTP as a transport protocol. SCTP is defined in {{bibref|RFC4960}} and {{bibref|RFC3873}}.";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enables or disables the whole SCTP object and allows the setup or release of SCTP associations and their related streams.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Enable";
-    }
-    leaf hb-interval {
-      type uint64 {
-        range "1..max";
-      }
-      units "seconds";
-      default "30";
-      config false;
-      description
-        "Heartbeat interval in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.HBInterval";
-    }
-    leaf max-association-retransmits {
-      type uint64;
-      default "10";
-      config false;
-      description
-        "Maximum number of consecutive retransmissions to a peer before an endpoint considers that the peer is unreachable and closes the association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxAssociationRetransmits";
-    }
-    leaf max-init-retransmits {
-      type uint64;
-      default "8";
-      config false;
-      description
-        "Number of retransmission per connection-attempt.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxInitRetransmits";
-    }
-    leaf max-path-retransmits {
-      type uint64;
-      default "5";
-      config false;
-      description
-        "Maximum retransmission per destination address.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.MaxPathRetransmits";
-    }
-    leaf rto-initial {
-      type uint64;
-      units "milliseconds";
-      default "3000";
-      config false;
-      description
-        "Initial value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOInitial";
-    }
-    leaf rto-max {
-      type uint64;
-      units "milliseconds";
-      default "6000";
-      config false;
-      description
-        "Maximum value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOMax";
-    }
-    leaf rto-min {
-      type uint64;
-      units "milliseconds";
-      default "1000";
-      config false;
-      description
-        "Minimum value for Retransmit timeout in {{units}}. A retransmission time value of zero means immediate retransmission. The value of this parameter MUST be lower than or equal to {{param|RTOMax}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.RTOMin";
-    }
-    leaf val-cookie-life {
-      type uint64;
-      units "milliseconds";
-      default "60000";
-      config false;
-      description
-        "Valid cookie life in the 4-way start-up handshake procedure in {{units}}.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ValCookieLife";
-    }
-    leaf out-of-blues {
-      type uint64;
-      description
-        "The number of correctly formed SCTP packets, including the proper checksum, but for which the receiver was unable to identify an appropriate association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutOfBlues";
-    }
-    leaf checksum-errors {
-      type uint64;
-      description
-        "The number of SCTP packets received with an invalid checksum.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ChecksumErrors";
-    }
-    leaf out-ctrl-chunks {
-      type uint64;
-      description
-        "The number of SCTP control chunks sent (retransmissions are not included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutCtrlChunks";
-    }
-    leaf out-order-chunks {
-      type uint64;
-      description
-        "The number of SCTP ordered data chunks sent (retransmissions are not included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutOrderChunks";
-    }
-    leaf out-unorder-chunks {
-      type uint64;
-      description
-        "The number of SCTP unordered chunks (data chunks in which the U bit is set to 1) sent (retransmissions are not included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutUnorderChunks";
-    }
-    leaf in-ctrl-chunks {
-      type uint64;
-      description
-        "The number of SCTP control chunks received (no duplicate chunks included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InCtrlChunks";
-    }
-    leaf in-order-chunks {
-      type uint64;
-      description
-        "The number of SCTP ordered data chunks received (no duplicate chunks included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InOrderChunks";
-    }
-    leaf in-unorder-chunks {
-      type uint64;
-      description
-        "The number of SCTP unordered chunks (data chunks in which the U bit is set to 1) received (no duplicate chunks included).";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InUnorderChunks";
-    }
-    leaf frag-usr-msgs {
-      type uint64;
-      description
-        "The number of user messages that have been sent fragmented.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.FragUsrMsgs";
-    }
-    leaf reasm-usr-msgs {
-      type uint64;
-      description
-        "The number of user messages that have been received fragmented and submitted to the reassembly process.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.ReasmUsrMsgs";
-    }
-    leaf out-sctp-packs {
-      type uint64;
-      description
-        "The number of SCTP packets sent. Retransmitted DATA chunks are included.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.OutSCTPPacks";
-    }
-    leaf in-sctp-packs {
-      type uint64;
-      description
-        "The number of SCTP packets received. Duplicates are included.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.InSCTPPacks";
-    }
-    leaf discontinuity {
-      type yang:date-and-time;
-      description
-        "The time of the last discontinuity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Discontinuity";
-    }
-    leaf assoc-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.AssocNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.";
-  }
-
-  grouping transport-sctp-assoc-g {
-    description
-      "SCTP Association Table";
-    leaf status {
-      type enumeration {
-        enum "disabled" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Disabled";
-        }
-        enum "active" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Active";
-        }
-        enum "progressing" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Progressing";
-        }
-        enum "shutting-down" {
-          value 4;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - ShuttingDown";
-        }
-        enum "error" {
-          value 5;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status - Error";
-        }
-      }
-      description
-        "The status of this SCTP association entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Status";
-    }
-    leaf primary-peer-address {
-      type inet:ip-address;
-      description
-        "The primary IP address of the peer SCTP association entity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.PrimaryPeerAddress";
-    }
-    leaf local-port {
-      type uint16 {
-        range "0..63999";
-      }
-      description
-        "The local SCTP port number used for this SCTP association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.LocalPort";
-    }
-    leaf in-streams {
-      type uint64;
-      description
-        "The number of Inbound Streams according to the negotiation at association start-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.InStreams";
-    }
-    leaf out-streams {
-      type uint64;
-      description
-        "The number of Outbound Streams according to the negotiation at association start-up.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.OutStreams";
-    }
-    leaf start-time {
-      type yang:date-and-time;
-      description
-        "The start Time for the present SCTP association.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.StartTime";
-    }
-    leaf discontinuity {
-      type yang:date-and-time;
-      description
-        "The time of the last discontinuity.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.Discontinuity";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.SCTP.Assoc.{i}.";
-  }
-
-  grouping transport-real-time-g {
-    description
-      "This object contains parameters relating to Real Time Transport using RTP.";
-    leaf rtcp-enable {
-      type boolean;
-      config false;
-      description
-        "Enable or disable RTCP.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.RTCPEnable";
-    }
-    leaf sent-packets {
-      type uint64;
-      description
-        "The number of sent RTP packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.SentPackets";
-    }
-    leaf rcv-packets {
-      type uint64;
-      description
-        "The number of received RTP packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.RcvPackets";
-    }
-    leaf bytes-sent {
-      type uint64;
-      description
-        "Total number of RTP payload bytes sent.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.BytesSent";
-    }
-    leaf bytes-received {
-      type uint64;
-      description
-        "Total number of RTP payload bytes received.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.BytesReceived";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.";
-  }
-
-  grouping transport-real-time-perf-g {
-    description
-      "This object contains performances relating to Real Time Transport using RTP.";
-    leaf lost-rcv-packets {
-      type uint64;
-      description
-        "The number of Lost RTP packets in reception.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.LostRcvPackets";
-    }
-    leaf lost-far-end-packets {
-      type uint64;
-      description
-        "The number of Far End Lost RTP packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.LostFarEndPackets";
-    }
-    leaf overruns {
-      type uint64;
-      description
-        "Total number of times the receive jitter buffer has overrun.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.Overruns";
-    }
-    leaf underruns {
-      type uint64;
-      description
-        "Total number of times the receive jitter buffer has underrun for a CS-domain RAB.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.Underruns";
-    }
-    leaf mean-rtt {
-      type uint64;
-      units "microseconds";
-      description
-        "The mean Round Trip Time in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanRTT";
-    }
-    leaf max-rtt {
-      type uint64;
-      units "microseconds";
-      description
-        "The maximum Round Trip Time in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxRTT";
-    }
-    leaf mean-receive-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The mean receive jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanReceiveJitter";
-    }
-    leaf max-receive-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The maximum receive jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxReceiveJitter";
-    }
-    leaf mean-far-end-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The mean far end jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MeanFarEndJitter";
-    }
-    leaf max-far-end-jitter {
-      type uint64;
-      units "microseconds";
-      description
-        "The maximum far end jitter in {{units}} as computed by the source. {{bibref|RFC3550}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.MaxFarEndJitter";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.RealTime.Perf.";
-  }
-
-  grouping transport-packet-g {
-    description
-      "This object contains parameters relating to Packet Transport using GTP-U.";
-    leaf echo-interval {
-      type uint64;
-      units "seconds";
-      config false;
-      description
-        "Echo interval in {{units}}. An Echo interval value of zero means echo is disabled.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.EchoInterval";
-    }
-    leaf sent-packets {
-      type uint64;
-      description
-        "The number of sent GTP-U packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.SentPackets";
-    }
-    leaf rcv-packets {
-      type uint64;
-      description
-        "The number of received GTP-U packets.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.RcvPackets";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Packet.";
-  }
-
-  grouping transport-security-g {
-    description
-      "This object contains parameters relating to Security.";
-    leaf secret-number-of-entries {
-      type uint64;
-      description
-        "{{numentries}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.SecretNumberOfEntries";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.";
-  }
-
-  grouping transport-security-secret-g {
-    description
-      "Shared Secret Table. This table gathers information about all types of shared secret-based credentials (UICC).";
-    leaf enable {
-      type boolean;
-      config false;
-      description
-        "Enable or disable this Shared Secret entry";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Enable";
-    }
-    leaf type {
-      type enumeration {
-        enum "sim" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type - SIM";
-        }
-        enum "usim" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type - USIM";
-        }
-      }
-      description
-        "The type of this Shared Secret entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Type";
-    }
-    leaf status {
-      type enumeration {
-        enum "present" {
-          value 1;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Present";
-        }
-        enum "not-present" {
-          value 2;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Not_present";
-        }
-        enum "error" {
-          value 3;
-          description
-            "none";
-          reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status - Error";
-        }
-      }
-      description
-        "The status of this Shared Secret entry.";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.Status";
-    }
-    leaf uicc-card-id {
-      type string {
-        length "0..19";
-      }
-      description
-        "The UICC Card Identifier (UICCID), only numeric values are allowed. {{bibref|ITU-E.118}}";
-      reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.UICCCardID";
-    }
-    reference "BBF TR-196 2.0.3 full - FAPService.{i}.Transport.Security.Secret.{i}.";
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/core-model@2017-03-20.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/core-model@2017-03-20.yang
deleted file mode 100644 (file)
index 1340628..0000000
+++ /dev/null
@@ -1,1700 +0,0 @@
-module core-model {
-    namespace "urn:onf:params:xml:ns:yang:core-model";
-    prefix core-model;
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This module contains a collection of YANG definitions for managing wireless networks.";
-    revision 2017-03-20 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package core-network-model
-    **********************/ 
-        /***********************
-        * package type-definitions
-        **********************/ 
-            /***********************
-            * package resilience
-            **********************/ 
-                typedef protection-reason {
-                    type enumeration {
-                        enum wait-to-revert {
-                            description "removed";
-                        }
-                        enum signal-degrade {
-                            description "removed";
-                        }
-                        enum signal-fail {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef route-selection-control {
-                    type enumeration {
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                        enum lock-out {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef route-selection-reason {
-                    type enumeration {
-                        enum wait-to-revert {
-                            description "removed";
-                        }
-                        enum signal-degrade {
-                            description "removed";
-                        }
-                        enum signal-fail {
-                            description "removed";
-                        }
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                        enum lock-out {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef switch-control {
-                    type enumeration {
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                    }
-                    description "none";
-                }
-                typedef switch-state-reason {
-                    type enumeration {
-                        enum wait-to-revert {
-                            description "removed";
-                        }
-                        enum signal-degrade {
-                            description "removed";
-                        }
-                        enum signal-fail {
-                            description "removed";
-                        }
-                        enum normal {
-                            description "removed";
-                        }
-                        enum manual {
-                            description "removed";
-                        }
-                        enum forced {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef reversion-mode {
-                    type enumeration {
-                        enum revertive {
-                            description "removed";
-                        }
-                        enum non-revertive {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                grouping global-pac-g {
-                    uses global-class-g;
-                    description "removed";
-                }
-                grouping local-pac-g {
-                    uses local-class-g;
-                    description "removed";
-                }
-                typedef protection-type {
-                    type string;
-                    description "removed";
-                }
-
-            typedef layer-protocol-name {
-                type string;
-                description "removed";
-            }
-            typedef port-role {
-                type string;
-                description "removed";
-            }
-            typedef port-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum input {
-                        description "removed";
-                    }
-                    enum output {
-                        description "removed";
-                    }
-                    enum unidentified-or-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef forwarding-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum unidirectional {
-                        description "removed";
-                    }
-                    enum undefined-or-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef termination-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum sink {
-                        description "removed";
-                    }
-                    enum source {
-                        description "removed";
-                    }
-                    enum undefined-or-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef extended-termination-direction {
-                type enumeration {
-                    enum bidirectional {
-                        description "removed";
-                    }
-                    enum sink {
-                        description "removed";
-                    }
-                    enum source {
-                        description "removed";
-                    }
-                    enum undefined-or-unknown {
-                        description "removed";
-                    }
-                    enum contra-direction-sink {
-                        description "removed";
-                    }
-                    enum contra-direction-source {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-            typedef termination-state {
-                type enumeration {
-                    enum lp-can-never-terminate {
-                        description "removed";
-                    }
-                    enum lt-not-terminated {
-                        description "removed";
-                    }
-                    enum terminated-server-to-client-flow {
-                        description "removed";
-                    }
-                    enum terminated-client-to-server-flow {
-                        description "removed";
-                    }
-                    enum terminated-bidirectional {
-                        description "removed";
-                    }
-                    enum lt-permenantly-terminated {
-                        description "removed";
-                    }
-                    enum termination-state-unknown {
-                        description "removed";
-                    }
-                }
-                description "removed";
-            }
-
-        /***********************
-        * package object-classes
-        **********************/ 
-            /***********************
-            * package resilience
-            **********************/ 
-                grouping configuration-and-switch-controller-g {
-                    leaf switch-rule {
-                        type to-be-defined;
-                        description "removed";
-                    }
-                    leaf-list fc-switch {
-                        type leafref {
-                            path '/forwarding-construct/fc-switch/uuid';
-                        }
-                        description "removed";
-                    }
-                    container control-parameters {
-                        uses control-parameters-pac-g;
-                        description "removed";
-                    }
-                    leaf-list profile-proxy {
-                        type string;
-                        description "removed";
-                    }
-                    container local-pac {
-                        uses local-pac-g;
-                        description "none";
-                    }
-                    container global-pac {
-                        uses global-pac-g;
-                        description "none";
-                    }
-                    leaf is-frozen {
-                        type boolean;
-                        description "removed";
-                    }
-                    leaf is-coordinated-switching-both-ends {
-                        type boolean;
-                        description "removed";
-                    }
-                    leaf-list subordinate-controller {
-                        type leafref {
-                            path '/network-element/ltp/lp/config-and-switch-controller/switch-rule';
-                        }
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping control-parameters-pac-g {
-                    leaf reversion-mode {
-                        type reversion-mode;
-                        description "removed";
-                    }
-                    leaf wait-to-revert-time {
-                        type int64;
-                        default 15;
-                        description "removed";
-                    }
-                    leaf prot-type {
-                        type protection-type;
-                        description "removed";
-                    }
-                    leaf hold-off-time {
-                        type int64;
-                        description "removed";
-                    }
-                    leaf network-scheme-specification {
-                        type string;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping fc-switch-g {
-                    leaf hold-off-time {
-                        type int64;
-                        description "removed";
-                    }
-                    leaf prot-type {
-                        type protection-type;
-                        description "removed";
-                    }
-                    leaf reversion-mode {
-                        type reversion-mode;
-                        description "removed";
-                    }
-                    leaf-list selected-fc-port {
-                        type leafref {
-                            path '/forwarding-construct/fc-port/uuid';
-                        }
-                        description "removed";
-                    }
-                    leaf-list profile-proxy {
-                        type string;
-                        description "removed";
-                    }
-                    container internal-configuration-and-switch-control {
-                        uses configuration-and-switch-controller-g;
-                        description "removed";
-                    }
-                    leaf switch-control {
-                        type switch-control;
-                        description "removed";
-                    }
-                    leaf switch-selects-ports {
-                        type port-direction;
-                        description "removed";
-                    }
-                    leaf switch-selection-reason {
-                        type switch-state-reason;
-                        config false;
-                        description "removed";
-                    }
-                    container control-parameters {
-                        uses control-parameters-pac-g;
-                        description "none";
-                    }
-                    leaf wait-to-restore-time {
-                        type int64;
-                        description "removed";
-                    }
-                    uses local-class-g;
-                    description "removed";
-                }
-
-            grouping forwarding-domain-g {
-                leaf-list layer-protocol-name {
-                    type layer-protocol-name;
-                    min-elements 1;
-                    description "removed";
-                }
-                leaf-list lower-level-fd {
-                    type leafref {
-                        path '/network-element/fd/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list fc {
-                    type leafref {
-                        path '/forwarding-construct/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list lower-level-link {
-                    type string;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            grouping forwarding-construct-g {
-                leaf layer-protocol-name {
-                    type layer-protocol-name;
-                    description "removed";
-                }
-                leaf-list lower-level-fc {
-                    type leafref {
-                        path '/forwarding-construct/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list fc-route {
-                    type string;
-                    description "removed";
-                }
-                list fc-port {
-                    key 'uuid';
-                    min-elements 2;
-                    uses fc-port-g;
-                    description "removed";
-                }
-                list fc-switch {
-                    key 'uuid';
-                    uses fc-switch-g;
-                    description "removed";
-                }
-                leaf forwarding-direction {
-                    type forwarding-direction;
-                    description "removed";
-                }
-                leaf is-protection-lock-out {
-                    if-feature protection-exclude-server;
-                    type boolean;
-                    description "removed";
-                }
-                leaf service-priority {
-                    type int64;
-                    description "removed";
-                }
-                leaf-list supported-link {
-                    type string;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            container network-element {
-                presence  "";
-                list fd {
-                    key 'uuid';
-                    uses forwarding-domain-g;
-                    description "removed";
-                }
-                list ltp {
-                    key 'uuid';
-                    uses logical-termination-point-g;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            list forwarding-construct {
-                key 'uuid';
-                uses forwarding-construct-g;
-                description "none";
-            }
-            grouping fc-port-g {
-                leaf-list ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    max-elements 2;
-                    description "removed";
-                }
-                leaf role {
-                    type port-role;
-                    description "removed";
-                }
-                leaf fc-port-direction {
-                    type port-direction;
-                    description "removed";
-                }
-                leaf is-protection-lock-out {
-                    if-feature protection-exclude-fc-port;
-                    type boolean;
-                    description "removed";
-                }
-                leaf selection-priority {
-                    type int64;
-                    description "removed";
-                }
-                leaf is-internal-port {
-                    type boolean;
-                    config false;
-                    description "removed";
-                }
-                leaf-list fc-route-feeds-fc-port-egress {
-                    type string;
-                    description "removed";
-                }
-                uses local-class-g;
-                description "removed";
-            }
-            grouping layer-protocol-g {
-                leaf layer-protocol-name {
-                    type layer-protocol-name;
-                    description "removed";
-                }
-                leaf configured-client-capacity {
-                    type to-be-defined;
-                    description "removed";
-                }
-                leaf lp-direction {
-                    type termination-direction;
-                    description "removed";
-                }
-                leaf termination-state {
-                    type termination-state;
-                    description "removed";
-                }
-                list config-and-switch-controller {
-                    key 'switch-rule';
-                    uses configuration-and-switch-controller-g;
-                    description "removed";
-                }
-                leaf is-protection-lock-out {
-                    if-feature protection-exclude-ltp;
-                    type boolean;
-                    description "removed";
-                }
-                leaf fc-blocks-signal-to-lp {
-                    type string;
-                    description "none";
-                }
-                uses local-class-g;
-                description "removed";
-            }
-            grouping logical-termination-point-g {
-                leaf-list server-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list client-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                list lp {
-                    key 'uuid';
-                    min-elements 1;
-                    uses layer-protocol-g;
-                    description "removed";
-                }
-                leaf connected-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf peer-ltp {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf-list physical-port-reference {
-                    type string;
-                    description "removed";
-                }
-                leaf-list ltp-in-other-view {
-                    type leafref {
-                        path '/network-element/ltp/uuid';
-                    }
-                    description "removed";
-                }
-                leaf ltp-direction {
-                    type termination-direction;
-                    description "removed";
-                }
-                uses global-class-g;
-                description "removed";
-            }
-            feature protection-exclude-server {
-                description "In protection context if server of protection where entire server is to be excluded from use for protection.";
-            }
-            feature protection-exclude-fc-port {
-                description "In protection context where the FcPort is to be excluded from use for protection.";
-            }
-            feature protection-exclude-ltp {
-                description "In protection context if LTP of protection where entire LTP is to be excluded from use for protection.";
-            }
-
-        /***********************
-        * package diagrams
-        **********************/ 
-
-        /***********************
-        * package associations
-        **********************/ 
-
-
-    /***********************
-    * package core-foundation-model
-    **********************/ 
-        /***********************
-        * package type-definitions
-        **********************/ 
-            typedef date-and-time {
-                type string;
-                description "removed";
-            }
-            typedef bit-string {
-                type string;
-                description "removed";
-            }
-            typedef real {
-                type string;
-                description "removed";
-            }
-            typedef printable-string {
-                type string;
-                description "removed";
-            }
-            typedef to-be-defined {
-                type string;
-                description "removed";
-            }
-
-        /***********************
-        * package super-classes-and-common-packages
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping name-g {
-                    list name {
-                        key 'value-name';
-                        min-elements 1;
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping global-class-g {
-                    list local-id {
-                        key 'value-name';
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    uses name-g;
-                    uses label-g;
-                    uses extension-g;
-                    uses state-pac-g;
-                    description "removed";
-                }
-                grouping local-class-g {
-                    list local-id {
-                        key 'value-name';
-                        min-elements 1;
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    leaf uuid {
-                        type universal-id;
-                        description "A global identifier for the LocalClass, which is used as reference.";
-                    }
-                    uses name-g;
-                    uses label-g;
-                    uses extension-g;
-                    uses state-pac-g;
-                    description "removed";
-                }
-                grouping label-g {
-                    list label {
-                        key 'value-name';
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping extension-g {
-                    list extension {
-                        key 'value-name';
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping universal-id-authority-g {
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping name-and-value-authority-g {
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping conditional-package-g {
-                    uses extension-g;
-                    uses label-g;
-                    description "removed";
-                }
-
-            /***********************
-            * package type-definitions
-            **********************/ 
-                grouping name-and-value-g {
-                    leaf value-name {
-                        type string;
-                        description "removed";
-                    }
-                    leaf value {
-                        type string;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                typedef universal-id {
-                    type string;
-                    description "removed";
-                }
-                grouping address-g {
-                    leaf address-name {
-                        type string;
-                        description "removed";
-                    }
-                    list address-element {
-                        key 'uuid';
-                        uses address-element-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping local-id-and-class-g {
-                    leaf class-of-instance {
-                        type string;
-                        description "removed";
-                    }
-                    container local-id {
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping name-and-class-g {
-                    leaf class-of-instance {
-                        type string;
-                        description "removed";
-                    }
-                    container name {
-                        uses name-and-value-g;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-                grouping address-element-g {
-                    leaf address-element-name {
-                        type string;
-                        description "removed";
-                    }
-                    container local-id {
-                        uses local-id-and-class-g;
-                        description "removed";
-                    }
-                    leaf uuid {
-                        type universal-id;
-                        description "removed";
-                    }
-                    container name {
-                        uses name-and-class-g;
-                        description "removed";
-                    }
-                    leaf arbitrary-element {
-                        type string;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-
-
-        /***********************
-        * package state-model
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping state-pac-g {
-                    leaf operational-state {
-                        type operational-state;
-                        config false;
-                        description "removed";
-                    }
-                    leaf administrative-control {
-                        type administrative-control;
-                        description "removed";
-                    }
-                    leaf administrative-state {
-                        type administrative-state;
-                        config false;
-                        description "removed";
-                    }
-                    leaf lifecycle-state {
-                        type lifecycle-state;
-                        description "removed";
-                    }
-                    description "removed";
-                }
-
-            /***********************
-            * package type-definitions
-            **********************/ 
-                typedef operational-state {
-                    type enumeration {
-                        enum disabled {
-                            description "removed";
-                        }
-                        enum enabled {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef administrative-state {
-                    type enumeration {
-                        enum locked {
-                            description "removed";
-                        }
-                        enum unlocked {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef administrative-control {
-                    type enumeration {
-                        enum unlock {
-                            description "removed";
-                        }
-                        enum lock-passive {
-                            description "removed";
-                        }
-                        enum lock-active {
-                            description "removed";
-                        }
-                        enum lock-immediate {
-                            description "removed";
-                        }
-                    }
-                    description "removed
-                        removed";
-                }
-                typedef extended-admin-state {
-                    type enumeration {
-                        enum locked {
-                            description "removed";
-                        }
-                        enum unlocked {
-                            description "removed";
-                        }
-                        enum shutting-down-active {
-                            description "removed";
-                        }
-                        enum shutting-down-passive {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef lifecycle-state {
-                    type enumeration {
-                        enum planned {
-                            description "removed";
-                        }
-                        enum potential {
-                            description "removed";
-                        }
-                        enum installed {
-                            description "removed";
-                        }
-                        enum pending-removal {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-
-
-
-    /***********************
-    * package core-operations-model
-    **********************/ 
-        /***********************
-        * package pattern
-        **********************/ 
-            /***********************
-            * package data-types
-            **********************/ 
-                typedef action-verbs {
-                    type enumeration {
-                        enum create-post-add {
-                            description "none";
-                        }
-                        enum set-update-put-modify-write-add {
-                            description "none";
-                        }
-                        enum get-read {
-                            description "none";
-                        }
-                        enum delete-remove {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-                typedef test-type {
-                    type string;
-                    description "none";
-                }
-                typedef activity-directive {
-                    type enumeration {
-                        enum structure-is-not {
-                            description "none";
-                        }
-                        enum new-structure-and-values {
-                            description "none";
-                        }
-                        enum incremental-structure-and-values {
-                            description "none";
-                        }
-                        enum only-values-in-existing-structure {
-                            description "none";
-                        }
-                        enum defined-by-verb {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-
-            /***********************
-            * package diagrams
-            **********************/ 
-                typedef action-effort {
-                    type enumeration {
-                        enum best-effort {
-                            description "none";
-                        }
-                        enum exact-match {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-                typedef pause-resume-rule {
-                    type enumeration {
-                        enum no-pause-possible {
-                            description "none";
-                        }
-                    }
-                    description "none";
-                }
-
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping general-directives-g {
-                    description "none";
-                }
-                grouping necessary-initial-condition-constraints-g {
-                    leaf is-not {
-                        type boolean;
-                        description "none";
-                    }
-                    description "none";
-                }
-                grouping operation-details-g {
-                    leaf action-verb {
-                        type action-verbs;
-                        description "none";
-                    }
-                    list necessary-initialcondition-constraints {
-                        key 'is-not';
-                        uses necessary-initial-condition-constraints-g;
-                        description "none";
-                    }
-                    description "none";
-                }
-                container operation-envelope {
-                    presence  "";
-                    list operation-set {
-                        key 'effort-and-action';
-                        min-elements 1;
-                        uses operation-set-g;
-                        description "none";
-                    }
-                    container generaldirectives {
-                        uses general-directives-g;
-                        description "none";
-                    }
-                    container operationidentifiers {
-                        uses operation-identifiers-g;
-                        description "none";
-                    }
-                    description "none";
-                }
-                grouping operation-identifiers-g {
-                    description "none";
-                }
-                grouping operation-set-g {
-                    leaf-list after-operation-set {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf-list before-operation-set {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf effort-and-action {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf pause-resume-rule {
-                        type pause-resume-rule;
-                        description "none";
-                    }
-                    leaf-list operationset {
-                        type action-effort;
-                        description "none";
-                    }
-                    leaf is-short-lived {
-                        type boolean;
-                        default true;
-                        description "none";
-                    }
-                    list operation-details {
-                        key 'action-verb';
-                        min-elements 1;
-                        uses operation-details-g;
-                        description "none";
-                    }
-                    description "none";
-                }
-
-
-
-    /***********************
-    * package core-physical-model-initial
-    **********************/ 
-        /***********************
-        * package rule-models
-        **********************/ 
-            /***********************
-            * package connector-rules
-            **********************/ 
-                /***********************
-                * package object-classes
-                **********************/ 
-                    grouping connector-in-holder-g {
-                        leaf connector-on-equipment-for-holder {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-                    grouping connector-cable-end-g {
-                        leaf connector-on-equipment-for-cable {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-                    grouping connector-on-equipment-for-cable-g {
-                        leaf connector-cable-end {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-                    grouping connector-on-equipment-for-holder-g {
-                        leaf connector-in-holder {
-                            type universal-id;
-                            description "none";
-                        }
-                        uses connector-g;
-                        description "removed";
-                    }
-
-
-
-        /***********************
-        * package equipment-detail
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                /***********************
-                * package dynamic-details
-                **********************/ 
-                    grouping function-enablers-g {
-                        leaf power-state {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping mechanical-functions-g {
-                        leaf rotation-speed {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping physical-properties-g {
-                        leaf temperature {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping holder-monitors-g {
-                        leaf is-active {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf is-actual-mismatch-with-expected {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf aggregate-function {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping location-g {
-                        container equipment-location {
-                            uses address-g;
-                            description "none";
-                        }
-                        container geographical-location {
-                            uses address-g;
-                            description "none";
-                        }
-                        description "none";
-                    }
-
-                /***********************
-                * package invariant-details
-                **********************/ 
-                    grouping category-g {
-                        leaf category {
-                            type equipment-category;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping equipment-instance-g {
-                        leaf manufacture-date {
-                            type string;
-                            description "none";
-                        }
-                        leaf serial-number {
-                            type string;
-                            description "none";
-                        }
-                        leaf asset-instance-identifier {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping equipment-type-g {
-                        leaf description {
-                            type string;
-                            description "none";
-                        }
-                        leaf model-identifier {
-                            type string;
-                            description "none";
-                        }
-                        leaf part-type-identifier {
-                            type string;
-                            description "none";
-                        }
-                        leaf type-name {
-                            type string;
-                            description "none";
-                        }
-                        leaf version {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping holder-structure-g {
-                        leaf holder-category {
-                            type holder-category;
-                            description "none";
-                        }
-                        leaf is-captive {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf is-guided {
-                            type boolean;
-                            description "none";
-                        }
-                        leaf is-quantized-space {
-                            type boolean;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping manufactured-thing-g {
-                        container manufacturer-properties {
-                            uses manufacturer-properties-g;
-                            description "none";
-                        }
-                        container equipment-type {
-                            uses equipment-type-g;
-                            description "none";
-                        }
-                        container equipment-instance {
-                            uses equipment-instance-g;
-                            description "none";
-                        }
-                        container operator-augmented-equipment-type {
-                            uses operator-augmented-equipment-type-g;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping manufacturer-properties-g {
-                        leaf manufacturer-identifier {
-                            type string;
-                            description "none";
-                        }
-                        leaf manufacturer-name {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping mechanical-features-g {
-                        description "removed";
-                    }
-                    grouping operator-augmented-equipment-type-g {
-                        leaf asset-type-identifier {
-                            type string;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping physical-characteristics-g {
-                        leaf weight-characteristics {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf fire-characteristics {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf materials {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping physical-rating-g {
-                        leaf thermal-rating {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf power-rating {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping position-g {
-                        leaf relative-position {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping spatial-properties-of-type-g {
-                        leaf height {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf width {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        leaf length {
-                            type to-be-defined;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-                    grouping swapability-g {
-                        leaf is-hot-swappable {
-                            type boolean;
-                            default true;
-                            description "none";
-                        }
-                        description "removed";
-                    }
-
-
-
-        /***********************
-        * package equipment-pattern-structure
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping cable-g {
-                    list connector {
-                        key 'uuid';
-                        min-elements 1;
-                        uses connector-g;
-                        description "none";
-                    }
-                    container manufactured-thing {
-                        uses manufactured-thing-g;
-                        description "none";
-                    }
-                    container physical-characteristics {
-                        uses physical-characteristics-g;
-                        description "none";
-                    }
-                    container mechanical-features {
-                        uses mechanical-features-g;
-                        description "none";
-                    }
-                    container spatial-properties-of-type {
-                        uses spatial-properties-of-type-g;
-                        description "none";
-                    }
-                    uses global-class-g;
-                    description "removed";
-                }
-                grouping connector-g {
-                    leaf connector {
-                        type string;
-                        description "none";
-                    }
-                    list pin {
-                        key 'position';
-                        min-elements 1;
-                        uses pin-g;
-                        description "none";
-                    }
-                    leaf orientation {
-                        type connector-and-pin-orientation;
-                        description "none";
-                    }
-                    container manufactured-thing {
-                        uses manufactured-thing-g;
-                        description "none";
-                    }
-                    container position {
-                        uses position-g;
-                        description "none";
-                    }
-                    container mechanical-features {
-                        uses mechanical-features-g;
-                        description "none";
-                    }
-                    container pin-layout {
-                        uses pin-layout-g;
-                        description "none";
-                    }
-                    leaf connector-type {
-                        type to-be-defined;
-                        description "none";
-                    }
-                    uses local-class-g;
-                    uses group-of-pins-g;
-                    description "removed";
-                }
-                grouping equipment-g {
-                    list connector {
-                        key 'uuid';
-                        uses connector-g;
-                        description "none";
-                    }
-                    list contained-holder {
-                        key 'uuid';
-                        uses holder-g;
-                        description "none";
-                    }
-                    list exposed-cable {
-                        key 'uuid';
-                        uses cable-g;
-                        description "none";
-                    }
-                    container manufactured-thing {
-                        uses manufactured-thing-g;
-                        description "none";
-                    }
-                    container spatial-properties-of-type {
-                        uses spatial-properties-of-type-g;
-                        description "none";
-                    }
-                    container mechanical-features {
-                        uses mechanical-features-g;
-                        description "none";
-                    }
-                    container physical-properties {
-                        uses physical-properties-g;
-                        description "none";
-                    }
-                    container function-enablers {
-                        uses function-enablers-g;
-                        description "none";
-                    }
-                    container mechanical-functions {
-                        uses mechanical-functions-g;
-                        description "none";
-                    }
-                    container physical-characteristics {
-                        uses physical-characteristics-g;
-                        description "none";
-                    }
-                    container swapability {
-                        uses swapability-g;
-                        description "none";
-                    }
-                    container category {
-                        uses category-g;
-                        description "none";
-                    }
-                    container physical-rating {
-                        uses physical-rating-g;
-                        description "none";
-                    }
-                    leaf is-field-replaceable {
-                        type boolean;
-                        default true;
-                        config false;
-                        description "removed";
-                    }
-                    leaf-list function-block {
-                        type string;
-                        description "none";
-                    }
-                    container expected-equipment {
-                        uses expected-equipment-g;
-                        description "none";
-                    }
-                    container actual-equipment {
-                        uses actual-equipment-g;
-                        description "none";
-                    }
-                    container location {
-                        uses location-g;
-                        description "none";
-                    }
-                    uses global-class-g;
-                    description "removed";
-                }
-                list equipment {
-                    key 'uuid';
-                    uses equipment-g;
-                                description "none";
-}
-                grouping holder-g {
-                    leaf-list connector {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/uuid';
-                        }
-                        description "none";
-                    }
-                    leaf occupying-fru {
-                        type leafref {
-                            path '/equipment/uuid';
-                        }
-                        description "removed";
-                    }
-                    container spatial-properties-of-type {
-                        uses spatial-properties-of-type-g;
-                        description "none";
-                    }
-                    container holder-monitors {
-                        uses holder-monitors-g;
-                        description "none";
-                    }
-                    container holder-location {
-                        uses address-g;
-                        description "none";
-                    }
-                    container position {
-                        uses position-g;
-                        description "none";
-                    }
-                    container holder-structure {
-                        uses holder-structure-g;
-                        description "none";
-                    }
-                    container physical-rating {
-                        uses physical-rating-g;
-                        description "none";
-                    }
-                    leaf-list supported-equipment {
-                        type string;
-                        min-elements 1;
-                        description "none";
-                    }
-                    container expected-holder {
-                        uses expected-holder-g;
-                        description "none";
-                    }
-                    container actual-holder {
-                        uses actual-holder-g;
-                        description "none";
-                    }
-                    uses local-class-g;
-                    description "removed";
-                }
-
-            /***********************
-            * package data-types
-            **********************/ 
-                typedef connector-and-pin-orientation {
-                    type enumeration {
-                        enum male {
-                            description "removed";
-                        }
-                        enum female {
-                            description "removed";
-                        }
-                        enum symmetric-neutral {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef equipment-category {
-                    type enumeration {
-                        enum subrack {
-                            description "removed";
-                        }
-                        enum circuit-pack {
-                            description "removed";
-                        }
-                        enum small-formfactor-pluggable {
-                            description "removed";
-                        }
-                        enum stand-alone-unit {
-                            description "removed";
-                        }
-                        enum rack {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-                typedef holder-category {
-                    type enumeration {
-                        enum slot {
-                            description "removed";
-                        }
-                    }
-                    description "removed";
-                }
-
-
-        /***********************
-        * package expected-and-actual
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping actual-holder-g {
-                    description "removed";
-                }
-                grouping expected-holder-g {
-                    description "removed";
-                }
-                grouping actual-equipment-g {
-                    description "removed";
-                }
-                grouping expected-equipment-g {
-                    description "removed";
-                }
-
-
-        /***********************
-        * package connector-and-pin
-        **********************/ 
-            /***********************
-            * package object-classes
-            **********************/ 
-                grouping pin-g {
-                    leaf position {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/position/relative-position';
-                        }
-                        description "none";
-                    }
-                    leaf orientation {
-                        type connector-and-pin-orientation;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping pin-group-g {
-                    leaf-list pin {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/pin/position';
-                        }
-                        min-elements 1;
-                        description "none";
-                    }
-                    uses port-g;
-                    uses group-of-pins-g;
-                    description "removed";
-                }
-                grouping pin-layout-g {
-                    list position {
-                        key 'relative-position';
-                        min-elements 1;
-                        uses position-g;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping port-g {
-                    description "removed";
-                }
-                grouping signal-ref-pt-g {
-                    leaf ltp {
-                        type leafref {
-                            path '/network-element/ltp/uuid';
-                        }
-                        description "none";
-                    }
-                    leaf-list elemental-signals {
-                        type universal-id;
-                        min-elements 1;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping signal-ref-pt-group-g {
-                    leaf pin-group {
-                        type universal-id;
-                        description "none";
-                    }
-                    leaf-list signal-ref-pt {
-                        type universal-id;
-                        min-elements 1;
-                        description "none";
-                    }
-                    uses port-g;
-                    description "removed";
-                }
-                grouping elemental-signals-g {
-                    leaf-list pin {
-                        type leafref {
-                            path '/equipment/exposed-cable/connector/pin/position';
-                        }
-                        min-elements 1;
-                        description "none";
-                    }
-                    description "removed";
-                }
-                grouping group-of-pins-g {
-                    description "removed";
-                }
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/g.874.1-model@2017-03-20.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/g.874.1-model@2017-03-20.yang
deleted file mode 100644 (file)
index 4a14783..0000000
+++ /dev/null
@@ -1,646 +0,0 @@
-module g.874.1-model {
-    namespace "urn:onf:params:xml:ns:yang:g.874.1-model";
-    prefix g.874.1-model;
-
-    import core-model {
-        prefix core-model;
-    }
-    import ietf-yang-types {
-        prefix yang;
-    }
-
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "<p>Version 2.02; outcome of the 10/2013 Nuremberg meeting.<br>Version 2.03; updates for Geneva 03-2014<br>Version 2.04; updates for Shanghai 09-2014<br>Version 2.05; input to Geneva 11-2014<br>Version 2.06; output from Geneva 11-2014<br>Version 2.07; using OpenProfile 3-2015<br>Version 2.08; output from Geneva 06-2015</p>";
-    revision 2017-03-20 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package object-classes
-    **********************/ 
-        grouping otn-current-data-g {
-            leaf timestamp {
-                type date-and-time;
-                description "The timestamp associated with when the current data was collected.";
-            }
-            uses q.822-current-data-g;
-            description "This object class is an abstract class from which the OTN layer-specific CurrentData object classes are inherited. This object class is a subclass of the Q.822 CurrentData object class, which in turn is a subclass of X.739 Scanner object class. It inherits the following attributes: scannerId, operationalState, granularityPeriod, administrativeState, suspectIntervalFlag, elapsedTime, observedObjectClass, and observedObjectInstance.";
-        }
-        grouping otn-history-data-g {
-            leaf suspect-interval-flag {
-                type boolean;
-                default false;
-                description "This attribute indicates that the data collected during the interval is suspect.";
-            }
-            uses q.822-history-data-g;
-            description "This object class is an abstract class from which the OTN layer-specific HistoryData object classes are inherited. ";
-        }
-
-    /***********************
-    * package type-definitions
-    **********************/ 
-        typedef directionality {
-            type enumeration {
-                enum sink {
-                    description "none";
-                }
-                enum source {
-                    description "none";
-                }
-                enum bidirectional {
-                    description "none";
-                }
-            }
-            description "The enumeration with the options for directionality of the termination point.";
-        }
-        typedef gcc-access {
-            type enumeration {
-                enum gcc1 {
-                    description "none";
-                }
-                enum gcc2 {
-                    description "none";
-                }
-                enum gcc1-and-gcc2 {
-                    description "none";
-                }
-            }
-            description "This enumeration indicates the GCC access represented by the entity.";
-        }
-        typedef operational-state {
-            type enumeration {
-                enum enabled {
-                    description "none";
-                }
-                enum disabled {
-                    description "none";
-                }
-            }
-            description "The list of valid operational states for the connection.";
-        }
-        typedef oper-type {
-            type enumeration {
-                enum revertive {
-                    description "none";
-                }
-                enum non-revertive {
-                    description "none";
-                }
-            }
-            description "The operation type associated with the protection mechanism (either non-revertive or revertive).";
-        }
-        typedef ext-cmd-operation {
-            type enumeration {
-                enum exercise {
-                    description "none";
-                }
-                enum manual-switch {
-                    description "none";
-                }
-                enum forced-switch {
-                    description "none";
-                }
-                enum lockout {
-                    description "none";
-                }
-                enum release-of-manual-switch {
-                    description "none";
-                }
-                enum release-of-forced-switch {
-                    description "none";
-                }
-                enum release-of-lockout {
-                    description "none";
-                }
-            }
-            description "This enumeration contains the options for the actions that instruct the protection system for performing specific protection switching operations.";
-        }
-        typedef administrative-state {
-            type enumeration {
-                enum unlocked {
-                    description "none";
-                }
-                enum locked {
-                    description "none";
-                }
-                enum shutting-down {
-                    description "none";
-                }
-            }
-            description "For more information on Administrative State, See ITU-T Recs. X.731 and M.3100.";
-        }
-        typedef oc-tk-nim-k-bit-rate {
-            type enumeration {
-                enum 2.5-g {
-                    description "none";
-                }
-                enum 10-g {
-                    description "none";
-                }
-                enum 40-g {
-                    description "none";
-                }
-                enum 100-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef tim-det-mo {
-            type enumeration {
-                enum dapi {
-                    description "none";
-                }
-                enum sapi {
-                    description "none";
-                }
-                enum both {
-                    description "none";
-                }
-            }
-            description "List of modes for trace identifier mismatch detection.";
-        }
-        typedef oc-tk-nim-problem-list {
-            type enumeration {
-                enum los-p {
-                    description "Loss of Signal -- Payload";
-                }
-                enum oci {
-                    description "Open Connection Indicator";
-                }
-                enum ssf-p {
-                    description "Server Signal Failure -- Payload -- can not co-exist with SSF or SSF-O";
-                }
-                enum ssf-o {
-                    description "Server Signal Failure -- Overhead; can not co-exist with SSF or SSF-P";
-                }
-                enum ssf {
-                    description "Server Signal Failure; can not co-exist with SSF-P or SSF-O";
-                }
-                enum tim {
-                    description "Trail Trace Identifier Mismatch";
-                }
-                enum deg {
-                    description "Signal Degraded";
-                }
-                enum bdi {
-                    description "Backward Defect Indication";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef tcm-monitoring {
-            type enumeration {
-                enum intrusive {
-                    description "none";
-                }
-                enum non-intrusive {
-                    description "none";
-                }
-            }
-            description "Monitoring types for the tandem connection monitoring function.";
-        }
-        typedef tcm-mode {
-            type enumeration {
-                enum operational {
-                    description "none";
-                }
-                enum transparent {
-                    description "none";
-                }
-                enum monitor {
-                    description "none";
-                }
-            }
-            description "List of value modes for the sink side of the tandem connection monitoring function.";
-        }
-        typedef ops-mnk-ttp-k-bit-rate {
-            type enumeration {
-                enum 40-g {
-                    description "none";
-                }
-                enum 100-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef ops-mnk-ttp-problem-list {
-            type enumeration {
-                enum los {
-                    description "Loss of Signal";
-                }
-                enum lol {
-                    description "Loss of Lane Alignment";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef op-sn-ttp-problem-list {
-            type enumeration {
-                enum los {
-                    description "Loss of Signal";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef otm-n-k-bit-rates {
-            type enumeration {
-                enum 2.5-g {
-                    description "none";
-                }
-                enum 10-g {
-                    description "none";
-                }
-                enum 40-g {
-                    description "none";
-                }
-                enum 2.5-10-g {
-                    description "none";
-                }
-                enum 10-40-g {
-                    description "none";
-                }
-                enum 2.5-10-40-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef domain-interface {
-            type enumeration {
-                enum intra-domain {
-                    description "none";
-                }
-                enum inter-domain {
-                    description "none";
-                }
-            }
-            description "This enumeration provides the options for the interface associated with OTMn.";
-        }
-        typedef otm-n-optical-reach {
-            type enumeration {
-                enum intra-office {
-                    description "none";
-                }
-                enum shorthaul {
-                    description "none";
-                }
-                enum longhaul {
-                    description "none";
-                }
-            }
-            description "The valid options for reach of the optical cable.";
-        }
-        typedef apr-status {
-            type enumeration {
-                enum on {
-                    description "none";
-                }
-                enum off {
-                    description "none";
-                }
-            }
-            description "The enumeration of the options for the Automatic Power Reduction Status.";
-        }
-        typedef ot-sn-ttp-problem-list {
-            type enumeration {
-                enum bdi-p {
-                    description "BDI-P (Backward Defect Indication - Payload); not co-exist with BDI-O or BDI";
-                }
-                enum bdi-o {
-                    description "BDI-O (Backward Defect Indication - Overhead); not co-exist with BDI-P or BDI";
-                }
-                enum bdi {
-                    description "BDI (Backward Defect Indication); not co-exist with BDI-P or BDI-O";
-                }
-                enum tim {
-                    description "TIM (Trail Trace Identifier Mismatch);";
-                }
-                enum los-p {
-                    description "-P (Loss of Signal - Payload); not co-exist with LOS-O or LOS";
-                }
-                enum los-o {
-                    description "LOS-O (Loss of Signal - Overhead); not co-exist with LOS-P or LOS";
-                }
-                enum los {
-                    description "LOS (Loss of Signal); not co-exist with LOS-P or LOS-O. ";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef ot-uk-ctp-adaptation {
-            type enumeration {
-                enum regular {
-                    description "i.e. OPSM/OTUk-a, OCh[r]/OTUk-a";
-                }
-                enum none {
-                    description "i.e. OPSM/OTUk-b, OCh[r]/OTUk-b";
-                }
-                enum vendor-specific {
-                    description "i.e. OCh[r]/OTUk-v";
-                }
-                enum functionally-standardized {
-                    description "i.e. OCh[r]/OTUkV";
-                }
-            }
-            description "The adaptation options for OTUk_ConnectionTermationPoints.";
-        }
-        typedef ot-uk-ctp-k-bit-rate {
-            type enumeration {
-                enum 2.5-g {
-                    description "none";
-                }
-                enum 10-g {
-                    description "none";
-                }
-                enum 40-g {
-                    description "none";
-                }
-                enum 100-g {
-                    description "none";
-                }
-            }
-            description "Provides an enumeration with the meaning of each 'k' value.";
-        }
-        typedef ot-uk-ctp-problem-list {
-            type enumeration {
-                enum lof {
-                    description "Loss of Frame";
-                }
-                enum ais {
-                    description "Alarm Indication Signal";
-                }
-                enum lom {
-                    description "Loss of MultiFrame";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef ot-uk-ttp-problem-list {
-            type enumeration {
-                enum tim {
-                    description "Trail Trace Identifier Mismatch";
-                }
-                enum deg {
-                    description "Signal Degraded";
-                }
-                enum bdi {
-                    description "Backward Defect Indication";
-                }
-                enum ssf {
-                    description "Server Signal Failure";
-                }
-            }
-            description "The valid list of problems for the entity.";
-        }
-        typedef monitored-direction {
-            type enumeration {
-                enum sink {
-                    description "none";
-                }
-                enum source {
-                    description "none";
-                }
-            }
-            description "The enumeration with the options for directionality for nonintrusive monitoring.";
-        }
-        typedef deg-thr-type {
-            type enumeration {
-                enum percentage {
-                    description "<p>Choice of % or Number of errored blocks</p>";
-                }
-                enum number-errored-blocks {
-                    description "<p>Number of % or blocks</p>";
-                }
-            }
-            description "<p>The value of the threshold can be provisioned in terms of number of errored blocks or in terms of percentage of errored blocks. For percentage-based specification, in order to support provision of less than 1%, the specification consists of two fields. The first field indicates the granularity of percentage. For examples, in 1%, in 0.1%, or in 0.01%, etc. The second field indicates the multiple of the granularity. For number of errored block based, the value is a positive integer.</p>";
-        }
-        typedef link-type {
-            type enumeration {
-                enum dwdm {
-                    description "none";
-                }
-                enum cwdm {
-                    description "none";
-                }
-                enum no-wdm {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef application-identifier-type {
-            type enumeration {
-                enum standard {
-                    description "none";
-                }
-                enum proprietary {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef printable-string {
-            type string;
-            description "none";
-        }
-        typedef date-and-time {
-            type string;
-            description "This primitive type defines the date and time according to the following structure:
-                'yyyyMMddhhmmss.s[Z|{+|-}HHMm]' where:
-                yyyy    '0000'..'9999'    year
-                MM        '01'..'12'            month
-                dd        '01'..'31'            day
-                hh        '00'..'23'            hour
-                mm        '00'..'59'            minute
-                ss        '00'..'59'            second
-                s        '.0'..'.9'            tenth of second (set to '.0' if EMS or NE cannot support this granularity)
-                Z        'Z'                    indicates UTC (rather than local time)
-                {+|-}    '+' or '-'            delta from UTC
-                HH        '00'..'23'            time zone difference in hours
-                Mm        '00'..'59'            time zone difference in minutes.";
-        }
-        typedef aps-channel {
-            type enumeration {
-                enum path {
-                    description "none";
-                }
-                enum tcm1 {
-                    description "none";
-                }
-                enum tcm2 {
-                    description "none";
-                }
-                enum tcm3 {
-                    description "none";
-                }
-                enum tcm4 {
-                    description "none";
-                }
-                enum tcm5 {
-                    description "none";
-                }
-                enum tcm6 {
-                    description "none";
-                }
-                enum section {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef bit-string {
-            type string;
-            description "This primitive type defines a bit oriented string.
-                The size of the BitString will be defined in the valueRange property of the attribute; according to ASN.1 (X.680).
-                The semantic of each bit position will be defined in the Documentation field of the attribute.";
-        }
-        typedef delay-measurement-role {
-            type enumeration {
-                enum controller {
-                    description "none";
-                }
-                enum responder {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef resize-operation-type {
-            type enumeration {
-                enum increase-bw {
-                    description "Increase Bandwidth";
-                }
-                enum decrease-bw {
-                    description "Decrease Bandwidth";
-                }
-            }
-            description "none";
-        }
-        typedef granularity-period-type {
-            type enumeration {
-                enum unknown {
-                    description "none";
-                }
-                enum period-15-min {
-                    description "none";
-                }
-                enum period-24-hours {
-                    description "none";
-                }
-            }
-            description "The enumeration with the options for granularity period of the performance data.";
-        }
-
-    /***********************
-    * package illustrative-object-diagrams
-    **********************/ 
-
-    /***********************
-    * package imported-information-object-classes
-    **********************/ 
-        /***********************
-        * package q.822
-        **********************/ 
-            grouping q.822-current-data-g {
-                leaf suspect-interval-flag {
-                    type boolean;
-                    description "This attribute is used to indicate that the performance data for the current period may not be reliable. Some reasons for this to occur are:- Suspect data were detected by the actual resource doing data collection.- Transition of the administrativeState attribute to/from the 'lock' state.- Transition of the operationalState to/from the 'disabled' state.- Scheduler setting that inhibits the collection function.- The performance counters were reset during the interval.- The currentData (or subclass) object instance was created during the monitoring period.";
-                }
-                leaf elapsed-time {
-                    type int64;
-                    description "none";
-                }
-                uses x.739-scanner-g;
-                description "none";
-            }
-            grouping q.822-history-data-g {
-                leaf history-data-id {
-                    type string;
-                    description "none";
-                }
-                leaf period-end-time {
-                    type yang:date-and-time;
-                    description "none";
-                }
-                leaf granularity-period {
-                    type granularity-period-type;
-                    description "none";
-                }
-                uses x.721-top-g;
-                description "none";
-            }
-
-        /***********************
-        * package x.739
-        **********************/ 
-            grouping x.739-scanner-g {
-                leaf scanner-id {
-                    type string;
-                    description "none";
-                }
-                leaf granularity-period {
-                    type granularity-period-type;
-                    description "none";
-                }
-                leaf administrative-state {
-                    type core-model:administrative-state;
-                    description "none";
-                }
-                uses x.721-top-g;
-                description "none";
-            }
-
-        /***********************
-        * package x.721
-        **********************/ 
-            grouping x.721-top-g {
-                leaf object-class {
-                    type object-identifier;
-                    description "ObjectClass ::= CHOICE{    globalForm    [0] OBJECT IDENTIFIER,
-                        localForm    [1] INTEGER}";
-                }
-                leaf name-binding {
-                    type object-identifier;
-                    description "none";
-                }
-                description "This is the top level of managed object class hierarchy and every other managed object class is a specialization of either this generic class (top) or a specialization of subclass of top. The parameter miscellaneousError is to be used when a processing failure has occurred and the error condition encountered does not match any of object's defined specific error types.";
-            }
-
-
-    /***********************
-    * package imported-data-types
-    **********************/ 
-        typedef object-instance {
-            type string;
-            description "none";
-        }
-        typedef name {
-            type string;
-            description "none";
-        }
-        typedef object-identifier {
-            type string;
-            description "none";
-        }
-        typedef generalized-time {
-            type string;
-            description "none";
-        }
-        typedef time-period {
-            type string;
-            description "This primitive Type is imported from X.739.";
-        }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/ietf-ptp-dataset@2017-02-08.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/ietf-ptp-dataset@2017-02-08.yang
deleted file mode 100644 (file)
index d899e56..0000000
+++ /dev/null
@@ -1,605 +0,0 @@
-   module ietf-ptp-dataset{
-     namespace "urn:ietf:params:xml:ns:yang:ietf-ptp-dataset";
-     prefix "ptp-dataset";
-     organization "IETF TICTOC Working Group";
-     contact
-         "WG Web:   http://tools.ietf.org/wg/tictoc/
-          WG List:  <mailto:tictoc@ietf.org>
-          WG Chair: Karen O'Donoghue
-                    <mailto:odonoghue@isoc.org>
-          WG Chair: Yaakov Stein
-                    <mailto: Yaakov_s@rad.com>
-          Editor:   Yuanlong Jiang
-                    <mailto:jiangyuanlong@huawei.com>
-          Editor:   Rodney Cummings
-                    <mailto:rodney.cummings@ni.com>";
-     description
-       "This YANG module defines a data model for the configuration
-       of IEEE 1588-2008 clocks, and also for retrieval of the state
-       data of IEEE 1588-2008 clocks.";
-
-     revision "2017-02-08" {
-       description "Version 4.0";
-       reference "draft-ietf-tictoc-1588v2-yang";
-      }
-
-     typedef delay-mechanism-enumeration {
-       type enumeration {
-         enum E2E {
-           value 1;
-           description
-             "The port uses the delay request-response
-              mechanism.";
-         }
-         enum P2P {
-           value 2;
-           description
-             "The port uses the peer delay mechanism.";
-         }
-         enum DISABLED {
-           value 254;
-           description
-             "The port does not implement any delay
-              mechanism.";
-         }
-       }
-       description
-         "The propagation delay measuring option used by the
-         port. Values for this enumeration are specified
-         by the IEEE 1588 standard exclusively.";
-       reference
-         "IEEE Std 1588-2008: 8.2.5.4.4";
-     }
-
-     typedef port-state-enumeration {
-       type enumeration {
-         enum INITIALIZING {
-           value 1;
-           description
-             "The port is initializing its data sets, hardware, and
-             communication facilities.";
-         }
-         enum FAULTY {
-           value 2;
-           description
-             "The port is in the fault state.";
-         }
-         enum DISABLED {
-           value 3;
-           description
-             "The port is disabled, and is not communicating PTP
-             messages (other than possibly PTP management
-             messages).";
-         }
-         enum LISTENING {
-           value 4;
-           description
-             "The port is listening for an Announce message.";
-         }
-         enum PRE_MASTER {
-           value 5;
-           description
-             "The port is in the pre-master state.";
-         }
-         enum MASTER {
-           value 6;
-           description
-             "The port is behaving as a master port.";
-         }
-         enum PASSIVE {
-           value 7;
-           description
-             "The port is in the passive state.";
-         }
-         enum UNCALIBRATED {
-           value 8;
-           description
-             "A master port has been selected, but the port is still
-             in the uncalibrated state.";
-         }
-         enum SLAVE {
-           value 9;
-           description
-             "The port is synchronizing to the selected
-             master port.";
-         }
-       }
-       description
-         "The current state of the protocol engine associated
-         with the port.  Values for this enumeration are specified
-         by the IEEE 1588 standard exclusively.";
-       reference
-         "IEEE Std 1588-2008: 8.2.5.3.1, 9.2.5";
-     }
-
-     typedef time-interval-type {
-       type int64;
-       description
-         "Derived data type for time interval,
-         represented in units of nanoseconds and
-         multipled by 2^16";
-       reference
-         "IEEE Std 1588-2008: 5.3.2";
-     }
-
-     typedef clock-identity-type {
-       type binary {
-         length "8";
-       }
-       description
-         "Derived data type to identify a clock";
-       reference
-         "IEEE Std 1588-2008: 5.3.4";
-     }
-
-     grouping port-identity-grouping {
-       description
-         "Derived data type to identify a port, which contains
-         two members: clockIdentity and portNumber.";
-       reference
-         "IEEE Std 1588-2008: 5.3.5";
-
-       leaf clock-identity {
-         type clock-identity-type;
-         description
-           "Identity of the clock";
-       }
-
-       leaf port-number {
-         type uint16;
-         description
-           "Port number";
-       }
-     }
-
-     grouping clock-quality-grouping {
-       description
-         "Derived data type for quality of a clock, which contains
-         clockClass, clockAccuracy and offsetScaledLogVariance.";
-       reference
-         "IEEE Std 1588-2008: 5.3.7";
-
-       leaf clock-class {
-         type uint8;
-         default 248;
-         description
-           "The clockClass denotes the traceability of the time
-           or frequency distributed by the clock.";
-       }
-
-       leaf clock-accuracy {
-         type uint8;
-         description
-           "The clockAccuracy indicates the expected accuracy
-            of the clock.";
-       }
-
-       leaf offset-scaled-log-variance {
-         type uint16;
-         description
-           "The offsetScaledLogVariance provides an
-           estimate of the variations of the clock
-           from a linear timescale when it is not synchronized
-           to another clock using the protocol.";
-       }
-     }
-
-     grouping default-ds-entry {
-       description
-         "Collection of members of the default data set.";
-
-       leaf two-step-flag {
-         type boolean;
-         description
-               "When set, the clock is a two-step clock; otherwise,
-               the clock is a one-step clock.";
-       }
-
-       leaf clock-identity {
-         type clock-identity-type;
-         description
-           "The clockIdentity of the local clock";
-       }
-
-       leaf number-ports {
-         type uint16;
-         description
-           "The number of PTP ports on the device.";
-       }
-
-       container clock-quality {
-         description
-           "The clockQuality of the local clock.";
-
-         uses clock-quality-grouping;
-       }
-
-       leaf priority1 {
-         type uint8;
-         description
-           "The priority1 attribute of the local clock.";
-       }
-
-       leaf priority2{
-         type uint8;
-         description
-           "The priority2 attribute of the local clock. ";
-       }
-
-       leaf domain-number {
-         type uint8;
-         description
-                "The domain number of the current syntonization
-               domain.";
-       }
-
-       leaf slave-only {
-         type boolean;
-         description
-           "When set, the clock is a slave-only clock.";
-       }
-     }
-
-     grouping current-ds-entry {
-       description
-         "Collection of members of current data set.";
-
-       leaf steps-removed {
-         type uint16;
-         default 0;
-         description
-           "The number of communication paths traversed
-           between the local clock and the grandmaster clock.";
-       }
-       leaf offset-from-master {
-         type time-interval-type;
-         description
-           "The current value of the time difference between
-           a master and a slave clock as computed by the slave.";
-       }
-
-       leaf mean-path-delay {
-         type time-interval-type;
-         description
-           "The current value of the mean propagation time between
-           a master and a slave clock as computed by the slave.";
-
-       }
-     }
-
-     grouping parent-ds-entry {
-       description
-         "Collection of members of the parent data set.";
-
-       container parent-port-identity {
-         description
-           "The portIdentity of the port on the master";
-         uses port-identity-grouping;
-       }
-       leaf parent-stats {
-         type boolean;
-         default false;
-         description
-           "When set, the values of
-            observedParentOffsetScaledLogVariance and
-            observedParentClockPhaseChangeRate of parentDS
-            have been measured and are valid.";
-       }
-       leaf observed-parent-offset-scaled-log-variance {
-         type uint16;
-         default 0xFFFF;
-         description
-           "An estimate of the parent clock's PTP variance
-            as observed by the slave clock.";
-       }
-       leaf observed-parent-clock-phase-change-rate {
-         type int32;
-         description
-           "An estimate of the parent clock's phase change rate
-            as observed by the slave clock.";
-       }
-       leaf grandmaster-identity {
-         type binary{
-           length "8";
-         }
-
-         description
-          "The clockIdentity attribute of the grandmaster clock.";
-
-       }
-       container grandmaster-clock-quality {
-         description
-           "The clockQuality of the grandmaster clock.";
-         uses clock-quality-grouping;
-       }
-       leaf grandmaster-priority1 {
-         type uint8;
-         description
-           "The priority1 attribute of the grandmaster clock.";
-       }
-       leaf grandmaster-priority2 {
-         type uint8;
-         description
-           "The priority2 attribute of the grandmaster clock.";
-       }
-     }
-
-     grouping time-properties-ds-entry {
-       description
-         "Collection of members of the timeProperties data set.";
-       leaf current-utc-offset-valid {
-         type boolean;
-         description
-           "When set, the current UTC offset is valid.";
-       }
-       leaf current-utc-offset {
-         type int16;
-         description
-           "The offset between TAI and UTC when the epoch of the
-            PTP system is the PTP epoch, i.e., when ptp-timescale
-            is TRUE; otherwise, the value has no meaning.";
-       }
-       leaf leap59 {
-         type boolean;
-         description
-               "When set, the last minute of the current UTC day
-               contains 59 seconds.";
-       }
-       leaf leap61 {
-         type boolean;
-         description
-               "When set, the last minute of the current UTC day
-               contains 61 seconds.";
-       }
-       leaf time-traceable {
-         type boolean;
-         description
-           "When set, the timescale and the currentUtcOffset are
-               traceable to a primary reference.";
-       }
-       leaf frequency-traceable {
-         type boolean;
-         description
-           "When set, the frequency determining the timescale
-            is traceable to a primary reference.";
-       }
-       leaf ptp-timescale {
-         type boolean;
-         description
-           "When set, the clock timescale of the grandmaster
-                clock is PTP; otherwise, the timescale is ARB
-               (arbitrary).";
-       }
-       leaf time-source {
-         type uint8;
-         description
-           "The source of time used by the grandmaster clock.";
-
-       }
-     }
-
-     grouping port-ds-entry {
-       description
-         "Collection of members of the port data set.";
-
-       container port-identity {
-         description
-           "The portIdentity attribute of the local port.";
-         uses port-identity-grouping;
-       }
-
-       leaf port-state {
-         type port-state-enumeration;
-         default "INITIALIZING";
-         description
-           "Current state associated with the port.";
-       }
-
-       leaf log-min-delay-req-interval {
-         type int8;
-         description
-           "The base-two logarithm of the minDelayReqInterval
-            (the minimum permitted mean time interval between
-            successive Delay_Req messages).";
-       }
-
-       leaf peer-mean-path-delay {
-         type time-interval-type;
-         default 0;
-         description
-           "An estimate of the current one-way propagation delay
-            on the link when the delayMechanism is P2P; otherwise,
-            it is zero.";
-       }
-
-       leaf log-announce-interval {
-         type int8;
-         description
-           "The base-two logarithm of the mean
-            announceInterval (mean time interval between
-            successive Announce messages).";
-       }
-
-       leaf announce-receipt-timeout {
-         type uint8;
-         description
-           "The number of announceInterval that have to pass
-            without receipt of an Announce message before the
-            occurrence of the event ANNOUNCE_RECEIPT_TIMEOUT_
-            EXPIRES.";
-       }
-
-       leaf log-sync-interval {
-         type int8;
-         description
-           "The base-two logarithm of the mean SyncInterval
-            for multicast messages.  The rates for unicast
-            transmissions are negotiated separately on a per port
-            basis and are not constrained by this attribute.";
-       }
-
-       leaf delay-mechanism {
-         type delay-mechanism-enumeration;
-         description
-           "The propagation delay measuring option used by the
-            port in computing meanPathDelay.";
-       }
-
-       leaf log-min-pdelay-req-interval {
-         type int8;
-         description
-           "The base-two logarithm of the
-            minPdelayReqInterval (minimum permitted mean time
-            interval between successive Pdelay_Req messages).";
-
-       }
-
-       leaf version-number {
-         type uint8;
-         description
-           "The PTP version in use on the port.";
-       }
-     }
-
-     grouping transparent-clock-default-ds-entry {
-       description
-         "Collection of members of the transparentClockDefault data
-           set (default data set for a transparent clock).";
-
-       leaf clock-identity {
-         type clock-identity-type;
-         description
-           "The clockIdentity of the transparent clock.";
-       }
-       leaf number-ports {
-         type uint16;
-         description
-           "The number of PTP ports on the device.";
-       }
-       leaf delay-mechanism {
-         type delay-mechanism-enumeration;
-         description
-           "The propagation delay measuring option
-            used by the transparent clock.";
-       }
-       leaf primary-domain {
-         type uint8;
-         default 0;
-         description
-          "The domainNumber of the primary syntonization domain.";
-
-       }
-     }
-
-     grouping transparent-clock-port-ds-entry {
-       description
-         "Collection of members of the transparentClockPort data
-          set (port data set for a transparent clock).";
-
-       container port-identity {
-         description
-           "The portIdentity of the local port.";
-
-         uses port-identity-grouping;
-       }
-       leaf log-min-pdelay-req-interval {
-         type int8;
-         description
-           "The logarithm to the base 2 of the
-            minPdelayReqInterval (minimum permitted mean time
-            interval between successive Pdelay_Req messages).";
-       }
-       leaf faulty-flag {
-         type boolean;
-         default false;
-         description
-           "When set, the port is faulty.";
-       }
-       leaf peer-mean-path-delay {
-         type time-interval-type;
-         default 0;
-         description
-           "An estimate of the current one-way propagation delay
-            on the link when the delayMechanism is P2P; otherwise,
-            it is zero.";
-       }
-     }
-
-     list instance-list {
-
-       key "instance-number";
-
-       description
-         "List of one or more PTP datasets in the device, one for
-         each domain (see IEEE 1588-2008 subclause 6.3).
-         Each PTP dataset represents a distinct instance of
-         PTP implementation in the device (i.e. distinct
-         Ordinary Clock or Boundary Clock).";
-
-       leaf instance-number {
-         type uint16;
-         description
-           "The instance number of the current PTP instance";
-       }
-        container default-ds {
-          description
-            "The default data set of the clock.";
-          uses default-ds-entry;
-        }
-
-        container current-ds {
-          description
-            "The current data set of the clock.";
-          uses current-ds-entry;
-        }
-
-        container parent-ds {
-          description
-            "The parent data set of the clock.";
-          uses parent-ds-entry;
-        }
-
-        container time-properties-ds {
-          description
-            "The timeProperties data set of the clock.";
-          uses time-properties-ds-entry;
-        }
-
-        list port-ds-list {
-          key "port-number";
-          description
-            "List of port data sets of the clock.";
-          leaf port-number{
-            type leafref{
-              path "../port-identity/port-number";
-            }
-            description
-              "Refers to the portNumber memer of
-              portDS.portIdentity.";
-          }
-          uses port-ds-entry;
-        }
-     }
-
-     container transparent-clock-default-ds {
-       description
-         "The members of the transparentClockDefault Data Set";
-       uses transparent-clock-default-ds-entry;
-     }
-
-     list transparent-clock-port-ds-list {
-       key "port-number";
-       description
-         "List of transparentClockPort data sets
-          of the transparent clock.";
-       leaf port-number {
-         type leafref {
-           path "../port-identity/port-number";
-         }
-          description
-            "Refers to the portNumber memer
-             of transparentClockPortDS.portIdentity.";
-        }
-        uses transparent-clock-port-ds-entry;
-      }
-   }
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/ltp-path@2017-05-26.yang.wronghere b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/ltp-path@2017-05-26.yang.wronghere
deleted file mode 100644 (file)
index e9404d8..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-module ltp-path {
-  namespace "urn:onf:params:xml:ns:yang:ltp-path";
-  prefix ltp-path;
-
-  import core-model {
-    prefix core-model;
-  }
-
-  organization
-   "ONF (Open Networking Foundation) Open Transport Working Group -
-    Wireless Transport Project";
-  contact 
-    "WG Web: <https://www.opennetworking.org/technical-communities/areas/
-              specification/1931-optical-transport>
-     WG List:  <mailto:wireless-transport@login.opennetworking.org>
-     WG Chair: Lyndon Ong
-               <mailto:lyong@ciena.com>
-     WG Chair: Giorgio Cazzaniga
-               <mailto:giorgio.cazzaniga@sm-optics.com>
-     Editor:   Martin Skorupski
-               <mailto:martin.skorupski@highstreet-technologies.com>";
-  description 
-    "This module contains a collection of YANG definitions describing a 
-     telecommunication network path.";
-  revision 2017-05-26 {
-    description "Initial version";
-    reference "ltp-path, ONF core-model 1.2";
-  }
-
-  typedef layer-protocol-name-enumeration {
-    type enumeration {
-      enum ETH {
-        value 1;
-        description
-          "Identifying the layer of Ethernet.";
-      }
-      enum PTP {
-        value 2;
-        description
-          "Identifying the layer or the Precision Time Protocol.";
-       }
-    }
-
-    description
-      "The propagation of the layer protocol name.";
-  }
-
-  container ltp-path {
-    description
-      "Listing all the path-identifiers, used by RESTCONF interfaces to
-       address an entry in the ltp-path-list.";
-
-    leaf-list path-identifier {
-      type leafref {
-        path '/ltp-path/ltp-path-list/path-id';
-      }
-      description 
-        "List of reference values for existing path entries.";
-    }
-
-    list ltp-path-list {
-
-      key "path-id";
-
-      description
-        "A list of path found in the network.";
-
-      leaf path-id {
-        type string;
-        description
-          "A unique identifier of a path. It migth be beneficial to use the 
-           format as defined in RFC 4122 
-           (https://www.ietf.org/rfc/rfc4122.txt).";
-      }
-
-      leaf path-name {
-        type string;
-        description
-          "The human readable name of a path. It should include start 
-           and end point.";
-      }
-
-      leaf forwarding-direction {
-        type core-model:forwarding-direction;
-        description
-          "Defines the directionality of the path.";
-      }
-
-      leaf layer-protocol-name {
-        type layer-protocol-name-enumeration;
-        description
-          "Defines the layer of the path. Please see ONF CoreModel for 
-           further details.";
-      }
-
-      list logical-termination-point-list {
-
-        key "ltp-index";
-        min-elements 2;
-
-        description
-          "An ordered list of logical-termination points, defining the path.";
-
-        leaf ltp-index {
-          type string;
-          description
-            "The index of the LTP with in the list. The LTP with the highest
-             index is the end-point of the path. The LTP with the lowest
-             index is the start-point of the path.";
-        }
-
-        leaf ltp-reference {
-          type leafref {
-            path '/core-model:network-element/core-model:ltp/core-model:uuid';
-          }
-          description
-            "The reference value of a network-elements LTP.";
-        }
-
-        leaf physical-port-reference {
-          type string;
-          description
-            "A text label for the unmodelled physical port associated with 
-             the LTP. In many cases there is no associated physical port.";
-        }
-    
-        leaf node-reference {
-          type leafref {
-            path '/core-model:network-element/core-model:uuid';
-          }
-          description
-            "A reference value identifying a network-element.";
-        }
-      }
-   }
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/microwave-model@2017-03-24.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/microwave-model@2017-03-24.yang
deleted file mode 100644 (file)
index e6b6bb3..0000000
+++ /dev/null
@@ -1,2262 +0,0 @@
-module microwave-model {
-    namespace "urn:onf:params:xml:ns:yang:microwave-model";
-    prefix microwave-model;
-
-    import core-model {
-        prefix core-model;
-    }
-    import g.874.1-model {
-        prefix g;
-    }
-    import ietf-yang-types {
-        prefix yang;
-    }
-
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This module contains a collection of YANG definitions for managing wireless networks.";
-    revision 2017-03-24 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package type-definitions
-    **********************/ 
-        typedef loop-back-type {
-            type enumeration {
-                enum none {
-                    description "none";
-                }
-                enum if {
-                    description "Intermediate Frequency on the interface between indoor and outdoor unit.";
-                }
-                enum rf {
-                    description "Radio Frequency on the interface between outdoor unit and outdoor unit at the remote site.";
-                }
-            }
-            description "none";
-        }
-        typedef severity-type {
-            type enumeration {
-                enum non-alarmed {
-                    description "none";
-                }
-                enum warning {
-                    description "none";
-                }
-                enum minor {
-                    description "none";
-                }
-                enum major {
-                    description "none";
-                }
-                enum critical {
-                    description "none";
-                }
-            }
-            description "According to ITU-T M.3160";
-        }
-        grouping channel-plan-type-g {
-            leaf supported-channel-plan {
-                type string;
-                default "Channel plan name not defined.";
-                config false;
-                description "Unique name (e.g. ECC/REC/(01)04_Annex 5) of a document, which describes a frequency grid that can be adjusted at the air interface. Corresponding channel plans to be delivered by the hardware vendor and to be stored by the operator in an controller/application attached database.";
-            }
-            leaf duplex-distance-is-variable {
-                type boolean;
-                default false;
-                config false;
-                description "To be set on  'true', if the distance between transmitted and received frequency is variable.";
-            }
-            leaf duplex-distance {
-                type int32;
-                units "kHz";
-                default -1;
-                config false;
-                description "Distance between transmitted and received frequency.";
-            }
-            leaf auto-freq-select-is-avail {
-                type boolean;
-                default false;
-                config false;
-                description "In case the microwave radio is capable of automatically selecting the transmit frequency in unlicensed bands, this field shall contain a 'true'.";
-            }
-            list transmission-mode-list {
-                key 'transmission-mode-id';
-                config false;
-                min-elements 1;
-                uses transmission-mode-type-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping transmission-mode-type-g {
-            leaf transmission-mode-id {
-                type core-model:universal-id;
-                config false;
-                description "Indentifies the transmissionMode for internal reference.";
-            }
-            leaf channel-bandwidth {
-                type int32;
-                units "kHz";
-                default -1;
-                config false;
-                description "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-            }
-            leaf modulation-scheme {
-                type int16;
-                units "symbols";
-                default -1;
-                config false;
-                description "Modulation scheme, which is base to the other characteristics described in the same transmissionModeType data type. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256').";
-            }
-            leaf code-rate {
-                type int8;
-                units "%";
-                default -1;
-                config false;
-                description "Code rate of the coding scheme in % (Net bit rate ? Gross bit rate ? code rate).";
-            }
-            leaf tx-power-min {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the minimum transmit power the modem can operate in dBm.";
-            }
-            leaf tx-power-max {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the maximum transmit power the modem can operate in dBm.";
-            }
-            leaf rx-threshold {
-                type int16;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the receive level required to decode the received signal with a Bit Error Rate of 1e-6 or less.";
-            }
-            leaf am-upshift-level {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the receive level that has to be exceeded to shift into a higher modulation scheme.";
-            }
-            leaf am-downshift-level {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Value of the receive level that has to be exceeded for not shifting into a lower modulation scheme.";
-            }
-            leaf xpic-is-avail {
-                type boolean;
-                default false;
-                config false;
-                description "In case this air interface type is capable of XPIC, this field shall contain a 'true'. This information shall purely relate to capabilities of the equipment type, but not to the operational capability of a specific hardware composition on site. Means for example that this attribute might contain a 'true' statement, even if an additional cable would have been required to actually operate XPIC in a specific case.";
-            }
-            description "none";
-        }
-        typedef polarization-type {
-            type enumeration {
-                enum not-specified {
-                    description "none";
-                }
-                enum horizontal {
-                    description "none";
-                }
-                enum vertical {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping air-interface-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping air-interface-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to AirInterface::AirInterfaceCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        grouping air-interface-performance-type-g {
-            leaf es {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Number of errored seconds.";
-            }
-            leaf ses {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Number of severely errored seconds.";
-            }
-            leaf cses {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Number of consecutive severely errored seconds.";
-            }
-            leaf unavailability {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Total time of unavailability in seconds.";
-            }
-            leaf tx-level-min {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Minimum transmit power. Signed integers are required.";
-            }
-            leaf tx-level-max {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Maximum transmit power. Signed integers are required.";
-            }
-            leaf tx-level-avg {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Averaged transmit power. Signed integers are required.";
-            }
-            leaf rx-level-min {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Minimum receive level. Signed integers are required.";
-            }
-            leaf rx-level-max {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Maximum receive level. Signed integers are required.";
-            }
-            leaf rx-level-avg {
-                type int8;
-                units "dBm";
-                default 99;
-                config false;
-                description "Averaged receive level. Signed integers are required.";
-            }
-            leaf time2-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Sum of all seconds the transmitter operated in e.g. BPSK.";
-            }
-            leaf time4-states-s {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time4-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time8-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time16-states-s {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time16-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time32-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time64-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time128-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time256-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time512-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time512-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time1024-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time1024-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time2048-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time2048-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time4096-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time4096-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time8192-states {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf time8192-states-l {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "none";
-            }
-            leaf snir-min {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Minimum signal to (noise+interference) ratio.";
-            }
-            leaf snir-max {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Maximum signal to (noise+interference) ratio.";
-            }
-            leaf snir-avg {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Averaged signal to (noise+interference) ratio.";
-            }
-            leaf xpd-min {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Minimum cross polarization discrimination.";
-            }
-            leaf xpd-max {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Maximum cross polarization discrimination.";
-            }
-            leaf xpd-avg {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Averaged cross polarization discrimination.";
-            }
-            leaf rf-temp-min {
-                type int8;
-                units "C";
-                default -99;
-                config false;
-                description "Lowest temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            }
-            leaf rf-temp-max {
-                type int8;
-                units "C";
-                default -99;
-                config false;
-                description "Highest temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            }
-            leaf rf-temp-avg {
-                type int8;
-                units "C";
-                default -99;
-                config false;
-                description "Averaged temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-            }
-            leaf defect-blocks-sum {
-                type int16;
-                units "blocks";
-                default -1;
-                config false;
-                description "Total number of blocks that were defect after receiving and could not be corrected by the FEC.";
-            }
-            leaf time-period {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Total length of the measurement period.";
-            }
-            description "Consolidated performance information of the air interface.";
-        }
-        grouping air-interface-current-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-performance-type-g;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping air-interface-historical-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-performance-type-g;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-        typedef protection-type {
-            type enumeration {
-                enum hsb {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef role-type {
-            type enumeration {
-                enum working {
-                    description "none";
-                }
-                enum protection {
-                    description "none";
-                }
-                enum protected {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping diversity-type-g {
-            leaf diversity-name {
-                type string;
-                default "Diversity name not defined.";
-                config false;
-                description "Names to be chosen from the following list: 'spaceDiversity', 'frequencyDiversity'";
-            }
-            leaf number-of-air-interfaces-max {
-                type int8;
-                units "air interfaces";
-                default 1;
-                config false;
-                description "Maximum number of air interfaces that could be part of this kind of diversity.";
-            }
-            description "none";
-        }
-        typedef air-interface-diversity-status-type {
-            type enumeration {
-                enum group-down {
-                    description "All air interfaces that are members of the diversity configuration are down.";
-                }
-                enum not-all-ai-active {
-                    description "At least one, but not all of the air interfaces that are part of the diversity configuration is not working.";
-                }
-                enum all-ai-active {
-                    description "All air interfaces that are part of the diversity configuration are working.";
-                }
-            }
-            description "none";
-        }
-        grouping air-interface-diversity-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping air-interface-diversity-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        grouping air-interface-diversity-performance-type-g {
-            leaf snir-min {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Minimum signal to (noise+interference) ratio of the combined signals.";
-            }
-            leaf snir-max {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Maximum signal to (noise+interference) ratio of the combined signals.";
-            }
-            leaf snir-avg {
-                type int8;
-                units "dB";
-                default -99;
-                config false;
-                description "Average signal to (noise+interference) ratio of the combined signals.";
-            }
-            description "Consolidated performance information of the air interface diversity group.";
-        }
-        grouping air-interface-diversity-current-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-diversity-performance-type-g;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping air-interface-diversity-historical-performance-type-g {
-            container performance-data {
-                config false;
-                uses air-interface-diversity-performance-type-g;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-        grouping tdm-structure-type-g {
-            leaf tdm-structure-name {
-                type string;
-                default "TDM structure name not defined.";
-                config false;
-                description "Names to be chosen from the following list: 'e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-            }
-            leaf tdm-segment-size {
-                type int32;
-                units "kbit/s";
-                default -1;
-                config false;
-                description "Size of the TDM segment in kbit/s. Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;";
-            }
-            leaf max-number-of-segments-reservable {
-                type int8;
-                units "segments";
-                default -1;
-                config false;
-                description "Device specific maximum number of segments (not depending on current air interface configuration) that can be reserved for this type of segment on a single air interface.";
-            }
-            description "none";
-        }
-        grouping structure-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to Structure::StructureCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping structure-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to Structure::StructureCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        typedef structure-performance-type {
-            type int32;
-            description "Consolidated performance information of the Structure.";
-        }
-        grouping structure-current-performance-type-g {
-            leaf performance-data {
-                type structure-performance-type;
-                config false;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping structure-historical-performance-type-g {
-            leaf performance-data {
-                type structure-performance-type;
-                config false;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-        grouping container-type-g {
-            leaf container-name {
-                type string;
-                default "Container name not yet defined.";
-                config false;
-                description "Names to be chosen from the following list: 'ethernet','e1','t1','j1','e3','ds3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-            }
-            leaf number-of-time-slots-required {
-                type int16;
-                units "timeslots";
-                default -1;
-                config false;
-                description "Number of time slots required for transporting this type of container. Value must be calculated by the vendor after defining the timeSlotCapacity. For containers of fixed size: numberOfTimeSlotsRequired = required bandwidth of the container divided by timeSlotCapacity. For containers of variable size the minimum (most probably 1) is to be stated.";
-            }
-            leaf tdm-time-slots-is-required {
-                type boolean;
-                default false;
-                config false;
-                description "Shall be set to '1', if this container type requires bandwidth (times slots) reserved for TDM transport.";
-            }
-            leaf bundling-is-avail {
-                type boolean;
-                default false;
-                config false;
-                description "If it is possible to combine transport resources of several radio links to transport this container type, this attribute shall be set to '1'.";
-            }
-            description "none";
-        }
-        grouping tdm-container-type-g {
-            leaf tdm-container-name {
-                type string;
-                default "TDM container name not defined.";
-                config false;
-                description "Names to be chosen from the following list: 'e1','t1','j1','e3','t3','stm1','cpri1','cpri2','cpri3','cpri4','cpri5','cpri6' or 'cpri7'";
-            }
-            leaf tdm-container-size {
-                type int32;
-                units "kbit/s";
-                default -1;
-                config false;
-                description "Capacity required for transporting this type of container (in kbit/s). Values to be chosen from the following list: '2048','1544','34000','44736 ','155520','614400','1228800','2457600','3072000','4915200','6144000' or '9830400;";
-            }
-            description "none";
-        }
-        grouping segment-id-type-g {
-            leaf structure-id-ref {
-                type core-model:universal-id;
-                description "none";
-            }
-            leaf segment-id-ref {
-                type int16;
-                description "Combinations of structureId and segmentId must be unique inside the device to assure that every resource is used just once.";
-            }
-            description "Identifies the segments, which are used to transport the container.";
-        }
-        grouping segment-status-type-g {
-            leaf segment-status-type-id {
-                type int16;
-                config false;
-                description "none";
-            }
-            leaf segment-is-reserved-for-tdm {
-                type boolean;
-                default false;
-                config false;
-                description "The number of segments, which is configured by Structure::StructureConfiguration::tdmReservedNumberOfSegements, has to be reserved for TDM. Starting from the lowest index value, these segments have to be marked with a 'true' in segmentIsReservedForTdm.
-                    ";
-            }
-            leaf operational-status {
-                type core-model:operational-state;
-                default disabled;
-                config false;
-                description "Current operational status of each segment.";
-            }
-            leaf obsolete-priority-class {
-                type int8;
-                default -1;
-                config false;
-                description "PriorityClass as inherited from the associated Container::ContainerConfiguration::priorityClass. In case the device is capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, priorityClass shall be considered, while calculating the dropOrderRank.";
-            }
-            leaf obsolete-drop-order-rank {
-                type int16;
-                default -1;
-                config false;
-                description "In case the device is NOT capable of adapting the sequence, in which segments are being dropped in case of decreasing capacity of the air interface, dropOrderRank is number of segments minus sequence number of the segment. In case the device is capable of adapting the sequence, dropOrderRank has to be calculated by the device in dependency to the assigned priorityClass. 
-                    _unique: within Structure::StructureStatus::segmentStatusList";
-            }
-            description "none";
-        }
-        grouping container-problem-severity-type-g {
-            leaf problem-kind-name {
-                type string;
-                default "Problem kind name not defined.";
-                description "Name of the alarm according to Container::ContainerCapability::supportedAlarms";
-            }
-            leaf problem-kind-severity {
-                type severity-type;
-                default warning;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        grouping container-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "Problem name not specified.";
-                config false;
-                description "Name of the alarm according to Container::ContainerCapability::supportedAlarms";
-            }
-            uses mw-current-problem-g;
-            description "none";
-        }
-        grouping container-performance-type-g {
-            leaf tx-ethernet-bytes-max-s {
-                type int32;
-                units "Bytes/s";
-                default -1;
-                config false;
-                description "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a second and keeps the highest value within the measurement period. Field to be left blank for all types of TDM containers.";
-            }
-            leaf tx-ethernet-bytes-max-m {
-                type int64;
-                units "Bytes/min";
-                default -1;
-                config false;
-                description "Counts the number of Bytes of Ethernet traffic (before header compression) transmitted within a minute and keeps the highest value with in the measurement period. Field to be left blank for all types of TDM containers.";
-            }
-            leaf tx-ethernet-bytes-sum {
-                type int64;
-                units "Bytes";
-                default -1;
-                config false;
-                description "Total number of Bytes of Ethernet traffic (before header compression) transmitted (in direction out of the device) during the measurement period. Field to be left blank for all types of TDM containers.";
-            }
-            leaf time-period {
-                type int32;
-                units "s";
-                default -1;
-                config false;
-                description "Total length of the measurement period in seconds.";
-            }
-            description "Consolidated performance information of the Container.";
-        }
-        grouping container-current-performance-type-g {
-            container performance-data {
-                config false;
-                uses container-performance-type-g;
-                description "none";
-            }
-            uses g:otn-current-data-g;
-            description "Turns performance information into current performance information by inheriting from OTN_CurrentData.";
-        }
-        grouping container-historical-performance-type-g {
-            container performance-data {
-                config false;
-                uses container-performance-type-g;
-                description "none";
-            }
-            uses g:otn-history-data-g;
-            description "Turns performance information into historical performance information by inheriting from OTN_HistoryData.";
-        }
-
-    /***********************
-    * package object-classes
-    **********************/ 
-        /***********************
-        * package air-interface
-        **********************/ 
-            list mw-air-interface-pac {
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container air-interface-capability {
-                    config false;
-                    uses air-interface-capability-g;
-                    description "none";
-                }
-                container air-interface-configuration {
-                    uses air-interface-configuration-g;
-                    description "none";
-                }
-                container air-interface-status {
-                    config false;
-                    uses air-interface-status-g;
-                    description "none";
-                }
-                container air-interface-current-problems {
-                    config false;
-                    uses air-interface-current-problems-g;
-                    description "none";
-                }
-                container air-interface-current-performance {
-                    config false;
-                    uses air-interface-current-performance-g;
-                    description "none";
-                }
-                container air-interface-historical-performances {
-                    config false;
-                    uses air-interface-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-capability-g {
-                leaf type-of-equipment {
-                    type string;
-                    default "Type of equipment not yet defined.";
-                    config false;
-                    description "This parameter indicates the equipment type. Instead of uploading the complete set of capabilities, capabilities of the same equipment type could be reused. Should be unique for a combination of modem, radio and their respective firmware.";
-                }
-                leaf tx-frequency-min {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the minimum transmit frequency tunable at the air interface.";
-                }
-                leaf tx-frequency-max {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the maximum transmit frequency tunable at the air interface.";
-                }
-                leaf rx-frequency-min {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the minimum receive frequency tunable at the air interface.";
-                }
-                leaf rx-frequency-max {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Value of the maximum receive frequency tunable at the air interface.";
-                }
-                leaf adaptive-modulation-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the device is capable of adaptive modulation, this field shall contain a 'true'.";
-                }
-                leaf mimo-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the device is capable of MIMO, this field shall contain a 'true'.";
-                }
-                leaf mimo-channels {
-                    type int8;
-                    units "channels";
-                    default 1;
-                    config false;
-                    description "Maximum number (n) of spatial multiplexing streams that can be conveyed by an n x n MIMO configuration.";
-                }
-                leaf alic-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the microwave radio is capable of Adjacent Link Interference Cancelation (canceling of interference cause by transmitters located at the same site), this field shall contain a 'true'.";
-                }
-                leaf atpc-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case the microwave radio is capable of ATPC, this field shall contain a 'true'.";
-                }
-                leaf atpc-range {
-                    type int8;
-                    units "dB";
-                    default 0;
-                    config false;
-                    description "Extent of the ATPC range.";
-                }
-                leaf encryption-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Shall be marked 'true', if payload encryption is available.";
-                }
-                leaf-list supported-loop-back-kind-list {
-                    type loop-back-type;
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    description "List of supported kinds of looping back of header information to the remote site.";
-                }
-                leaf maintenance-timer-range {
-                    type string;
-                    units "s";
-                    default "Range of the maintenance timer not yet defined.";
-                    config false;
-                    description "Available time periods for maintenance configurations (e.g. the loop back of microwave header information) to be described. Concrete values shall be separated by commas (e.g. '10, 60, 360'). Ranges shall be expressed as two values separated by a minus (e.g. '10-360').";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'signalIsLost','rslIsExceeded','temperatureIsExceeded','modemIsFaulty','radioIsFaulty' and 'modulationIsDownShifted'. Further alarms might be added by the device. Names are to be separated by commas.";
-                }
-                list supported-channel-plan-list {
-                    key 'supported-channel-plan';
-                    config false;
-                    min-elements 1;
-                    uses channel-plan-type-g;
-                    description "List of channel spacing that are supported by the device.";
-                }
-                description "Describes the 'analog' capabilities of modem and transmitter of the microwave device. Value ranges of attributes are not independently (e.g. min. and max. transmit power depends on modulation). Legal combinations of values are expressed in transmissionModeTypes.";
-            }
-            grouping air-interface-configuration-g {
-                leaf air-interface-name {
-                    type string;
-                    default "Air interface ID not yet defined.";
-                    description "Operator specific microwave link ID (often used for coding area, type of element and sequential number).";
-                }
-                leaf radio-signal-id {
-                    type string;
-                    default "Radio signal ID not yet defined.";
-                    description "The radioSignalId is transmitted on the air interface so the remote site of the link synchronizes on the correct transmitter. The local radio MUST NOT synchronize on a radio signal with a different radioSignalId. The link ID is neither an ID necessary to span the model nor an ID referencing external data. It is just some sort of name of the link transmitted so the correct remote site can be identified in an interference situation. The value zero might be used to make the microwave to disable the link ID check.";
-                }
-                leaf tx-frequency {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Center frequency of the transmit channel. The values to be configured have to exactly match the values listed in the international agreement referenced in channelPlanID. In case of automated selection of the transmit frequency this field shall describe the lowest center frequency selectable.";
-                }
-                leaf rx-frequency {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Center frequency of the receive channel.";
-                }
-                leaf tx-channel-bandwidth {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Bandwidth of the transmit channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-                }
-                leaf rx-channel-bandwidth {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    description "Bandwidth of the receive channel. The value shall be expressed explicitly (means in kHz) not as a reference to an international agreement. The values shall be chosen from the following _list: 3.500, 7.000, 14.000, 27.500, 28.000, 29.000, 29.650, 30.000, 40.000, 50.000, 55.000, 56.000, 59.300, 60.000, 80.000, 100.000, 112.000, 120.000, 150.000, 200.000, 250.000, 500.000, 750.000, 1.000.000, 1.250.000, 1.500.000, 1.750.000, 2.000.000;";
-                }
-                leaf polarization {
-                    type polarization-type;
-                    default not-specified;
-                    description "Allows documenting the polarization of the air interface.";
-                }
-                leaf power-is-on {
-                    type boolean;
-                    default true;
-                    description "Power ON. Activation of the entire radio in a split mount configuration shall be expressed as a 'true'.";
-                }
-                leaf transmitter-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of the transmitter inside the radio shall be expressed as a 'true'.";
-                }
-                leaf receiver-is-on {
-                    type boolean;
-                    default true;
-                    description "Maintenance Feature. Activation of the receiver inside the radio shall be expressed as a 'true'. Attribute shall also be used for RX main and RX diversity squelches in case of diversity configurations.
-                        ";
-                }
-                leaf tx-power {
-                    type int8;
-                    units "dBm";
-                    default 99;
-                    description "Transmit power to be configured on the microwave link. Signed Byte is required. The actually operated transmit power might be lower depending on adaptive modulation and ATPC.";
-                }
-                leaf adaptive-modulation-is-on {
-                    type boolean;
-                    default false;
-                    description "Adaptive Modulation. Activation of adaptive modulation shall be expressed as a 'true'.";
-                }
-                leaf modulation-min {
-                    type int16;
-                    units "symbols";
-                    default -1;
-                    description "Minimum modulation to be configured (in case adaptive modulation is not used, this value represents also the fixed modulation). The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-                }
-                leaf modulation-max {
-                    type int16;
-                    units "symbols";
-                    default -1;
-                    description "Maximum modulation to be configured. The value of this field is only relevant, if Adaptive Modulation has been activated. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-                }
-                leaf xpic-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of Cross Polarization Interference Cancelation shall be expressed as a 'true'. In case XPIC is not available for the current combination of channel bandwidth and modulation or the hardware in general, this parameter shall always be set to 'false'.";
-                }
-                leaf mimo-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of Multiple Input Multiple Output (MIMO) shall be expressed as a 'true'.";
-                }
-                leaf alic-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of Adjacent Link Interference Cancelation (ALIC) shall be expressed as a 'true'.";
-                }
-                leaf atpc-is-on {
-                    type boolean;
-                    default false;
-                    description "ATPC. Activation of Automated Transmit Power Control shall be expressed as a 'true'.";
-                }
-                leaf atpc-thresh-upper {
-                    type int16;
-                    units "dBm";
-                    default 99;
-                    description "If the receive level is higher than the upper threshold value, the transmitter is notified to decrease transmit power.";
-                }
-                leaf atpc-thresh-lower {
-                    type int16;
-                    units "dBm";
-                    default 99;
-                    description "If the receive level is lower than the lower threshold value, the transmitter is notified to increase transmit power.";
-                }
-                leaf auto-freq-select-is-on {
-                    type boolean;
-                    default false;
-                    description "Activation of automatically selecting the transmit frequency in unlicensed bands shall be expressed as a 'true'.";
-                }
-                leaf auto-freq-select-range {
-                    type int8;
-                    units "channels";
-                    default -1;
-                    description "Number of transmit channels (starting at the center frequency defined in txFrequency and with channel bandwidth according to txChannelBandwidth) that define the range within the transmit frequency can automatically been chosen. ";
-                }
-                leaf modulation-is-on {
-                    type boolean;
-                    default true;
-                    description "Maintenance Feature. De-activation of the modulation of the carrier signal for fault management shall be expressed as a 'false'.";
-                }
-                leaf encryption-is-on {
-                    type boolean;
-                    default false;
-                    description "Activates encryption of the payload.";
-                }
-                leaf cryptographic-key {
-                    type string;
-                    default "Cryptographic key not yet defined.";
-                    description "Key for transforming plaintext into ciphertext data.";
-                }
-                leaf loop-back-kind-on {
-                    type loop-back-type;
-                    default none;
-                    description "Maintenance Feature. The currently configured type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site.";
-                }
-                leaf maintenance-timer {
-                    type int32;
-                    units "s";
-                    default -1;
-                    description "Time of existence of any maintenance configuration (e.g. the loop back of microwave header information). Valid values are defined in AirInterface::AirInterfaceCapability::maintenanceTimerRange.";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 6;
-                    uses air-interface-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "Configuration of the radio link.";
-            }
-            grouping air-interface-status-g {
-                leaf tx-frequency-cur {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Center frequency of the currently operated transmit channel.";
-                }
-                leaf rx-frequency-cur {
-                    type int32;
-                    units "kHz";
-                    default -1;
-                    config false;
-                    description "Center frequency of the currently operated receive channel.";
-                }
-                leaf tx-level-cur {
-                    type int8;
-                    units "dBm";
-                    default 99;
-                    config false;
-                    description "Current transmit level.";
-                }
-                leaf rx-level-cur {
-                    type int8;
-                    units "dBm";
-                    default 99;
-                    config false;
-                    description "Current receive level.";
-                }
-                leaf modulation-cur {
-                    type int16;
-                    units "symbols";
-                    default -1;
-                    config false;
-                    description "Currently operated modulation on transmit path. The modulation scheme shall be described by the number of states in the phase diagram (e.g. BPSK->'2' or 256QAM->'256'). Allowed values are defined in TypeDefinitions::transmissionModeType::modulationScheme.";
-                }
-                leaf code-rate-cur {
-                    type int8;
-                    units "%";
-                    default -1;
-                    config false;
-                    description "Code rate of the currently operated coding scheme (Net bit rate ? Gross bit rate ? code rate).";
-                }
-                leaf snir-cur {
-                    type int8;
-                    units "dB";
-                    default -99;
-                    config false;
-                    description "Currently measured signal to (noise+interference) ratio.";
-                }
-                leaf xpd-cur {
-                    type int8;
-                    units "dB";
-                    default -99;
-                    config false;
-                    description "Currently measured cross polarization discrimination.";
-                }
-                leaf rf-temp-cur {
-                    type int8;
-                    units "Celsius";
-                    default -99;
-                    config false;
-                    description "Current temperature (in degree Celsius) of the radio module inside the outdoor unit.";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Air Interface entered its current operational status.  ";
-                }
-                leaf radio-power-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If the radio unit has power and is switched on, this shall be expressed as a 'true'.";
-                }
-                leaf link-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If connection is established to the remote site with the same linkID, this shall be expressed as a 'true'.";
-                }
-                leaf xpic-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If XPIC is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf mimo-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If MIMO is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf alic-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If Adjacent Link Interference Cancelation (ALIC) is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf atpc-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If ATPC is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf auto-freq-select-is-up {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "If automated frequency selection is currently actually working (not just configured), this shall be expressed as a 'true'.";
-                }
-                leaf loop-back-kind-up {
-                    type loop-back-type;
-                    default none;
-                    config false;
-                    description "The currently active (not just configured) type of looping back of the air interface header shall be expressed here. The received header is returned to the remote site.";
-                }
-                leaf local-end-point-id {
-                    type string;
-                    default "not-supported";
-                    config false;
-                    description "The value of the localEndPointId is a vendor specific identifier of the air interface, used by the node to discover a microwave radio link.";
-                }
-                leaf remote-end-point-id {
-                    type string;
-                    default "not-supported";
-                    config false;
-                    description "The value of the remoteEndPointId is a vendor specific identifier or the airinterface at the remote side, used to by the node to discover a microwave radio link.";
-                }
-                description "Measurements of current values on the air interface and operational status of the device.";
-            }
-            grouping air-interface-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses air-interface-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses air-interface-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the air interface at a particular moment.";
-            }
-            grouping air-interface-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses air-interface-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the air interface for a pre-defined measurement interval.";
-            }
-            list co-channel-group {
-                key 'co-channel-group-id';
-                uses co-channel-group-g;
-                description "none";
-            }
-            grouping co-channel-group-g {
-                leaf co-channel-group-id {
-                    type core-model:universal-id;
-                    description "none";
-                }
-                leaf-list air-interface-list {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
-                    }
-                    description "List of air interfaces, which are part of the co-channel (XPIC, MIMO, ALIC) group.";
-                }
-                leaf sort-of-co-channel-group {
-                    type string;
-                    default "Kind of co-channel group not specified.";
-                    description "Type of group of air interfaces with the same transmit and receive frequency. The values shall be chosen from the following _list:'XPIC', 'MIMO', 'ALIC';";
-                }
-                leaf-list logical-termination-point {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
-                    }
-                    description "none";
-                }
-                description "Required for configuring XPIC, MIMO and ALIC.";
-            }
-
-        /***********************
-        * package air-interface-hsb
-        **********************/ 
-            list mw-air-interface-hsb-end-point-pac {
-                key 'endpoint';
-                leaf role {
-                    type role-type;
-                    default working;
-                    description "none";
-                }
-                leaf endpoint {
-                    type leafref {
-                        path '/core-model:forwarding-construct/core-model:fc-port/core-model:uuid';
-                    }
-                    description "none";
-                }
-                description "The EndPoint (EP) object class models the access to the FC function. Each EndPoint instance has a role (e.g., working, protection, protected, hub, spoke, leaf, root, etc.) with respect to the FC function. The association of the FC to LTPs is made via EndPoints (essentially the ports of the FC) where each EndPoint (EP) of the FC has a role in the context of the FC. The traffic forwarding between the associated End PointsEPs of the FC depends upon the type of FC and may be associated with FCSwitch object instances. In cases where there is protection conveys the protecting role of the access to the FC.  The EP replaces the Protection Unit of a traditional protection model. It represents a protected (resilient/reliable) point or a protecting (unreliable working or protection) point.";
-            }
-            list mw-air-interface-hsb-fc-switch-pac {
-                key 'fcswitch';
-                leaf prot-type {
-                    type protection-type;
-                    default hsb;
-                    description "Indicates the protection scheme that is used for the ProtectionGroup.";
-                }
-                leaf air-interface-hsb-configuration-is-faulty-severity {
-                    type severity-type;
-                    default warning;
-                    description "The level of severity of an airInterfaceHsbConfigurationIsFaulty alarm shall be chosen from an enumeration.";
-                }
-                leaf air-interface-hsb-is-partly-down-severity {
-                    type severity-type;
-                    default warning;
-                    description "The level of severity for one link out of the HSB configuration being down shall be chosen from an enumeration.";
-                }
-                leaf air-interface-hsb-is-down-severity {
-                    type severity-type;
-                    default warning;
-                    description "The level of severity of the total HSB configuration being down shall be chosen from an enumeration.";
-                }
-                leaf fcswitch {
-                    type leafref {
-                        path '/core-model:forwarding-construct/core-model:fc-switch/core-model:uuid';
-                    }
-                    description "none";
-                }
-                description "Represents and defines a protection switch structure encapsulated in the forwarding construct. Essentially performs the function of Protection Group. Associates to 2 or more Endpoints each playing the role of a Protection Unit. One or more protection EndPoints (standby/backup) provide protection for one or more working (i.e. regular/main/preferred) Endpoints where either protection or working can feed one or more protected Endpoint. May be used in revertive or non-revertive (symmetric) mode. When in revertive mode may define waitToRestore time. May be used in one of several modes including source switch, destination switched, source and destination switched etc (covering cases such as  1+1 ane 1:1).  May be lockout (prevented from switching), force switched or manual switched. Will indicate switch state and change of state.";
-            }
-
-        /***********************
-        * package air-interface-diversity
-        **********************/ 
-            list mw-air-interface-diversity-pac {
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container air-interface-diversity-capability {
-                    config false;
-                    uses air-interface-diversity-capability-g;
-                    description "none";
-                }
-                container air-interface-diversity-configuration {
-                    uses air-interface-diversity-configuration-g;
-                    description "none";
-                }
-                container air-interface-diversity-status {
-                    config false;
-                    uses air-interface-diversity-status-g;
-                    description "none";
-                }
-                container air-interface-diversity-current-problems {
-                    config false;
-                    uses air-interface-diversity-current-problems-g;
-                    description "none";
-                }
-                container air-interface-diversity-current-performance {
-                    config false;
-                    uses air-interface-diversity-current-performance-g;
-                    description "none";
-                }
-                container air-interface-diversity-historical-performances {
-                    config false;
-                    uses air-interface-diversity-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-capability-g {
-                list available-kinds-of-diversity {
-                    key 'diversity-name';
-                    config false;
-                    uses diversity-type-g;
-                    description "Available types of diversity to be listed.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'airInterfaceDiversityConfigurationIsPartlyDown' (at least one air interface is down, but not all of them) and 'airInterfaceDiversityConfigurationIsDown' (all air interfaces are down). Further alarms might be added by the device. Names are to be separated by commas.";
-                }
-                description "Describes the capabilities in implementing different types of air interface diversity.";
-            }
-            grouping air-interface-diversity-configuration-g {
-                container air-interface-diversity {
-                    uses diversity-type-g;
-                    description "Type of air interface diversity configured at the link.";
-                }
-                leaf-list air-interface-ltp-list {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:uuid';
-                    }
-                    min-elements 2;
-                    description "_multiplicity:2-ThisAirInterfaceDiversity::AirInterfaceDiversityConfiguration::airInterfaceDiversity::diversityType::numberOfAirInterfacesMax";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 3;
-                    uses air-interface-diversity-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-status-g {
-                leaf snir-cur {
-                    type int8;
-                    units "dB";
-                    default -99;
-                    config false;
-                    description "Currently measured signal to (noise+interference) ratio of the combined signals.";
-                }
-                leaf air-interface-diversity-status {
-                    type air-interface-diversity-status-type;
-                    default group-down;
-                    config false;
-                    description "Status of the air interface bundle. ";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Diversity Group entered its current operational status.  ";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses air-interface-diversity-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping air-interface-diversity-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses air-interface-diversity-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the air interface diversity configuration at a particular moment.";
-            }
-            grouping air-interface-diversity-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses air-interface-diversity-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the air interface diversity configuration for a pre-defined measurement interval.";
-            }
-
-        /***********************
-        * package pure-ethernet-structure
-        **********************/ 
-            list mw-pure-ethernet-structure-pac {
-                if-feature pure-ethernet;
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container pure-ethernet-structure-capability {
-                    config false;
-                    uses pure-ethernet-structure-capability-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-configuration {
-                    uses pure-ethernet-structure-configuration-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-status {
-                    config false;
-                    uses pure-ethernet-structure-status-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-current-problems {
-                    config false;
-                    uses pure-ethernet-structure-current-problems-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-current-performance {
-                    config false;
-                    uses pure-ethernet-structure-current-performance-g;
-                    description "none";
-                }
-                container pure-ethernet-structure-historical-performances {
-                    config false;
-                    uses pure-ethernet-structure-historical-performances-g;
-                    description "none";
-                }
-                description "The pureEthernetStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting Ethernet traffic only.";
-            }
-            grouping pure-ethernet-structure-capability-g {
-                leaf structure-id {
-                    type core-model:universal-id;
-                    config false;
-                    description "Identifies the Structure for bundling and container.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device.";
-                }
-                description "Describes the logical structuring of the physical capacity provided by a pure Ethernet microwave device. Segmentation is not available. No fixed segment size. No TDM transport.";
-            }
-            grouping pure-ethernet-structure-configuration-g {
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    uses structure-problem-severity-type-g;
-                    description "Severity of the type of problem to be configured.";
-                }
-                description "none";
-            }
-            grouping pure-ethernet-structure-status-g {
-                container segment-status-list {
-                    config false;
-                    uses segment-status-type-g;
-                    description "Status of the Ethernet transport segment. Always just one segment.";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time and date of the last update of the status information.  ";
-                }
-                description "none";
-            }
-            grouping pure-ethernet-structure-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses structure-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping pure-ethernet-structure-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses structure-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the structure of an pure Ethernet microwave at a particular moment.";
-            }
-            grouping pure-ethernet-structure-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses structure-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the structure of an pure Ethernet microwave for a pre-defined measurement interval.";
-            }
-            feature pure-ethernet {
-                description "Feature 'pure-ethernet' is mandatory for device types transporting pure Ethernet.";
-            }
-
-        /***********************
-        * package hybrid-mw-structure
-        **********************/ 
-            list mw-hybrid-mw-structure-pac {
-                if-feature hybrid-microwave;
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container hybrid-mw-structure-capability {
-                    config false;
-                    uses hybrid-mw-structure-capability-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-configuration {
-                    uses hybrid-mw-structure-configuration-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-status {
-                    config false;
-                    uses hybrid-mw-structure-status-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-current-problems {
-                    config false;
-                    uses hybrid-mw-structure-current-problems-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-current-performance {
-                    config false;
-                    uses hybrid-mw-structure-current-performance-g;
-                    description "none";
-                }
-                container hybrid-mw-structure-historical-performances {
-                    config false;
-                    uses hybrid-mw-structure-historical-performances-g;
-                    description "none";
-                }
-                description "The HybridMwStructure_Pac and its attached classes MUST be provided on management interfaces of microwave devices, which are transporting TDM and Ethernet traffic.";
-            }
-            grouping hybrid-mw-structure-capability-g {
-                leaf structure-id {
-                    type core-model:universal-id;
-                    config false;
-                    description "Identifies the Structure for bundling and container.";
-                }
-                list supported-tdm-structure-types-list {
-                    key 'tdm-structure-name';
-                    config false;
-                    min-elements 1;
-                    uses tdm-structure-type-g;
-                    description "Lists the TDM frame types that are supported.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:non. Names are to be separated by commas. Further alarms might be added by the device.";
-                }
-                description "Describes the logical structuring of the physical capacity provided by a hybrid microwave device (TDM + Ethernet). Segmentation is available. TDM transport is available.";
-            }
-            grouping hybrid-mw-structure-configuration-g {
-                container structure-type {
-                    uses tdm-structure-type-g;
-                    description "TDM frame to be applied.";
-                }
-                leaf number-of-tdm-segments-to-be-reserved {
-                    type int16;
-                    default -1;
-                    description "Allows to configure the number of segments reserved for TDM frames of the type specified in HybridMwStructure::HybridMwStructureConfiguration::structureType";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    uses structure-problem-severity-type-g;
-                    description "Severity of the type of problem to be configured.";
-                }
-                description "none";
-            }
-            grouping hybrid-mw-structure-status-g {
-                list segment-status-list {
-                    key 'segment-status-type-id';
-                    config false;
-                    uses segment-status-type-g;
-                    description "Status of each segment (all TDM and one Ethernet). Multiplicity = HybridMwStructure::StructureConfiguration::tdmReservedNumberOfSegments + 1";
-                }
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time and date of the last update of the status information.  ";
-                }
-                description "none";
-            }
-            grouping hybrid-mw-structure-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses structure-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping hybrid-mw-structure-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses structure-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the structure of a hybrid microwave at a particular moment.";
-            }
-            grouping hybrid-mw-structure-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses structure-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the structure of a hybrid microwave for a pre-defined measurement interval.";
-            }
-            feature hybrid-microwave {
-                description "Feature 'hybrid-microwave' is mandatory for device types transporting Ethernet + TDM.";
-            }
-
-        /***********************
-        * package ethernet-container
-        **********************/ 
-            list mw-ethernet-container-pac {
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container ethernet-container-capability {
-                    config false;
-                    uses ethernet-container-capability-g;
-                    description "none";
-                }
-                container ethernet-container-configuration {
-                    uses ethernet-container-configuration-g;
-                    description "none";
-                }
-                container ethernet-container-status {
-                    config false;
-                    uses ethernet-container-status-g;
-                    description "none";
-                }
-                container ethernet-container-current-problems {
-                    config false;
-                    uses ethernet-container-current-problems-g;
-                    description "none";
-                }
-                container ethernet-container-current-performance {
-                    config false;
-                    uses ethernet-container-current-performance-g;
-                    description "none";
-                }
-                container ethernet-container-historical-performances {
-                    config false;
-                    uses ethernet-container-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping ethernet-container-capability-g {
-                leaf bundling-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "This attribute has to be set on 'true', if the device allows combining resources from several air interfaces for transporting this Ethernet container.";
-                }
-                leaf packet-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "In case packet compression can be activated, but not configured to a certain type, packetCompressionAvail shall be set on 'true', but none of the compression level specific booleans.";
-                }
-                leaf layer2-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 2 available at the device.";
-                }
-                leaf vlan-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on VLAN layer available at the device.";
-                }
-                leaf q-in-q-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer of a second VLAN available at the device.";
-                }
-                leaf mpls-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on mpls layer available at the device.";
-                }
-                leaf ipv4-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 3 for IPv4 available at the device.";
-                }
-                leaf ipv6-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 3 for IPv6 available at the device.";
-                }
-                leaf layer4-compression-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Packet compression on layer 4 (TCP and UDP header) available at the device.";
-                }
-                leaf encryption-is-avail {
-                    type boolean;
-                    default false;
-                    config false;
-                    description "Shall be marked 'true', if Ethernet payload encryption is available.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device.";
-                }
-                description "none";
-            }
-            grouping ethernet-container-configuration-g {
-                leaf container-id {
-                    type string;
-                    default "No Ethernet Flow associated yet.";
-                    description "ContainterID in Netconf must be the same as EthernetPortID in OpenFlow so a connection can be made between the two items, which separately exist in the controller.";
-                }
-                list segments-id-list {
-                    key 'structure-id-ref segment-id-ref';
-                    min-elements 1;
-                    uses segment-id-type-g;
-                    description "Lists the segments used for transporting this Ethernet container. In case EthernetContainer::ContainerCapability::bundlingIsAvail==0, all TypeDefinitions::segmentIdType::structureId must be identical in the list.";
-                }
-                leaf packet-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "In case packet compression is activated, but no type is activated, it is assumed that the device chooses the optimum.";
-                }
-                leaf layer2-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 2 configured at the device.";
-                }
-                leaf vlan-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on VLAN layer configured at the device.";
-                }
-                leaf q-in-q-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer of a second VLAN configured at the device.";
-                }
-                leaf mpls-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on MPLS layer configured at the device.";
-                }
-                leaf ipv4-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 3 for IPv4 configured at the device.";
-                }
-                leaf ipv6-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 3 for IPv6 configured at the device.";
-                }
-                leaf layer4-compression-is-on {
-                    type boolean;
-                    default false;
-                    description "Packet compression on layer 4 (TCP and UDP header) configured at the device.";
-                }
-                leaf encryption-is-on {
-                    type boolean;
-                    default false;
-                    description "Activates encryption of the Ethernet payload.";
-                }
-                leaf cryptographic-key {
-                    type string;
-                    default "Cryptographic key not yet defined.";
-                    description "Key for transforming plaintext into cipher text data.";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 2;
-                    uses container-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping ethernet-container-status-g {
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Container entered its current operational status.  ";
-                }
-                description "none";
-            }
-            grouping ethernet-container-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses container-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping ethernet-container-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses container-current-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the Ethernet container at a particular moment.";
-            }
-            grouping ethernet-container-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses container-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the Ethernet container for a pre-defined measurement interval.";
-            }
-
-        /***********************
-        * package tdm-container
-        **********************/ 
-            list mw-tdm-container-pac {
-                if-feature hybrid-microwave;
-                key 'layer-protocol';
-                leaf layer-protocol {
-                    type leafref {
-                        path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                    }
-                    description "CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/_ltpRefList/_lpList/uuid";
-                }
-                container tdm-container-capability {
-                    config false;
-                    uses tdm-container-capability-g;
-                    description "none";
-                }
-                container tdm-container-configuration {
-                    uses tdm-container-configuration-g;
-                    description "none";
-                }
-                container tdm-container-status {
-                    config false;
-                    uses tdm-container-status-g;
-                    description "none";
-                }
-                container tdm-container-current-problems {
-                    config false;
-                    uses tdm-container-current-problems-g;
-                    description "none";
-                }
-                container tdm-container-current-performance {
-                    config false;
-                    uses tdm-container-current-performance-g;
-                    description "none";
-                }
-                container tdm-container-historical-performances {
-                    config false;
-                    uses tdm-container-historical-performances-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping tdm-container-capability-g {
-                list supported-tdm-container-types-list {
-                    key 'tdm-container-name';
-                    config false;
-                    min-elements 1;
-                    uses tdm-container-type-g;
-                    description "Lists the TDM containers that are supported.";
-                }
-                leaf supported-alarms {
-                    type string;
-                    default "Supported alarms not yet defined.";
-                    config false;
-                    description "Available alarms to be listed. Mandatory:'framingIsFaulty' and 'containerIsDown'. Further alarms might be added by the device.";
-                }
-                description "Bundling is not available.";
-            }
-            grouping tdm-container-configuration-g {
-                leaf container-id {
-                    type string;
-                    default "No TDM Flow associated yet.";
-                    description "ContainterID in Netconf must be the same as TDM Flow ID so a connection can be made between the two items, which separately exist in the controller.";
-                }
-                container container-type {
-                    uses tdm-container-type-g;
-                    description "Type of TDM container.";
-                }
-                container segment-id {
-                    uses segment-id-type-g;
-                    description "Multiplicity = 1; One segment per TDM container; Type of segment must match type of container;";
-                }
-                list problem-kind-severity-list {
-                    key 'problem-kind-name';
-                    min-elements 2;
-                    uses container-problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping tdm-container-status-g {
-                leaf last-status-change {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time the Container entered its current operational status.  ";
-                }
-                description "none";
-            }
-            grouping tdm-container-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses container-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping tdm-container-current-performance-g {
-                list current-performance-data-list {
-                    key 'scanner-id';
-                    config false;
-                    min-elements 1;
-                    max-elements 2;
-                    uses container-current-performance-type-g;
-                    description "At least values of the counters, which are reset every 15 minutes, are to be provided. If available, the current values of the counters, which are reset every 24 hour, can be provided, too.";
-                }
-                description "Aggregated performance information of the TDM container at a particular moment.";
-            }
-            grouping tdm-container-historical-performances-g {
-                list historical-performance-data-list {
-                    key 'history-data-id';
-                    config false;
-                    uses container-historical-performance-type-g;
-                    description "none";
-                }
-                description "Aggregated performance information of the TDM container for a pre-defined measurement interval.";
-            }
-
-        /***********************
-        * package super-classes
-        **********************/ 
-            grouping mw-current-problem-g {
-                leaf sequence-number {
-                    type int32;
-                    config false;
-                    description "Unique sequence number of the current problem object.";
-                }
-                leaf time-stamp {
-                    type yang:date-and-time;
-                    default "2017-01-01T00:00:00.0Z";
-                    config false;
-                    description "Time and date of the problem.  ";
-                }
-                leaf problem-severity {
-                    type severity-type;
-                    default warning;
-                    config false;
-                    description "Severity of the alarm.";
-                }
-                description "none";
-            }
-
-
-    /***********************
-    * package notifications
-    **********************/ 
-        notification object-creation-notification {
-            uses object-creation-notification-g;
-            description "none";
-        }
-        grouping object-creation-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts object creation notifications.";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            leaf object-type {
-                type string;
-                default "Type of created object not specified.";
-                description "Type of Object to be chosen from the following list of values: 'MW_AirInterface_Pac', 'MW_AirInterfaceDiversity_Pac', 'MW_Structure_Pac', 'MW_PureEthernetStructure_Pac', 'MW_HybridMwStructure_Pac', 'MW_Container_Pac', 'MW_EthernetContainer_Pac' or 'MW_TdmContainer_Pac'.";
-            }
-            description "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac has to be instancieted in the controller.";
-        }
-        notification object-deletion-notification {
-            uses object-deletion-notification-g;
-            description "none";
-        }
-        grouping object-deletion-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts object deletion notifications.";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            description "To be sent when a new MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac instance has to be deleted in the controller.";
-        }
-        notification attribute-value-changed-notification {
-            uses attribute-value-changed-notification-g;
-            description "none";
-        }
-        grouping attribute-value-changed-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts attribute value changed notifications.";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            leaf attribute-name {
-                type string;
-                default "Attribute name not specified.";
-                description "Name of the attribute that has been changed.";
-            }
-            leaf new-value {
-                type string;
-                default "New value not specified.";
-                description "Attribute value converted to a string (xml, json, ...)";
-            }
-            description "To be sent when an attribute has changed and one or more controllers have to update their data.";
-        }
-        notification problem-notification {
-            uses problem-notification-g;
-            description "none";
-        }
-        grouping problem-notification-g {
-            leaf counter {
-                type int32;
-                default -1;
-                description "Counts problem notifications";
-            }
-            leaf time-stamp {
-                type yang:date-and-time;
-                default "2017-01-01T00:00:00.0Z";
-                description "none";
-            }
-            leaf object-id-ref {
-                type core-model:universal-id;
-                description "ID of the affected MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-            }
-            leaf problem {
-                type string;
-                default "Problem name not specified.";
-                description "Name of the problem according to AirInterface::AirInterfaceCapability::supportedAlarms or AirInterfaceDiversity::AirInterfaceDiversityCapability::supportedAlarms or Structure::StructureCapability::supportedAlarms or PureEthernetStructure::PureEthernetStructureCapability::supportedAlarms or HybridMwStructure::HybridMwStructureCapability::supportedAlarms or Container::ContainerCapability::supportedAlarms or EthernetContainer::EthernetContainerCapability::supportedAlarms or TdmContainer::TdmContainerCapability::supportedAlarms.";
-            }
-            leaf severity {
-                type severity-type;
-                default warning;
-                description "Severity of the problem according to AirInterface::AirInterfaceConfiguration::problemSeverityList, AirInterfaceDiversity::AirInterfaceDiversityConfiguration::problemSeverityList, Structure::StructureConfiguration::problemSeverityList, PureEthernetStructure::PureEthernetStructureConfiguration::problemSeverityList, HybridMwStructure::HybridMwStructureConfiguration::problemSeverityList, Container::ContainerConfiguration::problemSeverityList, EthernetContainer::EthernetContainerConfiguration::problemSeverityList or TdmContainer::TdmContainerConfiguration::problemSeverityList";
-            }
-            description "To be sent when a problem occurs at a MW_AirInterface_Pac, MW_AirInterfaceDiversity_Pac, MW_Structure_Pac, MW_PureEthernetStructure_Pac, MW_HybridMwStructure_Pac, MW_Container_Pac, MW_EthernetContainer_Pac or MW_TdmContainer_Pac.";
-        }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-core-model-conditional-packages@2017-04-02.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-core-model-conditional-packages@2017-04-02.yang
deleted file mode 100644 (file)
index 44c99b1..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-module onf-core-model-conditional-packages {
-    namespace "urn:onf:params:xml:ns:yang:onf-core-model-conditional-packages";
-    prefix onf-core-model-conditional-packages;
-    import core-model {
-        prefix core-model;
-    }
-    import microwave-model {
-        prefix microwave-model;
-    }
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This model adds conditional packages to the ONF CoreModel in order to support fault management for object classes NetworkElement, Equipment and Holder.";
-    revision 2017-04-02 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package type-definitions
-    **********************/ 
-        grouping current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "not-specified";
-                config false;
-                description "Name of the alarm according capability::supportedAlarms.";
-            }
-            uses microwave-model:mw-current-problem-g;
-            description "none";
-        }
-        grouping network-element-current-problem-type-g {
-            leaf problem-name {
-                type string;
-                default "not-specified";
-                config false;
-                description "Name of the alarm according capability::supportedAlarms.";
-            }
-            leaf object-reference {
-                type string;
-                config false;
-                description "An explaining string of the related object class. This is necesseary, because the current problem list of the NetworkElement object class acts as a container for all alarms, where its object classes are not modeled.";
-            }
-            uses microwave-model:mw-current-problem-g;
-            description "none";
-        }
-        grouping problem-severity-type-g {
-            leaf problem-type-name {
-                type string;
-                description "Name of the alarm according to Capability::supportedAlarms";
-            }
-            leaf problem-type-severity {
-                type microwave-model:severity-type;
-                description "Severity of this type of alarm.";
-            }
-            description "none";
-        }
-        typedef processing-type {
-            type enumeration {
-                enum done {
-                    description "none";
-                }
-                enum processing {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-
-    /***********************
-    * package object-classes
-    **********************/ 
-        /***********************
-        * package network-element
-        **********************/ 
-            container network-element-pac {
-                leaf network-element {
-                    type leafref {
-                        path '/core-model:network-element/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container network-element-capability {
-                    config false;
-                    uses network-element-capability-g;
-                    description "none";
-                }
-                container network-element-configuration {
-                    uses network-element-configuration-g;
-                    description "none";
-                }
-                container network-element-status {
-                    config false;
-                    uses network-element-status-g;
-                    description "none";
-                }
-                container network-element-current-problems {
-                    config false;
-                    uses network-element-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping network-element-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping network-element-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                leaf trigger-refresh {
-                    type boolean;
-                    description "A trigger to instruct the netconf server to refresh its internal database/cache. 
-                                 It is primary used for alarms status, but could be used for anything else too. 
-                                 It is assumed that the refresh mechanism takes some time. 
-                                 In order to indicate the process to the controller a refreshStatus attribute is used.";
-                }
-                description "none";
-            }
-            grouping network-element-status-g {
-                leaf refresh-status {
-                    type processing-type;
-                    config false;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping network-element-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses network-element-current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-        /***********************
-        * package equipment
-        **********************/ 
-            list equipment-pac {
-                key 'equipment';
-                leaf equipment {
-                    type leafref {
-                        path '/core-model:equipment/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container equipment-capability {
-                    config false;
-                    uses equipment-capability-g;
-                    description "none";
-                }
-                container equipment-configuration {
-                    uses equipment-configuration-g;
-                    description "none";
-                }
-                container equipment-status {
-                    config false;
-                    uses equipment-status-g;
-                    description "none";
-                }
-                container equipment-current-problems {
-                    config false;
-                    uses equipment-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping equipment-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "Available alarms to be listed. Names are to be separated by commas.";
-                }
-                description "none";
-            }
-            grouping equipment-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping equipment-status-g {
-                description "none";
-            }
-            grouping equipment-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-        /***********************
-        * package holder
-        **********************/ 
-            list holder-pac {
-                key 'holder';
-                leaf holder {
-                    type leafref {
-                        path '/core-model:equipment/core-model:contained-holder/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container holder-capability {
-                    config false;
-                    uses holder-capability-g;
-                    description "none";
-                }
-                container holder-configuration {
-                    uses holder-configuration-g;
-                    description "none";
-                }
-                container holder-status {
-                    config false;
-                    uses holder-status-g;
-                    description "none";
-                }
-                container holder-current-problems {
-                    config false;
-                    uses holder-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping holder-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "Available alarms to be listed. Names are to be separated by commas.";
-                }
-                description "none";
-            }
-            grouping holder-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                description "none";
-            }
-            grouping holder-status-g {
-                description "none";
-            }
-            grouping holder-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-        /***********************
-        * package connector
-        **********************/ 
-            list connector-pac {
-                key 'connector';
-                leaf connector {
-                    type leafref {
-                        path '/core-model:equipment/core-model:exposed-cable/core-model:connector/core-model:uuid';
-                    }
-                    description "none";
-                }
-                container connector-capability {
-                    config false;
-                    uses connector-capability-g;
-                    description "none";
-                }
-                container connector-configuration {
-                    uses connector-configuration-g;
-                    description "none";
-                }
-                container connector-status {
-                    config false;
-                    uses connector-status-g;
-                    description "none";
-                }
-                container connector-current-problems {
-                    config false;
-                    uses connector-current-problems-g;
-                    description "none";
-                }
-                description "none";
-            }
-            grouping connector-capability-g {
-                leaf-list supported-alarms {
-                    type string;
-                    config false;
-                    description "Available alarms to be listed. Names are to be separated by commas.";
-                }
-                description "none";
-            }
-            grouping connector-configuration-g {
-                list problem-type-severity-list {
-                    key 'problem-type-name';
-                    uses problem-severity-type-g;
-                    description "Severity of the problem to be configured.";
-                }
-                leaf remote-end-point {
-                    type string;
-                    description "A network wide identifier of the remote connector. The value is used for topology discovery. 
-Please see also ConnectorStatus::localEndPoint.";
-                }
-                description "none";
-            }
-            grouping connector-status-g {
-                leaf local-end-point {
-                    type string;
-                    description "A network wide global identifier of the this connector, which can be used to discover the physical connectivitiy.
-The value should contain the network element name, because the network element software can assume that the network element name is unique in the network. 
-The value should be formated:
-<connector:uuid>@<network-element-name>
-
-Please see also ConnectorConfiguration::remoteEndPoint";
-                }
-                description "none";
-            }
-            grouping connector-current-problems-g {
-                list current-problem-list {
-                    key 'sequence-number';
-                    config false;
-                    uses current-problem-type-g;
-                    description "none";
-                }
-                description "none";
-            }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-core-model-conditional-packages@2018-04-08.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-core-model-conditional-packages@2018-04-08.yang
deleted file mode 100644 (file)
index 538ec27..0000000
+++ /dev/null
@@ -1,472 +0,0 @@
-module onf-core-model-conditional-packages {
-  namespace "urn:onf:params:xml:ns:yang:onf-core-model-conditional-packages";
-  prefix onf-core-model-conditional-packages;
-
-  import core-model {
-    prefix core-model;
-  }
-  import microwave-model {
-    prefix microwave-model;
-  }
-  import ietf-inet-types {
-    prefix inet;
-  }
-
-  organization
-    "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-  contact
-    "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-     WG List:  <mailto:wireless-transport@login.opennetworking.org>
-     WG Chair: Lyndon Ong
-               <mailto:lyong@ciena.com>
-     WG Chair: Giorgio Cazzaniga
-               <mailto:giorgio.cazzaniga@sm-optics.com>
-     Editors:  Thorsten Heinze
-               <mailto:thorsten.heinze@telefonica.com>
-               Martin Skorupski
-               <mailto:martin.skorupski@highstreet-technologies.com>";
-  description
-    "This model adds conditional packages to the ONF CoreModel in order to support fault management for object classes NetworkElement, Equipment and Holder.";
-
-  revision 2018-04-08 {
-    description
-      "Initial version, used only ONAP PoC 2018-06-25";
-    reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-  }
-
-  grouping current-problem-type-g {
-    leaf problem-name {
-      type string;
-      default "not-specified";
-      config false;
-      description
-        "Name of the alarm according capability::supportedAlarms.";
-    }
-    uses microwave-model:mw-current-problem-g;
-    description
-      "none";
-  }
-
-  grouping network-element-current-problem-type-g {
-    leaf problem-name {
-      type string;
-      default "not-specified";
-      config false;
-      description
-        "Name of the alarm according capability::supportedAlarms.";
-    }
-    leaf object-reference {
-      type string;
-      config false;
-      description
-        "An explaining string of the related object class. This is necesseary, because the current problem list of the NetworkElement object class acts as a container for all alarms, where its object classes are not modeled.";
-    }
-    uses microwave-model:mw-current-problem-g;
-    description
-      "none";
-  }
-
-  grouping problem-severity-type-g {
-    leaf problem-type-name {
-      type string;
-      description
-        "Name of the alarm according to Capability::supportedAlarms";
-    }
-    leaf problem-type-severity {
-      type microwave-model:severity-type;
-      description
-        "Severity of this type of alarm.";
-    }
-    description
-      "none";
-  }
-
-  typedef processing-type {
-    type enumeration {
-      enum "done" {
-        description
-          "none";
-      }
-      enum "processing" {
-        description
-          "none";
-      }
-    }
-    description
-      "none";
-  }
-
-  container network-element-pac {
-    leaf network-element {
-      type leafref {
-        path "/core-model:network-element/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container network-element-capability {
-      config false;
-      uses network-element-capability-g;
-      description
-        "none";
-    }
-    container network-element-configuration {
-      uses network-element-configuration-g;
-      description
-        "none";
-    }
-    container network-element-status {
-      config false;
-      uses network-element-status-g;
-      description
-        "none";
-    }
-    container network-element-current-problems {
-      config false;
-      uses network-element-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    leaf trigger-refresh {
-      type boolean;
-      description
-        "A trigger to instruct the netconf server to refresh its internal database/cache. 
-         It is primary used for alarms status, but could be used for anything else too. 
-         It is assumed that the refresh mechanism takes some time. 
-         In order to indicate the process to the controller a refreshStatus attribute is used.";
-    }
-    leaf connection-request-username {
-      type string {
-        length "1..256";
-      }
-      description
-        "none";
-    }
-    leaf connection-request-password {
-      type string {
-        length "8..256";
-      }
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-status-g {
-    leaf refresh-status {
-      type processing-type;
-      config false;
-      description
-        "none";
-    }
-    leaf connection-request-url {
-      type inet:domain-name;
-      config false;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping network-element-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses network-element-current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  list equipment-pac {
-    key "equipment";
-    leaf equipment {
-      type leafref {
-        path "/core-model:equipment/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container equipment-capability {
-      config false;
-      uses equipment-capability-g;
-      description
-        "none";
-    }
-    container equipment-configuration {
-      uses equipment-configuration-g;
-      description
-        "none";
-    }
-    container equipment-status {
-      config false;
-      uses equipment-status-g;
-      description
-        "none";
-    }
-    container equipment-current-problems {
-      config false;
-      uses equipment-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "Available alarms to be listed. Names are to be separated by commas.";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-status-g {
-    leaf software-version {
-        type string;
-        config false;
-        description
-            "Indicates the current running software version of the equipment.";
-    }
-    leaf additional-software-version {
-        type string;
-        config false;
-        description
-            "Indicates the current running software version of the equipment.";
-    }
-    leaf up-time {
-        type uint64;
-        config false;
-        units "s";
-        description
-            "Seconds since the last reboot.";
-    }
-    leaf local-time-zone {
-        type string;
-        config false;
-        description
-            "??? Which format ??? - +00:00 proposed";
-    }
-    description
-      "none";
-  }
-
-  grouping equipment-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  list holder-pac {
-    key "holder";
-    leaf holder {
-      type leafref {
-        path "/core-model:equipment/core-model:contained-holder/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container holder-capability {
-      config false;
-      uses holder-capability-g;
-      description
-        "none";
-    }
-    container holder-configuration {
-      uses holder-configuration-g;
-      description
-        "none";
-    }
-    container holder-status {
-      config false;
-      uses holder-status-g;
-      description
-        "none";
-    }
-    container holder-current-problems {
-      config false;
-      uses holder-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping holder-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "Available alarms to be listed. Names are to be separated by commas.";
-    }
-    description
-      "none";
-  }
-
-  grouping holder-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    description
-      "none";
-  }
-
-  grouping holder-status-g {
-    description
-      "none";
-  }
-
-  grouping holder-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  list connector-pac {
-    key "connector";
-    leaf connector {
-      type leafref {
-        path "/core-model:equipment/core-model:exposed-cable/core-model:connector/core-model:uuid";
-      }
-      description
-        "none";
-    }
-    container connector-capability {
-      config false;
-      uses connector-capability-g;
-      description
-        "none";
-    }
-    container connector-configuration {
-      uses connector-configuration-g;
-      description
-        "none";
-    }
-    container connector-status {
-      config false;
-      uses connector-status-g;
-      description
-        "none";
-    }
-    container connector-current-problems {
-      config false;
-      uses connector-current-problems-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-capability-g {
-    leaf-list supported-alarms {
-      type string;
-      config false;
-      description
-        "Available alarms to be listed. Names are to be separated by commas.";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-configuration-g {
-    list problem-type-severity-list {
-      key "problem-type-name";
-      uses problem-severity-type-g;
-      description
-        "Severity of the problem to be configured.";
-    }
-    leaf remote-end-point {
-      type string;
-      description
-        "A network wide identifier of the remote connector. The value is used for topology discovery. 
-         Please see also ConnectorStatus::localEndPoint.";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-status-g {
-    leaf local-end-point {
-      type string;
-      description
-        "A network wide global identifier of the this connector, which can be used to discover the physical connectivitiy.
-         The value should contain the network element name, because the network element software can assume that the network element name is unique in the network. 
-         The value should be formated:
-         <connector:uuid>@<network-element-name>
-
-         Please see also ConnectorConfiguration::remoteEndPoint";
-    }
-    description
-      "none";
-  }
-
-  grouping connector-current-problems-g {
-    list current-problem-list {
-      key "sequence-number";
-      config false;
-      uses current-problem-type-g;
-      description
-        "none";
-    }
-    description
-      "none";
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-ethernet-conditional-packages@2017-04-02.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-ethernet-conditional-packages@2017-04-02.yang
deleted file mode 100644 (file)
index 4d6fb7c..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-module onf-ethernet-conditional-packages {
-    namespace "urn:onf:params:xml:ns:yang:onf-ethernet-conditional-packages";
-    prefix onf-ethernet-conditional-packages;
-    import core-model {
-        prefix core-model;
-    }
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             WG Chair: Giorgio Cazzaniga
-                       <mailto:giorgio.cazzaniga@sm-optics.com>
-             Editors:  Thorsten Heinze
-                       <mailto:thorsten.heinze@telefonica.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This model adds conditional packages to the ONF CoreModel in order address Ethernet use cases.";
-    revision 2017-04-02 {
-        description "Initial version";
-        reference "ONF TR 532: A YANG Data Model for Wireless Networks.";
-    }
-    /***********************
-    * package object-classes
-    **********************/ 
-        list ethernet-pac {
-            key 'layer-protocol';
-            leaf layer-protocol {
-                type leafref {
-                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                }
-                description "none";
-            }
-            container ethernet-capability {
-                config false;
-                uses ethernet-capability-g;
-                description "none";
-            }
-            container ethernet-configuration {
-                uses ethernet-configuration-g;
-                description "none";
-            }
-            container ethernet-status {
-                config false;
-                uses ethernet-status-g;
-                description "none";
-            }
-            container ethernet-current-problems {
-                config false;
-                uses ethernet-current-problems-g;
-                description "none";
-            }
-            container ethernet-current-performance {
-                config false;
-                uses ethernet-current-performance-g;
-                description "none";
-            }
-            container ethernet-historical-performances {
-                config false;
-                uses ethernet-historical-performances-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping ethernet-capability-g {
-            description "none";
-        }
-        grouping ethernet-configuration-g {
-            leaf vlan-id {
-                type int16;
-                description "value = 0: frames on ingress must be untagged, frames on egress get untagged; value = any other positive integer < 4096: frames on ingress must be tagged with this VLAN ID, frames on egress either already have or get this VLAN ID attached;";
-            }
-            description "none";
-        }
-        grouping ethernet-status-g {
-            description "none";
-        }
-        grouping ethernet-current-problems-g {
-            description "none";
-        }
-        grouping ethernet-current-performance-g {
-            description "none";
-        }
-        grouping ethernet-historical-performances-g {
-            description "none";
-        }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-otn-odu-conditional-packages@2017-10-20.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-otn-odu-conditional-packages@2017-10-20.yang
deleted file mode 100644 (file)
index 89d6cbf..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-module onf-otn-odu-conditional-packages {
-    namespace "urn:onf:params:xml:ns:yang:onf-otn-odu-conditional-packages";
-    prefix onf-otn-odu-conditional-packages;
-    import core-model {
-        prefix core-model;
-    }
-    organization "ONF (Open Networking Foundation) Open Transport Working Group";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             Editors:  Mohit Chamania 
-                       <MChamania@advaoptical.com>
-                       Dzmitry Khomchanka
-                       <dzmitry.khomchanka@vpi-minsk.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This model adds conditional packages to the ONF CoreModel 1.2 
-                 in order address OTN ODU use cases. It is a temorary model for 
-                 demontration purposes and bases on the ideas an concepts of
-                 TAPI. However, modifications for a pure southbound were
-                 nessesary.";
-    revision 2017-10-20 {
-        description "Initial version";
-        reference "ONF TR 512: Core Model.";
-    }
-    /***********************
-    * package type-definitions (copied from TAPI; revision: 2017-05-31)
-    **********************/ 
-        typedef mapping-type {
-            type enumeration {
-                enum amp {
-                    description "none";
-                }
-                enum bmp {
-                    description "none";
-                }
-                enum gfp-f {
-                    description "none";
-                }
-                enum gmp {
-                    description "none";
-                }
-                enum ttp-gfp-bmp {
-                    description "none";
-                }
-                enum null {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef odu-named-payload-type {
-            type enumeration {
-                enum unknown {
-                    description "none";
-                }
-                enum uninterpretable {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef odu-slot-size {
-            type enumeration {
-                enum 1-g-25 {
-                    description "none";
-                }
-                enum 2-g-5 {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        typedef odu-type {
-            type enumeration {
-                enum odu-0 {
-                    description "none";
-                }
-                enum odu-1 {
-                    description "none";
-                }
-                enum odu-2 {
-                    description "none";
-                }
-                enum odu-2-e {
-                    description "none";
-                }
-                enum odu-3 {
-                    description "none";
-                }
-                enum odu-4 {
-                    description "none";
-                }
-                enum odu-flex {
-                    description "none";
-                }
-                enum odu-cn {
-                    description "none";
-                }
-            }
-            description "none";
-        }
-        grouping odu-payload-type-g {
-            leaf named-payload-type {
-                type odu-named-payload-type;
-                description "none";
-            }
-            leaf hex-payload-type {
-                type uint64;
-                description "none";
-            }
-            description "none";
-        }
-    /***********************
-    * package object-classes
-    **********************/ 
-
-        /***********************
-         * OTN ODU Connection (ODU-CTP)
-         **********************/ 
-        list otn-odu-connection-pac {
-            key 'layer-protocol';
-            leaf layer-protocol {
-                type leafref {
-                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                }
-                description "none";
-            }
-            container otn-odu-connection-capability {
-                config false;
-                uses otn-odu-connection-capability-g;
-                description "none";
-            }
-            container otn-odu-connection-configuration {
-                uses otn-odu-connection-configuration-g;
-                description "none";
-            }
-            container otn-odu-connection-status {
-                config false;
-                uses otn-odu-connection-status-g;
-                description "none";
-            }
-            container otn-odu-connection-current-problems {
-                config false;
-                uses otn-odu-connection-current-problems-g;
-                description "none";
-            }
-            container otn-odu-connection-current-performance {
-                config false;
-                uses otn-odu-connection-current-performance-g;
-                description "none";
-            }
-            container otn-odu-connection-historical-performances {
-                config false;
-                uses otn-odu-connection-historical-performances-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping otn-odu-connection-capability-g {
-            container accepted-payload-type {
-                uses odu-payload-type-g;
-                description 
-                    "This attribute is applicable when the ODU CTP object 
-                     instance represents a lower order ODU CTP Sink at the 
-                     client layer of the ODUP/ODU[i]j or ODUP/ODUj-21 adaptation
-                     function. 
-                     This attribute is a 2-digit Hex code that indicates the new
-                     accepted payload type.
-                     Valid values are defined in Table 15-8 of ITU-T 
-                     Recommendation G.709 with one additional value 
-                     UN_INTERPRETABLE.";
-            }
-            description "none";
-        }
-        grouping otn-odu-connection-configuration-g {
-            leaf-list tributary-slot-list {
-                type uint64;
-                description 
-                    "This attribute contains a set of distinct (i.e. unique) 
-                     integers (e.g. 2, 3, 5, 9, 15 representing the tributary 
-                     slots TS2, TS3, TS5, TS9 and TS15) which represents the 
-                     resources occupied by the Low Order ODU Link Connection 
-                     (e.g. carrying an ODUflex with a bit rate of 6.25G). 
-                     This attribute applies when the LO ODU_ConnectionTerminationPoint 
-                     connects with an HO ODU_TrailTerminationPoint object. 
-                     It will not apply if this ODU_ConnectionTerminationPoint 
-                     object directly connects to an OTU_TrailTerminationPoint 
-                     object (i.e. OTU has no trib slots). 
-                     The upper bound of the integer allowed in this set is a 
-                     function of the HO-ODU server layer to which the ODU 
-                     connection has been mapped (adapted). 
-                     Thus, for example, M=8/32/80 for ODU2/ODU3/ODU4 server 
-                     layers (respectively). Note that the value of this 
-                     attribute can be changed only in the case of ODUflex and 
-                     has to be through specific operations (i.e. not be changing
-                     the attribute tributarySlotList directly).";
-            }
-            leaf tributary-port-number {
-                type uint64;
-                description 
-                    "This attribute identifies the tributary port number that is
-                     associated with the ODU CTP. 
-                     range of type : The value range depends on the size of the 
-                     Tributary Port Number (TPN) field used which depends on th 
-                     server-layer ODU or OTU.
-                     In case of ODUk mapping into OTUk, there is no TPN field, 
-                     so the tributaryPortNumber shall be zero.
-                     In case of LO ODUj mapping over ODU1, ODU2 or ODU3, the TPN
-                     is encoded in a 6-bit field so the value range is 0-63. 
-                     See clause 14.4.1/G.709-2016.
-                     In case of LO ODUj mapping over ODU4, the TPN is encoded in 
-                     a 7-bit field so the value range is 0-127. 
-                     See clause 14.4.1.4/G.709-2016.
-                     In case of ODUk mapping over ODUCn, the TPN is encoded in a
-                     14-bit field so the value range is 0-16383. See clause 
-                     20.4.1.1/G.709-2016.
-                    ";
-            }
-            leaf accepted-m-si {
-                type string;
-                description 
-                    "This attribute is applicable when the ODU CTP object 
-                     instance represents a lower order ODU1 or ODU2 CTP Sink at 
-                     the client layer of the ODU3P/ODU12 adaptation function or 
-                     represents a lower order ODUj CTP Sink at the client layer 
-                     of the ODUP/ODUj-21 adaptation function. This attribute is 
-                     a 1-byte field that represents the accepted multiplex 
-                     structure of the adaptation function. ";
-            }
-            leaf opu-tributary-slot-size {
-                type odu-slot-size;
-                description 
-                    "This attribute is applicable for ODU2 and ODU3 CTP only.
-                     [sko] Why that? 
-                     It indicates the slot size of the ODU CTP.";
-            }
-            leaf auto-payload-type {
-                type boolean;
-                description 
-                    "This attribute is applicable when the ODU CTP object 
-                     instance represents a lower order ODU CTP Source at the 
-                     client layer of the ODUP/ODUj-21 adaptation function. The 
-                     value of true of this attribute configures that the 
-                     adaptation source function shall fall back to the payload 
-                     type PT=20 if the conditions specified in 14.3.10.1/G.798 
-                     are satisfied. ";
-            }
-            leaf configured-mapping-type {
-                type mapping-type;
-                description 
-                    "This attributes indicates the configured mapping type.";
-            }
-            leaf configured-client-type {
-                type string;
-                description 
-                    "This attribute configures the type of the client CTP of the
-                     server ODU TTP.";
-            }
-            description 
-               "This Pac contains the attributes associated with the ODU-CTP.";
-        }
-        grouping otn-odu-connection-status-g {
-            description "none";
-        }
-        grouping otn-odu-connection-current-problems-g {
-            description "none";
-        }
-        grouping otn-odu-connection-current-performance-g {
-            description "none";
-        }
-        grouping otn-odu-connection-historical-performances-g {
-            description "none";
-        }
-
-
-        /***********************
-         * OTN ODU Termination (ODU-TTP)
-         **********************/ 
-        list otn-odu-termination-pac {
-            key 'layer-protocol';
-            leaf layer-protocol {
-                type leafref {
-                    path '/core-model:network-element/core-model:ltp/core-model:lp/core-model:uuid';
-                }
-                description "none";
-            }
-            container otn-odu-termination-capability {
-                config false;
-                uses otn-odu-termination-capability-g;
-                description "none";
-            }
-            container otn-odu-termination-configuration {
-                uses otn-odu-termination-configuration-g;
-                description "none";
-            }
-            container otn-odu-termination-status {
-                config false;
-                uses otn-odu-termination-status-g;
-                description "none";
-            }
-            container otn-odu-termination-current-problems {
-                config false;
-                uses otn-odu-termination-current-problems-g;
-                description "none";
-            }
-            container otn-odu-termination-current-performance {
-                config false;
-                uses otn-odu-termination-current-performance-g;
-                description "none";
-            }
-            container otn-odu-termination-historical-performances {
-                config false;
-                uses otn-odu-termination-historical-performances-g;
-                description "none";
-            }
-            description "none";
-        }
-        grouping otn-odu-termination-capability-g {
-            description "none";
-        }
-        grouping otn-odu-termination-configuration-g {
-            leaf odu-type {
-                type odu-type;
-                description "This attribute specifies the type of the ODU 
-                             termination point.";
-            }
-            leaf odu-rate {
-                type uint64;
-                description "This attribute indicates the rate of the ODU 
-                             terminatinon point. 
-                             This attribute is Set at create; i.e., once created
-                             it cannot be changed directly. 
-                             In case of resizable ODU flex, its value can be 
-                             changed via HAO (not directly on the attribute).";
-            }
-            leaf odu-rate-tolerance {
-                type uint64;
-                units "ppm";
-                description "This attribute indicates the rate tolerance of the 
-                             ODU termination point. 
-                             Valid values are real value in the unit of ppm. 
-                             Standardized values are defined in Table 7-2/G.709.
-                             ";
-            }
-            description "none";
-        }
-        grouping otn-odu-termination-status-g {
-            description "none";
-        }
-        grouping otn-odu-termination-current-problems-g {
-            description "none";
-        }
-        grouping otn-odu-termination-current-performance-g {
-            description "none";
-        }
-        grouping otn-odu-termination-historical-performances-g {
-            description "none";
-        }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-ptp-dataset@2017-05-08.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/devicemodel/src/main/yang/onf-ptp-dataset@2017-05-08.yang
deleted file mode 100644 (file)
index 41a1c39..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-module onf-ptp-dataset {
-    namespace "urn:onf:params:xml:ns:yang:onf-ptp-dataset";
-    prefix ptp-ex;
-
-    import ietf-yang-types {
-        prefix yang;
-    }
-    import core-model {
-        prefix core-model;
-    }
-    import ietf-ptp-dataset {
-        prefix ptp;
-    }
-
-    organization "ONF (Open Networking Foundation) Open Transport Working Group - Wireless Transport Project";
-    contact "WG Web: <https://www.opennetworking.org/technical-communities/areas/specification/1931-optical-transport>
-             WG List:  <mailto:wireless-transport@login.opennetworking.org>
-             WG Chair: Lyndon Ong
-                       <mailto:lyong@ciena.com>
-             Editors:  Alfons Mittermaier
-                       <mailto:alfons.mittermaier@@highstreet-technologies.com>
-                       Martin Skorupski
-                       <mailto:martin.skorupski@highstreet-technologies.com>";
-    description "This module contains a collection of YANG definitions to extent ptp-dataset.";
-    revision 2017-05-08 {
-        description "Initial version";
-        reference "A YANG Data Model extending ptp-dataset.";
-    }
-
-    augment "/ptp:instance-list/ptp:default-ds" {
-        description
-            "Addition of data nodes for the default data set of the clock.";
-
-        leaf local-priority {
-            type uint8;
-            default 128;
-            description
-                "none";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 6.3.2";
-        }
-
-        leaf max-steps-removed {
-            type uint8;
-            default 128;
-            description
-                "none";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 6.3";
-        }
-
-        leaf multicast-mac-address {
-            type yang:mac-address;
-            description
-                "none";
-        }
-        
-        leaf designated-enabled {
-            type boolean;
-            default true;
-            description
-                "A PTP Clock needs to be enabled by management.";
-        }
-    }
-
-    augment "/ptp:instance-list/ptp:port-ds-list" {
-        description
-            "Addition of data nodes for the default data set of the clock.";
-
-        leaf master-only {
-            type boolean;
-            default true;
-            description
-                "Indicates that port can only be a master.";
-        }
-
-        leaf local-priority {
-            type uint8;
-            default 128;
-            description
-                "Local priority as used for alternate BMCA";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 6.3.2";
-        }
-
-        leaf designated-enabled {
-            type boolean;
-            default true;
-            description
-                "A PTP Port needs to be enabled by management.";
-            reference 
-                "IEEE 1588-2008 IEEE Standard for a Precision Clock Synchronization Protocol 
-                 for Networked Measurement and Control Systems
-                 Chapter 9.2";
-        }
-
-        leaf delay-asymmetry {
-            type int64;
-            default 0;
-            description
-                "As per PTP    Known path asymmetry in ns.";
-            reference 
-                "ITU-T G.8275.1 Precision time protocol telecom profile for phase/time 
-                 synchronization with full timing support from the network
-                 Chapter 7.4.2";
-        }
-        
-        leaf logical-termination-point {
-            type leafref {
-                path '/core-model:network-element/core-model:ltp/core-model:uuid';
-            }
-            description
-                "A reference to a LTP of layer-protocol-name 'ETY' or 'MWPS', which is used 
-                 to discover the PTP topology.";
-        }
-
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/.gitignore b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/.gitignore
deleted file mode 100644 (file)
index 639ccfc..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-*.sw*
-*~
-# assets/
-dlux-web/**/assets/
-build/
-bin/
-node/
-node_modules/
-target/
-vendor/
-.DS_Store
-
-# dlux app
-
-# Eclipse
-.classpath
-.project
-.settings/
-
-# Intellij
-.idea/
-*.iml
-*.iws
-
-# Mac
-.DS_Store
-
-# Maven
-log/
-target/
-
-*.class
-
-# Package Files #
-*.jar
-*.war
-*.ear
-
-# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
-hs_err_pid*
-dlux-web/node
-dlux-web/src/LICENSE
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/.gitreview b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/.gitreview
deleted file mode 100644 (file)
index df6f2d4..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-[gerrit]
-host=git.opendaylight.org
-port=29418
-project=dlux.git
-defaultbranch=stable/carbon
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/LICENSE b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/LICENSE
deleted file mode 100644 (file)
index 79e486c..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation distributed under this Agreement, and
-b) in the case of each subsequent Contributor:
-i) changes to the Program, and
-ii) additions to the Program;
-where such changes and/or additions to the Program originate from and are distributed by that particular Contributor. A Contribution 'originates' from a Contributor if it was added to the Program by such Contributor itself or anyone acting on such Contributor's behalf. Contributions do not include additions to the Program which: (i) are separate modules of software distributed in conjunction with the Program under their own license agreement, and (ii) are not derivative works of the Program.
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents" mean patent claims licensable by a Contributor which are necessarily infringed by the use or sale of its Contribution alone or when combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement, including all Contributors.
-
-2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, distribute and sublicense the Contribution of such Contributor, if any, and such derivative works, in source code and object code form.
-b) Subject to the terms of this Agreement, each Contributor hereby grants Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed Patents to make, use, sell, offer to sell, import and otherwise transfer the Contribution of such Contributor, if any, in source code and object code form. This patent license shall apply to the combination of the Contribution and the Program if, at the time the Contribution is added by the Contributor, such addition of the Contribution causes such combination to be covered by the Licensed Patents. The patent license shall not apply to any other combinations which include the Contribution. No hardware per se is licensed hereunder.
-c) Recipient understands that although each Contributor grants the licenses to its Contributions set forth herein, no assurances are provided by any Contributor that the Program does not infringe the patent or other intellectual property rights of any other entity. Each Contributor disclaims any liability to Recipient for claims brought by any other entity based on infringement of intellectual property rights or otherwise. As a condition to exercising the rights and licenses granted hereunder, each Recipient hereby assumes sole responsibility to secure any other intellectual property rights needed, if any. For example, if a third party patent license is required to allow Recipient to distribute the Program, it is Recipient's responsibility to acquire that license before distributing the Program.
-d) Each Contributor represents that to its knowledge it has sufficient copyright rights in its Contribution, if any, to grant the copyright license set forth in this Agreement.
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under its own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-b) its license agreement:
-i) effectively disclaims on behalf of all Contributors all warranties and conditions, express and implied, including warranties or conditions of title and non-infringement, and implied warranties or conditions of merchantability and fitness for a particular purpose;
-ii) effectively excludes on behalf of all Contributors all liability for damages, including direct, indirect, special, incidental and consequential damages, such as lost profits;
-iii) states that any provisions which differ from this Agreement are offered by that Contributor alone and not by any other party; and
-iv) states that source code for the Program is available from such Contributor, and informs licensees how to obtain it in a reasonable manner on or through a medium customarily used for software exchange.
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-b) a copy of this Agreement must be included with each copy of the Program.
-Contributors may not remove or alter any copyright notices contained within the Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if any, in a manner that reasonably allows subsequent Recipients to identify the originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with respect to end users, business partners and the like. While this license is intended to facilitate the commercial use of the Program, the Contributor who includes the Program in a commercial product offering should do so in a manner which does not create potential liability for other Contributors. Therefore, if a Contributor includes the Program in a commercial product offering, such Contributor ("Commercial Contributor") hereby agrees to defend and indemnify every other Contributor ("Indemnified Contributor") against any losses, damages and costs (collectively "Losses") arising from claims, lawsuits and other legal actions brought by a third party against the Indemnified Contributor to the extent caused by the acts or omissions of such Commercial Contributor in connection with its distribution of the Program in a commercial product offering. The obligations in this section do not apply to any claims or Losses relating to any actual or alleged intellectual property infringement. In order to qualify, an Indemnified Contributor must: a) promptly notify the Commercial Contributor in writing of such claim, and b) allow the Commercial Contributor to control, and cooperate with the Commercial Contributor in, the defense and any related settlement negotiations. The Indemnified Contributor may participate in any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product offering, Product X. That Contributor is then a Commercial Contributor. If that Commercial Contributor then makes performance claims, or offers warranties related to Product X, those performance claims and warranties are such Commercial Contributor's responsibility alone. Under this section, the Commercial Contributor would have to defend claims against the other Contributors related to those performance claims and warranties, and if a court requires any other Contributor to pay any damages as a result, the Commercial Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each Recipient is solely responsible for determining the appropriateness of using and distributing the Program and assumes all risks associated with its exercise of rights under this Agreement , including but not limited to the risks and costs of program errors, compliance with applicable laws, damage to or loss of data, programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable law, it shall not affect the validity or enforceability of the remainder of the terms of this Agreement, and without further action by the parties hereto, such provision shall be reformed to the minimum extent necessary to make such provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Program itself (excluding combinations of the Program with other software or hardware) infringes such Recipient's patent(s), then such Recipient's rights granted under Section 2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient's rights under this Agreement shall terminate if it fails to comply with any of the material terms or conditions of this Agreement and does not cure such failure in a reasonable period of time after becoming aware of such noncompliance. If all Recipient's rights under this Agreement terminate, Recipient agrees to cease use and distribution of the Program as soon as reasonably practicable. However, Recipient's obligations under this Agreement and any licenses granted by Recipient relating to the Program shall continue and survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in order to avoid inconsistency the Agreement is copyrighted and may only be modified in the following manner. The Agreement Steward reserves the right to publish new versions (including revisions) of this Agreement from time to time. No one other than the Agreement Steward has the right to modify this Agreement. The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation may assign the responsibility to serve as the Agreement Steward to a suitable separate entity. Each new version of the Agreement will be given a distinguishing version number. The Program (including Contributions) may always be distributed subject to the version of the Agreement under which it was received. In addition, after a new version of the Agreement is published, Contributor may elect to distribute the Program (including its Contributions) under the new version. Except as expressly stated in Sections 2(a) and 2(b) above, Recipient receives no rights or licenses to the intellectual property of any Contributor under this Agreement, whether expressly, by implication, estoppel or otherwise. All rights in the Program not expressly granted under this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the intellectual property laws of the United States of America. No party to this Agreement will bring a legal action under this Agreement more than one year after the cause of action arose. Each party waives its rights to a jury trial in any resulting litigation.
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/README.md b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/README.md
deleted file mode 100644 (file)
index 7391578..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-# OpenDaylight DLUX \r
-\r
-OpenDaylight DLUX is a Javascript-based stateless user interface that communicates with the service backend to provide a consistent and user-friendly interface to interact with OpenDaylight projects and base controller.\r
-\r
-\r
-## Build DLUX code with Karaf feature and distribution\r
-\r
-All necessary modules mentioned above such as nodesjs, bower etc. will be installed automatically, when you run the dlux build for first time.  Run following command at dlux home directory /dlux to build dlux feature and distribution along with code.\r
-Once successful, It will make dlux feature available to install and also create dlux karaf distribution. You can find karaf distribution at dlux/distribution-dlux.\r
-\r
-    $  mvn clean install\r
-\r
-__NOTE__: Some people reported about node related error while maven build. Those errors are usually environment related, mostly happens because of the permission issues or node is not installed properly. Try to reinstall node manually.\r
-\r
-### Install NodeJS manually if needed\r
-\r
-__For Windows and Mac without brew:__\r
-\r
-    Go to http://www.nodejs.org\r
-    Download and install NodeJS\r
-\r
-__For Mac with brew installed:__\r
-\r
-    $ brew update\r
-    $ brew install node\r
-\r
-__Verify NodeJS is installed:__\r
-\r
-    $ npm --version\r
-\r
-__Run DLUX in karaf distribution__\r
-\r
-Once you have dlux distribution or you have karaf distribution from integration repository. You can turn on the dlux feature to access the UI.\r
-We will take example of dlux distribution here. Navigate to directory dlux/distribution-dlux/target/assembly/bin and start the karaf via following command -\r
-\r
-    ./karaf\r
-\r
-On the karaf shell, install dlux core feature via running following command -\r
-\r
-    feature:install odl-dlux-core\r
-\r
-\r
-It will internally install odl-restconf and dlux topology application along with core dlux components. once this feature is successfully installed.\r
-Access the dlux UI at __http://localhost:8181/index.html__. Default credentials are admin/admin for login.\r
-\r
-All the applications in dlux are now karaf features. You can install other dlux applications such as nodes, yang-ui from karaf console using commands such as\r
-\r
-    feature:install odl-dlux-node\r
-    feature:install odl-dlux-yangui\r
-\r
-For more details - follow the wiki at  [dlux opendaylight](https://wiki.opendaylight.org/view/OpenDaylight_dlux:Getting_started)\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/distribution-karaf-0.6.1-Carbon.dluxloader.tar.gz b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/distribution-karaf-0.6.1-Carbon.dluxloader.tar.gz
deleted file mode 100644 (file)
index 0327d8e..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/distribution-karaf-0.6.1-Carbon.dluxloader.tar.gz and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/.bowerrc b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/.bowerrc
deleted file mode 100644 (file)
index 1f98498..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-{
-  "directory": "vendor",
-  "json": "bower.json"
-}
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/Gruntfile.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/Gruntfile.js
deleted file mode 100644 (file)
index 689a448..0000000
+++ /dev/null
@@ -1,725 +0,0 @@
-var lrSnippet = require('connect-livereload')();\r
-var mountFolder = function (connect, dir) {\r
-    return connect.static(require('path').resolve(dir));\r
-};\r
-\r
-module.exports = function ( grunt ) {\r
-\r
-  /**\r
-   * Load required Grunt tasks. These are installed based on the versions listed\r
-   * in `package.json` when you do `npm install` in this directory.\r
-   */\r
-  grunt.loadNpmTasks('grunt-contrib-clean');\r
-  grunt.loadNpmTasks('grunt-contrib-copy');\r
-  grunt.loadNpmTasks('grunt-contrib-jshint');\r
-  grunt.loadNpmTasks('grunt-contrib-concat');\r
-  grunt.loadNpmTasks('grunt-contrib-watch');\r
-  grunt.loadNpmTasks('grunt-contrib-uglify');\r
-  grunt.loadNpmTasks('grunt-conventional-changelog');\r
-  grunt.loadNpmTasks('grunt-bump');\r
-  //grunt.loadNpmTasks('grunt-recess');\r
-  grunt.loadNpmTasks('grunt-shell');\r
-  grunt.loadNpmTasks('grunt-karma');\r
-  grunt.loadNpmTasks('grunt-ng-annotate');\r
-  grunt.loadNpmTasks('grunt-html2js');\r
-  grunt.loadNpmTasks('grunt-contrib-less');\r
-  grunt.loadNpmTasks('grunt-contrib-connect');\r
-  grunt.loadNpmTasks('grunt-open');\r
-  grunt.loadNpmTasks('grunt-replace');\r
-\r
-  /**\r
-   * Load in our build configuration file.\r
-   */\r
-  var userConfig = require( './build.config.js' );\r
-\r
-  var envConfig = {\r
-\r
-      replace: {\r
-          development: {\r
-              options: {\r
-                  patterns: [\r
-                      {\r
-                          json: grunt.file.readJSON('./config/development.json')\r
-                      }\r
-                  ]\r
-              },\r
-              files: [\r
-                  {\r
-                      expand: true,\r
-                      flatten: true,\r
-                      src: ['./config/env.module.js'],\r
-                      dest: 'src/common/config/'\r
-                  }\r
-              ]\r
-          },\r
-          production: {\r
-              options: {\r
-                  patterns: [\r
-                      {\r
-                          json: grunt.file.readJSON('./config/production.json')\r
-                      }\r
-                  ]\r
-              },\r
-              files: [\r
-                  {\r
-                      expand: true,\r
-                      flatten: true,\r
-                      src: ['./config/env.module.js'],\r
-                      dest: 'src/common/config/'\r
-                  }\r
-              ]\r
-          }\r
-      }\r
-  }\r
-\r
-  /**\r
-   * This is the configuration object Grunt uses to give each plugin its\r
-   * instructions.\r
-   */\r
-  var taskConfig = {\r
-    /**\r
-     * We read in our `package.json` file so we can access the package name and\r
-     * version. It's already there, so we don't repeat ourselves here.\r
-     */\r
-    pkg: grunt.file.readJSON("package.json"),\r
-\r
-    /**\r
-     * The banner is the comment that is placed at the top of our compiled\r
-     * source files. It is first processed as a Grunt template, where the `<%=`\r
-     * pairs are evaluated based on this very configuration object.\r
-     */\r
-    meta: {\r
-      banner:\r
-        '/**\n' +\r
-        ' * <%= pkg.name %> - v<%= pkg.version %> - <%= grunt.template.today("yyyy-mm-dd") %>\n' +\r
-        ' * <%= pkg.homepage %>\n' +\r
-        ' *\n' +\r
-        ' * Copyright (c) <%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +\r
-        ' * Licensed <%= pkg.licenses.type %> <<%= pkg.licenses.url %>>\n' +\r
-        ' */\n'\r
-    },\r
-\r
-    /**\r
-     * Creates a changelog on a new version.\r
-     */\r
-    changelog: {\r
-      options: {\r
-        dest: 'CHANGELOG.md',\r
-        template: 'changelog.tpl'\r
-      }\r
-    },\r
-\r
-    /**\r
-     * Increments the version number, etc.\r
-     */\r
-    bump: {\r
-      options: {\r
-        files: [\r
-          "package.json",\r
-          "bower.json"\r
-        ],\r
-        commit: false,\r
-        commitMessage: 'chore(release): v%VERSION%',\r
-        commitFiles: [\r
-          "package.json",\r
-          "client/bower.json"\r
-        ],\r
-        createTag: false,\r
-        tagName: 'v%VERSION%',\r
-        tagMessage: 'Version %VERSION%',\r
-        push: false,\r
-        pushTo: 'origin'\r
-      }\r
-    },\r
-\r
-    /**\r
-     * The directories to delete when `grunt clean` is executed.\r
-     */\r
-    clean: [\r
-      '<%= build_dir %>',\r
-      '<%= compile_dir %>'\r
-    ],\r
-\r
-    /**\r
-     * The `copy` task just copies files from A to B. We use it here to copy\r
-     * our project assets (images, fonts, etc.) and javascripts into\r
-     * `build_dir`, and then to copy the assets to `compile_dir`.\r
-     */\r
-    copy: {\r
-      build_app_assets: {\r
-        files: [\r
-          {\r
-            src: [ '**' ],\r
-            dest: '<%= build_dir %>/assets/',\r
-            cwd: 'src/assets',\r
-            expand: true\r
-          }\r
-       ]\r
-      },\r
-      build_vendor_assets: {\r
-        files: [\r
-          {\r
-            src: [ '<%= vendor_files.assets %>' ],\r
-            dest: '<%= build_dir %>/assets/',\r
-            cwd: '.',\r
-            expand: true,\r
-            flatten: true\r
-          }\r
-       ]\r
-      },\r
-      build_appjs: {\r
-        files: [\r
-          {\r
-            src: [ '<%= app_files.js %>', '<%= app_files.css %>', '<%= app_files.lang %>' ],\r
-            dest: '<%= build_dir %>/',\r
-            cwd: '.',\r
-            expand: true\r
-          }\r
-        ]\r
-      },\r
-      copy_template: {\r
-        files: [\r
-          {\r
-            src: ['<%= app_files.templates %>'],\r
-            dest: '<%= build_dir %>/',\r
-            cwd: '.',\r
-            expand: true\r
-          }\r
-        ]\r
-      },\r
-      build_vendorjs: {\r
-        files: [\r
-          {\r
-            src: [ '<%= vendor_files.js %>' ],\r
-            dest: '<%= build_dir %>/',\r
-            cwd: '.',\r
-            expand: true\r
-          }\r
-        ]\r
-      },\r
-      build_appimages: {\r
-        files: [\r
-          {\r
-            src: [ '<%= app_files.images %>' ],\r
-            dest: '<%= build_dir %>/',\r
-            cwd: '.',\r
-            expand: true\r
-          }\r
-        ]\r
-      },\r
-      build_vendorimages: {\r
-        files: [\r
-          {\r
-            src: [ '<%= vendor_files.images %>' ],\r
-            dest: '<%= build_dir %>/',\r
-            cwd: '.',\r
-            expand: true\r
-          }\r
-        ]\r
-      },\r
-      build_vendorcss: {\r
-        files: [\r
-          {\r
-            src: [ '<%= vendor_files.css %>' ],\r
-            dest: '<%= build_dir %>',\r
-            cwd: '.',\r
-            expand: true\r
-          }\r
-        ]\r
-      },\r
-      compile_assets: {\r
-        files: [\r
-          {\r
-            src: [ '**' ],\r
-            dest: '<%= compile_dir %>/assets',\r
-            cwd: '<%= build_dir %>/assets',\r
-            expand: true\r
-          }\r
-        ]\r
-      },\r
-\r
-      compile_font: {\r
-        files: [\r
-          {\r
-            src: [ '**' ],\r
-            dest: '<%= compile_dir %>/font',\r
-            cwd: '<%= build_dir %>/font',\r
-            expand: true\r
-          }\r
-        ]\r
-      }\r
-    },\r
-\r
-    /**\r
-     * `grunt concat` concatenates multiple source files into a single file.\r
-     */\r
-    concat: {\r
-      /**\r
-       * The `build_css` target concatenates compiled CSS and vendor CSS\r
-       * together.\r
-       */\r
-      build_css: {\r
-        src: [\r
-          '<%= vendor_files.css %>',\r
-          '<%= build_dir %>/assets/<%= pkg.name %>-<%= pkg.version %>.css'\r
-        ],\r
-        dest: '<%= build_dir %>/assets/<%= pkg.name %>-<%= pkg.version %>.css'\r
-      },\r
-      /**\r
-       * The `compile_js` target is the concatenation of our application source\r
-       * code and all specified vendor source code into a single file.\r
-       */\r
-      compile_js: {\r
-        options: {\r
-          banner: '<%= meta.banner %>'\r
-        },\r
-        src: [\r
-          '<%= vendor_files.js %>',\r
-          'module.prefix',\r
-          '<%= build_dir %>/src/**/*.js',\r
-          '<%= html2js.common.dest %>',\r
-          '<%= html2js.app.dest %>',\r
-          'module.suffix'\r
-        ],\r
-        dest: '<%= compile_dir %>/assets/<%= pkg.name %>-<%= pkg.version %>.js'\r
-      }\r
-    },\r
-\r
-    /**\r
-     * `ng-min` annotates the sources before minifying. That is, it allows us\r
-     * to code without the array syntax.\r
-     */\r
-    ngAnnotate: {\r
-      options: {\r
-        singleQuotes:true\r
-      },\r
-      app: {\r
-        files: [\r
-          {\r
-            src: [ '<%= app_files.js %>' ],\r
-            cwd: '<%= build_dir %>',\r
-            dest: '<%= build_dir %>',\r
-            expand: true\r
-          }\r
-        ]\r
-      }\r
-    },\r
-\r
-    /**\r
-     * Minify the sources!\r
-     */\r
-    uglify: {\r
-      compile: {\r
-        options: {\r
-          banner: '<%= meta.banner %>'\r
-        },\r
-        files: {\r
-          '<%= concat.compile_js.dest %>': '<%= concat.compile_js.dest %>'\r
-        }\r
-      }\r
-    },\r
-\r
-      /**\r
-       * `less` less plugin handles the LESS compilation and minification automatically\r
-       * this has been changed to the LESS plugin from recess plugin above because of\r
-       * out of memory issues with the original plugin.\r
-       */\r
-\r
-      less: {\r
-          development: {\r
-              options: {\r
-                  paths: ["assets/css"],\r
-                  compress: false,\r
-                  syncImport: true,\r
-                  strictImports: true\r
-              },\r
-              files: {\r
-                  '<%= build_dir %>/assets/<%= pkg.name %>-<%= pkg.version %>.css': '<%= app_files.less %>'\r
-                  }\r
-          },\r
-          production: {\r
-              options: {\r
-                  paths: ["assets/css"],\r
-                  compress: true,\r
-                  cleancss: true\r
-              },\r
-              files: {\r
-                  '<%= build_dir %>/assets/<%= pkg.name %>-<%= pkg.version %>.css': '<%= app_files.less %>'\r
-              }\r
-          }\r
-      },\r
-\r
-    /**\r
-     * `jshint` defines the rules of our linter as well as which files we\r
-     * should check. This file, all javascript sources, and all our unit tests\r
-     * are linted based on the policies listed in `options`. But we can also\r
-     * specify exclusionary patterns by prefixing them with an exclamation\r
-     * point (!); this is useful when code comes from a third party but is\r
-     * nonetheless inside `src/`.\r
-     */\r
-    jshint: {\r
-      src: [\r
-        '<%= app_files.js %>',\r
-        '<%= app_files.app_assets %>',\r
-      ],\r
-      test: [\r
-        '<%= app_files.jsunit %>'\r
-      ],\r
-      gruntfile: [\r
-        'OriginalGruntfile.js'\r
-      ],\r
-      options: {\r
-        curly: true,\r
-        immed: true,\r
-        newcap: true,\r
-        noarg: true,\r
-        sub: true,\r
-        boss: true,\r
-        eqnull: true\r
-      },\r
-      globals: {}\r
-    },\r
-\r
-\r
-    /**\r
-     * HTML2JS is a Grunt plugin that takes all of your template files and\r
-     * places them into JavaScript files as strings that are added to\r
-     * AngularJS's template cache. This means that the templates too become\r
-     * part of the initial payload as one JavaScript file. Neat!\r
-     */\r
-    html2js: {\r
-      /**\r
-       * These are the templates from `src/app`.\r
-       */\r
-      app: {\r
-        options: {\r
-          base: 'src/app'\r
-        },\r
-        src: [ '<%= app_files.atpl %>' ],\r
-        dest: '<%= build_dir %>/templates-app.js'\r
-      },\r
-\r
-      /**\r
-       * These are the templates from `src/common`.\r
-       */\r
-      common: {\r
-        options: {\r
-          base: 'src/common'\r
-        },\r
-        src: [ '<%= app_files.ctpl %>' ],\r
-        dest: '<%= build_dir %>/templates-common.js'\r
-      }\r
-    },\r
-\r
-    /**\r
-     * The Karma configurations.\r
-     */\r
-    karma: {\r
-      options: {\r
-        configFile: '<%= build_dir %>/karma-unit.js'\r
-      },\r
-      unit: {\r
-        runnerPort: 9102,\r
-        background: true,\r
-        port: 9877 // IMPORTANT!\r
-      },\r
-      continuous: {\r
-        singleRun: true,\r
-        browsers: ['PhantomJS']\r
-      }\r
-    },\r
-\r
-    /**\r
-     * The `index` task compiles the `index.html` file as a Grunt template. CSS\r
-     * and JS files co-exist here but they get split apart later.\r
-     */\r
-    index: {\r
-\r
-      /**\r
-       * During development, we don't want to have wait for compilation,\r
-       * concatenation, minification, etc. So to avoid these steps, we simply\r
-       * add all script files directly to the `<head>` of `index.html`. The\r
-       * `src` property contains the list of included files.\r
-       */\r
-      build: {\r
-        dir: '<%= build_dir %>',\r
-        src: [\r
-          '<%= html2js.common.dest %>',\r
-          '<%= html2js.app.dest %>',\r
-          '<%= vendor_files.css %>',\r
-          '<%= build_dir %>/assets/<%= pkg.name %>-<%= pkg.version %>.css'\r
-        ]\r
-      },\r
-\r
-      /**\r
-       * When it is time to have a completely compiled application, we can\r
-       * alter the above to include only a single JavaScript and a single CSS\r
-       * file. Now we're back!\r
-       */\r
-      compile: {\r
-        dir: '<%= compile_dir %>',\r
-        src: [\r
-          '<%= concat.compile_js.dest %>',\r
-          '<%= concat.build_css.dest %>'\r
-          //'<%= recess.compile.dest %>'\r
-        ]\r
-      }\r
-    },\r
-\r
-    /**\r
-     * This task compiles the karma template so that changes to its file array\r
-     * don't have to be managed manually.\r
-     */\r
-    karmaconfig: {\r
-      unit: {\r
-        dir: '<%= build_dir %>',\r
-        src: [\r
-          '<%= vendor_files.js %>',\r
-          '<%= html2js.app.dest %>',\r
-          '<%= html2js.common.dest %>',\r
-          '<%= app_files.js_common %>',\r
-          '<%= app_files.js_app %>',\r
-          '<%= app_files.jsunit %>'\r
-        ]\r
-      }\r
-    },\r
-     connect: {\r
-      livereload: {\r
-        options: {\r
-          port: 9000,\r
-          hostname: '0.0.0.0',\r
-          middleware: function (connect) {\r
-            return [\r
-              mountFolder(connect, 'build'),\r
-              lrSnippet\r
-            ];\r
-          }\r
-        }\r
-      },\r
-      dev: {\r
-        options: {\r
-          hostname: '0.0.0.0',\r
-          port: 9000,\r
-          base: 'build'\r
-        }\r
-      },\r
-      prod: {\r
-        options: {\r
-          port: 9001,\r
-          base: 'bin',\r
-          keepalive: true\r
-        }\r
-      }\r
-    },\r
-    open: {\r
-      dev: {\r
-        path: 'http://127.0.0.1:9000/'\r
-      },\r
-      prod: {\r
-        path: 'http://127.0.0.1:9001/'\r
-      }\r
-    },\r
-    /**\r
-     * And for rapid development, we have a watch set up that checks to see if\r
-     * any of the files listed below change, and then to execute the listed\r
-     * tasks when they do. This just saves us from having to type "grunt" into\r
-     * the command-line every time we want to see what we're working on; we can\r
-     * instead just leave "grunt watch" running in a background terminal. Set it\r
-     * and forget it, as Ron Popeil used to tell us.\r
-     *\r
-     * But we don't need the same thing to happen for all the files.\r
-     */\r
-    delta: {\r
-      /**\r
-       * By default, we want the Live Reload to work for all tasks; this is\r
-       * overridden in some tasks (like this file) where browser resources are\r
-       * unaffected. It runs by default on port 35729, which your browser\r
-       * plugin should auto-detect.\r
-       */\r
-      options: {\r
-        livereload: true\r
-      },\r
-\r
-      /**\r
-       * When the Gruntfile changes, we just want to lint it. In fact, when\r
-       * your Gruntfile changes, it will automatically be reloaded!\r
-       */\r
-      gruntfile: {\r
-        files: 'OriginalGruntfile.js',\r
-        tasks: [ 'jshint:gruntfile' ],\r
-        options: {\r
-          livereload: false\r
-        }\r
-      },\r
-\r
-      /**\r
-       * When our JavaScript source files change, we want to run lint them and\r
-       * run our unit tests.\r
-       */\r
-      jssrc: {\r
-        files: [\r
-          '<%= app_files.js %>', '<%= app_files.lang %>'\r
-        ],\r
-        tasks: [ 'jshint:src', 'karma:unit:run', 'copy:build_appjs' ]\r
-      },\r
-\r
-      /**\r
-       * When assets are changed, copy them. Note that this will *not* copy new\r
-       * files, so this is probably not very useful.\r
-       */\r
-      assets: {\r
-        files: [\r
-          'src/assets/**/*'\r
-        ],\r
-        tasks: [ 'copy:build_app_assets' ]\r
-      },\r
-\r
-      /**\r
-       * When index.html changes, we need to compile it.\r
-       */\r
-      html: {\r
-        files: [ '<%= app_files.html %>' ],\r
-        tasks: [ 'index:build' ]\r
-      },\r
-\r
-      /**\r
-       * When our templates change, we only rewrite the template cache.\r
-       */\r
-      tpls: {\r
-        files: [\r
-          '<%= app_files.atpl %>',\r
-          '<%= app_files.ctpl %>'\r
-        ],\r
-        tasks: ['copy:copy_template']/*[ 'html2js' ]*/\r
-      },\r
-\r
-      /**\r
-       * When the CSS files change, we need to compile and minify them.\r
-       */\r
-      less: {\r
-        files: [ 'src/**/*.less' ],\r
-        tasks: [ 'less:development' ]\r
-      },\r
-\r
-      /**\r
-       * When a JavaScript unit test file changes, we only want to lint it and\r
-       * run the unit tests. We don't want to do any live reloading.\r
-       */\r
-      jsunit: {\r
-        files: [\r
-          '<%= app_files.jsunit %>'\r
-        ],\r
-        tasks: [ 'jshint:test', 'karma:unit:run' ],\r
-        options: {\r
-          livereload: false\r
-        }\r
-      }\r
-    },\r
-    shell : {\r
-      requirejs: {\r
-        command: "node node_modules/requirejs/bin/r.js -o optimize.js"\r
-      }\r
-    }\r
-  };\r
-\r
-  grunt.initConfig( grunt.util._.extend( taskConfig, userConfig, envConfig ) );\r
-\r
-  /**\r
-   * In order to make it safe to just compile or copy *only* what was changed,\r
-   * we need to ensure we are starting from a clean, fresh build. So we rename\r
-   * the `watch` task to `delta` (that's why the configuration var above is\r
-   * `delta`) and then add a new task called `watch` that does a clean build\r
-   * before watching for changes.\r
-   */\r
-  grunt.renameTask( 'watch', 'delta' );\r
-  grunt.registerTask( 'watch', [ 'build', 'karma:unit', 'delta' ] );\r
-\r
-  grunt.registerTask('live', ['build', 'connect:dev', 'delta']);\r
-  /**\r
-   * The default task is to build and compile.\r
-   */\r
-  grunt.registerTask( 'default', [ 'compile' ] );\r
-\r
-  /**\r
-   * The `build` task gets your app ready to run for development and testing.\r
-   */\r
-  grunt.registerTask( 'common', [\r
-      'clean', 'html2js', 'jshint', 'concat:build_css', 'less:development',\r
-      'copy:build_app_assets', 'copy:build_vendor_assets',\r
-      'copy:build_appjs', 'copy:copy_template', 'copy:build_vendorimages', 'copy:build_appimages', 'copy:build_vendorjs', 'copy:build_vendorcss', 'karmaconfig', 'index:build'\r
-  ]);\r
-\r
-  grunt.registerTask( 'build', ['replace:development', 'common', 'karma:continuous']);\r
-\r
-  /**\r
-   * The `compile` task gets your app ready for deployment by concatenating and\r
-   * minifying your code.\r
-   */\r
-  grunt.registerTask( 'compile', ['replace:production', 'common', 'karma:continuous', 'ngAnnotate', 'shell:requirejs']);\r
-\r
-  /**\r
-   * A utility function to get all app JavaScript sources.\r
-   */\r
-  function filterForJS ( files ) {\r
-    return files.filter( function ( file ) {\r
-      return file.match( /\.js$/ );\r
-    });\r
-  }\r
-\r
-  /**\r
-   * A utility function to get all app CSS sources.\r
-   */\r
-  function filterForCSS ( files ) {\r
-    return files.filter( function ( file ) {\r
-      return file.match( /\.css$/ );\r
-    });\r
-  }\r
-\r
-  /**\r
-   * The index.html template includes the stylesheet and javascript sources\r
-   * based on dynamic names calculated in this Gruntfile. This task assembles\r
-   * the list into variables for the template to use and then runs the\r
-   * compilation.\r
-   */\r
-  grunt.registerMultiTask( 'index', 'Process index.html template', function () {\r
-    var dirRE = new RegExp( '^('+grunt.config('build_dir')+'|'+grunt.config('compile_dir')+')\/', 'g' );\r
-    var jsFiles = filterForJS( this.filesSrc ).map( function ( file ) {\r
-      return file.replace( dirRE, '' );\r
-    });\r
-    var cssFiles = filterForCSS( this.filesSrc ).map( function ( file ) {\r
-      return file.replace( dirRE, '' );\r
-    });\r
-\r
-    grunt.file.copy('src/index.html', this.data.dir + '/index.html', {\r
-      process: function ( contents, path ) {\r
-        return grunt.template.process( contents, {\r
-          data: {\r
-            scripts: jsFiles,\r
-            styles: cssFiles,\r
-            version: grunt.config( 'pkg.version' )\r
-          }\r
-        });\r
-      }\r
-    });\r
-  });\r
-\r
-  /**\r
-   * In order to avoid having to specify manually the files needed for karma to\r
-   * run, we use grunt to manage the list for us. The `karma/*` files are\r
-   * compiled as grunt templates for use by Karma. Yay!\r
-   */\r
-  grunt.registerMultiTask( 'karmaconfig', 'Process karma config templates', function () {\r
-    var jsFiles = filterForJS( this.filesSrc );\r
-\r
-    grunt.file.copy( 'karma/karma-unit.tpl.js', grunt.config( 'build_dir' ) + '/karma-unit.js', {\r
-      process: function ( contents, path ) {\r
-        return grunt.template.process( contents, {\r
-          data: {\r
-            scripts: jsFiles\r
-          }\r
-        });\r
-      }\r
-    });\r
-  });\r
-\r
-};\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/README.md b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/README.md
deleted file mode 100644 (file)
index 776afd9..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-
-
-Create repo-tar-file
-tar -zcf ../dluxrepo *
-
-Reference of bower dependencies Matthias
- "dependencies": {
-    "angular-ui-grid": "4.0.6",
-    "angular-touch": "1.6.5",
-    "angular-ui-router": "0.2.18",
-    "cytoscape": "3.1.1",
-    "angular-cookies": "1.6.5",
-    "restangular": "1.6.1",
-    "jsonformatter": "0.6.0",
-    "angular-clipboard": "1.6.0",
-    "@types/angular-clipboard": "1.5.2",
-    "angular-translate-loader-partial": "2.15.2",
-    "angular-translate-loader-static-files": "2.15.2",
-    "angular-css-injector": "1.0.4",
-    "angular-sanitize": "1.6.5",
-    "angular-chart.js": "1.1.1",
-    "chart.js": "2.6.0",
-    "@types/color-convert": "1.9.0",
-    "@types/color-name": "1.1.0",
-    "@types/chart.js": "2.6.7",
-    "angular-translate": "2.15.2",
-    "oclazyload": "1.1.0",
-    "angular-ui-bootstrap": "2.5.0",
-    "angular-animate": "1.6.5",
-    "angular": "1.6.5",
-    "@types/angular": "1.6.32",
-    "jquery": "3.2.1",
-    "@types/jquery": "3.2.13",
-    "lodash": "4.17.4",
-    "@types/lodash": "4.14.77",
-    "@types/markdown-it": "0.0.4",
-    "@types/argparse": "1.0.33",
-    "@types/sprintf-js": "1.1.0",
-    "@types/entities": "1.1.0",
-    "@types/linkify-it": "2.0.2",
-    "@types/mdurl": "1.0.1",
-    "@types/is-alphanumerical": "1.0.0",
-    "@types/trim": "0.1.0",
-    "@types/node": "9.4.0",
-    "@types/inherits": "0.0.30",
-    "@types/xtend": "4.0.2",
-    "@types/unist": "1.0.0",
-    "@types/vfile": "2.2.2",
-    "@types/vfile-location": "2.0.0",
-    "@types/extend": "3.0.0",
-    "@types/replace-ext": "0.0.27",
-    "@types/marked": "0.3.0",
-    "marked": "0.3.12"
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json
deleted file mode 100644 (file)
index 95662ab..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "name": "opendaylight-dlux",
-  "version": "0.2.0",
-  "dependencies": {
-    "angular": "~1.4.0",
-    "angular-resource": "~1.4.0",
-    "angular-cookies": "~1.4.0",
-    "angular-sanitize": "~1.4.0",
-    "angular-messages": "~1.4.0",
-    "angular-animate": "~1.4.0",
-    "angular-aria": "~1.4.0",
-    "json3": "~3.2.4",
-    "jquery": "~1.9.1",
-    "jquery-ui": "1.11.1",
-    "es5-shim": "~2.0.8",
-    "angular-ui-date": "~0.0.11",
-    "requirejs": "~2.1.14",
-    "font-awesome": "~4.7.0",
-    "bootstrap": "~3.0.2",
-    "angular-ui-router": "~0.2.10",
-    "angular-ui-utils": "~0.0.3",
-    "d3": "~3.3.2",
-    "restangular": "1.4.0",
-    "angular-ui-select2": "~0.0.5",
-    "underscore": "~1.8.3",
-    "underscore.string": "~3.2.1",
-    "select2": "^3.3.2",
-    "select2-bootstrap-css": "~1.2.5",
-    "footable": "2.0.1",
-    "vis": "2.0.0",
-    "sigma": "https://github.com/jacomyal/sigma.js/releases/download/v1.0.3/release-v1.0.3.zip",
-    "ng-slider": "2.2.2",
-    "zeroclipboard": "~2.2.0",
-    "ng-clip": "~0.2.6",
-    "angular-translate": "~2.7.2",
-    "angular-translate-loader-static-files": "~2.7.2",
-    "angular-translate-loader-partial": "~2.7.2",
-    "angular-material": "~1.0.8",
-    "material-design-icons": "~2.2.3"
-  },
-  "devDependencies": {
-    "angular": "~1.4.0",
-    "angular-mocks": "~1.4.0",
-    "bootstrap": "~3.0.2",
-    "angular-bootstrap": "~2.5.0",
-    "ng-grid": "~2.0.7",
-    "requirejs-domready": "~2.0.1",
-    "ocLazyLoad": "0.3.0",
-    "angular-css-injector": "~1.0.3",
-    "grunt-shell": "~0.7.0"
-  },
-  "resolutions": {
-    "angular": "~1.4.0",
-    "angular-translate": "~2.7.2",
-    "angular-animate": "~1.4.0",
-    "select2": "^3.3.2"
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json.1.6.5 b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json.1.6.5
deleted file mode 100644 (file)
index 1c651af..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-{
-  "name": "opendaylight-dlux",
-  "version": "0.2.0",
-  "dependencies": {
-    "angular": "1.6.5",
-    "angular-resource": "1.6.5",
-    "angular-cookies": "1.6.5",
-    "angular-sanitize": "1.6.5",
-    "angular-messages": "1.6.5",
-    "angular-animate": "1.6.5",
-    "angular-aria": "1.6.5",
-    "json3": "~3.2.4",
-    "jquery": "~1.9.1",
-    "jquery-ui": "1.11.1",
-    "es5-shim": "~2.0.8",
-    "angular-ui-date": "~0.0.11",
-    "requirejs": "~2.1.14",
-    "font-awesome": "~4.7.0",
-    "bootstrap": "~3.0.2",
-    "angular-ui-router": "~0.2.10",
-    "angular-ui-utils": "~0.0.3",
-    "d3": "~3.3.2",
-    "lodash": "4.17.4",
-    "restangular": "1.6.1",
-    "angular-ui-select2": "~0.0.5",
-    "underscore": "~1.8.3",
-    "underscore.string": "~3.2.1",
-    "select2": "^3.3.2",
-    "select2-bootstrap-css": "~1.2.5",
-    "footable": "2.0.1",
-    "vis": "2.0.0",
-    "sigma": "https://github.com/jacomyal/sigma.js/releases/download/v1.0.3/release-v1.0.3.zip",
-    "ng-slider": "2.2.2",
-    "zeroclipboard": "~2.2.0",
-    "ng-clip": "~0.2.6",
-    "angular-translate": "2.15.2",
-    "angular-translate-loader-partial": "2.15.2",
-    "angular-translate-loader-static-files": "2.15.2",
-    "angular-material": "~1.0.8",
-    "material-design-icons": "~2.2.3"
-  },
-  "devDependencies": {
-    "angular": "1.6.5",
-    "angular-mocks": "1.6.5",
-    "bootstrap": "~3.0.2",
-    "angular-bootstrap": "~2.5.0",
-    "ng-grid": "~2.0.7",
-    "requirejs-domready": "~2.0.1",
-    "ocLazyLoad": "0.3.0",
-    "angular-css-injector": "~1.0.3",
-    "grunt-shell": "~0.7.0"
-  },
-  "resolutions": {
-    "angular": "1.6.5",
-    "angular-translate": "2.15.2",
-    "angular-animate": "1.6.5",
-    "select2": "^3.3.2"
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json.1.6.5.2 b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json.1.6.5.2
deleted file mode 100644 (file)
index 9763bf2..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "name": "opendaylight-dlux",
-  "version": "0.2.0",
-  "dependencies": {
-    "angular": "~1.6.5",
-    "angular-resource": "~1.6.5",
-    "angular-cookies": "~1.6.5",
-    "angular-sanitize": "~1.6.5",
-    "angular-messages": "~1.6.5",
-    "angular-animate": "~1.6.5",
-    "angular-aria": "~1.6.5",
-    "json3": "~3.2.4",
-    "jquery": "~1.9.1",
-    "jquery-ui": "1.11.1",
-    "es5-shim": "~2.0.8",
-    "angular-ui-date": "~0.0.11",
-    "requirejs": "~2.1.14",
-    "font-awesome": "~4.7.0",
-    "bootstrap": "~3.0.2",
-    "angular-ui-router": "~0.2.10",
-    "angular-ui-utils": "~0.0.3",
-    "d3": "~3.3.2",
-    "restangular": "1.6.1",
-    "angular-ui-select2": "~0.0.5",
-    "underscore": "~1.8.3",
-    "underscore.string": "~3.2.1",
-    "select2": "^3.3.2",
-    "select2-bootstrap-css": "~1.2.5",
-    "footable": "2.0.1",
-    "vis": "2.0.0",
-    "sigma": "https://github.com/jacomyal/sigma.js/releases/download/v1.0.3/release-v1.0.3.zip",
-    "ng-slider": "2.2.2",
-    "zeroclipboard": "~2.2.0",
-    "ng-clip": "~0.2.6",
-    "angular-translate": "~2.15.2",
-    "angular-translate-loader-partial": "~2.15.2",
-    "angular-translate-loader-static-files": "~2.15.2",
-    "angular-material": "~1.0.8",
-    "material-design-icons": "~2.2.3"
-  },
-  "devDependencies": {
-    "angular": "~1.6.5",
-    "angular-mocks": "~1.6.5",
-    "bootstrap": "~3.0.2",
-    "angular-bootstrap": "~2.5.0",
-    "ng-grid": "~2.0.7",
-    "requirejs-domready": "~2.0.1",
-    "ocLazyLoad": "0.3.0",
-    "angular-css-injector": "~1.0.3",
-    "grunt-shell": "~0.7.0"
-  },
-  "resolutions": {
-    "angular": "~1.6.5",
-    "angular-translate": "~2.15.2",
-    "angular-animate": "~1.6.5",
-    "select2": "^3.3.2"
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json.orig b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/bower.json.orig
deleted file mode 100644 (file)
index 95662ab..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-{
-  "name": "opendaylight-dlux",
-  "version": "0.2.0",
-  "dependencies": {
-    "angular": "~1.4.0",
-    "angular-resource": "~1.4.0",
-    "angular-cookies": "~1.4.0",
-    "angular-sanitize": "~1.4.0",
-    "angular-messages": "~1.4.0",
-    "angular-animate": "~1.4.0",
-    "angular-aria": "~1.4.0",
-    "json3": "~3.2.4",
-    "jquery": "~1.9.1",
-    "jquery-ui": "1.11.1",
-    "es5-shim": "~2.0.8",
-    "angular-ui-date": "~0.0.11",
-    "requirejs": "~2.1.14",
-    "font-awesome": "~4.7.0",
-    "bootstrap": "~3.0.2",
-    "angular-ui-router": "~0.2.10",
-    "angular-ui-utils": "~0.0.3",
-    "d3": "~3.3.2",
-    "restangular": "1.4.0",
-    "angular-ui-select2": "~0.0.5",
-    "underscore": "~1.8.3",
-    "underscore.string": "~3.2.1",
-    "select2": "^3.3.2",
-    "select2-bootstrap-css": "~1.2.5",
-    "footable": "2.0.1",
-    "vis": "2.0.0",
-    "sigma": "https://github.com/jacomyal/sigma.js/releases/download/v1.0.3/release-v1.0.3.zip",
-    "ng-slider": "2.2.2",
-    "zeroclipboard": "~2.2.0",
-    "ng-clip": "~0.2.6",
-    "angular-translate": "~2.7.2",
-    "angular-translate-loader-static-files": "~2.7.2",
-    "angular-translate-loader-partial": "~2.7.2",
-    "angular-material": "~1.0.8",
-    "material-design-icons": "~2.2.3"
-  },
-  "devDependencies": {
-    "angular": "~1.4.0",
-    "angular-mocks": "~1.4.0",
-    "bootstrap": "~3.0.2",
-    "angular-bootstrap": "~2.5.0",
-    "ng-grid": "~2.0.7",
-    "requirejs-domready": "~2.0.1",
-    "ocLazyLoad": "0.3.0",
-    "angular-css-injector": "~1.0.3",
-    "grunt-shell": "~0.7.0"
-  },
-  "resolutions": {
-    "angular": "~1.4.0",
-    "angular-translate": "~2.7.2",
-    "angular-animate": "~1.4.0",
-    "select2": "^3.3.2"
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/build.config.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/build.config.js
deleted file mode 100644 (file)
index 9b487f0..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-/**\r
- * This file/module contains all configuration for the build process.\r
- */\r
-module.exports = {\r
-  /**\r
-   * The `build_dir` folder is where our projects are compiled during\r
-   * development and the `compile_dir` folder is where our app resides once it's\r
-   * completely built.\r
-   */\r
-  build_dir: 'build',\r
-  compile_dir: 'target/generated-resources/pages',\r
-\r
-  /**\r
-   * This is a collection of file patterns that refer to our app code (the\r
-   * stuff in `src/`). These file paths are used in the configuration of\r
-   * build tasks. `js` is all project javascript, less tests. `ctpl` contains\r
-   * our reusable components' (`src/common`) template HTML files, while\r
-   * `atpl` contains the same, but for our app's code. `html` is just our\r
-   * main HTML file, `less` is our main stylesheet, and `unit` contains our\r
-   * app's unit tests.\r
-   */\r
-  app_files: {\r
-    js: [ 'src/**/*.js', '!src/main/**/*.js', '!src/**/*.spec.js', '!src/assets/**/*.js'  ],\r
-    jsunit: [ 'src/**/*.spec.js' ],\r
-    js_common: [ 'src/common/**/*.js', '!src/common/**/*.spec.js', '!src/common/assets/**/*.js'  ],\r
-    js_app: [ 'src/app/**/*.js', '!src/app/**/*.spec.js', '!src/app/assets/**/*.js'  ],\r
-    app_assets: [ '! src/app/yangui/assets/js/**/*.js', '! src/app/yangman/assets/js/**/*.js' ],\r
-\r
-    atpl: [ 'src/app/**/*.tpl.html' ],\r
-    ctpl: [ 'src/common/**/*.tpl.html' ],\r
-\r
-    html: [ 'src/index.html'],\r
-    less: 'src/less/main.less',\r
-    css: ['src/app/**/*.css'],\r
-    lang: ['src/app/**/assets/data/*.json'],\r
-    templates: ['src/**/*.tpl.html'],\r
-    images: ['src/app/**/assets/images/*.*']\r
-  },\r
-\r
-  /**\r
-   * This is a collection of files used during testing only.\r
-   */\r
-\r
-\r
-  /**\r
-   * This is the same as `app_files`, except it contains patterns that\r
-   * reference vendor code (`vendor/`) that we need to place into the build\r
-   * process somewhere. While the `app_files` property ensures all\r
-   * standardized files are collected for compilation, it is the user's job\r
-   * to ensure non-standardized (i.e. vendor-related) files are handled\r
-   * appropriately in `vendor_files.js`.\r
-   *\r
-   * The `vendor_files.js` property holds files to be automatically\r
-   * concatenated and minified with our project source files.\r
-   *\r
-   * The `vendor_files.css` property holds any CSS files to be automatically\r
-   * included in our app.\r
-   *\r
-   * The `vendor_files.assets` property holds any assets to be copied along\r
-   * with our app's assets. This structure is flattened, so it is not\r
-   * recommended that you use wildcards.\r
-   */\r
-  vendor_files: {\r
-    js: [\r
-      'vendor/vis/dist/vis.min.js',\r
-      'vendor/jquery/jquery.min.js',\r
-      'vendor/jquery/jquery.min.map',\r
-      'vendor/jquery-ui/jquery-ui.min.js',\r
-      'vendor/bootstrap/js/dropdown.js',\r
-      'vendor/angular/angular.js',\r
-      'vendor/requirejs/requirejs.js',\r
-      'vendor/ocLazyLoad/dist/ocLazyLoad.js',\r
-      'vendor/angular-css-injector/angular-css-injector.js',\r
-      'vendor/angular-route/angular-route.js',\r
-      'vendor/angular-bootstrap/ui-bootstrap-tpls.min.js',\r
-      'vendor/placeholders/angular-placeholders-0.0.1-SNAPSHOT.min.js',\r
-      'vendor/angular-ui-router/release/angular-ui-router.js',\r
-      'vendor/angular-ui-utils/modules/route/route.js',\r
-      'vendor/angular-cookies/angular-cookies.min.js',\r
-      'vendor/angular-mocks/angular-mocks.js',\r
-      'vendor/requirejs/require.js',\r
-      'vendor/angular-ui-select2/index.js',\r
-      'vendor/ng-grid/build/ng-grid.min.js',\r
-      'vendor/restangular/dist/restangular.min.js',\r
-      'vendor/underscore/underscore.js',\r
-      'vendor/underscore.string/dist/underscore.string.min.js',\r
-      'vendor/d3/d3.min.js',\r
-      'vendor/select2/select2.js',\r
-      'vendor/footable/dist/footable.min.js',\r
-      'vendor/footable/dist/footable.paginate.min.js',\r
-      'vendor/footable/dist/footable.sort.min.js',\r
-      'vendor/angular-translate/angular-translate.min.js',\r
-      'vendor/angular-sanitize/angular-sanitize.min.js',\r
-      'vendor/angular-translate-loader-static-files/angular-translate-loader-static-files.min.js',\r
-      'vendor/ng-slider/dist/ng-slider.min.js',\r
-      'vendor/sigma/sigma.min.js',\r
-      'vendor/sigma/plugins/sigma.parsers.gexf.min.js',\r
-      'vendor/sigma/plugins/sigma.layout.forceAtlas2.min.js',\r
-      'vendor/sigma/plugins/sigma.plugins.dragNodes.min.js',\r
-      'vendor/sigma/plugins/sigma.renderers.customShapes.min.js',\r
-      'vendor/ng-clip/src/ngClip.js',\r
-      'vendor/zeroclipboard/dist/ZeroClipboard.js',\r
-      'vendor/angular-translate-loader-partial/angular-translate-loader-partial.js',\r
-      'vendor/angular-animate/angular-animate.min.js',\r
-      'vendor/angular-aria/angular-aria.min.js',\r
-      'vendor/angular-material/angular-material.min.js',\r
-      'vendor/angular-messages/angular-messages.min.js',\r
-    ],\r
-    css: [\r
-    'vendor/ng-grid/ng-grid.min.css',\r
-    'vendor/select2/select2.css',\r
-    'vendor/select2-bootstrap-css/select2-bootstrap.css',\r
-    'vendor/footable/css/footable.core.min.css',\r
-    'vendor/footable/css/footable.standalone.min.css',\r
-    'vendor/vis/dist/vis.min.css',\r
-    'vendor/ng-slider/dist/css/ng-slider.min.css',\r
-    'vendor/angular-material/angular-material.css',\r
-    'vendor/material-design-icons/iconfont/*',\r
-    ],\r
-    images: [\r
-    'vendor/select2/select2.png',\r
-    'vendor/select2/select2-spinner.gif',\r
-    'vendor/select2/select2x2.png'\r
-    ],\r
-    assets: [\r
-    'vendor/zeroclipboard/dist/ZeroClipboard.swf',\r
-    ],\r
-    font: [\r
-      'vendor/font-awesome/font/*',\r
-      'vendor/footable/css/fonts/*',\r
-\r
-    ]\r
-  }\r
-};\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/clean b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/clean
deleted file mode 100755 (executable)
index adc2028..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-#!/bin/bash
-
-# Extendd clean of DLUX if working on different angular versionsA
-# To be executed in dlux-web root
-
-rm -r target node_modules node_modules build vendor
-rm -r src/app src/assets src/common
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/config/development.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/config/development.json
deleted file mode 100644 (file)
index a0f2ace..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-{
-    "configEnv":"ENV_DEV",
-    "baseURL": "http://localhost:",
-    "adSalPort": "8080",
-    "mdSalPort" : "8181"
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/config/env.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/config/env.module.js
deleted file mode 100644 (file)
index e4504d5..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-define(['angular'], function (angular) {
-  'use strict';
-
-  var config = angular.module('config', [])
-    .constant('ENV', {
-
-      baseURL: '@@baseURL',
-      adSalPort: '@@adSalPort',
-      mdSalPort: '@@mdSalPort',
-      mdSalSecuredPort: '@@mdSalSecuredPort',
-      configEnv: '@@configEnv',
-      getBaseURL: function (salType) {
-        if (salType !== undefined) {
-          var urlPrefix = '';
-          if (this.configEnv === 'ENV_DEV') {
-            urlPrefix = this.baseURL;
-          } else {
-            urlPrefix = window.location.protocol + '//' + window.location.hostname + ':';
-          }
-
-          if (salType === 'AD_SAL') {
-            return urlPrefix + this.adSalPort;
-          } else if (salType === 'MD_SAL') {
-            var basePort = this.mdSalPort;
-            if (window.location.protocol === 'https:') {
-                basePort = this.mdSalSecuredPort;
-            }
-            return urlPrefix + basePort;
-          }
-        }
-        //default behavior
-        return '';
-      }
-    });
-
-  return config;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/config/production.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/config/production.json
deleted file mode 100644 (file)
index 3d77470..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-    "configEnv":"ENV_PROD",
-    "baseURL": "",
-    "adSalPort": "8080",
-    "mdSalPort" : "8181",
-    "mdSalSecuredPort" : "8443"
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/karma/karma-unit.tpl.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/karma/karma-unit.tpl.js
deleted file mode 100644 (file)
index 3e2142e..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-module.exports = function ( karma ) {
-  karma.set({
-    /** 
-     * From where to look for files, starting with the location of this file.
-     */
-    basePath: '../',
-
-    /**
-     * This is the list of file patterns to load into the browser during testing.
-     */
-    files: [
-     'src/test-main.js',
-     {pattern: 'vendor/**/*.js', included: false},
-     {pattern: 'src/**/*.js', included: false},
-     {pattern: 'src/**/*.js', included: false}
-    ],
-    exclude: [
-      'src/assets/**/*.js'
-    ],
-    frameworks: [ 'jasmine', 'requirejs' ],
-    plugins: [ 'karma-jasmine', 'karma-coverage', 'karma-requirejs', 'karma-firefox-launcher', 'karma-chrome-launcher', 'karma-phantomjs-launcher', 'karma-coffee-preprocessor' ],
-
-    preprocessors: {
-      '**/*.coffee': 'coffee',
-    },
-
-    /**
-     * How to report, by default.
-     */
-    reporters: 'dots',
-
-    /**
-     * On which port should the browser connect, on which port is the test runner
-     * operating, and what is the URL path for the browser to use.
-     */
-    port: 9018,
-    runnerPort: 9101,
-    urlRoot: '/',
-
-    /** 
-     * Disable file watching by default.
-     */
-    autoWatch: false,
-    singleRun: false,
-    /**
-     * The list of browsers to launch to test on. This includes only "Firefox" by
-     * default, but other browser names include:
-     * Chrome, ChromeCanary, Firefox, Opera, Safari, PhantomJS
-     *
-     * Note that you can also use the executable name of the browser, like "chromium"
-     * or "firefox", but that these vary based on your operating system.
-     *
-     * You may also leave this blank and manually navigate your browser to
-     * http://localhost:9018/ when you're running tests. The window/tab can be left
-     * open and the tests will automatically occur there during the build. This has
-     * the aesthetic advantage of not launching a browser every time you save.
-     */
-    browsers: [
-      'Chrome'
-    ]
-  });
-};
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/module.prefix b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/module.prefix
deleted file mode 100644 (file)
index c52d9b7..0000000
+++ /dev/null
@@ -1 +0,0 @@
-(function ( window, angular, undefined ) {
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/module.suffix b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/module.suffix
deleted file mode 100644 (file)
index f6354ba..0000000
+++ /dev/null
@@ -1 +0,0 @@
-})( window, window.angular );
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/optimize.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/optimize.js
deleted file mode 100644 (file)
index 90aa2c5..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-({
-    appDir: "build/",
-    mainConfigFile: "src/main.js",
-    baseUrl: "src",
-    dir: "target/generated-resources/pages",
-    removeCombined: true,
-    findNestedDependencies: true,
-    modules: [
-      {
-        name: "main",
-        exclude: [
-          "angular",
-          "ui-bootstrap",
-          "Restangular",
-          "underscore",
-          "angular-ui-router",
-          "angular-css-injector",
-          "angular-cookies",
-          "angular-translate",
-          "angular-translate-loader-static-files",
-          "jquery",
-          "footable",
-          "d3",
-          "vis",
-          "ocLazyLoad"
-        ]
-      }
-    ]
-
-})
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/package.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/package.json
deleted file mode 100644 (file)
index fb4325a..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-{
-  "author": "Mathieu Lemay",
-  "name": "opendaylight-dlux",
-  "description": "openDayLight User eXperience",
-  "version": "0.2.0",
-  "homepage": "http://opendaylight.org",
-  "license": "EPL-1.0",
-  "bugs": "https://bugs.opendaylight.org/",
-  "repository": {
-    "type": "git",
-    "url": "https://git.opendaylight.org/gerrit/dlux.git"
-  },
-  "dependencies": {},
-  "devDependencies": {
-    "bower": "~1.3.12",
-    "karma":"~0.12.0",
-    "grunt": "~0.4.5",
-    "grunt-cli": "~0.1.13",
-    "grunt-contrib-copy": "~0.4.1",
-    "grunt-contrib-concat": "~0.3.0",
-    "grunt-contrib-coffee": "~0.7.0",
-    "grunt-contrib-uglify": "~0.2.0",
-    "grunt-contrib-compass": "~0.3.0",
-    "grunt-contrib-jshint": "~0.8.0",
-    "grunt-contrib-cssmin": "~0.6.0",
-    "grunt-contrib-connect": "~0.3.0",
-    "grunt-contrib-clean": "~0.4.1",
-    "grunt-contrib-htmlmin": "~0.1.3",
-    "grunt-contrib-imagemin": "~0.1.4",
-    "grunt-contrib-watch": "~0.6.1",
-    "grunt-usemin": "~0.1.11",
-    "grunt-svgmin": "~0.2.0",
-    "grunt-rev": "~0.1.0",
-    "grunt-karma": "~0.8.0",
-    "grunt-open": "~0.2.0",
-    "grunt-concurrent": "~0.3.0",
-    "matchdep": "~0.1.2",
-    "connect-livereload": "~0.2.0",
-    "grunt-google-cdn": "~0.2.0",
-    "connect-modrewrite": "~0.5.4",
-    "grunt-recess": "~0.5.0",
-    "grunt-contrib-less": "~0.8.2",
-    "grunt-conventional-changelog": "~1.0.0",
-    "grunt-bump": "0.0.13",
-    "grunt-html2js": "~0.2.4",
-    "grunt-coffeelint": "0.0.8",
-    "requirejs": "~2.1.19",
-    "karma-requirejs": "~0.2.2",
-    "grunt-shell": "~0.7.0",
-    "grunt-ng-annotate": "~0.3.2",
-    "grunt-replace": "~0.7.8",
-    "karma-chrome-launcher": "~0.1.4",
-    "karma-firefox-launcher": "~0.1.3",
-    "karma-jasmine": "~0.1.5",
-    "karma-coffee-preprocessor": "~0.2.1",
-    "karma-coverage": "~0.2.6",
-    "karma-phantomjs-launcher": "~0.1.4",
-    "angular-mocks": "~1.2.22",
-    "jasmine": "~2.0.1"
-  },
-  "engines": {
-    "node": ">=0.8.0"
-  },
-  "scripts": {
-    "test": "grunt test"
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/pom.xml
deleted file mode 100644 (file)
index 1b92c39..0000000
+++ /dev/null
@@ -1,211 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
-\r
-    <parent>\r
-        <groupId>org.opendaylight.dlux</groupId>\r
-        <artifactId>dlux-parent</artifactId>\r
-        <version>0.5.1-Carbon</version>\r
-        <relativePath>..</relativePath>\r
-    </parent>\r
-\r
-    <modelVersion>4.0.0</modelVersion>\r
-    <groupId>org.opendaylight.dlux</groupId>\r
-    <artifactId>dlux-web</artifactId>\r
-    <name>DLUX - DLUX Static Web</name>\r
-\r
-    <dependencies>\r
-        <dependency>\r
-            <groupId>org.osgi</groupId>\r
-            <artifactId>org.osgi.core</artifactId>\r
-        </dependency>\r
-        <dependency>\r
-            <groupId>org.osgi</groupId>\r
-            <artifactId>org.osgi.compendium</artifactId>\r
-        </dependency>\r
-        <dependency>\r
-            <groupId>org.opendaylight.dlux</groupId>\r
-            <artifactId>dlux.common.navigation.resources</artifactId>\r
-            <version>${common.navigation.resources.version}</version>\r
-        </dependency>\r
-        <dependency>\r
-            <groupId>org.opendaylight.dlux</groupId>\r
-            <artifactId>dlux.common.layout.resources</artifactId>\r
-            <version>${common.layout.resources.version}</version>\r
-        </dependency>\r
-        <dependency>\r
-            <groupId>org.opendaylight.dlux</groupId>\r
-            <artifactId>dlux.common.authentication.resources</artifactId>\r
-            <version>${common.authentication.resources.version}</version>\r
-        </dependency>\r
-        <dependency>\r
-            <groupId>org.opendaylight.dlux</groupId>\r
-            <artifactId>dlux.common.login.resources</artifactId>\r
-            <version>${common.login.resources.version}</version>\r
-        </dependency>\r
-        <dependency>\r
-            <groupId>org.opendaylight.dlux</groupId>\r
-            <artifactId>dlux.common.general.resources</artifactId>\r
-            <version>${common.general.resources.version}</version>\r
-        </dependency>\r
-        <dependency>\r
-            <groupId>org.opendaylight.dlux</groupId>\r
-            <artifactId>dlux.loader.resources</artifactId>\r
-            <version>${loader.resources.version}</version>\r
-        </dependency>\r
-        <dependency>\r
-            <groupId>org.opendaylight.dlux</groupId>\r
-            <artifactId>dlux.core.resources</artifactId>\r
-            <version>${core.resources.version}</version>\r
-        </dependency>\r
-        <dependency>\r
-            <groupId>org.opendaylight.dlux</groupId>\r
-            <artifactId>dlux.common.topbar.resources</artifactId>\r
-            <version>${common.topbar.resources.version}</version>\r
-        </dependency>\r
-    </dependencies>\r
-\r
-    <build>\r
-        <resources>\r
-            <resource>\r
-                <directory>target/generated-resources</directory>\r
-                <includes>\r
-                    <include>**/*</include>\r
-                </includes>\r
-            </resource>\r
-        </resources>\r
-        <plugins>\r
-            <!--Clean extracted resources-->\r
-            <plugin>\r
-                <artifactId>maven-clean-plugin</artifactId>\r
-                <version>2.5</version>\r
-                <configuration>\r
-                    <filesets>\r
-                        <fileset>\r
-                            <directory>src</directory>\r
-                            <includes>\r
-                                <include>test-main.js</include>\r
-                                <include>index.html</include>\r
-                                <include>main.js</include>\r
-                                <include>app/app.controller.js</include>\r
-                                <include>app/app.module.js</include>\r
-                                <include>app/routingConfig.js</include>\r
-                                <include>app/core/</include>\r
-                                <include>app/graph/</include>\r
-                                <include>common/navigation/</include>\r
-                                <include>common/layout/</include>\r
-                                <include>common/authentification/</include>\r
-                                <include>common/login/</include>\r
-                                <include>common/general/</include>\r
-                                <include>common/topbar/</include>\r
-                                <include>assets/</include>\r
-                            </includes>\r
-                            <excludes></excludes>\r
-                            <followSymlinks>false</followSymlinks>\r
-                        </fileset>\r
-                    </filesets>\r
-                </configuration>\r
-            </plugin>\r
-            <plugin>\r
-                <groupId>org.apache.maven.plugins</groupId>\r
-                <artifactId>maven-dependency-plugin</artifactId>\r
-                <executions>\r
-                    <!--src/app/ Resources-->\r
-                    <execution>\r
-                        <id>unpack-core-resources</id>\r
-                        <goals>\r
-                            <goal>unpack-dependencies</goal>\r
-                        </goals>\r
-                        <phase>generate-sources</phase>\r
-                        <configuration>\r
-                            <outputDirectory>${project.basedir}/src/app/</outputDirectory>\r
-                            <groupId>org.opendaylight.dlux</groupId>\r
-                            <includeArtifactIds>\r
-                                dlux.core.resources,\r
-                            </includeArtifactIds>\r
-                            <excludes>META-INF\/**</excludes>\r
-                            <excludeTransitive>true</excludeTransitive>\r
-                            <ignorePermissions>false</ignorePermissions>\r
-                        </configuration>\r
-                    </execution>\r
-                    <!--src/common Resources-->\r
-                    <execution>\r
-                        <id>unpack-general-resources</id>\r
-                        <goals>\r
-                            <goal>unpack-dependencies</goal>\r
-                        </goals>\r
-                        <phase>generate-sources</phase>\r
-                        <configuration>\r
-                            <outputDirectory>${project.basedir}/src/common/</outputDirectory>\r
-                            <groupId>org.opendaylight.dlux</groupId>\r
-                            <includeArtifactIds>\r
-                                dlux.common.navigation.resources,\r
-                                dlux.common.layout.resources,\r
-                                dlux.common.authentication.resources,\r
-                                dlux.common.login.resources,\r
-                                dlux.common.general.resources,\r
-                                dlux.common.topbar.resources,\r
-                            </includeArtifactIds>\r
-                            <excludes>META-INF\/**</excludes>\r
-                            <excludeTransitive>true</excludeTransitive>\r
-                            <ignorePermissions>false</ignorePermissions>\r
-                        </configuration>\r
-                    </execution>\r
-                    <!--loader Resources-->\r
-                    <execution>\r
-                        <id>unpack-loader-resources</id>\r
-                        <goals>\r
-                            <goal>unpack-dependencies</goal>\r
-                        </goals>\r
-                        <phase>generate-sources</phase>\r
-                        <configuration>\r
-                            <outputDirectory>${project.basedir}/src/</outputDirectory>\r
-                            <groupId>org.opendaylight.dlux</groupId>\r
-                            <includeArtifactIds>dlux.loader.resources</includeArtifactIds>\r
-                            <excludes>META-INF\/**</excludes>\r
-                            <excludeTransitive>true</excludeTransitive>\r
-                            <ignorePermissions>false</ignorePermissions>\r
-                        </configuration>\r
-                    </execution>\r
-                </executions>\r
-            </plugin>\r
-            <plugin>\r
-                <groupId>com.github.eirslett</groupId>\r
-                <artifactId>frontend-maven-plugin</artifactId>\r
-                <version>0.0.24</version>\r
-                <executions>\r
-                    <execution>\r
-                        <id>npm</id>\r
-                        <goals>\r
-                            <goal>install-node-and-npm</goal>\r
-                            <goal>npm</goal>\r
-                        </goals>\r
-                        <phase>generate-resources</phase>\r
-                    </execution>\r
-                    <execution>\r
-                        <id>bower</id>\r
-                        <goals>\r
-                            <goal>bower</goal>\r
-                        </goals>\r
-                    </execution>\r
-                    <execution>\r
-                        <id>grunt</id>\r
-                        <goals>\r
-                            <goal >grunt</goal>\r
-                        </goals>\r
-                           <configuration>\r
-        <!-- optional: if not specified, it will run Grunt's default\r
-        task (and you can remove this whole <configuration> section.) -->\r
-        <arguments>--force</arguments>\r
-    </configuration>\r
-\r
-                    </execution>\r
-                </executions>\r
-                <configuration>\r
-                    <nodeVersion>v0.12.7</nodeVersion>\r
-                    <npmVersion>3.1.3</npmVersion>\r
-                </configuration>\r
-            </plugin>\r
-        </plugins>\r
-    </build>\r
-</project>\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/README.md b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/README.md
deleted file mode 100644 (file)
index 7391578..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-# OpenDaylight DLUX \r
-\r
-OpenDaylight DLUX is a Javascript-based stateless user interface that communicates with the service backend to provide a consistent and user-friendly interface to interact with OpenDaylight projects and base controller.\r
-\r
-\r
-## Build DLUX code with Karaf feature and distribution\r
-\r
-All necessary modules mentioned above such as nodesjs, bower etc. will be installed automatically, when you run the dlux build for first time.  Run following command at dlux home directory /dlux to build dlux feature and distribution along with code.\r
-Once successful, It will make dlux feature available to install and also create dlux karaf distribution. You can find karaf distribution at dlux/distribution-dlux.\r
-\r
-    $  mvn clean install\r
-\r
-__NOTE__: Some people reported about node related error while maven build. Those errors are usually environment related, mostly happens because of the permission issues or node is not installed properly. Try to reinstall node manually.\r
-\r
-### Install NodeJS manually if needed\r
-\r
-__For Windows and Mac without brew:__\r
-\r
-    Go to http://www.nodejs.org\r
-    Download and install NodeJS\r
-\r
-__For Mac with brew installed:__\r
-\r
-    $ brew update\r
-    $ brew install node\r
-\r
-__Verify NodeJS is installed:__\r
-\r
-    $ npm --version\r
-\r
-__Run DLUX in karaf distribution__\r
-\r
-Once you have dlux distribution or you have karaf distribution from integration repository. You can turn on the dlux feature to access the UI.\r
-We will take example of dlux distribution here. Navigate to directory dlux/distribution-dlux/target/assembly/bin and start the karaf via following command -\r
-\r
-    ./karaf\r
-\r
-On the karaf shell, install dlux core feature via running following command -\r
-\r
-    feature:install odl-dlux-core\r
-\r
-\r
-It will internally install odl-restconf and dlux topology application along with core dlux components. once this feature is successfully installed.\r
-Access the dlux UI at __http://localhost:8181/index.html__. Default credentials are admin/admin for login.\r
-\r
-All the applications in dlux are now karaf features. You can install other dlux applications such as nodes, yang-ui from karaf console using commands such as\r
-\r
-    feature:install odl-dlux-node\r
-    feature:install odl-dlux-yangui\r
-\r
-For more details - follow the wiki at  [dlux opendaylight](https://wiki.opendaylight.org/view/OpenDaylight_dlux:Getting_started)\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/LICENSE b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/LICENSE
deleted file mode 100644 (file)
index 82d2ab2..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
-LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
-CONSTITUTES RECIPIENT’S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and
-b) in the case of each subsequent Contributor:
-
-i) changes to the Program, and
-
-ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and are
-distributed by that particular Contributor. A Contribution 'originates' from a
-Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor’s behalf. Contributions do not include additions to
-the Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents " mean patent claims licensable by a Contributor which are
-necessarily infringed by the use or sale of its Contribution alone or when
-combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement,
-including all Contributors.
-
-2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free copyright license to
-reproduce, prepare derivative works of, publicly display, publicly perform,
-distribute and sublicense the Contribution of such Contributor, if any, and such
-derivative works, in source code and object code form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
-Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form.
-This patent license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the
-Licensed Patents. The patent license shall not apply to any other combinations
-which include the Contribution. No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the licenses to
-its Contributions set forth herein, no assurances are provided by any
-Contributor that the Program does not infringe the patent or other intellectual
-property rights of any other entity. Each Contributor disclaims any liability to
-Recipient for claims brought by any other entity based on infringement of
-intellectual property rights or otherwise. As a condition to exercising the
-rights and licenses granted hereunder, each Recipient hereby assumes sole
-responsibility to secure any other intellectual property rights needed, if any.
-For example, if a third party patent license is required to allow Recipient to
-distribute the Program, it is Recipient’s responsibility to acquire that license
-before distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement.
-
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under its
-own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title and
-non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for
-damages, including direct, indirect, special, incidental and consequential
-damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by
-that Contributor alone and not by any other party; and
-
-iv) states that source code for the Program is available from such Contributor,
-and informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the
-Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if
-any, in a manner that reasonably allows subsequent Recipients to identify the
-originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with
-respect to end users, business partners and the like. While this license is
-intended to facilitate the commercial use of the Program, the Contributor who
-includes the Program in a commercial product offering should do so in a manner
-which does not create potential liability for other Contributors. Therefore, if
-a Contributor includes the Program in a commercial product offering, such
-Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
-every other Contributor ("Indemnified Contributor") against any losses, damages
-and costs (collectively "Losses") arising from claims, lawsuits and other legal
-actions brought by a third party against the Indemnified Contributor to the
-extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to
-control, and cooperate with the Commercial Contributor in, the defense and any
-related settlement negotiations. The Indemnified Contributor may participate in
-any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product
-offering, Product X. That Contributor is then a Commercial Contributor. If that
-Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such
-Commercial Contributor’s responsibility alone. Under this section, the
-Commercial Contributor would have to defend claims against the other
-Contributors related to those performance claims and warranties, and if a court
-requires any other Contributor to pay any damages as a result, the Commercial
-Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
-IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
-Recipient is solely responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its exercise of
-rights under this Agreement , including but not limited to the risks and costs
-of program errors, compliance with applicable laws, damage to or loss of data,
-programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
-CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
-PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable
-law, it shall not affect the validity or enforceability of the remainder of the
-terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such
-provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-(excluding combinations of the Program with other software or hardware)
-infringes such Recipient’s patent(s), then such Recipient’s rights granted under
-Section 2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient’s rights under this Agreement shall terminate if it fails to
-comply with any of the material terms or conditions of this Agreement and does
-not cure such failure in a reasonable period of time after becoming aware of
-such noncompliance. If all Recipient’s rights under this Agreement terminate,
-Recipient agrees to cease use and distribution of the Program as soon as
-reasonably practicable. However, Recipient’s obligations under this Agreement
-and any licenses granted by Recipient relating to the Program shall continue and
-survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in
-order to avoid inconsistency the Agreement is copyrighted and may only be
-modified in the following manner. The Agreement Steward reserves the right to
-publish new versions (including revisions) of this Agreement from time to time.
-No one other than the Agreement Steward has the right to modify this Agreement.
-The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation
-may assign the responsibility to serve as the Agreement Steward to a suitable
-separate entity. Each new version of the Agreement will be given a
-distinguishing version number. The Program (including Contributions) may always
-be distributed subject to the version of the Agreement under which it was
-received. In addition, after a new version of the Agreement is published,
-Contributor may elect to distribute the Program (including its Contributions)
-under the new version. Except as expressly stated in Sections 2(a) and 2(b)
-above, Recipient receives no rights or licenses to the intellectual property of
-any Contributor under this Agreement, whether expressly, by implication,
-estoppel or otherwise. All rights in the Program not expressly granted under
-this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the
-intellectual property laws of the United States of America. No party to this
-Agreement will bring a legal action under this Agreement more than one year
-after the cause of action arose. Each party waives its rights to a jury trial in
-any resulting litigation.
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/README.md b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/README.md
deleted file mode 100644 (file)
index 7391578..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-# OpenDaylight DLUX \r
-\r
-OpenDaylight DLUX is a Javascript-based stateless user interface that communicates with the service backend to provide a consistent and user-friendly interface to interact with OpenDaylight projects and base controller.\r
-\r
-\r
-## Build DLUX code with Karaf feature and distribution\r
-\r
-All necessary modules mentioned above such as nodesjs, bower etc. will be installed automatically, when you run the dlux build for first time.  Run following command at dlux home directory /dlux to build dlux feature and distribution along with code.\r
-Once successful, It will make dlux feature available to install and also create dlux karaf distribution. You can find karaf distribution at dlux/distribution-dlux.\r
-\r
-    $  mvn clean install\r
-\r
-__NOTE__: Some people reported about node related error while maven build. Those errors are usually environment related, mostly happens because of the permission issues or node is not installed properly. Try to reinstall node manually.\r
-\r
-### Install NodeJS manually if needed\r
-\r
-__For Windows and Mac without brew:__\r
-\r
-    Go to http://www.nodejs.org\r
-    Download and install NodeJS\r
-\r
-__For Mac with brew installed:__\r
-\r
-    $ brew update\r
-    $ brew install node\r
-\r
-__Verify NodeJS is installed:__\r
-\r
-    $ npm --version\r
-\r
-__Run DLUX in karaf distribution__\r
-\r
-Once you have dlux distribution or you have karaf distribution from integration repository. You can turn on the dlux feature to access the UI.\r
-We will take example of dlux distribution here. Navigate to directory dlux/distribution-dlux/target/assembly/bin and start the karaf via following command -\r
-\r
-    ./karaf\r
-\r
-On the karaf shell, install dlux core feature via running following command -\r
-\r
-    feature:install odl-dlux-core\r
-\r
-\r
-It will internally install odl-restconf and dlux topology application along with core dlux components. once this feature is successfully installed.\r
-Access the dlux UI at __http://localhost:8181/index.html__. Default credentials are admin/admin for login.\r
-\r
-All the applications in dlux are now karaf features. You can install other dlux applications such as nodes, yang-ui from karaf console using commands such as\r
-\r
-    feature:install odl-dlux-node\r
-    feature:install odl-dlux-yangui\r
-\r
-For more details - follow the wiki at  [dlux opendaylight](https://wiki.opendaylight.org/view/OpenDaylight_dlux:Getting_started)\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/app.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/app.controller.js
deleted file mode 100644 (file)
index 025f556..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-define(['app/app.module'], function (app) {
-  'use strict';
-
-  app.register.controller('AppCtrl', function ($rootScope, $state, $scope, $location) {
-    $rootScope.useMobile =
-      function() {
-       if( navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i) || navigator.userAgent.match(/iPhone/i) ||
-           navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPod/i) || navigator.userAgent.match(/BlackBerry/i) ||
-           navigator.userAgent.match(/Windows Phone/i) ) {
-         return true;
-       }
-       else {
-         return false;
-       }
-    };
-
-    $scope.isCollapse = false;
-    $scope.breadcrumbs = {};
-    $scope.isState = function(name) {
-      return $state.includes(name);
-    };
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/app.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/app.module.js
deleted file mode 100644 (file)
index 3773b5e..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-
-// These variables are provided by the server in karaf distribution.
-// The path of all *.module.js go here. They are RequireJs module.
-// You can uncomment them only for development purpose if you are not using
-//karaf based dlux deployment
-/*
-var module = [
-  'angular',
-  'angular-translate',
-  'angular-sanitize',
-  'angular-translate-loader-static-files',
-  'angular-translate-loader-partial',
-  'angular-ui-router',
-  'ocLazyLoad',
-  'angular-css-injector',
-];
-
-var deps = [
-  'app/core/core.module',
-  'app/node/nodes.module',
-  'app/topology/topology.module',
-  'common/login/login.module',
-  'app/yangui/main',
-  'app/yangman/main',
-  'app/yangvisualizer/yangvisualizer.module',
-  'common/sigmatopology/sigmatopology.module',
-  'common/navigation/navigation.module',
-  'common/topbar/topbar.module',
-  'common/layout/layout.module',
-  'common/config/env.module'
-];
-
-// The name of all angularjs module
-var e = [
-  'ui.router',
-  'oc.lazyLoad',
-  'pascalprecht.translate',
-  'ngSanitize',
-  'angular.css.injector',
-  'app',
-  'app.nodes',
-  'app.topology',
-  'app.common.login',
-  'app.yangui',
-  'app.yangman',
-  'app.yangvisualizer',
-  'app.common.sigmatopology',
-  'app.common.nav',
-  'app.common.topbar',
-  'app.common.layout'];
-//--------------------\\
-
-*/
-
-define(module, function(angular) {
-  'use strict';
-  var preboot = [],
-    register = {},
-    dlux_angular = {},
-    orig_angular = angular,
-    app = angular.module('app', []);
-
-  angular.extend(dlux_angular, orig_angular);
-
-  dlux_angular.module = function(name, deps) {
-    var module = orig_angular.module(name, deps);
-    preboot.push(module);
-    return module;
-  };
-
-  window.angular = dlux_angular; // backward compatibility
-
-  // The overal config he is done here.
-  app.config(function ($urlRouterProvider,  $ocLazyLoadProvider, $translateProvider, $translatePartialLoaderProvider, $controllerProvider, $compileProvider, $provide, $filterProvider, cssInjectorProvider) {
-
-    $urlRouterProvider.otherwise("/topology"); // set the default route
-
-    cssInjectorProvider.setSinglePageMode(true); // remove all added CSS files when the page change
-
-    // set the ocLazyLoader to output error and use requirejs as loader
-    $ocLazyLoadProvider.config({
-      debug: true,
-      asyncLoader: require
-    });
-
-    $translateProvider.useLoader('$translatePartialLoader', {
-      urlTemplate: '/src/{part}-{lang}.json'
-    });
-
-    $translatePartialLoaderProvider.addPart('../assets/data/locale');
-    $translateProvider.preferredLanguage('en_US');
-    $translateProvider.useSanitizeValueStrategy('escape');
-
-    // the only way to add a dynamic module
-    register = {
-        controller : $controllerProvider.register,
-        directive : $compileProvider.directive,
-        factory : $provide.factory,
-        filter: $filterProvider.register,
-        service : $provide.service
-    };
-
-    app.register = {};
-    angular.extend(app.register, register);
-  });
-
-  /* --- define vs require war ---
-   * From my understanding, we use require when
-   * we want to load a dependency and run it. Define
-   * is only to define the dependency for a module.
-   */
-  require(deps, function() {
-    angular.element(document).ready(function() {
-      angular.bootstrap(document, e).invoke(function() {
-        preboot.forEach(function(m) {
-            angular.extend(m, register);
-        });
-        console.log('bootstrap done (: ');
-      });
-    });
-  });
-
-  return app;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/core/core.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/core/core.module.js
deleted file mode 100644 (file)
index c065ddc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-define(['angular', './core.services'], function (angular, services) {
-  'use strict';
-  var core = angular.module('app.core', []);
-
-  core.provider('ContentHelper', services.ContentHelper);
-  core.provider('NavHelper', services.NavHelper);
-  core.provider('TopBarHelper', services.TopBarHelper);
-
-  return core;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/core/core.services.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/core/core.services.js
deleted file mode 100644 (file)
index d7e24fd..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-define(['jquery'], function ($) {
-  'use strict';
-
-  var TopBarHelper = function () {
-    var ids = [];
-    var ctrls = [];
-
-    this.addToView = function (url) {
-      $.ajax({
-        url: url,
-        method: 'GET',
-        async: false
-      }).done(function (data) {
-        ids.push(data);
-      });
-    };
-
-    this.getViews = function () {
-      var template = '';
-
-      for (var i = 0; i < ids.length; ++i) {
-        template += ids[i];
-      }
-
-      return template;
-    };
-
-    this.addControllerUrl = function (url) {
-      ctrls.push(url);
-    };
-
-    this.getControllers = function () {
-      return ctrls;
-    };
-
-    this.$get = ['apiToken', function (apiToken) {
-      return new TopBarHelper(apiToken);
-    }];
-  };
-
-  var NavHelper = function () {
-    var ids = [];
-    var ctrls = [];
-    var menu = [];
-
-    function NavHelperProvider() {
-      this.addToView = function (url) {
-        $.ajax({
-          url: url,
-          method: 'GET',
-          async: false
-        }).done(function (data) {
-          ids.push(data);
-        });
-      };
-
-      this.getViews = function () {
-        var template = '';
-
-        for (var i = 0; i < ids.length; ++i) {
-          template += ids[i];
-        }
-
-        return template;
-      };
-
-      this.addControllerUrl = function (url) {
-        ctrls.push(url);
-      };
-
-      this.getControllers = function () {
-        return ctrls;
-      };
-
-      var getMenuWithId = function (menu, level) {
-        if (menu === undefined) {
-          return null;
-        }
-        var currentLevel = level[0];
-
-        var menuItem = $.grep(menu, function (item) {
-          return item.id === currentLevel;
-        })[0];
-
-        if (level.length === 1) {
-          return menuItem;
-        } else {
-          return getMenuWithId(menuItem.submenu, level.slice(1));
-        }
-      };
-
-      this.addToMenu = function (id, obj) {
-        var lvl = id.split('.');
-        obj.id = lvl.pop();
-
-        if (lvl.length === 0) {
-          menu.push(obj);
-        } else {
-          var menuItem = getMenuWithId(menu, lvl);
-
-          if (menuItem) {
-            if (!menuItem.submenu) {
-              menuItem.submenu = [];
-            }
-            menuItem.submenu.push(obj);
-          } else {
-            var submenu = {
-              'id': lvl[0],
-              'title': lvl[0],
-              'active': '',
-              'submenu': [obj]
-            };
-            menu.push(submenu);
-          }
-        }
-      };
-
-      this.getMenu = function () {
-        return menu;
-      };
-
-      this.$get = function NavHelperFactory() {
-        return new NavHelperProvider();
-      };
-    }
-    var persistentProvider = new NavHelperProvider();
-
-    return persistentProvider;
-
-  };
-
-  var ContentHelper = function () {
-    var ids = [];
-    var ctrls = [];
-
-    function ContentHelperProvider() {
-      this.addToView = function (url) {
-        $.ajax({
-          url: url,
-          method: 'GET',
-          async: false
-        }).done(function (data) {
-          ids.push(data);
-        });
-      };
-
-      this.getViews = function () {
-        var template = '';
-
-        for (var i = 0; i < ids.length; ++i) {
-          template += ids[i];
-        }
-
-        return template;
-      };
-
-      this.addControllerUrl = function (url) {
-        ctrls.push(url);
-      };
-
-      this.getControllers = function () {
-        return ctrls;
-      };
-
-      this.$get = function ContentHelperFactory() {
-        return new ContentHelperProvider();
-      };
-    }
-    var persistentProvider = new ContentHelperProvider();
-
-    return persistentProvider;
-
-  };
-
-  return {
-    ContentHelper: ContentHelper,
-    NavHelper: NavHelper,
-    TopBarHelper: TopBarHelper
-  };
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/core/core.spec.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/core/core.spec.js
deleted file mode 100644 (file)
index 908c19d..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-define(['app/core/core.module', 'app/core/core.services'], function() {
-    describe("Core Module", function() {
-
-        beforeEach(angular.mock.module('app.core'));
-
-        describe(":: Common Provider function", function() {
-            var _ContentHelper, _NavHelper, url, deferred;
-            url = 'test/index.tpl.html';
-
-            beforeEach(angular.mock.inject(function(ContentHelper) {
-                _ContentHelper = ContentHelper;
-                deferred = jQuery.Deferred();
-            }));
-
-            it(':: Should be do an ajax call and add the view to the list', function() {
-                spyOn($, 'ajax').andReturn (deferred);
-                _ContentHelper.addToView(url);
-                deferred.resolve(url);
-
-                expect($.ajax.mostRecentCall.args[0]["url"]).toEqual(url);
-                expect(_ContentHelper.getViews()).toContain(url);
-            });
-
-            it('Should add a controller to the list', function() {
-                _ContentHelper.addControllerUrl(url);
-
-                expect(_ContentHelper.getControllers()).toContain(url);
-            });
-        });
-
-        describe(':: Menu management method', function() {
-            var menu = {
-              "id" : 'menu',
-              "title" : 'lvl0 menu',
-              "active" : '',
-              "submenu" : [ ]
-            };
-
-            var submenu = {
-              "id" : 'sub menu',
-              "title" : 'lvl1 menu',
-              "active" : '',
-              "submenu" : [ ]
-            };
-
-
-            beforeEach(angular.mock.inject(function(NavHelper) {
-                _NavHelper = NavHelper;
-            }));
-
-
-            it('Should add a child even if there no parent', function() {
-                var menus = null;
-                _NavHelper.addToMenu('root.lvl1', submenu);
-
-                menus = _NavHelper.getMenu();
-
-                expect(menus[0]).toEqual({
-                    "id":'root',
-                    "title":'root',
-                    "active": '',
-                    "submenu": [submenu]
-                });
-            });
-
-            it('Should add a item to the root menu', function() {
-                var menus = null;
-
-                _NavHelper.addToMenu('main', menu);
-                menus = _NavHelper.getMenu();
-
-                expect(menus[0]).toEqual(menu);
-            });
-
-            it('Should add a item to the sub menu', function() {
-                var menus = null;
-
-                _NavHelper.addToMenu('main', menu);
-                _NavHelper.addToMenu('main.lvl1', submenu);
-
-                menus = _NavHelper.getMenu();
-
-                expect(menus[0].submenu[0]).toEqual(submenu);
-            });
-
-        });
-
-    });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/routingConfig.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/app/routingConfig.js
deleted file mode 100644 (file)
index 3e0ee90..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-(function(exports){
-
-    var config = {
-
-        /* List all the roles you wish to use in the app
-        * You have a max of 31 before the bit shift pushes the accompanying integer out of
-        * the memory footprint for an integer
-        */
-        roles :[
-            'public',
-            'user',
-            'admin'],
-
-        /*
-        Build out all the access levels you want referencing the roles listed above
-        You can use the "*" symbol to represent access to all roles
-         */
-        accessLevels : {
-            'public' : "*",
-            'anon': ['public'],
-            'user' : ['user', 'admin'],
-            'admin': ['admin']
-        }
-
-    };
-
-    exports.userRoles = buildRoles(config.roles);
-    exports.accessLevels = buildAccessLevels(config.accessLevels, exports.userRoles);
-
-    /*
-        Method to build a distinct bit mask for each role
-        It starts off with "1" and shifts the bit to the left for each element in the
-        roles array parameter
-     */
-
-    function buildRoles(roles){
-
-        var bitMask = "01";
-        var userRoles = {};
-
-        for(var role in roles){
-            var intCode = parseInt(bitMask, 2);
-            userRoles[roles[role]] = {
-                bitMask: intCode,
-                title: roles[role]
-            };
-            bitMask = (intCode << 1 ).toString(2);
-        }
-
-        return userRoles;
-    }
-
-    /*
-    This method builds access level bit masks based on the accessLevelDeclaration parameter which must
-    contain an array for each access level containing the allowed user roles.
-     */
-    function buildAccessLevels(accessLevelDeclarations, userRoles){
-
-        var accessLevels = {};
-        var resultBitMask = '';
-        for(var level in accessLevelDeclarations){
-
-            if(typeof accessLevelDeclarations[level] == 'string'){
-                if(accessLevelDeclarations[level] == '*'){
-
-                    resultBitMask = '';
-
-                    for( var roleTemp in userRoles){
-                        resultBitMask += "1";
-                    }
-                    //accessLevels[level] = parseInt(resultBitMask, 2);
-                    accessLevels[level] = {
-                        bitMask: parseInt(resultBitMask, 2),
-                        title: accessLevelDeclarations[level]
-                    };
-                }
-                else {
-                    console.log("Access Control Error: Could not parse '" + accessLevelDeclarations[level] + "' as access definition for level '" + level + "'");
-                }
-
-            }
-            else {
-
-                resultBitMask = 0;
-                for(var role in accessLevelDeclarations[level]){
-                    if(userRoles.hasOwnProperty(accessLevelDeclarations[level][role])) {
-                        resultBitMask = resultBitMask | userRoles[accessLevelDeclarations[level][role]].bitMask;
-                    }
-                    else {
-                        console.log("Access Control Error: Could not find role '" + accessLevelDeclarations[level][role] + "' in registered roles while building access for '" + level + "'");
-                    }
-                }
-                accessLevels[level] = {
-                    bitMask: resultBitMask,
-                    title: accessLevelDeclarations[level][role]
-                };
-            }
-        }
-
-        return accessLevels;
-    }
-
-})(typeof exports === 'undefined' ? this['routingConfig'] = {} : exports);
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/LICENSE b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/LICENSE
deleted file mode 100644 (file)
index 82d2ab2..0000000
+++ /dev/null
@@ -1,208 +0,0 @@
-Eclipse Public License - v 1.0
-
-THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS ECLIPSE PUBLIC
-LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
-CONSTITUTES RECIPIENT’S ACCEPTANCE OF THIS AGREEMENT.
-
-1. DEFINITIONS
-
-"Contribution" means:
-
-a) in the case of the initial Contributor, the initial code and documentation
-distributed under this Agreement, and
-b) in the case of each subsequent Contributor:
-
-i) changes to the Program, and
-
-ii) additions to the Program;
-
-where such changes and/or additions to the Program originate from and are
-distributed by that particular Contributor. A Contribution 'originates' from a
-Contributor if it was added to the Program by such Contributor itself or anyone
-acting on such Contributor’s behalf. Contributions do not include additions to
-the Program which: (i) are separate modules of software distributed in
-conjunction with the Program under their own license agreement, and (ii) are not
-derivative works of the Program.
-
-"Contributor" means any person or entity that distributes the Program.
-
-"Licensed Patents " mean patent claims licensable by a Contributor which are
-necessarily infringed by the use or sale of its Contribution alone or when
-combined with the Program.
-
-"Program" means the Contributions distributed in accordance with this Agreement.
-
-"Recipient" means anyone who receives the Program under this Agreement,
-including all Contributors.
-
-2. GRANT OF RIGHTS
-
-a) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free copyright license to
-reproduce, prepare derivative works of, publicly display, publicly perform,
-distribute and sublicense the Contribution of such Contributor, if any, and such
-derivative works, in source code and object code form.
-
-b) Subject to the terms of this Agreement, each Contributor hereby grants
-Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
-Patents to make, use, sell, offer to sell, import and otherwise transfer the
-Contribution of such Contributor, if any, in source code and object code form.
-This patent license shall apply to the combination of the Contribution and the
-Program if, at the time the Contribution is added by the Contributor, such
-addition of the Contribution causes such combination to be covered by the
-Licensed Patents. The patent license shall not apply to any other combinations
-which include the Contribution. No hardware per se is licensed hereunder.
-
-c) Recipient understands that although each Contributor grants the licenses to
-its Contributions set forth herein, no assurances are provided by any
-Contributor that the Program does not infringe the patent or other intellectual
-property rights of any other entity. Each Contributor disclaims any liability to
-Recipient for claims brought by any other entity based on infringement of
-intellectual property rights or otherwise. As a condition to exercising the
-rights and licenses granted hereunder, each Recipient hereby assumes sole
-responsibility to secure any other intellectual property rights needed, if any.
-For example, if a third party patent license is required to allow Recipient to
-distribute the Program, it is Recipient’s responsibility to acquire that license
-before distributing the Program.
-
-d) Each Contributor represents that to its knowledge it has sufficient copyright
-rights in its Contribution, if any, to grant the copyright license set forth in
-this Agreement.
-
-3. REQUIREMENTS
-
-A Contributor may choose to distribute the Program in object code form under its
-own license agreement, provided that:
-
-a) it complies with the terms and conditions of this Agreement; and
-
-b) its license agreement:
-
-i) effectively disclaims on behalf of all Contributors all warranties and
-conditions, express and implied, including warranties or conditions of title and
-non-infringement, and implied warranties or conditions of merchantability and
-fitness for a particular purpose;
-
-ii) effectively excludes on behalf of all Contributors all liability for
-damages, including direct, indirect, special, incidental and consequential
-damages, such as lost profits;
-
-iii) states that any provisions which differ from this Agreement are offered by
-that Contributor alone and not by any other party; and
-
-iv) states that source code for the Program is available from such Contributor,
-and informs licensees how to obtain it in a reasonable manner on or through a
-medium customarily used for software exchange.
-
-When the Program is made available in source code form:
-
-a) it must be made available under this Agreement; and
-b) a copy of this Agreement must be included with each copy of the Program.
-
-Contributors may not remove or alter any copyright notices contained within the
-Program.
-
-Each Contributor must identify itself as the originator of its Contribution, if
-any, in a manner that reasonably allows subsequent Recipients to identify the
-originator of the Contribution.
-
-4. COMMERCIAL DISTRIBUTION
-
-Commercial distributors of software may accept certain responsibilities with
-respect to end users, business partners and the like. While this license is
-intended to facilitate the commercial use of the Program, the Contributor who
-includes the Program in a commercial product offering should do so in a manner
-which does not create potential liability for other Contributors. Therefore, if
-a Contributor includes the Program in a commercial product offering, such
-Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
-every other Contributor ("Indemnified Contributor") against any losses, damages
-and costs (collectively "Losses") arising from claims, lawsuits and other legal
-actions brought by a third party against the Indemnified Contributor to the
-extent caused by the acts or omissions of such Commercial Contributor in
-connection with its distribution of the Program in a commercial product
-offering. The obligations in this section do not apply to any claims or Losses
-relating to any actual or alleged intellectual property infringement. In order
-to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
-Contributor in writing of such claim, and b) allow the Commercial Contributor to
-control, and cooperate with the Commercial Contributor in, the defense and any
-related settlement negotiations. The Indemnified Contributor may participate in
-any such claim at its own expense.
-
-For example, a Contributor might include the Program in a commercial product
-offering, Product X. That Contributor is then a Commercial Contributor. If that
-Commercial Contributor then makes performance claims, or offers warranties
-related to Product X, those performance claims and warranties are such
-Commercial Contributor’s responsibility alone. Under this section, the
-Commercial Contributor would have to defend claims against the other
-Contributors related to those performance claims and warranties, and if a court
-requires any other Contributor to pay any damages as a result, the Commercial
-Contributor must pay those damages.
-
-5. NO WARRANTY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
-IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
-NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
-Recipient is solely responsible for determining the appropriateness of using and
-distributing the Program and assumes all risks associated with its exercise of
-rights under this Agreement , including but not limited to the risks and costs
-of program errors, compliance with applicable laws, damage to or loss of data,
-programs or equipment, and unavailability or interruption of operations.
-
-6. DISCLAIMER OF LIABILITY
-
-EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
-CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
-PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
-STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
-OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
-GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-
-7. GENERAL
-
-If any provision of this Agreement is invalid or unenforceable under applicable
-law, it shall not affect the validity or enforceability of the remainder of the
-terms of this Agreement, and without further action by the parties hereto, such
-provision shall be reformed to the minimum extent necessary to make such
-provision valid and enforceable.
-
-If Recipient institutes patent litigation against any entity (including a
-cross-claim or counterclaim in a lawsuit) alleging that the Program itself
-(excluding combinations of the Program with other software or hardware)
-infringes such Recipient’s patent(s), then such Recipient’s rights granted under
-Section 2(b) shall terminate as of the date such litigation is filed.
-
-All Recipient’s rights under this Agreement shall terminate if it fails to
-comply with any of the material terms or conditions of this Agreement and does
-not cure such failure in a reasonable period of time after becoming aware of
-such noncompliance. If all Recipient’s rights under this Agreement terminate,
-Recipient agrees to cease use and distribution of the Program as soon as
-reasonably practicable. However, Recipient’s obligations under this Agreement
-and any licenses granted by Recipient relating to the Program shall continue and
-survive.
-
-Everyone is permitted to copy and distribute copies of this Agreement, but in
-order to avoid inconsistency the Agreement is copyrighted and may only be
-modified in the following manner. The Agreement Steward reserves the right to
-publish new versions (including revisions) of this Agreement from time to time.
-No one other than the Agreement Steward has the right to modify this Agreement.
-The Eclipse Foundation is the initial Agreement Steward. The Eclipse Foundation
-may assign the responsibility to serve as the Agreement Steward to a suitable
-separate entity. Each new version of the Agreement will be given a
-distinguishing version number. The Program (including Contributions) may always
-be distributed subject to the version of the Agreement under which it was
-received. In addition, after a new version of the Agreement is published,
-Contributor may elect to distribute the Program (including its Contributions)
-under the new version. Except as expressly stated in Sections 2(a) and 2(b)
-above, Recipient receives no rights or licenses to the intellectual property of
-any Contributor under this Agreement, whether expressly, by implication,
-estoppel or otherwise. All rights in the Program not expressly granted under
-this Agreement are reserved.
-
-This Agreement is governed by the laws of the State of New York and the
-intellectual property laws of the United States of America. No party to this
-Agreement will bring a legal action under this Agreement more than one year
-after the cause of action arose. Each party waives its rights to a jury trial in
-any resulting litigation.
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/README.md b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/README.md
deleted file mode 100644 (file)
index 7391578..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-# OpenDaylight DLUX \r
-\r
-OpenDaylight DLUX is a Javascript-based stateless user interface that communicates with the service backend to provide a consistent and user-friendly interface to interact with OpenDaylight projects and base controller.\r
-\r
-\r
-## Build DLUX code with Karaf feature and distribution\r
-\r
-All necessary modules mentioned above such as nodesjs, bower etc. will be installed automatically, when you run the dlux build for first time.  Run following command at dlux home directory /dlux to build dlux feature and distribution along with code.\r
-Once successful, It will make dlux feature available to install and also create dlux karaf distribution. You can find karaf distribution at dlux/distribution-dlux.\r
-\r
-    $  mvn clean install\r
-\r
-__NOTE__: Some people reported about node related error while maven build. Those errors are usually environment related, mostly happens because of the permission issues or node is not installed properly. Try to reinstall node manually.\r
-\r
-### Install NodeJS manually if needed\r
-\r
-__For Windows and Mac without brew:__\r
-\r
-    Go to http://www.nodejs.org\r
-    Download and install NodeJS\r
-\r
-__For Mac with brew installed:__\r
-\r
-    $ brew update\r
-    $ brew install node\r
-\r
-__Verify NodeJS is installed:__\r
-\r
-    $ npm --version\r
-\r
-__Run DLUX in karaf distribution__\r
-\r
-Once you have dlux distribution or you have karaf distribution from integration repository. You can turn on the dlux feature to access the UI.\r
-We will take example of dlux distribution here. Navigate to directory dlux/distribution-dlux/target/assembly/bin and start the karaf via following command -\r
-\r
-    ./karaf\r
-\r
-On the karaf shell, install dlux core feature via running following command -\r
-\r
-    feature:install odl-dlux-core\r
-\r
-\r
-It will internally install odl-restconf and dlux topology application along with core dlux components. once this feature is successfully installed.\r
-Access the dlux UI at __http://localhost:8181/index.html__. Default credentials are admin/admin for login.\r
-\r
-All the applications in dlux are now karaf features. You can install other dlux applications such as nodes, yang-ui from karaf console using commands such as\r
-\r
-    feature:install odl-dlux-node\r
-    feature:install odl-dlux-yangui\r
-\r
-For more details - follow the wiki at  [dlux opendaylight](https://wiki.opendaylight.org/view/OpenDaylight_dlux:Getting_started)\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/authentification/auth.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/authentification/auth.module.js
deleted file mode 100644 (file)
index ec953e4..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (c) 2014 Inocybe Technologies, and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angular', './auth.services', 'common/config/env.module'], function (angular, services) {
-  'use strict';
-  var auth = angular.module('app.common.auth', ['config']);
-
-  // services
-  auth.factory('Auth', services.Auth);
-  auth.factory('Base64', services.Base64);
-  auth.factory('NbInterceptor', services.NbInterceptor);
-
-  return auth;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/authentification/auth.services.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/authentification/auth.services.js
deleted file mode 100644 (file)
index da07de2..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (c) 2014 Inocybe Technologies, and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define([], function () {
-  'use strict';
-
-  var Auth = function ($http, $window, Base64, ENV) {
-    var factory = {};
-    // Set Authorization header to username + password
-    factory.setBasic = function (user, pw) {
-      $window.localStorage.odlUser = user;
-      $window.localStorage.odlPass = pw;
-      // for backward compatibility
-      $window.sessionStorage.odlUser = user;
-      $window.sessionStorage.odlPass = pw;
-    };
-  
-    // for backward compatibility
-    if ($window.localStorage.odlUser && $window.localStorage.odlPass) {
-        $window.sessionStorage.odlUser = $window.localStorage.odlUser;
-        $window.sessionStorage.odlPass = $window.localStorage.odlPass;
-    }
-
-    factory.unsetBasic = function () {
-      if ($http.defaults.headers.common.Authorization !== null) {
-        delete $http.defaults.headers.common.Authorization;
-      }
-      $window.localStorage.clear();
-      $window.sessionStorage.clear();
-      document.cookie = 'JSESSIONID=; Path=/restconf; Expires=Thu, 01 Jan 1970 00:00:01 GMT;';
-    };
-
-    // Return the current user object
-    factory.getUser = function () {
-      var user = $window.localStorage.odlUser || null;
-      return user;
-    };
-
-    factory.authorize = function (accessLevel, role) {
-      if (role === undefined) {
-        role = currentUser.role;
-      }
-      return accessLevel.bitMask & role.bitMask;
-    };
-    factory.isAuthed = function () {
-      var authed = factory.getUser() ? true : false;
-      return authed;
-    };
-    factory.isLoggedIn = function (user) {
-      if (user === undefined) {
-        user = currentUser;
-      }
-      return user.role.title === userRoles.user.title || user.role.title === userRoles.admin.title;
-    };
-    factory.login = function (user, pw, cb, eb) {
-      factory.setBasic(user, pw);
-      $http.get(ENV.getBaseURL('MD_SAL') + '/restconf/modules')
-        .success(function (data) {
-          cb(data);
-        })
-        .error(function (resp) {
-          if (resp.errors) {
-            var errorDetails = resp.errors.error[0];
-            if (errorDetails && errorDetails['error-tag'] === 'data-missing') {
-              // Authentication succeed, but API does not have data, allow to enter
-              cb(resp);
-              return;
-            }
-          }
-          factory.unsetBasic();
-          eb(resp);
-        });
-    };
-    factory.logout = function (success) {
-      factory.unsetBasic();
-      success();
-    };
-    return factory;
-  };
-  Auth.$inject = ['$http', '$window', 'Base64', 'ENV'];
-
-  var Base64 = function () {
-    var keyStr = 'ABCDEFGHIJKLMNOP' +
-      'QRSTUVWXYZabcdef' +
-      'ghijklmnopqrstuv' +
-      'wxyz0123456789+/' +
-      '=';
-    return {
-      encode: function (input) {
-        var output = "";
-        var chr1, chr2, chr3 = "";
-        var enc1, enc2, enc3, enc4 = "";
-        var i = 0;
-
-        do {
-          chr1 = input.charCodeAt(i++);
-          chr2 = input.charCodeAt(i++);
-          chr3 = input.charCodeAt(i++);
-
-          enc1 = chr1 >> 2;
-          enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);
-          enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);
-          enc4 = chr3 & 63;
-
-          if (isNaN(chr2)) {
-            enc3 = enc4 = 64;
-          } else if (isNaN(chr3)) {
-            enc4 = 64;
-          }
-
-          output = output +
-            keyStr.charAt(enc1) +
-            keyStr.charAt(enc2) +
-            keyStr.charAt(enc3) +
-            keyStr.charAt(enc4);
-          chr1 = chr2 = chr3 = "";
-          enc1 = enc2 = enc3 = enc4 = "";
-        } while (i < input.length);
-
-        return output;
-      },
-      decode: function (input) {
-        var output = "";
-        var chr1, chr2, chr3 = "";
-        var enc1, enc2, enc3, enc4 = "";
-        var i = 0;
-
-        // remove all characters that are not A-Z, a-z, 0-9, +, /, or =
-        var base64test = /[^A-Za-z0-9\+\/\=]/g;
-        if (base64test.exec(input)) {
-          alert("There were invalid base64 characters in the input text.\n" +
-            "Valid base64 characters are A-Z, a-z, 0-9, '+', '/',and '='\n" +
-            "Expect errors in decoding.");
-        }
-
-        input = input.replace(/[^A-Za-z0-9\+\/\=]/g, "");
-
-        do {
-          enc1 = keyStr.indexOf(input.charAt(i++));
-          enc2 = keyStr.indexOf(input.charAt(i++));
-          enc3 = keyStr.indexOf(input.charAt(i++));
-          enc4 = keyStr.indexOf(input.charAt(i++));
-
-          chr1 = (enc1 << 2) | (enc2 >> 4);
-          chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
-          chr3 = ((enc3 & 3) << 6) | enc4;
-
-          output = output + String.fromCharCode(chr1);
-
-          if (enc3 != 64) {
-            output = output + String.fromCharCode(chr2);
-          }
-          if (enc4 != 64) {
-            output = output + String.fromCharCode(chr3);
-          }
-
-          chr1 = chr2 = chr3 = "";
-          enc1 = enc2 = enc3 = enc4 = "";
-
-        } while (i < input.length);
-
-        return output;
-      }
-    };
-  };
-
-  // Filter to add authorization header if its a nb api call
-  var NbInterceptor = function ($q, $window, Base64) {
-    return {
-      request: function (config) {
-        // Use AAA basic authentication
-        if (config.url.indexOf('restconf') !== -1 || config.url.indexOf('apidoc') !== -1) {
-          config.headers = config.headers || {};
-          if ($window.localStorage.odlUser && $window.localStorage.odlPass) {
-            var encoded = Base64.encode($window.localStorage.odlUser + ':' + $window.localStorage.odlPass);
-            config.headers.Authorization = 'Basic ' + encoded;
-          }
-        }
-        return config;
-      },
-      response: function (response) {
-        return response || $q.when(response);
-      }
-    };
-  };
-  NbInterceptor.$inject = ['$q', '$window', 'Base64'];
-
-  return {
-    Auth: Auth,
-    Base64: Base64,
-    NbInterceptor: NbInterceptor
-  };
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/authentification/auth.spec.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/authentification/auth.spec.js
deleted file mode 100644 (file)
index 911b56c..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-define(['common/authentification/auth.module'], function () {
-  describe('Auth Module', function () {
-    var _Auth, httpBackend, deferred;
-    beforeEach(module('app.common.auth'));
-
-    beforeEach(inject(function ($injector) {
-      _Auth = $injector.get('Auth');
-      httpBackend = $injector.get('$httpBackend');
-    }));
-
-    it('Should have defined function facilate the authentication process', function () {
-      expect(_Auth.setBasic).toBeDefined();
-      expect(_Auth.unsetBasic).toBeDefined();
-      expect(_Auth.getUser).toBeDefined();
-      expect(_Auth.authorize).toBeDefined();
-      expect(_Auth.isAuthed).toBeDefined();
-      expect(_Auth.isLoggedIn).toBeDefined();
-      expect(_Auth.login).toBeDefined();
-      expect(_Auth.logout).toBeDefined();
-    });
-
-    describe(':: Authentication header', function () {
-      var username = 'john',
-        password = 'abc123',
-        _window = null;
-
-      beforeEach(inject(function ($window) {
-        _window = $window;
-      }));
-
-      it('Should set the basic authenticate header', function () {
-        _Auth.setBasic(username, password);
-
-        expect(_window.localStorage.odlUser).toBeDefined();
-        expect(_window.localStorage.odlUser).toEqual(username);
-
-        expect(_window.localStorage.odlPass).toBeDefined();
-        expect(_window.localStorage.odlPass).toEqual(password);
-      });
-
-      it('Should unset the basic authenticate header', inject(function ($http) {
-        _Auth.setBasic(username, password);
-        _Auth.unsetBasic();
-
-        expect(_window.localStorage.odlUser).toBeUndefined();
-        expect(_window.localStorage.odlPass).toBeUndefined();
-        expect($http.defaults.headers.common.Authorization).toBeUndefined();
-      }));
-    });
-
-    describe(':: Login management', function () {
-      var username = 'john',
-        password = 'abc123';
-
-      it('Should return the current user or null otherwise', function () {
-        var user = _Auth.getUser();
-        expect(user).toBeNull();
-
-        _Auth.setBasic(username, password);
-        expect(user).toEqual(user);
-      });
-
-      it('Should set the authentication header and send a callback if success', function () {
-        httpBackend.expect('GET', /.*/).respond(200, '');
-        var successSpy = jasmine.createSpy("successSpy");
-        var errorSpy = jasmine.createSpy("errorSpy");
-        spyOn(_Auth, 'setBasic');
-
-        _Auth.login(username, password, successSpy, errorSpy);
-        httpBackend.flush();
-
-        expect(_Auth.setBasic).toHaveBeenCalledWith(username, password);
-        expect(successSpy).toHaveBeenCalled();
-        expect(errorSpy).not.toHaveBeenCalled();
-      });
-
-      it('Should unset the authentication header and send a callback if error', function () {
-        httpBackend.expect('GET', /.*/).respond(404, '');
-        var successSpy = jasmine.createSpy("successSpy");
-        var errorSpy = jasmine.createSpy("errorSpy");
-        spyOn(_Auth, 'setBasic');
-        spyOn(_Auth, 'unsetBasic');
-
-        _Auth.login(username, password, successSpy, errorSpy);
-        httpBackend.flush();
-
-        expect(_Auth.setBasic).toHaveBeenCalledWith(username, password);
-        expect(_Auth.unsetBasic).toHaveBeenCalled();
-        expect(successSpy).not.toHaveBeenCalled();
-        expect(errorSpy).toHaveBeenCalled();
-      });
-
-      it('Should unset the authentication header on logout', function () {
-        var successSpy = jasmine.createSpy("successSpy");
-        spyOn(_Auth, 'unsetBasic');
-
-        _Auth.logout(successSpy);
-
-        expect(_Auth.unsetBasic).toHaveBeenCalled();
-        expect(successSpy).toHaveBeenCalled();
-      });
-
-      afterEach(function () {
-        httpBackend.verifyNoOutstandingExpectation();
-        httpBackend.verifyNoOutstandingRequest();
-      });
-
-    });
-
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/config/env.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/config/env.module.js
deleted file mode 100644 (file)
index 633ad13..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-define(['angular'], function (angular) {
-  'use strict';
-
-  var config = angular.module('config', [])
-    .constant('ENV', {
-
-      baseURL: '',
-      adSalPort: '8080',
-      mdSalPort: '8181',
-      mdSalSecuredPort: '8443',
-      configEnv: 'ENV_PROD',
-      getBaseURL: function (salType) {
-        if (salType !== undefined) {
-          var urlPrefix = '';
-          if (this.configEnv === 'ENV_DEV') {
-            urlPrefix = this.baseURL;
-          } else {
-            urlPrefix = window.location.protocol + '//' + window.location.hostname + ':';
-          }
-
-          if (salType === 'AD_SAL') {
-            return urlPrefix + this.adSalPort;
-          } else if (salType === 'MD_SAL') {
-            var basePort = this.mdSalPort;
-            if (window.location.protocol === 'https:') {
-                basePort = this.mdSalSecuredPort;
-            }
-            return urlPrefix + basePort;
-          }
-        }
-        //default behavior
-        return '';
-      }
-    });
-
-  return config;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.directives.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.directives.js
deleted file mode 100644 (file)
index 78429dc..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-define(['common/general/common.general.module'], function(general) {
-
-  general.directive('stateIcon', function() {
-      return {
-          restrict: 'E',
-          replace: true,
-          scope: {
-              stateValue: '@value'
-          },
-          template: '<span class="glyphicon glyphicon-{{stateIcon}}-sign"></span>',
-          controller: ['$scope', function ($scope) {
-              var value = $scope.stateValue;
-
-              var icons = {1: 'ok', 0: 'exclamation'};
-              var textStates = {'true': 1, 'false': 0};
-
-              if (_.isString(value) && !value.match('^[0-9]$')) {
-                  value = textStates[value];
-              }
-              $scope.stateIcon = icons[value];
-          }]
-
-      };
-  });
-
-  general.directive('portState', function() {
-      return {
-          restrict: 'E',
-          replace: true,
-          scope: {
-              stateValue: '@value'
-          },
-          template: '<span ng-style="{color: stateColor}">{{stateString}}</span>',
-          controller: ['$scope', function ($scope) {
-              var states = {0: 'DOWN', 1: 'UP'};
-              var colors = {0: 'red', 1: 'green'};
-
-              $scope.stateString = states[$scope.stateValue];
-              $scope.stateColor = colors[$scope.stateValue];
-          }]
-      };
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.filters.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.filters.js
deleted file mode 100644 (file)
index 519525c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-define(['common/general/common.general.module'], function(general) {
-
-  // Filter to return only valid ports (like id != 0)
-  general.filter('noRootPorts', function () {
-    return function (input) {
-      if (!input) {
-        return;
-      }
-      return input.filter(function(port) {
-        return port.nodeconnector.id !== "0" ? port : null;
-      });
-    };
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.module.js
deleted file mode 100644 (file)
index 68f7c68..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-define(['angularAMD', 'Restangular', 'common/config/env.module'], function(ng) {
-  var general = angular.module('app.common.general', ['restangular', 'config']);
-
-  return general;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.services.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.general.services.js
deleted file mode 100644 (file)
index 6529cea..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-define(['common/general/common.general.module'], function(general) {
-
-  general.factory('GeneralRestangular', function(Restangular, ENV) {
-    return Restangular.withConfig(function(RestangularConfig) {
-      RestangularConfig.setBaseUrl(ENV.baseURL);
-    });
-  });
-
-
-  general.factory('SwitchSvc', function (GeneralRestangular) {
-    var svc = {
-      base: function (container) {
-        container = container || 'default';
-        return GeneralRestangular.one('controller/nb/v2').one('switchmanager', container);
-      },
-      data: null
-    };
-
-    svc.delete = function(node) {
-    /* console.log(node);
-      return svc.nodeUrl('default', node.node.type, node.node.id).remove();*/
-    };
-
-    // URL for nodes
-    svc.nodesUrl = function (container) {
-      return svc.base(container).all('nodes');
-    };
-
-    // URL for a node
-    svc.nodeUrl = function (container, type, id) {
-      return svc.base(container).one('node', type).one(id);
-    };
-
-    svc.getAll = function (container) {
-      return svc.nodesUrl(container).getList();
-    };
-
-    svc.getConnectorProperties = function (container, type, id) {
-      return svc.nodeUrl(container, type, id).get();
-    };
-
-    svc.itemData = function (i) {
-      return {
-        state: 'node.detail',
-        name: i.properties.description.value !== 'None' ? i.properties.description.value : i.node.type + '/' + i.node.id,
-        params: {nodeId: i.node.id, nodeType: i.node.type}
-      };
-    };
-
-    svc.itemsData = function (data_) {
-      var data = [];
-
-      angular.forEach(data_.nodeProperties, function (value, key) {
-        data.push(svc.itemData(value));
-      });
-
-      return data;
-    };
-
-    return svc;
-  });
-});
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.navigation.directives.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.navigation.directives.js
deleted file mode 100644 (file)
index 9c0dd75..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-define(['common/general/common.navigation.module'], function(common) {
-
-  /*
-  * Helper to set CSS class to active via ng-class using $location.path()
-  * or $state.includes()
-  */
-  common.directive('isActive', function($compile) {
-    return {
-      restrict: 'A',
-      replace: false,
-      scope: {
-        state: '@',
-        stateParams: '=',
-        stateActive: '@',
-        url: '@'
-      },
-
-      controller: ['$scope', '$location', '$state', function ($scope, $location, $state) {
-        $scope.$state = $state;
-        $scope.$location = $location;
-      }],
-      compile: function() {
-        return function (scope, iElement, iAttrs, controller) {
-          var active;
-          if (scope.state) {
-            var state = scope.stateActive || scope.$state.current.name.split('.')[0];
-            active = 'active: $state.includes(\'' + scope.state + '\')';
-          } else if (scope.url) {
-            active = 'active: url === $location.path()';
-          } else {
-            active = "false";
-          }
-          iElement.attr('ng-class', '{ ' + active  + ' }'); // Adding the ngClass
-          iElement.removeAttr('is-active'); // Avoid infinite loop
-          $compile(iElement)(scope);
-        };
-      }
-    };
-  });
-
-
-  common.directive('brdAnchor', function ($compile, $rootScope) {
-    return {
-      restrict: 'E',
-      replace: true,
-      scope: {
-        label: '@',
-        state: '@',
-        stateParams: '=',
-        url: '@'
-      },
-
-      /* The idea is to support both state and url, to be able to set {active} either
-      if stateActive matches via $state.includes() or if the url matches
-      Change this into a actual href later on ? - see https://github.com/angular-ui/ui-router/issues/395
-      */
-      template: '<a href="" ng-click="doClick()">{{label}}</a>',
-      controller: ['$scope', '$rootScope', '$location', '$state', function ($scope, $rootScope, $location, $state) {
-        $scope.$location = $location;
-        $scope.$state = $state;
-
-        $scope.doClick = function () {
-          var args = {
-            label: $scope.label,
-            state: $scope.state,
-            stateParams: $scope.stateParams,
-            url: $scope.url
-          };
-
-          $rootScope.$broadcast('event:navigation', args);
-
-          if (!$scope.url && $scope.state) {
-            var params = $scope.stateParams || {};
-            $state.transitionTo($scope.state, params, { location: true, inherit: true, relative: $state.$current, notify: true });
-          } else if ($scope.url) {
-            $location.path($scope.url);
-          }
-        };
-      }]
-    };
-  });
-
-
-  common.directive('buttonCancel', function() {
-      // Runs during compile
-      return {
-          restrict: 'E',
-          replace: true,
-          scope: {
-              'btnLabel': '@label',
-              'btnSize': '@size',
-              'btnGlyph': '@glyph',
-              'cancelFunc': '=function',
-              'state': '@',
-              'stateParams': '=',
-          },
-          template: '<button class="btn btn-{{size}} btn-danger" ng-click="doCancel()"><i class="icon-remove-sign"></i> {{label}}</button>',
-          controller: ['$scope', '$state', function ($scope, $state) {
-            $scope.label = $scope.btnLabel || 'Cancel';
-            $scope.size = $scope.btnSize || 'md';
-            $scope.glyph = $scope.btnGlyph || 'remove-circle';
-
-            $scope.doCancel = function () {
-              if (angular.isFunction($scope.cancelFunc)) {
-                $scope.cancelFunc();
-                return;
-              }
-
-              var params = $scope.stateParams || {};
-              $state.transitionTo($scope.state, params, { location: true, inherit: true, relative: $state.$current, notify: true });
-
-            };
-          }]
-      };
-  });
-
-  common.directive('buttonSubmit', function(){
-    // Runs during compile
-    return {
-      restrict: 'E',
-      replace: true,
-      scope: {
-        'btnLabel': '@label',
-        'btnSize': '@size',
-        'btnGlyph': '@glyph',
-        'submitFunc': '=function',
-        'form': '=form',
-        'validator': '='
-      },
-      template: '<button class="btn btn-{{size}} btn-orange" ng-click="doSubmit()" ng-disabled="submitDisabled"><i class="icon-ok-sign"></i> {{label}}</button>',
-      controller: ['$scope', function ($scope) {
-        $scope.label = $scope.btnLabel || 'Submit';
-        $scope.size = $scope.btnSize || 'md';
-        $scope.glyph = $scope.btnGlyph || 'ok-circle';
-
-        $scope.submitDisabled = true;
-
-        $scope.doSubmit = function () {
-          if ($scope.submitFunc) {
-            $scope.submitFunc();
-          }
-        };
-
-        $scope.toggle = function (newVal) {
-          $scope.submitDisabled = newVal ? false : true;
-        };
-
-
-        // Setup a watch for form.$valid if it's passed
-        if (!$scope.validator && $scope.form) {
-          $scope.$watch('form.$valid', function (newVal, oldVal) {
-            $scope.toggle(newVal);
-          });
-        }
-
-        // This overrules the form watch if set - use with cauthion!
-        if ($scope.validator && angular.isFunction($scope.validator)) {
-          $scope.$watch(
-            function() {
-              return $scope.validator();
-            },
-            function(newVal, oldVal) {
-              $scope.toggle(newVal);
-            }
-          );
-        }
-
-        // Lastly if none of the above goes we'll just enable ourselves
-        if (!$scope.form && !$scope.validator) {
-          $scope.submitDisabled = false;
-        }
-      }]
-    };
-  });
-
-
-  common.directive('showSelected', function() {
-    // Runs during compile
-    return {
-      restrict: 'E',
-      replace: true,
-      scope: {
-        'data': '='
-      },
-      template: '<span>Selected: {{data.length}}</span>'
-    };
-  });
-
-  common.directive('ctrlReload', function() {
-    // Runs during compile
-    return {
-      replace: true,
-      restrict: 'E',
-      scope: {
-        svc: '=service'
-      },
-      template: '<button class="btn btn-primary btn-xs" ng-click="svc.getAll()"><i class="icon-refresh"></i></button>',
-      link: function ($scope, iElm, iAttrs, controller) {
-        $scope.$on('evt:refresh', function() {
-          $scope.svc.getAll();
-        });
-      }
-    };
-  });
-
-  common.directive('ctrlDelete', function($rootScope) {
-    // Runs during compile
-    return {
-      replace: true,
-      restrict: 'E',
-      template: '<button class="btn btn-danger btn-xs" ng-click="deleteSelected()" ng-disabled="gridOptions.selectedItems.length == 0"><i class="icon-remove"></i></button>',
-      link: function($scope, iElm, iAttrs, controller) {
-        var i = 0;
-        var selected = $scope.gridOptions.selectedItems;
-
-        // Fire up a evt:refresh event once done.
-        $scope.deleteSelected = function () {
-          angular.forEach(selected, function(value, key) {
-            $scope.svc.delete(value).then(
-              function () {
-                i++;
-                if (i == selected.length) {
-                  $rootScope.$broadcast('evt:refresh');
-                }
-              }
-            );
-          });
-        };
-      }
-    };
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.navigation.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/common.navigation.module.js
deleted file mode 100644 (file)
index 0bd2e84..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-define(['angularAMD'], function(ng) {
-
-  var common_navigation = angular.module('app.common.navigation', []);
-
-  return common_navigation;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/finishRender.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/general/finishRender.module.js
deleted file mode 100644 (file)
index 3faf3f1..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-define(['angularAMD'], function(ng) {
-  var module = angular.module('app.common.finishRender', []);
-
-  module.config(function($compileProvider) {
-    module.register = {
-      directive : $compileProvider.register
-    };
-  });
-
-  module.directive('onFinishRender', function ($timeout) {
-      return {
-          restrict: 'A',
-          link: function (scope, element, attr) {
-              if (scope.$last === true) {
-                  $timeout(function () {
-                      scope.$emit('ngRepeatFinished');
-                  });
-              }
-          }
-      };
-  });
-
-  return module;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/layout/index.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/layout/index.tpl.html
deleted file mode 100644 (file)
index 0c57c52..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-
-<div ui-view="topbar"></div>
-<div id="red"></div>
-<div id="gray"></div>
-<div id="wrapper">
-  <nav id="sideMenu" ui-view="navigation" role="navigation"></nav>
-  <div id="page-wrapper-content">
-    <div class="container-fluid">
-      <div class="row content-row">
-        <div id="pageContent" class="col-xs-12" ui-view="content">
-          <!-- PAGE CONTENT BEGINS -->
-        </div><!-- /.col -->
-      </div><!-- /.row -->
-    </div>
-  </div><!-- /.page-content -->
-</div>
-<!-- /.main-content -->
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/layout/layout.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/layout/layout.module.js
deleted file mode 100644 (file)
index 5438b05..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-// This module is used to populate views from the index.tpl.html
-// Each module will register html pages with the appropriate HelperProvider's
-// and this module will take everything from those Helpers and fill the view.
-define(['angular', 'angular-ui-router', 'ocLazyLoad', 'common/general/common.general.directives',
-  'common/general/common.navigation.directives', 'app/core/core.module'], function (angular) {
-  'use strict';
-
-  var layout = angular.module('app.common.layout', ['ui.router.state', 'app.core', 'app.common.general', 'app.common.navigation']);
-
-  layout.config(function ($stateProvider, TopBarHelperProvider, NavHelperProvider, ContentHelperProvider) {
-
-    $stateProvider.state('main', {
-      url: '/',
-      views: {
-        'mainContent@': {
-          controller: 'AppCtrl',
-          templateUrl: 'src/common/layout/index.tpl.html'
-        },
-        'navigation@main': {
-          template: NavHelperProvider.getViews(),
-          controller: 'NavCtrl'
-        },
-        'topbar@main': {
-          template: TopBarHelperProvider.getViews(),
-          controller: 'TopbarCtrl'
-        },
-        'content@main': {
-          template: ContentHelperProvider.getViews()
-        }
-      },
-      resolve: {
-        loadCtrl: ['$ocLazyLoad', function ($ocLazyLoad) {
-          return $ocLazyLoad.load({
-            files: ['app/app.controller'].concat(TopBarHelperProvider.getControllers()).concat(NavHelperProvider.getControllers())
-          });
-        }]
-      }
-    });
-
-  });
-
-  return layout;
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/forgot_password.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/forgot_password.tpl.html
deleted file mode 100644 (file)
index b366876..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<div id="forgot-box" class="forgot-box widget-box no-border">
-    <div class="widget-body">
-        <div class="widget-main">
-            <h4 class="header red lighter bigger">
-                <i class="icon-key"></i>
-                Retrieve Password
-            </h4>
-
-            <div class="space-6"></div>
-            <p>
-                Enter your email and to receive instructions
-            </p>
-
-            <form>
-                <fieldset>
-                    <label>
-                                                                                                                       <span class="block input-icon input-icon-right">
-                                                                                                                               <input type="email" class="span12"
-                                                                       data-ng-model="recover.email"
-                                                                       placeholder="Email"/>
-                                                                                                                               <i class="icon-envelope"></i>
-                                                                                                                       </span>
-                    </label>
-
-                    <div class="clearfix">
-                        <button ng-click="sendForgotPassword()" type="button"
-                                class="width-35 pull-right btn btn-small btn-danger">
-                            <i class="icon-lightbulb"></i>
-                            Send Me!
-                        </button>
-                    </div>
-                </fieldset>
-            </form>
-        </div>
-        <!--/widget-main-->
-
-        <div class="toolbar center">
-            <a href="#" onclick="show_box('login-box'); return false;" class="back-to-login-link">
-                Back to login
-                <i class="icon-arrow-right"></i>
-            </a>
-        </div>
-    </div>
-    <!--/widget-body-->
-</div><!--/forgot-box-->
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.controller.js
deleted file mode 100644 (file)
index 750340d..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2014 Inocybe Technologies, and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['common/login/login.module', 'common/authentification/auth.services'], function(login) {
-
-  login.controller('LoginCtrl', function ($scope, $http, $window, Auth, $location) {
-        // default values
-        $scope.login = {};
-        $scope.login.username = "";
-        $scope.login.password = "";
-        $scope.login.remember = false;
-        $scope.rememberme = true;
-
-        $scope.sendLogin = function () {
-            Auth.login($scope.login.username, $scope.login.password, $scope.success, $scope.errorDisplay);
-        };
-
-        $scope.success = function(response) {
-            $window.location.href = 'index.html';
-        };
-        $scope.errorDisplay = function (error) {
-           $scope.error = "Unable to login";
-
-        };
-    });
-
-    login.controller('forgotPasswordCtrl', function ($scope, $http) {
-        $scope.recover = {};
-        $scope.recover.email = "";
-        $scope.sendForgotPassword = function () {
-            $http.post('/recover', $scope.recover).success(function (data) {
-                if (data.recover) {
-                    console.log("email sent");
-                }
-                else {
-                    console.log("email not sent");
-                }
-            });
-
-        };
-    });
-
-   login.controller('registerCtrl', function ($scope, $http) {
-        $scope.register = {};
-        $scope.register.email = "";
-        $scope.register.username = "";
-        $scope.register.password = "";
-        $scope.register.repeatPassword = "";
-        $scope.register.userAgreement = false;
-
-        $scope.sendRegister = function () {
-            $http.post('/register', $scope.register).success(function (data) {
-                if (data.register) {
-                    console.log("registration is successful");
-                }
-                else {
-                    console.log("registration failed");
-                }
-            });
-        };
-    });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.less b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.less
deleted file mode 100644 (file)
index a4f9912..0000000
+++ /dev/null
@@ -1,193 +0,0 @@
-/* login pages */
-
-.login-container {
-  width:375px;
-  margin:0 auto;
-}
-
-.login-layout {
-  background-color:#1D2024;
- .main-container:after {
-       display:none;
- }
-
- .main-content {
-       margin-left:0;
-       min-height:100%;
-       padding-left: 15px;
-       padding-right:15px;
- }
-
-
- label {
-       margin-bottom:11px;
- }
-
- .widget-box {
-       visibility:hidden;
-       position:absolute;       
-       overflow:hidden;
-       width:100%;
-        
-       border-bottom:none;
-       box-shadow:none;
-       padding:6px;
-       background-color:#394557;
-        
-       .transform(~"scale(0,1) translate(-150px)");    
-       &.visible {
-               visibility:visible;
-               .transform(~"scale(1,1) translate(0)");
-
-               .transition(~"all .3s ease");
-               -o-transition: none;/* too slow */
-               -webkit-transition: none;/* works in chrome but not in safari, never scales back to 1! */
-       }
-       
-       .widget-main {
-               padding:16px 36px 36px;
-               background:#F7F7F7;
-               form {
-                       margin:0;
-               }
-       }
-       .widget-body .toolbar > div > a {
-               font-size:15px;
-               font-weight:400;
-               text-shadow:1px 0px 1px rgba(0,0,0,0.25); 
-       }
- }
-}
-
-
-
-
-.login-box {
-  .forgot-password-link { color:#FE9; }
-  .user-signup-link { color:#CF7; }
-  
-  .toolbar {
-       background:#5090C1;
-       border-top:2px solid #597597;
-       > div {
-               width:50%;
-               display:inline-block;
-               padding:9px 0 11px;
-
-               &:first-child {//the first link
-                       float:left;
-                       text-align:left;
-                       > a {
-                               margin-left:11px;
-                       }
-                       
-                       + div {//the next one
-                               float:right;
-                               text-align:right;
-                               > a {
-                                       margin-right:11px;
-                               }
-                       }
-               }
-       }
-  }
-}
-
-
-
-
-.forgot-box .toolbar {
- background:#C16050;
- border-top:2px solid #976559;
- padding:9px 18px;
-}
-
-.signup-box  .toolbar {
- background:#76B774;
- border-top:2px solid #759759;
- padding:9px 18px;
-}
-
-.forgot-box .back-to-login-link  , .signup-box .back-to-login-link{
- color:#FE9;
- font-size:14px;
- font-weight:bold;
- text-shadow:1px 0px 1px rgba(0,0,0,0.25); 
-}
-
-
-
-
-
-/* social login */
-.login-layout .login-box .widget-main {
-       padding-bottom:16px;
-}
-.login-box {
-
- .social-or-login {
-       margin-top:4px;
-        
-       position:relative; z-index:1;
-       :first-child {
-               display:inline-block;
-               background: #F7F7F7;
-               padding: 0 8px;
-               color: #5090C1; font-size: 13px;
-       }
-       
-       &:before {
-               content:""; display:block;
-               position:absolute; z-index:-1;
-               top:50%; left:0; right:0;
-               border-top:1px dotted #A6C4DB;
-       }
- }
-
- .social-login {
-       margin-top:12px;
-       a {
-               border-radius:100%;
-               width:42px; height:42px; line-height:46px;
-               padding:0;
-               margin:0 1px;
-               border:none;
-               > [class*="icon-"] {
-                       font-size:24px;
-                       margin:0;
-               }
-       }
- }
-
-}
-
-
-
-
-
-/* loginbox */
-@media only screen and (max-width: @screen-xs) {
-.login-layout .widget-box .widget-main {
- padding:16px;
-}
-}
-@media only screen and (max-width: @screen-xs) {
-.login-container {
- width:98%;
-}
-.login-layout .widget-box {
- padding:0;
-}
-
-.login-box .toolbar > div {
- width:auto;
-}
-}
-@media only screen and (max-width: @screen-xs-max) {
-.login-layout .widget-box.visible {
- .transition(~"none");
-}
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.module.js
deleted file mode 100644 (file)
index 72702c6..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2014 Inocybe Technologies, and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 'jquery', 'common/authentification/auth.module', 'ocLazyLoad'], function (ng, $) {
-  var login = angular.module('app.common.login', ['app.common.auth', 'ui.router.state']);
-
-  login.config(function ($stateProvider, $httpProvider) {
-    $stateProvider
-      .state('login', {
-        url: '/login',
-        views: {
-          'mainContent@': {
-            templateUrl: 'src/common/login/login.tpl.html',
-            controller: 'LoginCtrl'
-          }
-        },
-        resolve: {
-          loadController: ['$ocLazyLoad', function ($ocLazyLoad) {
-            return $ocLazyLoad.load({
-              files: ['src/common/login/login.controller.js']
-            });
-          }]
-        }
-      });
-
-    $httpProvider.interceptors.push('NbInterceptor');
-  });
-
-  login.run(function ($rootScope, $location, Auth) {
-
-    // to avoid recursive loop
-    var publicPath = ['/login'];
-
-    var isPublicPath = function (route) {
-      var found = false;
-      $.each(publicPath, function (key, value) {
-        found = found || route.match('^' + value);
-      });
-      return found;
-    };
-
-    $rootScope.$on('$stateChangeStart', function () {
-      if (!isPublicPath($location.url()) && !Auth.isAuthed()) {
-        $location.path('/login');
-      }
-    });
-
-  });
-
-  return login;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.spec.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.spec.js
deleted file mode 100644 (file)
index 47fcf35..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-define(['common/login/login.controller', 'angular-ui-router', 'common/layout/layout.module'], function() {
-  describe('Login Module', function() {
-    var scope, state, controller, location, AuthMock;
-    var url = '/test';
-
-    beforeEach(module('ui.router'));
-    beforeEach(module('app.common.layout'));
-    beforeEach(module('app.common.login', function($provide) {
-      AuthMock = {
-        isAuthed: function() {},
-        login: function() {}
-      };
-      $provide.value('Auth', AuthMock);
-    }));
-
-    beforeEach(inject( function($rootScope, $controller, $state, $location) {
-      scope = $rootScope.$new();
-      controller = $controller;
-      state = $state;
-      location = $location;
-    }));
-
-    it('Should load the login state', function() {
-      var stateName = 'login';
-
-      controller('LoginCtrl', {$scope: scope, $state: state});
-      expect(state.href(stateName, {})).toBe('#/login');
-    });
-
-    it('Should redirect any url to login if not logged', function() {
-      var stateName = 'login';
-      spyOn(AuthMock,'isAuthed').andReturn(false);
-      location.url(url);
-      controller('LoginCtrl', {$scope: scope, $state: state});
-      state.go('main');
-
-      expect(AuthMock.isAuthed).toHaveBeenCalled();
-      expect(state.is("login"));
-      expect(location.url()).toEqual('/login');
-    });
-
-    it('Should not redirect if logged', function() {
-      spyOn(AuthMock,'isAuthed').andReturn(true);
-      location.url(url);
-      controller('LoginCtrl', {$scope: scope, $state: state});
-      state.go('main');
-
-      expect(AuthMock.isAuthed).toHaveBeenCalled();
-      expect(state.is("main"));
-      expect(location.url()).toEqual(url);
-    });
-
-    it('Should call the Auth module', function() {
-      spyOn(AuthMock,'login');
-      controller('LoginCtrl', {$scope: scope, $state: state});
-
-      scope.sendLogin();
-      expect(AuthMock.login).toHaveBeenCalled();
-    });
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/login.tpl.html
deleted file mode 100644 (file)
index ae99356..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<div class="container">
-  <div class="row">
-    <div class="col-md-4 col-md-offset-4">
-      <div class="login-panel panel panel-default">
-      <div class="panel-heading">
-        <h3 class="panel-title">Please Sign In</h3>
-      </div>
-      <div style="color:Red;text-align: center">{{error}}</div>
-      <img style="width: 350px" src="assets/images/opendaylight-open-source.jpg" alt="OpenDayLight">
-        <div class="panel-body">
-        <form role="form">
-          <fieldset>
-            <div class="form-group">
-              <input class="form-control" ng-model="login.username" placeholder="Username" name="username" type="text" autofocus>
-            </div>
-            <div class="form-group">
-              <input class="form-control" placeholder="Password" ng-model="login.password" name="password" type="password" value="">
-            </div>
-            <div class="checkbox">
-              <label>
-                <input ng-model="login.remember" name="remember" type="checkbox" value="Remember Me">Remember Me
-              </label>
-            </div>
-            <!-- Change this to a button or input when using this as a form -->
-            <button ng-click="sendLogin()" class="btn btn-lg btn-orange btn-block">Login</a>
-          </fieldset>
-        </form>
-      </div>
-    </div>
-  </div>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/register.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/login/register.tpl.html
deleted file mode 100644 (file)
index 725dc39..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-<div id="signup-box" class="signup-box widget-box no-border">
-                                    <div class="widget-body">
-                                        <div class="widget-main">
-                                            <h4 class="header green lighter bigger">
-                                                <i class="icon-group blue"></i>
-                                                New User Registration
-                                            </h4>
-
-                                            <div class="space-6"></div>
-                                            <p> Enter your details to begin: </p>
-
-                                            <form>
-                                                <fieldset>
-                                                    <label class="block clearfix">
-                                                        <span class="block input-icon input-icon-right">
-                                                            <input type="email" data-ng-model="register.email" class="form-control" placeholder="Email" />
-                                                            <i class="icon-envelope"></i>
-                                                        </span>
-                                                    </label>
-
-                                                    <label class="block clearfix">
-                                                        <span class="block input-icon input-icon-right">
-                                                            <input type="text" data-ng-model="register.username" class="form-control" placeholder="Username" />
-                                                            <i class="icon-user"></i>
-                                                        </span>
-                                                    </label>
-
-                                                    <label class="block clearfix">
-                                                        <span class="block input-icon input-icon-right">
-                                                            <input type="password" data-ng-model="register.password" class="form-control" placeholder="Password" />
-                                                            <i class="icon-lock"></i>
-                                                        </span>
-                                                    </label>
-
-                                                    <label class="block clearfix">
-                                                        <span class="block input-icon input-icon-right">
-                                                            <input type="password" data-ng-model="register.repeatPassword" class="form-control" placeholder="Repeat password" />
-                                                            <i class="icon-retweet"></i>
-                                                        </span>
-                                                    </label>
-
-                                                    <label class="block">
-                                                        <input type="checkbox" data-ng-model="register.userAgreement" class="ace" />
-                                                        <span class="lbl">
-                                                            I accept the
-                                                            <a href="#">User Agreement</a>
-                                                        </span>
-                                                    </label>
-
-                                                    <div class="space-24"></div>
-
-                                                    <div class="clearfix">
-                                                        <button type="reset" class="width-30 pull-left btn btn-sm">
-                                                            <i class="icon-refresh"></i>
-                                                            Reset
-                                                        </button>
-
-                                                        <button type="button" ng-click="sendRegister()" class="width-65 pull-right btn btn-sm btn-success">
-                                                            Register
-                                                            <i class="icon-arrow-right icon-on-right"></i>
-                                                        </button>
-                                                    </div>
-                                                </fieldset>
-                                            </form>
-                                        </div>
-
-                                        <div class="toolbar center">
-                                            <a href="#" onclick="show_box('login-box'); return false;" class="back-to-login-link">
-                                                <i class="icon-arrow-left"></i>
-                                                Back to login
-                                            </a>
-                                        </div>
-                                    </div><!-- /widget-body -->
-                                </div><!-- /signup-box -->
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/nav_item_template.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/nav_item_template.tpl.html
deleted file mode 100644 (file)
index 391696c..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<a href="{{item.link}}" ng-if="isValid(item.submenu)" target="_self" ng-click="updateTemplate($event, item)">
-  <i class="{{item.icon}}"></i> {{item.title | translate}}
-  <span ng-show="isValid(item.submenu)" class="arrow icon-angle-down"></span>
-</a>
-<a href="{{item.link}}" target="_self" ng-if="!isValid(item.submenu)">
-  <i class="{{item.icon}}"></i> {{item.title | translate}}
-</a>
-
-<ul class="nav nav-second-level collapse" style="display: {{display}}">
-
-  <li ng-class="{ active: (isState(item.active) && !isValid(item.submenu)) }" ng-controller="NavItemCtrl" ng-repeat="item in item.submenu" ng-include="'src/common/navigation/nav_item_template.tpl.html'">
-
-  </li>
-</ul>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation-min.less b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation-min.less
deleted file mode 100644 (file)
index 52d78e9..0000000
+++ /dev/null
@@ -1,225 +0,0 @@
-.menu_min() {
-       &.sidebar {
-               width:@sidebar-min-width;
-               &:before {
-                       width:@sidebar-min-width;
-               }
-               + .main-content {
-                       margin-left:(@sidebar-min-width);
-                       .breadcrumbs.fixed , .breadcrumbs.breadcrumbs-fixed { left:(@sidebar-min-width); }
-               }
-       }
-       
-       .nav-list a {
-         .badge , .label {
-               position:relative;
-               top:-1px;
-               right:auto;
-               left:4px;
-         }
-       }
-
-       .nav-list .submenu .submenu a {
-               .badge , .label {
-               top:0;
-               }
-       }
-
-       
-       .nav-list > li {
-         > a {
-               position:relative;
-                > .menu-text {
-                       display:none;
-                       
-                       position:absolute;
-                       left:(@sidebar-min-width - 1);
-                       top:-2px;
-                       width:(@sidebar-width - 16);
-                       height:40px;
-                       
-                       line-height:38px;
-                       background-color:@menumin-bg;
-                       z-index:121;
-                       
-                       .box-shadow(@menumin-shadow);
-                       border:1px solid @menumin-border;
-                       
-                       padding-left:12px;
-               }
-               &.dropdown-toggle > .menu-text {
-                       .box-shadow(none);
-                       border:none;
-                       top:-1px; left:@sidebar-min-width;
-                       width:(@sidebar-width - 16);
-                       border-bottom:1px solid @menumin-text-border;
-               }
-               .arrow {
-                       display:none;
-               }
-               
-               &:hover:before {/* the right side border on hover */
-                       width:2px;
-               }
-         }
-
-        &:hover > a {
-               color:@menu-focus-color;
-               > .menu-text {
-                       display:block;
-          }
-        }
-        &.active > a > .menu-text {
-               border-left-color:@menu-focus-color;
-        }
-        &.open > a  {
-               background-color:@menu-open-bg;
-               color:@menu-color;
-        }
-        &.open.active > a  {
-               background-color:@menu-active-bg;
-        }
-        &.open:hover > a {
-               color:@menu-focus-color;
-        }
-        &.active > a  {
-               color:@menu-active-color;
-        }
-        
-        &.active > a:after  { /* the caret */
-               border-width:10px 6px;
-               top:8px;
-        }
-        &.active.open > a:after {
-               display:block;
-        }
-        &.active.open li.active > a:after {
-               display:none;
-        }
-
-
-
-        > .submenu {
-               background:@submenu-bg;
-               position:absolute; z-index:120;
-               left:(@sidebar-min-width - 1); top:-2px;
-
-               width:(@sidebar-width - 14);
-               border:1px solid @menumin-border;
-
-               .box-shadow(@menumin-shadow);
-
-               padding-top:40px;
-               padding-bottom:2px;
-
-               display:none !important;
-               
-               &:before {
-                        /* hide the tree like submenu in minimized mode */
-                       display:none;
-               }
-                        
-               li {
-                 &:before {
-                       display:none;
-                 }
-                 
-                 > a {
-                       //border-left:none;
-                       margin-left:0;
-                       padding-left:24px;
-                       > [class*="icon-"]:first-child {
-                               left:4px;
-                       }
-                 }
-
-               }
-        }
-
-
-
-        &:hover > .submenu {
-               display:block !important;
-        }
-        &.active > .submenu {
-               border-left-color:@menu-active-color;
-        }
-  }
-
-
-
-  
-  
-  //sidebar shortcuts
-  .sidebar-shortcuts {
-       position:relative;
-  }
-  .sidebar-shortcuts-mini {
-       display:block;
-  }
-  
-  .sidebar-shortcuts-large {
-       display:none;
-       position:absolute;
-       z-index:20;
-       top:-1px;
-       left:@sidebar-min-width - 1;
-       
-       width:(@sidebar-width - 8);
-       
-       padding:0 2px 1px;
-       
-       background-color:@submenu-bg;
-       .box-shadow(@menumin-shadow);
-       border:1px solid @menumin-border;
-  }
-  .sidebar-shortcuts:hover .sidebar-shortcuts-large{
-       display:block;
-  }
-
-  .sidebar-collapse { /* minimized collapse button */
-       &:before {
-               left:5px; right:5px;
-       }
-       > [class*="icon-"] {
-               font-size:13px;
-               padding:0 4px;
-               line-height:15px;
-
-               border-width:1px;
-               border-color:darken(@menumin-icon-border, 5%);
-       }
-  }
-  
-
-
-
-  .nav-list > li > .submenu {
-       li > .submenu > li {
-               > a {/*3rd level*/
-                       margin-left:0px;
-                       padding-left:30px;
-               }
-               > .submenu > li > a {/*4th level*/
-                       margin-left:0px;
-                       padding-left:45px;
-               }
-       }
-
-       li.active > a:after {
-               display:none;
-       }
- }
- .nav-list li.active.open > .submenu > li.active > a:after {
-       display: none;
- }
-}
-
-
-
-
-.menu-min {
-       .menu_min();
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.controller.js
deleted file mode 100644 (file)
index 5faa039..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-define(['angular'], function (angular) {
-  'use strict';
-
-  var NavCtrl = function ($scope, NavHelper) {
-    $scope.navList = NavHelper.getMenu();
-  };
-  NavCtrl.$inject = ['$scope', 'NavHelper'];
-
-  var NavItemCtrl = function ($scope) {
-    $scope.display = 'none';
-    $scope.isOpen = false;
-
-    $scope.isValid = function (value) {
-      if (angular.isUndefined(value) || value === null) {
-        return false;
-      } else {
-        return true;
-      }
-    };
-
-    $scope.updateTemplate = function (e) {
-      e.stopPropagation();
-      e.preventDefault();
-
-      $scope.isOpen = !$scope.isOpen;
-      if ($scope.display === 'none') {
-        $scope.display = 'block';
-      } else {
-        $scope.display = 'none';
-      }
-    };
-  };
-  NavItemCtrl.$inject = ['$scope', 'NavHelper'];
-
-  return {
-    NavCtrl: NavCtrl,
-    NavItemCtrl: NavItemCtrl
-  };
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.less b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.less
deleted file mode 100644 (file)
index e22014a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-#page-wrapper {
-  min-height: 0px !important;
-}
-
-.btn-orange {
-  background-color: orange;
-}
-
-.error {
-  color: Red;
-}
-
-html, body, #page-wrapper, #main-content-container{
-  height: 100%;
-}
-
-.footable {
-  margin-top: 25px;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.module.js
deleted file mode 100644 (file)
index e3c0627..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-define(['angular', './navigation.controller', './navigation.services', 'app/core/core.module',
-  'Restangular', 'common/config/env.module'], function (angular, controller, services) {
-
-  'use strict';
-  var nav = angular.module('app.common.nav', ['app.core', 'restangular', 'config']);
-
-  nav.config(function (NavHelperProvider) {
-    NavHelperProvider.addToView('src/common/navigation/navigation.tpl.html');
-    NavHelperProvider.addControllerUrl('common/navigation/navigation.controller');
-  });
-
-  // controllers
-  nav.controller('NavCtrl', controller.NavCtrl);
-  nav.controller('NavItemCtrl', controller.NavItemCtrl);
-
-  // services
-  nav.factory('MDSalRestangular', services.MDSalRestangular);
-
-  return nav;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.services.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.services.js
deleted file mode 100644 (file)
index 33db13a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-define([], function () {
-  'use strict';
-
-  var MDSalRestangular = function (Restangular, ENV) {
-    return Restangular.withConfig(function (RestangularConfig) {
-      RestangularConfig.setBaseUrl(ENV.getBaseURL('MD_SAL'));
-    });
-  };
-  MDSalRestangular.$inject = ['Restangular', 'ENV'];
-
-  return {
-    MDSalRestangular: MDSalRestangular
-  };
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.spec.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.spec.js
deleted file mode 100644 (file)
index db4e4b1..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-define(['common/navigation/navigation.module', 'angular-ui-router',], function () {
-  describe('Navigation Module', function () {
-    var scope, NavHelperMock, EventMock, controller;
-
-    beforeEach(angular.mock.module('ui.router'));
-    beforeEach(module('app.core', function ($provide) {
-      function NavHelperProvider() {
-        this.addToView = function (url) {};
-        this.addControllerUrl = function (url) {};
-        this.$get = function NavHelperFactory() {
-          return new NavHelperProvider();
-        };
-      }
-      $provide.provider('NavHelper', NavHelperProvider);
-    }));
-
-    beforeEach(module('app.common.nav'));
-
-    beforeEach(inject(function ($rootScope, $controller) {
-      scope = $rootScope.$new();
-      controller = $controller;
-
-      NavHelperMock = {
-        getMenu: function () {
-          return {
-            "id": "",
-            "title": "",
-            "active": "",
-            "submenu": ""
-          };
-        }
-      };
-
-      EventMock = {
-        stopPropagation: function () {
-          return null;
-        },
-        preventDefault: function () {
-          return null;
-        }
-      };
-
-    }));
-
-    it('Should have receive all menu items', function () {
-      spyOn(NavHelperMock, 'getMenu').andCallThrough();
-      controller('NavCtrl', {
-        $scope: scope,
-        NavHelper: NavHelperMock
-      });
-
-      expect(NavHelperMock.getMenu).toHaveBeenCalled();
-      expect(scope.navList).toBeDefined();
-    });
-
-    it('Should have create utility methods to show and hide submenu', function () {
-      controller('NavItemCtrl', {
-        $scope: scope,
-        NavHelper: NavHelperMock
-      });
-
-      expect(scope.display).toEqual('none');
-      expect(scope.isOpen).toBeFalsy();
-
-      expect(scope.isValid).toBeDefined();
-      expect(scope.updateTemplate).toBeDefined();
-    });
-
-    it('Should look if a item exist or not', function () {
-      controller('NavItemCtrl', {
-        $scope: scope,
-        NavHelper: NavHelperMock
-      });
-      var item = {};
-
-      expect(scope.isValid(item)).toBeTruthy();
-      expect(scope.isValid(null)).toBeFalsy();
-    });
-
-    it('Should toggle the status of the item scope', function () {
-      spyOn(EventMock, 'stopPropagation').andCallThrough();
-      spyOn(EventMock, 'preventDefault').andCallThrough();
-      controller('NavItemCtrl', {
-        $scope: scope,
-        NavHelper: NavHelperMock
-      });
-
-      var initOpen = scope.isOpen;
-      var initDisplay = scope.display;
-
-      scope.updateTemplate(EventMock, {});
-      expect(scope.isOpen).not.toEqual(initOpen);
-      expect(scope.display).not.toEqual(initDisplay);
-
-      scope.updateTemplate(EventMock, {});
-      expect(scope.isOpen).toEqual(initOpen);
-      expect(scope.display).toEqual(initDisplay);
-
-      expect(EventMock.stopPropagation.calls.length).toEqual(2);
-      expect(EventMock.preventDefault.calls.length).toEqual(2);
-    });
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/navigation/navigation.tpl.html
deleted file mode 100644 (file)
index d1053ac..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-<div class="sidebar-collapse">
-  <ul id="side-menu" class="nav">
-    <li ng-class="{ active: (isState(item.active) && !isValid(item.submenu))}" ng-controller="NavItemCtrl" ng-repeat="item in navList" ng-include="'src/common/navigation/nav_item_template.tpl.html'" ng-type="{{item.id}}">
-    </li>
-  </ul>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/messages.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/messages.tpl.html
deleted file mode 100644 (file)
index b637cba..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<li class="dropdown">
-    <a data-toggle="dropdown" class="dropdown-toggle" href="">
-        <i class="icon-envelope icon-animated-vertical"></i>
-    </a>
-    <ul class="dropdown-menu dropdown-messages">
-        <li ng-repeat="message in messages.latest">
-            <a href="#">
-               <!-- <img src="/avatars/{{message.img}}" class="msg-photo" alt="{{message.name}}'s Avatar"> Do not need it for now -->
-               <div>
-                    <strong>{{message.name}}</strong>
-                    <span class="pull-right text-muted">
-                        <em>{{message.time}}</em>
-                    </span>
-                </div>
-                <div>{{message.summary}}</div>
-            </a>
-        </li>
-
-        
-        <li>
-            <a href="#" class="text-center">
-                <strong>Read All Messages</strong>
-                <i class="icon-arrow-right"></i>
-            </a>
-        </li>
-
-    </ul>
-</li>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/notifications.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/notifications.tpl.html
deleted file mode 100644 (file)
index cefa739..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<li class="dropdown">
-    <a data-toggle="dropdown" class="dropdown-toggle" href="">
-        <i class="icon-bell-alt icon-animated-bell"></i>
-        <span class="badge badge-important">{{ notifs.count }}</span>
-    </a>
-    <ul class="dropdown-menu dropdown-alerts">
-        <li ng-repeat="notif in notifs.latest">
-            <a href="#">
-                
-                <div>
-                    <i class="btn btn-xs no-hover {{notif.iconClass}} {{notif.icon}}"></i>{{notif.title}}
-                    <span class="pull-right text-muted small">4 minutes ago</span>                 
-                </div>
-            </a>
-        </li>
-
-
-        <li>
-            <a href="#" class="text-center">
-                <strong>See all notifications</strong>
-                <i class="icon-arrow-right"></i>
-            </a>
-        </li>
-    </ul>
-</li>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/tasks.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/tasks.tpl.html
deleted file mode 100644 (file)
index 01a47e0..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<li class="grey">
-    <a data-toggle="dropdown" class="dropdown-toggle" href="">
-        <i class="icon-tasks"></i>
-        <span class="badge badge-grey">{{ tasks.count }}</span>
-    </a>
-
-    <ul class="dropdown-menu dropdown-tasks">
-        <li ng-repeat="task in tasks.latest">
-            <a href="#">
-                <div>
-                    <p><strong>{{ task.title }}</strong>
-                    <span class="pull-right text-muted">{{ task.percentage }}%</span></p>
-                </div>
-                <div class="progress progress-striped active">
-
-                    <div class="progress progress-mini {{task.progressClass}}">
-                        <div style="width:{{task.percentage}}%" aria-valuemax="100" aria-valuemin="0" aria-valuenow="{{task.percentage}}" role="progressbar" class="progress-bar {{task.progressBarClass}}">
-                            <span class="sr-only">{{task.percentage}}% Complete</span>
-                        </div>
-                    </div>
-                </div>
-            </a>
-        </li>
-
-        <li>
-            <a href="#">
-                See tasks with details
-                <i class="icon-arrow-right"></i>
-            </a>
-        </li>
-    </ul>
-</li>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.controller.js
deleted file mode 100644 (file)
index 81e9616..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-define(['common/topbar/topbar.module', 'common/topbar/topbar.directives', 'common/authentification/auth.services'], function(topbar) {
-
-    topbar.controller('TopbarCtrl', function() {
-        $('#toggleMenu').click(function(e) {
-            e.preventDefault();
-            $('#wrapper').toggleClass('toggled');
-        });
-    });
-
-    topbar.controller('topBarTasksCtrl', function($scope, taskFactory) {
-        $scope.tasks = taskFactory.getTaskData();
-    });
-
-    topbar.controller('topBarNotifsCtrl', function($scope, notifsFactory) {
-        $scope.notifs = notifsFactory.getNotifsData();
-        $scope.isValid = function(value) {
-            if (angular.isUndefined(value) || value === null) {
-                return false;
-            } else {
-                return true;
-            }
-        };
-    });
-
-    topbar.controller('topBarMessagesCtrl', function($scope, messageFactory) {
-        $scope.messages = messageFactory.getMessageData();
-        $scope.isValid = function(value) {
-            if (angular.isUndefined(value) || value === null) {
-                return false;
-            } else {
-                return true;
-            }
-        };
-    });
-
-    // the authorization module is not converted yet
-    topbar.controller('topBarUserMenuCtrl', function($scope, $cookieStore, Auth, $window) {
-        $scope.logOut = logout;
-
-        /**
-         * Provides logout from application and redirects to login page
-         * @return {[type]} [description]
-         */
-        function logout() {
-            Auth.logout(function() {
-                $window.location.href = 'index.html#/login';
-            });
-        }
-
-        $scope.getUsername = function() {
-            return $window.localStorage.odlUser;
-        };
-    });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.directives.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.directives.js
deleted file mode 100644 (file)
index f29e3c5..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-define(['common/topbar/topbar.module'], function(topbar) {
-   topbar.directive('mcTopBar', function () {
-        return {
-            replace: true,
-            templateUrl: 'topbar/topbar.tpl.html',
-        };
-    });
-
-    topbar.directive('mcTopBarTasks', function () {
-        return {
-            replace: true,
-            controller: 'topBarTasksCtrl',
-            templateUrl: 'topbar/tasks.tpl.html'
-        };
-    });
-
-    topbar.directive('mcTopBarNotifications', function () {
-        return {
-            replace: true,
-            controller: 'topBarNotifsCtrl',
-            templateUrl: 'topbar/notifications.tpl.html'
-        };
-    });
-
-    topbar.directive('mcTopBarMessages', function () {
-        return {
-            replace: true,
-            controller: 'topBarMessagesCtrl',
-            templateUrl: 'topbar/messages.tpl.html'
-        };
-    });
-
-    topbar.directive('mcTopBarUserMenu', function () {
-        return {
-            replace: true,
-            controller: 'topBarUserMenuCtrl',
-            templateUrl: 'src/common/topbar/user_menu.tpl.html'
-        };
-    });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.less b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.less
deleted file mode 100644 (file)
index dadf0a6..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-#toggleMenu {
-    display:block;
-    text-align: right;
-    padding:9px;
-    color:white !important;
-}
-
-#toggleMenu:focus, #toggleMenu:hover  {
-    background-color: inherit; 
-}
-
-#wrapper.toggled {
-    padding-left: 0;
-}
-
-#wrapper.toggled #sideMenu {
-    width:0;
-}
-
-#wrapper.toggled #sideMenu ul {
-    display:none;
-}
-
-div > nav.navbar {
-  margin-bottom:0;
-}
-
-#logout-button {
-       color: #ffffff !important;
-       padding: 9px !important;
-       min-height: 0;
-}
-
-#logout-button:hover, #logout-button:active, #logout-button:focus {
-       background-color: inherit !important;
-}
-
-.navbar-top-links * {
-       vertical-align: middle;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.module.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.module.js
deleted file mode 100644 (file)
index 5bb0ba9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-define(['angularAMD', 'angular-cookies', 'app/core/core.services'], function(ng) {
-  var topbar = angular.module('app.common.topbar', ['ngCookies', 'app.core']);
-
-  topbar.config(function($compileProvider, TopBarHelperProvider) {
-
-    TopBarHelperProvider.addToView('src/common/topbar/topbar.tpl.html');
-    TopBarHelperProvider.addControllerUrl('common/topbar/topbar.controller');
-  });
-
-  return topbar;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.services.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.services.js
deleted file mode 100644 (file)
index 6a6ba88..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-define(['common/topbar/topbar.module'], function(topbar) {
-    topbar.factory('taskFactory',function () {
-        var factory = {};
-        factory.getTaskData = function () {
-            return {
-                count: 4,
-                latest: [
-                    {
-                        title: "Software Update",
-                        percentage: 65
-                    },
-                    {
-                        title: "Hardware Upgrade" ,
-                        percentage: 35 ,
-                        progressBarClass: "progress-bar-danger"
-                    },
-                    {
-                        title: "Unit Testing" ,
-                        percentage: 15  ,
-                        progressBarClass: "progress-bar-warning"
-                    },
-                    {
-                        title: "Bug Fixes" ,
-                        percentage: 90 ,
-                        progressClass: "progress-striped active",
-                        progressBarClass: "progress-bar-success"
-                    }
-                ]
-            };
-
-        };
-        return factory;
-    });
-
-    topbar.factory('messageFactory', function () {
-        var factory = {};
-        factory.getMessageData = function () {
-            return {
-                count: 5,
-                latest: [
-                    {
-                        name: "Alex",
-                        img: "avatar.png",
-                        time: "a moment ago",
-                        summary: "Ciao sociis natoque penatibus et auctor ..."
-                    },
-                    {
-                        name: "Susan",
-                        img: "avatar3.png",
-                        time: "20 minutes ago",
-                        summary: "Vestibulum id ligula porta felis euismod ..."
-                    },
-                    {
-                        name: "Bob",
-                        img: "avatar4.png",
-                        time: "3:15 pm",
-                        summary: "Nullam quis risus eget urna mollis ornare ..."
-                    }
-                ]
-            };
-        };
-        return factory;
-    });
-
-    topbar.factory('notifsFactory', function () {
-        var factory = {};
-        factory.getNotifsData = function () {
-            return {
-                "count": 8,
-                "latest": [
-                    {
-                        title: "New Comments",
-                        icon: "icon-comment",
-                        iconClass: "btn-pink",
-                        badge: "+12",
-                        badgeClass: "badge-info"
-                    },
-                    {
-                        title: "Bob just signed up as an editor ...",
-                        icon: "icon-user",
-                        iconClass: "btn-primary"
-                    },
-                    {
-                        title: "New Orders",
-                        icon: "icon-shopping-cart",
-                        iconClass: "btn-success",
-                        badge: "+8",
-                        badgeClass: "badge-success"
-                    },
-                    {
-                        title: "Followers",
-                        icon: "icon-twitter",
-                        iconClass: "btn-info",
-                        badge: "+11",
-                        badgeClass: "badge-info"
-                    }
-                ]
-            };
-
-        };
-        return factory;
-    });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/topbar.tpl.html
deleted file mode 100644 (file)
index 8fcb6ef..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<nav class="navbar navbar-default navbar-static-top" role="navigation">
- <!-- the script for the resizing was here -->
-
-
-<img id="logo_opendaylight" src="assets/images/logo_opendaylight.gif" class="img-responsive-v1" border="0" alt="OpenDayLight" /><img id="logo_opendaylight_white" src="assets/images/logo_opendaylight_white.gif" class="img-responsive-v1" border="0" alt="OpenDayLight" /><img ng-src="{{section_logo}}"  id="page_logo" class="img-responsive-v1" border="0" alt="OpenDayLight" />
-
-<div style="background-color:red;display:inline;width:100%;"></div>
-
-      <ul class="nav navbar-top-links navbar-right">
-            <li><a id="toggleMenu" class="btn" href="#"><i class="icon-reorder icon-2x"></i></a></li>
-            <!--<img src="assets/images/User.png" class="right-topbar" border="0" alt="OpenDayLight" />
-            <img src="assets/images/Info.png" class="right-topbar" border="0" alt="OpenDayLight" />
-            <img src="assets/images/OSGI.png" class="right-topbar" border="0" alt="OpenDayLight" />-->
-            <!-- for now no image since we dont use them.... -->
-            <!--
-            Don't need them for now...
-            <div data-mc-top-bar-tasks></div>
-            <div data-mc-top-bar-notifications></div>
-            <div data-mc-top-bar-messages></div>
-            -->
-            <div data-mc-top-bar-user-menu></div>
-      </ul><!-- /.ace-nav -->
-
-
-</nav>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/user_menu.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/common/topbar/user_menu.tpl.html
deleted file mode 100644 (file)
index d8be4aa..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<li data-ng-click="logOut()"><a href="#" id="logout-button" class="btn"><i class="icon-off"></i> Logout ({{getUsername()}})</a></li>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/index.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/index.html
deleted file mode 100644 (file)
index ce4e260..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-<!DOCTYPE html>
-<html lang="en">
-  <head>
-    <meta charset="utf-8" />
-    <title>OpenDaylight Dlux</title>
-
-    <meta name="description" content="overview &amp; stats" />
-    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <script type="text/javascript">
-        // global variables
-
-    </script>
-
-    <!-- HTML5 shim and Respond.js IE8 support of HTML5 elements and media queries -->
-
-    <!--[if lt IE 9]>
-    <script src="assets/js/html5shiv.js"></script>
-    <script src="assets/js/respond.min.js"></script>
-    <![endif]-->
-
-    <!-- compiled CSS -->
-    <link rel="stylesheet" type="text/css" href="vendor/ng-grid/ng-grid.min.css" />
-    <link rel="stylesheet" type="text/css" href="vendor/select2-bootstrap-css/select2-bootstrap.css" />
-    <link rel="stylesheet" type="text/css" href="vendor/footable/css/footable.core.min.css" />
-    <link rel="stylesheet" type="text/css" href="vendor/footable/css/footable.standalone.min.css" />
-    <link rel="stylesheet" type="text/css" href="vendor/vis/dist/vis.min.css" />
-    <link rel="stylesheet" type="text/css" href="vendor/ng-slider/dist/css/ng-slider.min.css" />
-    <link rel="stylesheet" type="text/css" href="vendor/angular-material/angular-material.css" />
-    <link rel="stylesheet" type="text/css" href="vendor/material-design-icons/iconfont/material-icons.css" />
-    <link rel="stylesheet" type="text/css" href="assets/opendaylight-dlux-0.2.0.css" />
-    <link rel="stylesheet" href="assets/css/sb-admin.css" />
-
-    <script type="text/javascript" data-main="src/main.js" src="vendor/requirejs/require.js"></script>
-
-    <link rel="stylesheet" href="assets/css/font-awesome.min.css" />
-    <!-- the font-awesome is different from the 'official' one -->
-    <!-- application CSS -->
-  </head>
-
-  <body class="skin-3">
-    <div ui-view="mainContent" id="main-content-container"></div>
-  </body>
-</html>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/design.less b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/design.less
deleted file mode 100644 (file)
index 467bbc5..0000000
+++ /dev/null
@@ -1,190 +0,0 @@
-.menu-sidebar, html {
-       height: 100%;
-       background-color: #808285;
-}
-
-.menu-sidebar{
-    height: auto;
-    min-height: calc(~'100% - 61px');
-}
-
-.navbar-static-side ul li {
-       border-bottom: none !important;
-}
-
-a {
-       color: #414042 /*!important*/;
-}
-
-li.active {
-       background-color: #414042 !important;
-       a {
-               color: white !important;
-       }
-}
-
-#page-wrapper {
-       background-color: #414042 !important;
-       border-left: none !important;
-}
-
-.nav .active a {
-       background: none !important;
-}
-
-.menu {
-       background: none !important;
-}
-
-.nav.nav-pills {
-       li a {
-               color: white !important;
-       }
-       li.active {
-               background-color: orange !important;
-       }
-}
-
-.form-group label {
-       color: white;
-}
-
-.select2-choice, .select2-choices {
-       background-color: #58595B !important;
-}
-
-
-.img-responsive-v1 {
- height: auto;
- max-width: 100%;
-}
-
-.btn-orange {
-       background-color: orange;
-}
-h1, h2, h3, h4, h5, h6 {
-       color: white;
-}
-
-#logo_flows {
-       background-image: url('images/logo_flows1.gif');
-}
-
-.footable {
-       border: none;
-}
-
-
-.footable > thead > tr > th {
-  background-color: orange;
-  background-image: none;
-  border: none;
-  box-shadow: none;
-}
-
-.add-row {
-       background-color: orange;
-       border: none;
-       &:hover {
-               background-color: rgb(211, 84, 0);
-       }
-}
-
-.nav.nav-pills li a:hover {
-       color: black !important;
-}
-
-.menu ul {
-       border-bottom: 1px solid #939598 !important
-}
-
-.form-group {
-       input {
-               border: 1px solid #939598;
-       }
-}
-
-.select2-choice {
-       border: 1px solid #939598 !important;
-}
-
-#red {
-       height: 6px;
-       width: 100%;
-       background-color: #EE2E24;
-}
-
-#gray {
-       height: 6px;
-       width: 100%;
-       background-color: #58585A;
-}
-
-.navbar {
-       min-height: 0px;
-}
-
-.navbar {
-       border-bottom: none !important;
-       background-color: black !important;
-}
-@media all and (max-width: 462px) {
-
-       .navbar {
-       border-bottom: none !important;
-       background-color: #F3F3F4 !important;
-}
-   #page_logo {
-               display: none;
-   }
-
-   #logo_opendaylight {
-               display: none !important;
-       }
-
-       #logo_opendaylight_white {
-               display: inline !important;
-       }
-}
-
-.opendaylight_logo {
-       background-image: url(images/logo_opendaylight_white.gif);
-       height: 34px;
-       width: 127px;
-       background-repeat: no-repeat;
-}
-
-       #logo_opendaylight_white {
-               display: none;
-       }
-
-       #logo_opendaylight {
-               display: inline;
-       }
-
-.right-topbar {
-       margin-right: 5px;
-       margin-left: 5px;
-}
-
-.select2-drop-active {
-background-color: #58595B;
-}
-
-#page-wrapper {
-       padding-left: 15px !important;
-       padding-right: 15px !important;
-}
-
-.content-row {
-       background-color: #414042 !important;
-}
-.detail-page {
-       tr th, tr td {
-               color: white;
-       }
-}
-
-.white-detail-page {
-       color: white;
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/main.less b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/main.less
deleted file mode 100644 (file)
index 9fdfdd2..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/**\r
- * This is the main application stylesheet. It should include or import all\r
- * stylesheets used throughout the application as this is the only stylesheet in\r
- * the Grunt configuration that is automatically processed.\r
- */\r
-\r
-\r
-/**\r
- * First, we include the Twitter Bootstrap LESS files. Only the ones used in the\r
- * project should be imported as the rest are just wasting space.\r
- */\r
-@import '../../vendor/bootstrap/less/mixins.less';\r
-@import '../../vendor/bootstrap/less/bootstrap.less';\r
-\r
-\r
-@import 'mixins.less'; /** this one comes from the template */\r
-\r
-/**\r
- * This is our main variables file. It in turn imports the `variables` file from\r
- * Twitter Bootstrap. We must include it last so we can overwrite any variable\r
- * definitions in our imported stylesheets.\r
- */\r
-\r
-@import 'variables.less';\r
-\r
-\r
-/**\r
- * Typography\r
- */\r
-\r
-@font-face {\r
-  font-family: 'Roboto';\r
-  font-style: normal;\r
-  font-weight: 400;\r
-  src: local('Roboto Regular'), local('Roboto-Regular'), url(fonts/Roboto-Regular.woff) format('woff');\r
-}\r
-\r
-code, pre, .pre {\r
-  padding: 5px;\r
-  margin: 10px 0;\r
-  background-color: #EFEFEF;\r
-  border: 1px solid #DADADA;\r
- // .border-radius(3px);\r
-}\r
-\r
-code {\r
-  padding: 0 3px;\r
-}\r
-\r
-pre {\r
-  margin: 10px 0;\r
-  padding: 5px;\r
-}\r
-\r
-.page-header {\r
-  margin-top: 60px;\r
-\r
-  &:first-child {\r
-    margin-top: 20px;\r
-  }\r
-}\r
-\r
-h2 {\r
-  margin: 20px 0;\r
-  color: #666;\r
-}\r
-\r
-.main {\r
-  position: relative;\r
-}\r
-\r
-/**\r
- * Navigation\r
- */\r
-\r
-\r
-\r
-/**\r
- * Footer\r
- */\r
-\r
-.footer {\r
-  margin-top: 80px;\r
-\r
-  .footer-inner {\r
-    padding: 40px 0;\r
-    border-top: 1px solid #DDD;\r
-  }\r
-\r
-  .social {\r
-    float: right;\r
-    margin: 0;\r
-    list-style: none;\r
-\r
-    li {\r
-      float: left;\r
-      margin-left: 20px;\r
-\r
-      a, a:visited {\r
-    //    color: @grayLight;\r
-        text-decoration: none;\r
-        font-size: 40px;\r
-        .transition( 250ms ease-in-out );\r
-\r
-        &:hover {\r
-        //  color: @gray;\r
-        }\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-.remove-padding {\r
-  padding: 0px !important;\r
-}\r
-\r
-\r
-/**\r
- * Now that all app-wide styles have been applied, we can load the styles for\r
- * all the submodules and components we are using.\r
- *\r
- * TODO: In a later version of this boilerplate, I'd like to automate this.\r
- */\r
-\r
-@import 'design.less';\r
-@import 'other.less';\r
-@import '../common/navigation/navigation.less';\r
-@import '../common/login/login.less';\r
-@import '../common/topbar/topbar.less';\r
-@import '../assets/js/codemirror/lib/codemirror.less';\r
-@import '../assets/js/codemirror/theme/eclipse.less';\r
-@import '../assets/js/codemirror/theme/eclipse-disabled.less';\r
-@import '../assets/js/codemirror/addon/hint/show-hint.less';\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/mixins.less b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/mixins.less
deleted file mode 100644 (file)
index b886f7e..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-.border-radius(@r) {
- border-radius: @r;
-}
-
-//transform
-.transform(@transformation) {
-       -moz-transform:@transformation;
-       -webkit-transform:@transformation;
-       -o-transform:@transformation;
-       -ms-transform:@transformation;
-       transform:@transformation;
-}
-.transform-origin(@origin) {
-  -moz-transform-origin:@origin;
-  -webkit-transform-origin:@origin;
-  -o-transform-origin:@origin;
-  -ms-transform-origin:@origin;
-  transform-origin:@origin;
-}
-
-
-//animation
-.animation(@params) {
-  -moz-animation:@params;
-  -webkit-animation:@params;
-  -o-animation:@params;
-  -ms-animation:@params;
-  animation:@params;
-}
-
-.animation-duration(@duration:1s) {
-  -moz-animation-duration:@duration;
-  -webkit-animation-duration:@duration;
-  -o-animation-duration:@duration;
-  -ms-animation-duration:@duration;
-  animation-duration:@duration;
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/other.less b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/other.less
deleted file mode 100644 (file)
index dd00239..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-/* other page sections */
-
-
-.ace-settings-container {
- position:absolute;
- right:0; top:50px;
- z-index:12;
-
- .breadcrumbs-fixed & {
-       top:50px - (@breadcrumb-height);
- }
-}
-.btn.ace-settings-btn {
- float:left;
- display:inline-block; 
- width:42px !important;
- text-align:center;
-
- .border-radius(~"6px 0 0 6px") !important;
- .opacity(0.55);
-
- vertical-align:top;
- margin:0;
- &:hover , &.open {
-       .opacity(1);
- }
-
-}
-
-.ace-settings-box {
- display:none;
- float:left;
- width:175px; padding:0 14px;
- background-color:#FFF;
-
- border:2px solid @ace-settings-box-border;
- &.open {
-       display:inline-block;
- }
- > div {
-       margin:6px 0;
-       color:#444;
-       max-height:24px;
-       > label {
-               font-size:13px;
-       }
- }
-
-}
-
-
-
-
-
-.btn-scroll-up {
-  border:none;
-  position:absolute;
-  right:2px;
-  bottom:2px;
-  z-index:11;
-}
-@media (min-width: @screen-tablet) {
- .main-container.container > .btn-scroll-up {
-       right: auto;
-       margin-left: @container-tablet - 36;
- }
-}
-@media (min-width: @screen-desktop) {
- .main-container.container > .btn-scroll-up {
-       right: auto;
-       margin-left: @container-desktop - 36;
- }
-}
-@media (min-width: @screen-lg-desktop) {
- .main-container.container > .btn-scroll-up {
-       right: auto;
-       margin-left: @container-lg-desktop - 36;
- }
-}
-
-
-
-
-
-
-.grid2, .grid3, .grid4 {
-       .box-sizing(border-box);
-       display:block;
-       margin:0;
-       float:left;
-
-       border-left:1px solid #E3E3E3;
-       &:first-child {
-               border-left:none;
-       }
-}
-
-.grid2 {
-       width:48%;
-       padding:0 2%;
-}
-
-
-.grid3 {
-       width:33%;
-       padding:0 2%;
-}
-
-.grid4 {
-       width:23%;
-       margin:0 1%; padding:0 1%;
-}
-
-
-.draggable-placeholder { /* for when dragging items around */
-  border:2px dashed #D9D9D9 !important;
-  background-color:#F7F7F7 !important;
-}
-
-/* scrollbar */
-.slimScrollBar  { .border-radius(0) !important; }
-.slimScrollRail { .border-radius(0) !important; }
-
-
-
-/* date & time picker */
-.datepicker , .daterangepicker  {
-       td , th { .border-radius(0) !important; font-size: 13px; }
-       
-       td.active {
-         & , &:hover { background:@datepicker-active-bg !important; }
-         
-         &.disabled {
-               & , &:hover { background:@datepicker-disabled-bg !important; }
-         }
-       }
-}
-.datepicker {
- td , th { min-width: 32px; }
-}
-
-.datepicker-months .month , .datepicker-years .year {
-  border-radius:0 !important;
-}
-.datepicker-months .month.active , .datepicker-years .year.active {
-  & , &:hover , &:focus, &:active {
-         background-image:none !important;
-         background-color:@datepicker-active-bg !important;
-  }
-}
-.bootstrap-timepicker-widget table td input {
-       width:32px;
-}
-
-
-
-.bootstrap-timepicker-widget table td a:hover {
-       .border-radius(0);
-}
-
-.well .datepicker table tr td.day:hover {
-       background-color:@datepicker-active-bg2;
-       color:#FFF;
-}
-
-
-
-
-
-/* a few small third party css files put here to reduce http file requests */
-/* jquery.easy-pie-chart.css */
-.easyPieChart {
-    position: relative;
-    text-align: center;
-       
-       canvas {
-               position: absolute;
-               top: 0;
-               left: 0;
-       }
-}
-
-.knob-container {
-       direction:ltr;
-       text-align:left;
-}
-
-
-
-
-
-/* ie8/9 specific */
-.navbar .navbar-inner , .navbar .btn-navbar {
-       filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important;
-}
-.dropdown-menu li > a,
-.dropdown-submenu > a  {
-       filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important;
-}
-.btn {
-       filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important;
-}
-.progress , .progress .bar {
-       filter:progid:DXImageTransform.Microsoft.gradient(enabled=false) !important;
-}
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/variables.less b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/less/variables.less
deleted file mode 100644 (file)
index a5ccaea..0000000
+++ /dev/null
@@ -1,442 +0,0 @@
-/**
- * These are the variables used throughout the application. This is where 
- * overwrites that are not specific to components should be maintained.
- */
-
-@import '../../vendor/bootstrap/less/variables.less';
-
-
-/**
- * Typography-related.
- */
-
-@sansFontFamily: 'Roboto', sans-serif;
-
-
-
-/*
- * Other variables
- */
-@ace-settings-box-border:#FFB34B;
-@datepicker-active-bg:#2283C5;
-@datepicker-disabled-bg:#8B9AA3;
-@datepicker-active-bg2:#7D8893;//inside .well
-
-
-/**
- * Breadcrumbs-related
- */
-//some breadcrumbs variables
-@breadcrumb-bg:#F5F5F5;
-@breadcrumb-border:#E5E5E5;
-@breadcrumb-text-color:#555;
-@breadcrumb-link-color:#4C8FBD;
-
-@breadcrumb-separator:"\f105";//font awesome icon
-
-
-/**
-* Navigation-related
-*/
-@sidebar-bg:#F2F2F2;
-@sidebar-border-right:#CCC;
-
-//@menu-active-color:#0B6CBC;
-
-@menu-bg:#F9F9F9;
-@menu-color:#585858;
-@menu-hover-indicator:#3382AF;
-@menu-subarrow-color:#666;
-@menu-open-bg:#FAFAFA;
-@menu-active-bg:#FFF;
-
-@submenu-border:#E5E5E5;
-@submenu-bg:#FFF;
-@submenu-item-color:#616161;
-@submenu-item-border:#E4E4E4;
-@submenu-item-hover:#4B88B7;
-@submenu-item-active-icon:#C86139;
-
-
-@3rd-level-icon-color:#6A7D87;
-@submenu-left-border-style:dotted;
-
-//@submenu-left-border:#CCD7E2;
-//@submenu-active-left-border:#BCCFE0;
-
-
-
-@menumin-btn-bg:#F3F3F3;
-@menumin-btn-border:#E0E0E0;
-@menumin-icon-color:#AAA;
-@menumin-icon-border:#BBB;
-@menumin-icon-bg:#FFF;
-@menumin-bg:#F5F5F5;
-
-@menumin-text-border:#DDD;
-@menumin-shadow:~"2px 1px 2px 0 rgba(0,0,0,0.2)";
-
-@shortcuts-bg:#FAFAFA;
-@shortcuts-border:#DDD;
-
-
-
-
-//basic variables
-@baseFontSize:13px;
-@sansFontFamily:"Open Sans";
-
-@screen-xs-min:              (@screen-xs + 1);//!ignore
-@screen-sm-min:              (@screen-sm + 1);//!ignore
-@screen-md-min:              (@screen-md + 1);//!ignore
-@screen-lg-min:              (@screen-lg + 1);//!ignore
-@screen-topbar-down:         460px;//The point to move top menu buttons down in default layout
-@screen-topbar-down-min:       (@screen-topbar-down + 1);//!ignore
-
-@screen-tiny:  320px;//!ignore
-
-
-//general.less variables
-@body-bg:#E4E6E9;
-@text-color:#393939;
-
-
-//ace top nav/bar
-@navbar-mh:45px;//navbar's min-height
-@navbar-bg:#438EB9;//navbar background color
-@navbar-text-color:#FFF;
-@brand-size:24px;//brand logo text size
-
-@ace-nav-default:#2E6589;//ace nav button default background color
-@ace-nav-grey:#555;//ace nav button grey background color
-@ace-nav-purple:#892E65;//ace nav button purple background color
-@ace-nav-green:#2E8965;
-@ace-nav-red:#B74635;
-@ace-nav-light-green:#9ABC32;
-@ace-nav-light-purple:#CB6FD7;
-@ace-nav-light-orange:#F79263;
-@ace-nav-light-blue:#62A8D1;
-@ace-nav-light-blue2:#42A8E1;
-@ace-nav-light-pink:#F4DAE5;
-@ace-nav-dark:#404040;
-@ace-nav-white-opaque:rgba(255,255,255,0.8);
-@ace-nav-dark-opaque:rgba(0,0,0,0.2);
-
-@navbar-dropdown-width:240px;
-@navbar-dropdown-shadow:~"0 2px 4px rgba(30, 30, 100, 0.25)";
-
-
-
-//sidebar
-@menu-button-text: "MENU";
-
-@sidebar-width:190px;//sidebar width
-@sidebar-min-width:43px;//sidebar minimum width
-@menu-focus-color:#1963AA;
-@menu-active-color:#2B7DBC;
-
-@submenu-left-border:mix(#BCCFE0 , #7EAACB);
-@submenu-active-left-border:mix(mix(#BCCFE0 , #7EAACB) , #7EAACB);
-
-@menumin-border:#CCC;
-
-
-
-//breadcrumb
-@breadcrumb-height:41px;
-@breadcrumb-arrow-color:#B2B6BF;
-
-
-
-// heading font size
-@h1-size: 32;
-@h2-size: 26;
-@h3-size: 22;
-@h4-size: 18;
-@h5-size: 15;
-@h6-size: 13;
-
-
-
-
-//some text colors
-@ace-dark:#333;
-@ace-white:#FFF;
-@ace-red:#DD5A43;
-@ace-light-red:#FF7777;
-@ace-blue:#478FCA;
-@ace-light-blue:#93CBF9;
-@ace-green:#69AA46;
-@ace-light-green:#B0D877;
-@ace-orange:#FF892A;
-@ace-orange2:#FEB902;
-@ace-light-orange:#FCAC6F;
-@ace-purple:#A069C3;
-@ace-pink:#C6699F;
-@ace-pink2:#D6487E;
-@ace-brown:brown;
-@ace-grey:#777;
-@ace-light-grey:#BBB;
-
-
-
-
-//button colors
-@btn-default:#ABBAC3;
-@btn-default-hover:#8B9AA3;
-
-@btn-primary:#428BCA;
-@btn-primary-hover:#1B6AAA;
-
-@btn-info:#6FB3E0;
-@btn-info-hover:#4F99C6;
-
-@btn-success:#87B87F;
-@btn-success-hover:#629B58;
-
-@btn-warning:#FFB752;
-@btn-warning-hover:#E59729;
-
-@btn-danger:#D15B47;
-@btn-danger-hover:#B74635;
-
-@btn-inverse:#555555;
-@btn-inverse-hover:#303030;
-
-@btn-pink:#D6487E;
-@btn-pink-hover:#B73766;
-
-@btn-purple:#9585BF;
-@btn-purple-hover:#7461AA;
-
-@btn-yellow:#FEE188;
-@btn-yellow-hover:#F7D05B;
-@btn-yellow-color:#996633;
-
-@btn-light:#E7E7E7;
-@btn-light-hover:#D9D9D9;
-@btn-light-color:#888;
-
-@btn-grey:#A0A0A0;
-@btn-grey-hover:#888888;
-
-//active state:
-@btn-active-color:#EFE5B5;
-@btn-yellow-active-border:#C96338;
-
-@btn-link-color:#0088CC;
-
-
-
-
-//application button colors
-@btn-app-default-1:#BCC9D5;
-@btn-app-default-2:#ABBAC3;
-
-@btn-app-primary-1:#3B98D6;
-@btn-app-primary-2:#197EC1;
-
-@btn-app-info-1:#75B5E6;
-@btn-app-info-2:#5BA4D5;
-
-@btn-app-success-1:#8EBF60;
-@btn-app-success-2:#7DAA50;
-
-@btn-app-danger-1:#D55B52;
-@btn-app-danger-2:#D12723;
-
-@btn-app-warning-1:#FFBF66;
-@btn-app-warning-2:#FFA830;
-
-@btn-app-purple-1:#A696CE;
-@btn-app-purple-2:#8A7CB4;
-
-@btn-app-pink-1:#DB5E8C;
-@btn-app-pink-2:#CE3970;
-
-@btn-app-inverse-1:#555555;
-@btn-app-inverse-2:#333333;
-
-@btn-app-grey-1:#898989;
-@btn-app-grey-2:#696969;
-
-@btn-app-light-1:#F4F4F4;
-@btn-app-light-2:#E6E6E6;
-
-@btn-app-yellow-1:#FFE8A5;
-@btn-app-yellow-2:#FCD76A;
-
-@btn-app-active:#FFF;
-@btn-app-yellow-color:#963;
-@btn-app-yellow-border:#FEE188;
-@btn-app-light-color:#5A5A5A;
-@btn-app-light-active:#515151;
-
-
-
-
-//label & badge colors
-@label-default:#ABBAC3;
-@label-primary:@btn-primary;
-@label-info:#3A87AD;
-@label-success:#82AF6F;
-@label-danger:#D15B47;
-@label-important:@label-danger;//!ignore
-@label-warning:#F89406;
-@label-inverse:#333333;
-@label-pink:#D6487E;
-@label-purple:#9585BF;
-@label-yellow:#FEE188;
-@label-light:#E7E7E7;
-@label-grey:@btn-grey;
-
-
-
-//menu colors
-@dropdown-menu:#4F99C6;
-@dropdown-default:@btn-default;
-@dropdown-primary:@btn-primary;
-@dropdown-info:@btn-info;
-@dropdown-success:@btn-success;
-@dropdown-warning:#FFA24D;
-@dropdown-danger:@btn-danger;
-@dropdown-inverse:@btn-inverse;
-@dropdown-pink:@btn-pink;
-@dropdown-purple:@btn-purple;
-@dropdown-grey:@btn-grey;
-@dropdown-light:@btn-light;
-@dropdown-lighter:#EFEFEF;
-@dropdown-lightest:#F3F3F3;
-@dropdown-yellow:@btn-yellow;
-@dropdown-yellow2:#F9E8B3;
-@dropdown-light-blue:#ECF3F9;
-
-//slider colors
-@slider-color:#4AA4CE;
-@slider-green:#8BBC67;
-@slider-red:#D36E6E;
-@slider-purple:#AC68BA;
-@slider-orange:#EFAD62;
-@slider-dark:#606060;
-@slider-pink:@btn-pink;
-
-
-//infobox colors
-@infobox-purple:#6F3CC4;
-@infobox-purple2:#5F47B0;
-@infobox-pink:#CB6FD7;
-@infobox-blue:#6FB3E0;
-@infobox-blue2:#3983C2;
-@infobox-blue3:#1144EB;
-@infobox-red:#D53F40;
-@infobox-brown:#C67A3E;
-@infobox-light-brown:#CEBEA5;
-@infobox-wood:#7B3F25;
-@infobox-orange:#E8B110;
-@infobox-orange2:#F79263;
-@infobox-green:#9ABC32;
-@infobox-green2:#0490A6;
-@infobox-grey:#999999;
-@infobox-black:#393939;
-
-
-//widget colors
-@widget-blue:#307ECC;
-@widget-blue2:#5090C1;
-@widget-blue3:#6379AA;
-@widget-green:#82AF6F;
-@widget-green2:#2E8965;
-@widget-green3:#4EBC30;
-@widget-red:#E2755F;
-@widget-red2:#E04141;
-@widget-red3:#D15B47;
-@widget-purple:#7E6EB0;
-@widget-pink:#CE6F9E;
-@widget-dark:#404040;
-@widget-grey:#848484;
-
-@widget-orange:#FFC657;
-@widget-orange-txt:#855D10;
-@widget-orange-border:#E8B10D;
-
-
-
-
-//form
-@help-button-bg:#65BCDA;
-@input-border:#D5D5D5;
-@input-bg:#FFF;
-@input-color:#858585;
-
-@input-focus-border:#F59942;
-@input-focus-bg:#FFF;
-@input-focus-color:#696969;
-//@input-focus-shadow:~"0px 0px 0px 2px rgba(245, 153, 66, 0.3)";
-
-
-
-//tabs & accordion
-@tab-border:#C5D0DC;
-@tab-active-color:#576373;
-@tab-active-border:#4C8FBD;
-@tab-hover-color:#4C8FBD;
-
-
-
-//tooltip
-@tooltip-color:#333;
-@tooltip-error-color:#C94D32;
-@tooltip-success-color:#629B58;
-@tooltip-warning-color:#ED9421;
-@tooltip-info-color:#4B89AA;
-
-
-//progress bar
-@progress-color:#2A91D8;
-@progress-danger:#CA5952;
-@progress-success:#59A84B;
-@progress-warning:#F2BB46;
-@progress-pink:#D6487E;
-@progress-purple:#9585BF;
-@progress-yellow:#FFD259;
-@progress-inverse:#404040;
-@progress-grey:#8A8A8A;
-
-
-
-
-
-//widget
-@widget-header-color:#669FC7;//text color
-@tag-bg:#91B8D0;
-
-
-
-//items
-@item-list-orange-border:#E8B110;
-@item-list-orange2-border:#F79263;
-@item-list-red-border:#D53F40;
-@item-list-red2-border:#D15B47;
-@item-list-green-border:#9ABC32;
-@item-list-green2-border:#0490A6;
-@item-list-blue-border:@btn-info-hover;
-@item-list-blue2-border:#3983C2;
-@item-list-blue3-border:#1144EB;
-@item-list-pink-border:#CB6FD7;
-@item-list-purple-border:#6F3CC4;
-@item-list-black-border:#505050;
-@item-list-grey-border:#A0A0A0;
-@item-list-brown-border:brown;
-@item-list-default-border:@btn-default;
-
-// Container sizes
-// --------------------------------------------------
-
-// Small screen / tablet
-@container-tablet:            ((720px + @grid-gutter-width));
-
-// Medium screen / desktop
-@container-desktop:           ((940px + @grid-gutter-width));
-
-// Large screen / wide desktop
-@container-lg-desktop:        ((1140px + @grid-gutter-width));
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/main.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/main.js
deleted file mode 100644 (file)
index a7f7199..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-require.config({
-  baseUrl : 'src',
-  packages: [{
-    name: 'codemirror',
-    location: '../assets/js/codemirror',
-    main: 'lib/codemirror',
-  }],
-  paths : {
-    'angular' : '../vendor/angular/angular',
-    'ui-bootstrap' : '../vendor/angular-bootstrap/ui-bootstrap-tpls.min',
-    'Restangular' : '../vendor/restangular/dist/restangular.min',
-    'underscore' : '../vendor/underscore/underscore',
-    'angular-ui-router' : '../vendor/angular-ui-router/release/angular-ui-router',
-    'angular-css-injector' : '../vendor/angular-css-injector/angular-css-injector',
-    'angular-cookies' : '../vendor/angular-cookies/angular-cookies.min',
-    'angular-translate' : '../vendor/angular-translate/angular-translate.min',
-    'angular-sanitize' : '../vendor/angular-sanitize/angular-sanitize.min',
-    'angular-translate-loader-static-files' : '../vendor/angular-translate-loader-static-files/angular-translate-loader-static-files.min',
-    'jquery' : '../vendor/jquery/jquery.min',
-    'jquery-ui' : '../vendor/jquery-ui/jquery-ui.min',
-    'footable' : '../vendor/footable/dist/footable.min',
-    'pixi': '../vendor/pixi/bin/pixi',
-    'd3' : '../vendor/d3/d3.min',
-    'ocLazyLoad' : '../vendor/ocLazyLoad/dist/ocLazyLoad',
-    'vis' : '../vendor/vis/dist/vis.min',
-    'sigma' : '../vendor/sigma/sigma.min',
-    'sigma-parsers-gexf' : '../vendor/sigma/plugins/sigma.parsers.gexf.min',
-    'sigma-forceAtlas2' : '../vendor/sigma/plugins/sigma.layout.forceAtlas2.min',
-    'sigma-dragNodes' : '../vendor/sigma/plugins/sigma.plugins.dragNodes.min',
-    'sigma-customShapes' : '../vendor/sigma/plugins/sigma.renderers.customShapes.min',
-    'ngSlider' : '../vendor/ng-slider/dist/ng-slider.min',
-    'ZeroClipboard' : '../vendor/zeroclipboard/dist/ZeroClipboard',
-    'ngClip' : '../vendor/ng-clip/src/ngClip',
-    'angular-translate-loader-partial' : '../vendor/angular-translate-loader-partial/angular-translate-loader-partial',
-    'ngAnimate': '../vendor/angular-animate/angular-animate.min',
-    'ngAria': '../vendor/angular-aria/angular-aria.min',
-    'ngMaterial': '../vendor/angular-material/angular-material.min',
-    'ngMessages': '../vendor/angular-messages/angular-messages.min',
-    'codeMirror-showHint' : '../assets/js/codemirror/addon/hint/show-hint',
-    'codeMirror-jsonParametersHint' : '../assets/js/codemirror/addon/hint/json-parameters-hint',
-    'codeMirror-javascriptMode' : '../assets/js/codemirror/mode/javascript/javascript',
-    'codeMirror-matchBrackets' : '../assets/js/codemirror/addon/edit/matchbrackets',
-  },
-  map: {
-    '*': {
-      'angularAMD': 'angular'
-    }
-  },
-  shim : {
-    'ocLazyLoad' : ['angular'],
-    'Restangular' : ['angular', 'underscore'],
-    'ui-bootstrap' : ['angular'],
-    'angular-css-injector' : ['angular'],
-    'angular-ui-router' : ['angular'],
-    'angular-cookies' : ['angular'],
-    'angular-translate': ['angular'],
-    'angular-sanitize': ['angular'],
-    'angular-translate-loader-static-files' : ['angular-translate'],
-    'vis' : {
-        exports: 'vis'
-    },
-    'jquery' : {
-      exports : '$'
-    },
-    'jquery-ui' : ['jquery'],
-    'angular' : {
-        deps: ['jquery','jquery-ui'],
-        exports: 'angular'
-    },
-    'footable' : ['jquery'],
-    'undescore' : {
-      exports : '_'
-    },
-    'sticky' : ['jquery', 'angular'],
-    'sigma-parsers-gexf' : ['sigma'],
-    'sigma-forceAtlas2' : ['sigma'],
-    'sigma-dragNodes' : ['sigma'],
-    'sigma-customShapes' : ['sigma'],
-    'ngSlider' : ['angular'],
-    'ZeroClipboard': ['angular'],
-    'ngClip' : ['angular','ZeroClipboard'],
-    'angular-translate-loader-partial': ['angular-translate'],
-    'ngAnimate': ['angular'],
-    'ngAria': ['angular'],
-    'ngMaterial': {
-      deps: ['ngAnimate', 'ngAria']
-    },
-    'codeMirros_showHint': ['codemirror'],
-    'codeMirros_javascriptHint': ['codemirror'],
-    'codeMirror_javascriptMode': ['codemirror'],
-    'codeMirror_matchBrackets': ['codemirror'],
-  },
-
-  deps : ['app/app.module']
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/test-main.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/dlux-web/src/test-main.js
deleted file mode 100644 (file)
index 9a4625a..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-var allTestFiles = [];
-var TEST_REGEXP = /spec\.js$/;
-
-var pathToModule = function (path) {
-  return path.replace(/^\/base\/src\//, '').replace(/\.js$/, '');
-};
-
-Object.keys(window.__karma__.files).forEach(function (file) {
-  if (TEST_REGEXP.test(file)) {
-    if (file.indexOf('yang') < 0) { // yang spec are broken
-      allTestFiles.push(pathToModule(file));
-    }
-  }
-});
-
-var run = function () {
-  test(allTestFiles, function () {
-    console.log('Starting Karma');
-    window.__karma__.start();
-  });
-};
-
-var test = require.config({
-  baseUrl: '/base/src',
-  paths: {
-    'angular': '../vendor/angular/angular',
-    'angular-mocks': '../vendor/angular-mocks/angular-mocks',
-    'ui-bootstrap': '../vendor/angular-bootstrap/ui-bootstrap-tpls.min',
-    'Restangular': '../vendor/restangular/dist/restangular.min',
-    'underscore': '../vendor/underscore/underscore',
-    'angular-ui-router': '../vendor/angular-ui-router/release/angular-ui-router',
-    'angular-css-injector': '../vendor/angular-css-injector/angular-css-injector',
-    'angular-cookies': '../vendor/angular-cookies/angular-cookies.min',
-    'angular-translate': '../vendor/angular-translate/angular-translate.min',
-    'angular-sanitize': '../vendor/angular-sanitize/angular-sanitize.min',
-    'angular-translate-loader-static-files': '../vendor/angular-translate-loader-static-files/angular-translate-loader-static-files.min',
-    'jquery': '../vendor/jquery/jquery.min',
-    'jquery-ui': '../vendor/jquery-ui/jquery-ui.min',
-    'footable': '../vendor/footable/dist/footable.min',
-    'd3': '../vendor/d3/d3.min',
-    'ocLazyLoad': '../vendor/ocLazyLoad/dist/ocLazyLoad',
-    'vis': '../vendor/vis/dist/vis.min',
-    'sigma': '../vendor/sigma/sigma.min',
-    'sigma-parsers-gexf': '../vendor/sigma/plugins/sigma.parsers.gexf.min',
-    'sigma-forceAtlas2': '../vendor/sigma/plugins/sigma.layout.forceAtlas2.min',
-    'sigma-dragNodes': '../vendor/sigma/plugins/sigma.plugins.dragNodes.min',
-    'sigma-customShapes': '../vendor/sigma/plugins/sigma.renderers.customShapes.min',
-    'ngSlider': '../vendor/ng-slider/dist/ng-slider.min',
-    'ZeroClipboard': '../vendor/zeroclipboard/dist/ZeroClipboard',
-    'ngClip': '../vendor/ng-clip/src/ngClip',
-    'angular-translate-loader-partial': '../vendor/angular-translate-loader-partial/angular-translate-loader-partial'
-  },
-  map: {
-    '*': {
-      'angularAMD': 'angular'
-    }
-  },
-  shim: {
-    'angular-mocks': ['angular'],
-    'ocLazyLoad': ['angular'],
-    'Restangular': ['angular', 'underscore'],
-    'ui-bootstrap': ['angular'],
-    'angular-css-injector': ['angular'],
-    'angular-ui-router': ['angular'],
-    'angular-cookies': ['angular'],
-    'angular-translate': ['angular'],
-    'angular-sanitize': ['angular'],
-    'angular-translate-loader-static-files': ['angular-translate'],
-    'vis': {
-      exports: 'vis'
-    },
-    'jquery': {
-      exports: '$'
-    },
-    'jquery-ui': ['jquery'],
-    'angular': {
-      deps: ['jquery', 'jquery-ui'],
-      exports: 'angular'
-    },
-    'footable': ['jquery'],
-    'undescore': {
-      exports: '_'
-    },
-    'sticky': ['jquery', 'angular'],
-    'sigma-parsers-gexf': ['sigma'],
-    'sigma-forceAtlas2': ['sigma'],
-    'sigma-dragNodes': ['sigma'],
-    'sigma-customShapes': ['sigma'],
-    'ngSlider': ['angular'],
-    'ZeroClipboard': ['angular'],
-    'ngClip': ['angular', 'ZeroClipboard'],
-    'angular-translate-loader-partial': ['angular-translate']
-  },
-
-
-  deps: ['angular', 'angular-mocks'],
-
-  callback: run
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/README.md b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/README.md
deleted file mode 100644 (file)
index a906405..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-
-The loader uses the following files from build:
-
-cp ../../dlux-web/build/index.html ./src/main/resources/index/
-cp ../../dlux-web/build/src/main.js ./src/main/resources/dlux/src/main.js
-cp ../../dlux-web/build/src/app/app.controller.js ./src/main/resources/dlux/src/app/app.controller.js
-cp ../../dlux-web/build/src/app/app.module.js ./src/main/resources/dlux/src/app/app.module.js
-cp ../../dlux-web/build/src/app/routingConfig.js ./src/main/resources/dlux/src/app/routingConfig.js
-cp -r ../../dlux-web/build/vendor/* ./src/main/resources/dlux/vendor/
-cp -r ../../dlux-web/build/assets/* ./src/main/resources/dlux/assets/
-rm -rf ./src/main/resources/dlux/assets/yang2xml
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/pom.xml
deleted file mode 100644 (file)
index e5329d8..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <groupId>org.opendaylight.dlux</groupId>
-    <artifactId>dlux-parent</artifactId>
-    <version>0.5.1-Carbon</version>
-    <relativePath>../../</relativePath>
-  </parent>
-  <artifactId>loader.implementation</artifactId>
-  <packaging>bundle</packaging>
-  <dependencies>
-    <dependency>
-      <groupId>org.opendaylight.dlux</groupId>
-      <artifactId>dlux-web</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.dlux</groupId>
-      <artifactId>loader</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.osgi</groupId>
-      <artifactId>org.osgi.core</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.osgi</groupId>
-      <artifactId>org.osgi.compendium</artifactId>
-    </dependency>
-    <dependency>
-       <groupId>org.slf4j</groupId>
-       <artifactId>slf4j-api</artifactId>
-    </dependency>
-    <dependency>
-        <groupId>com.google.guava</groupId>
-        <artifactId>guava</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
-      <version>${javax.servlet-api.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.dlux</groupId>
-      <artifactId>dlux.loader.resources</artifactId>
-      <version>${loader.resources.version}</version>
-    </dependency>
-      <dependency>
-          <groupId>junit</groupId>
-          <artifactId>junit</artifactId>
-          <scope>test</scope>
-      </dependency>
-      <dependency>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-simple</artifactId>
-          <scope>test</scope>
-      </dependency>
-  </dependencies>
- <build>
-    <resources>
-      <resource>
-        <directory>target/generated-resources</directory>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-    </resources>
-    <plugins>
-      <!--Clean extracted resources-->
-      <plugin>
-          <artifactId>maven-clean-plugin</artifactId>
-          <version>2.5</version>
-          <configuration>
-            <filesets>
-              <fileset>
-                <directory>${project.basedir}/src/main/resources/</directory>
-                <includes>
-                             <include>dlux/</include>
-                             <include>index/</include>
-                           </includes>
-                <excludes/>
-                <followSymlinks>false</followSymlinks>
-              </fileset>
-            </filesets>
-          </configuration>
-      </plugin>
-      <!--Copy resources from the dlux-web/build dir-->
-      <plugin>
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>2.6</version>
-        <executions>
-          <execution>
-            <id>copy-src-resources</id>
-            <phase>validate</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${project.basedir}/target/generated-resources/dlux</outputDirectory>
-              <resources>
-                <resource>
-                  <directory>${project.basedir}/../../dlux-web/build/</directory>
-                    <includes>
-                      <include>src/main.js</include>
-                      <include>src/app/app.controller.js</include>
-                      <include>src/app/app.module.js</include>
-                      <include>src/app/routingConfig.js</include>
-                      <include>src/common/config/env.module.js</include>
-                      <include>vendor/**</include>
-                      <include>assets/**</include>
-                    </includes>
-                   <excludes>
-                     <exclude>assets/yang2xml/</exclude>
-                   </excludes>
-                  <filtering>false</filtering>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-          <execution>
-            <id>copy-index</id>
-            <phase>validate</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${project.basedir}/target/generated-resources/index</outputDirectory>
-              <resources>
-                <resource>
-                  <directory>${project.basedir}/../../dlux-web/build/</directory>
-                    <includes>
-                      <include>index.html</include>
-                    </includes>
-                  <filtering>false</filtering>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    <!-- <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <version>2.6</version>
-        <executions>
-          <execution>
-            <id>unpack-loader-resources</id>
-            <goals>
-              <goal>unpack-dependencies</goal>
-            </goals>
-            <phase>generate-resources</phase>
-            <configuration>
-              <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-              <groupId>org.opendaylight.dlux</groupId>
-              <includeArtifactIds>dlux.loader.resources</includeArtifactIds>
-              <excludes>META-INF\/**</excludes>
-              <excludeTransitive>true</excludeTransitive>
-              <ignorePermissions>false</ignorePermissions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin> -->
-    <plugin>
-
-      <groupId>org.apache.maven.plugins</groupId>
-      <artifactId>maven-checkstyle-plugin</artifactId>
-        <configuration>
-          <!-- Exclusion doesn't seem to work for the yang.xml files within the resources folders -->
-          <excludes>**/*</excludes>
-        </configuration>
-     </plugin>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <version>2.4.0</version>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Import-Package>org.osgi.framework,
-                            org.opendaylight.dlux.loader,
-                            org.osgi.service.http,
-                            javax.servlet,
-                            javax.servlet.http,*
-                            </Import-Package>
-            <Export-Package>org.opendaylight.dlux.loader.implementation</Export-Package>
-          </instructions>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/dlux.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/dlux.git</developerConnection>
-    <tag>HEAD</tag>
-    <url>https://wiki.opendaylight.org/view/OpenDaylight_dlux:Main</url>
-  </scm>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/java/org/opendaylight/dlux/loader/exception/DluxLoaderException.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/java/org/opendaylight/dlux/loader/exception/DluxLoaderException.java
deleted file mode 100644 (file)
index 8f521a8..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.dlux.loader.exception;
-
-public class DluxLoaderException extends Exception {
-
-    public DluxLoaderException(final String message) {
-        super(message);
-    }
-
-    public DluxLoaderException(final String message, final Throwable throwable) {
-        super(message, throwable);
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/java/org/opendaylight/dlux/loader/implementation/DluxLoader.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/java/org/opendaylight/dlux/loader/implementation/DluxLoader.java
deleted file mode 100644 (file)
index df49a5e..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/**
- * Copyright (c) 2014 Inocybe Technologies, and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.dlux.loader.implementation;
-
-import javax.servlet.ServletException;
-
-import com.google.common.base.Preconditions;
-import org.opendaylight.dlux.loader.DluxModuleLoader;
-import org.opendaylight.dlux.loader.Module;
-import org.opendaylight.dlux.loader.exception.DluxLoaderException;
-import org.osgi.service.http.HttpService;
-import org.osgi.service.http.NamespaceException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class DluxLoader implements DluxModuleLoader {
-
-    private DluxLoaderIndexServlet index;
-    private static Logger logger = LoggerFactory.getLogger(DluxLoader.class);
-
-    /**
-     * List of modules registered with dlux
-     */
-    private List<Module> modules = new ArrayList<>();
-
-    private String RESOURCE_URL = "/";
-
-    private String RESOURCE_DIRECTORY = "/dlux";
-
-    private String SERVLET_URL = "/index.html";
-
-    @Override
-    public void addModule(Module module){
-        modules.add(module);
-    }
-
-    @Override
-    public void removeModule(Module module) {
-        modules.remove(module);
-    }
-
-    public List<Module> getModules() {
-        return modules;
-    }
-
-    public void onUnbindService(HttpService httpService) {
-        httpService.unregister(SERVLET_URL);
-        httpService.unregister(RESOURCE_URL);
-        index = null;
-    }
-
-    public void onBindService(HttpService httpService) throws ServletException, NamespaceException, DluxLoaderException {
-        Preconditions.checkNotNull(httpService,
-            "Unable to inject HttpService into DluxLoader. dlux modules won't work without httpService");
-
-        index = new DluxLoaderIndexServlet(this);
-        httpService.registerServlet(SERVLET_URL, index, null, null);
-        httpService.registerResources(RESOURCE_URL, RESOURCE_DIRECTORY, null);
-        logger.info("DluxLoader Service initialization complete.");
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/java/org/opendaylight/dlux/loader/implementation/DluxLoaderIndexServlet.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/java/org/opendaylight/dlux/loader/implementation/DluxLoaderIndexServlet.java
deleted file mode 100644 (file)
index 55929c0..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-/**
- * Copyright (c) 2014 Inocybe Technologies, and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.dlux.loader.implementation;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Preconditions;
-import org.opendaylight.dlux.loader.Module;
-import org.opendaylight.dlux.loader.exception.DluxLoaderException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Properties;
-
-public class DluxLoaderIndexServlet extends HttpServlet{
-
-    private static final long serialVersionUID = 1L;
-    private static Logger logger = LoggerFactory.getLogger(DluxLoaderIndexServlet.class);
-
-    private String DEFINEJS_PROPERTY = "defineJS";
-
-    private String REQUIREJS_PROPERTY = "requireJS";
-
-    private String ANGULARJS_PROPERTY = "angularJS";
-
-    private final String DEFINEJS_START = "var module = [";
-
-    private final String REQUIREJS_START = "var deps = [";
-
-    private final String ANGULARJS_START = "var e = [";
-
-    private final String end = "];";
-
-    private final String COMMA_QUOTE = ",\'";
-
-    private final String QUOTE = "\'";
-
-    private final String NEWLINE = "\n";
-
-    private final DluxLoader loader;
-
-    private final String UTF_CHARSET = "UTF-8";
-
-    private final String JAVASCRIPT_REPLACE_PROPERTY = "javascriptReplaceString";
-
-    private final String CSS_REPLACE_PROPERTY = "cssReplaceString";
-
-    private final String INDEX_HTML_LOC = "index/index.html";
-
-    private final String RESPONSE_CONTENT_TYPE = "text/html";
-
-    private final String CSS_LINK_START = "<link rel=\"stylesheet\" href=\"";
-
-    private final String CSS_LINK_END = "\" />";
-
-    private final Properties prop;
-
-    private final List<String> indexHTML;
-
-    public DluxLoaderIndexServlet(final DluxLoader loader) throws DluxLoaderException {
-        Preconditions.checkNotNull(loader, "Loader service can not be null");
-        this.loader = loader;
-        this.prop = loadProperties();
-        this.indexHTML = loadStaticHTML();
-    }
-
-    private Properties loadProperties() throws DluxLoaderException {
-
-        Properties prop = new Properties();
-
-        try(InputStream inputStream = DluxLoaderIndexServlet.class.getClassLoader().getResourceAsStream("CommonAppModules.properties")){
-            Preconditions.checkNotNull(inputStream, "Could not load the module properties file");
-            prop.load(inputStream);
-
-        } catch (IOException e) {
-            logger.error("Could not load properties from input stream", e);
-            throw new DluxLoaderException("Dlux Loader Servlet initialization failed. ", e);
-        }
-        return prop;
-    }
-
-    private List<String> loadStaticHTML() throws DluxLoaderException{
-        List<String> indexHTMLContent = new ArrayList<>();
-        try(InputStream indexHTMLStream = DluxLoaderIndexServlet.class.getClassLoader().getResourceAsStream(INDEX_HTML_LOC);
-            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(indexHTMLStream, UTF_CHARSET))) {
-            String line = bufferedReader.readLine();
-            while(line != null) {
-                indexHTMLContent.add(line);
-                line = bufferedReader.readLine();
-            }
-
-        } catch (IOException e) {
-            logger.error("Could not load index html from input stream", e);
-            throw new DluxLoaderException("Dlux Loader Servlet initialization failed. ", e);
-        }
-        return indexHTMLContent;
-    }
-
-    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException  {
-        String jsReplace = prop.getProperty(JAVASCRIPT_REPLACE_PROPERTY);
-        String cssReplace = prop.getProperty(CSS_REPLACE_PROPERTY);
-        Preconditions.checkNotNull(jsReplace, "Global requireJS replace string should be present in properties file");
-        Preconditions.checkNotNull(cssReplace, "Global css replace string should be present in properties file");
-        Preconditions.checkArgument(indexHTML.size() > 0, "HTML file was not loaded properly at servlet initialization");
-
-        StringBuilder inputStringBuilder = new StringBuilder();
-        for (String line : this.indexHTML) {
-            // add global variables
-            if(line.contains(jsReplace)) {
-                inputStringBuilder.append(getModulesString());
-                inputStringBuilder.append(NEWLINE);
-            }
-
-            if(line.contains(cssReplace)) {
-                inputStringBuilder.append(getCSSString());
-                inputStringBuilder.append(NEWLINE);
-            }
-            inputStringBuilder.append(line);
-            inputStringBuilder.append(NEWLINE);
-
-        }
-        response.setContentType(RESPONSE_CONTENT_TYPE);
-        PrintWriter out = response.getWriter();
-        out.print(inputStringBuilder.toString());
-    }
-
-    private String getModulesString() {
-        StringBuilder defineJsBuilder = new StringBuilder();
-        StringBuilder requireJsBuilder = new StringBuilder();
-        StringBuilder angularBuilder = new StringBuilder();
-        defineJsBuilder.append(DEFINEJS_START).append(prop.getProperty(DEFINEJS_PROPERTY));
-        requireJsBuilder.append(REQUIREJS_START).append(prop.getProperty(REQUIREJS_PROPERTY));
-        angularBuilder.append(ANGULARJS_START).append(prop.getProperty(ANGULARJS_PROPERTY));
-        for (Module module: loader.getModules()){
-            requireJsBuilder.append(COMMA_QUOTE).append(module.getRequireJs()).append(QUOTE);
-            angularBuilder.append(COMMA_QUOTE).append(module.getAngularJs()).append(QUOTE);
-        }
-        defineJsBuilder.append(end).append(NEWLINE);
-        requireJsBuilder.append(end).append(NEWLINE);
-        angularBuilder.append(end);
-
-        return defineJsBuilder.toString() + requireJsBuilder.toString() + angularBuilder.toString();
-    }
-
-    private String getCSSString() {
-        StringBuilder cssBuilder = new StringBuilder();
-        for(Module module : loader.getModules()) {
-            if(module.getCssDependencies() == null) {
-                continue;
-            }
-            for(String cssDependency : module.getCssDependencies()) {
-                cssBuilder.append(CSS_LINK_START).append(cssDependency).append(CSS_LINK_END).append(NEWLINE);
-            }
-        }
-
-        return cssBuilder.toString();
-    }
-
-    @VisibleForTesting
-    public Properties getProp() {
-        return this.prop;
-    }
-
-    @VisibleForTesting
-    public List<String> getIndexHTML() {
-        return indexHTML;
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/resources/CommonAppModules.properties b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/resources/CommonAppModules.properties
deleted file mode 100644 (file)
index 183e46d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-defineJS= 'angular','ocLazyLoad','angular-ui-router','angular-translate', 'angular-sanitize', 'angular-translate-loader-static-files', 'angular-translate-loader-partial', 'angular-css-injector'
-requireJS='common/config/env.module'
-angularJS='oc.lazyLoad', 'ui.router', 'pascalprecht.translate', 'ngSanitize', 'angular.css.injector', 'app'
-javascriptReplaceString=global variables
-cssReplaceString=application CSS
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index ee732dc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <bean id="loaderImpl" class="org.opendaylight.dlux.loader.implementation.DluxLoader"/>
-
-    <reference id="onBindService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService">
-      <reference-listener ref="loaderImpl" bind-method="onBindService" unbind-method="onUnbindService"/>
-    </reference>
-
-    <service id="serviceRegistration" interface="org.opendaylight.dlux.loader.DluxModuleLoader" ref="loaderImpl"/>
-
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/test/java/org/opendaylight/dlux/loader/DluxLoaderIndexServletTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/loader/impl/src/test/java/org/opendaylight/dlux/loader/DluxLoaderIndexServletTest.java
deleted file mode 100644 (file)
index eb1c905..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * Copyright (c) 2015 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.dlux.loader;
-
-import org.junit.Test;
-import org.junit.Assert;
-import org.opendaylight.dlux.loader.exception.DluxLoaderException;
-import org.opendaylight.dlux.loader.implementation.DluxLoader;
-import org.opendaylight.dlux.loader.implementation.DluxLoaderIndexServlet;
-
-import java.util.List;
-import java.util.Properties;
-
-
-public class DluxLoaderIndexServletTest {
-
-    private DluxLoader dluxLoader = new DluxLoader();
-
-    @Test
-    public void testLoadModulePropertyFile() throws DluxLoaderException {
-
-        DluxLoaderIndexServlet indexServlet = new DluxLoaderIndexServlet(dluxLoader);
-        Properties properties = indexServlet.getProp();
-        String defineJS = properties.getProperty("defineJS");
-        Assert.assertNotNull(defineJS); 
-        Assert.assertTrue(defineJS.contains("'angular',"));
-        String requireJS = properties.getProperty("requireJS");
-        Assert.assertNotNull(requireJS);
-        Assert.assertTrue(requireJS.contains("common/config/env.module"));
-        String angularJS = properties.getProperty("angularJS");
-        Assert.assertNotNull(angularJS);
-        Assert.assertTrue(angularJS.contains("'ui.router',"));
-    }
-
-    @Test
-    public void testLoadIndexHTML() throws DluxLoaderException {
-        DluxLoaderIndexServlet indexServlet = new DluxLoaderIndexServlet(dluxLoader);
-        List<String> indexHTML = indexServlet.getIndexHTML();
-        Properties properties = indexServlet.getProp();
-
-        String jsReplace = properties.getProperty("javascriptReplaceString");
-        String cssReplace = properties.getProperty("cssReplaceString");
-
-        boolean containsJSReplace = false;
-        boolean containsCssReplace = false;
-
-        for(String line : indexHTML) {
-            if(line.contains(jsReplace)) {
-                containsJSReplace = true;
-            }
-
-            if(line.contains(cssReplace)) {
-                containsCssReplace = true;
-            }
-        }
-
-        Assert.assertTrue(containsCssReplace);
-        Assert.assertTrue(containsJSReplace);
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/dlux/pom.xml
deleted file mode 100644 (file)
index 150d408..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-
-  <parent>
-    <groupId>org.opendaylight.odlparent</groupId>
-    <artifactId>odlparent</artifactId>
-    <version>1.8.1-Carbon</version>
-    <relativePath></relativePath>
-  </parent>
-
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.opendaylight.dlux</groupId>
-  <artifactId>dlux-parent</artifactId>
-  <version>0.5.1-Carbon</version>
-  <packaging>pom</packaging>
-  <name>dlux</name> <!-- Used by Sonar to set project name -->
-
-  <properties>
-    <commons.opendaylight.version>1.8.1-Carbon</commons.opendaylight.version>
-    <loader.resources.version>0.5.1-Carbon</loader.resources.version>
-    <core.resources.version>0.5.1-Carbon</core.resources.version>
-    <connection_manager.resources.version>0.5.1-Carbon</connection_manager.resources.version>
-    <container.resources.version>0.5.1-Carbon</container.resources.version>
-    <flow.resources.version>0.5.1-Carbon</flow.resources.version>
-    <network.resources.version>0.5.1-Carbon</network.resources.version>
-    <common.authentication.resources.version>0.5.1-Carbon</common.authentication.resources.version>
-    <common.general.resources.version>0.5.1-Carbon</common.general.resources.version>
-    <common.navigation.resources.version>0.5.1-Carbon</common.navigation.resources.version>
-    <common.layout.resources.version>0.5.1-Carbon</common.layout.resources.version>
-    <common.topbar.resources.version>0.5.1-Carbon</common.topbar.resources.version>
-    <common.login.resources.version>0.5.1-Carbon</common.login.resources.version>
-    <restconf.version>1.5.1-Carbon</restconf.version>
-    <l2switch.version>0.5.1-Carbon</l2switch.version>
-    <mdsal.version>1.5.1-Carbon</mdsal.version>
-    <branding.version>1.4.1-Carbon</branding.version>
-    <karaf.resources.version>1.8.1-Carbon</karaf.resources.version>
-    <feature.l2switch.version>0.5.1-Carbon</feature.l2switch.version>
-    <feature.aaa.version>0.5.1-Carbon</feature.aaa.version>
-    <feature.openflowplugin.version>0.4.1-Carbon</feature.openflowplugin.version>
-
-    <feature.test.version>1.8.1-Carbon</feature.test.version>
-    <feature.mdsal.version>1.5.1-Carbon</feature.mdsal.version>
-    <feature.dlux.version>0.5.1-Carbon</feature.dlux.version>
-    <feature.flow.version>1.5.1-Carbon</feature.flow.version>
-    <feature.yangtools.version>1.1.1-Carbon</feature.yangtools.version>
-    <apache.felix.osgi.compendium.version>1.4.0</apache.felix.osgi.compendium.version>
-    <javax.servlet-api.version>3.0.1</javax.servlet-api.version>
-    <karaf.empty.version>1.8.1-Carbon</karaf.empty.version>
-  </properties>
-
-  <modules>
-    <module>dlux-web</module>
-    <module>loader/impl</module>
-  </modules>
-
-  <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/dlux.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/dlux.git</developerConnection>
-    <tag>HEAD</tag>
-    <url>https://wiki.opendaylight.org/view/OpenDaylight_dlux:Main</url>
-  </scm>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/features/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/features/pom.xml
deleted file mode 100644 (file)
index b84f1ce..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>com.highstreet.technologies.helpserver</groupId>
-  <artifactId>helpserver-features</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-  <name>${project.artifactId}</name>
-
-  <parent>
-    <groupId>org.opendaylight.odlparent</groupId>
-    <artifactId>features-parent</artifactId>
-    <version>1.8.1-Carbon</version>
-    <relativePath/>
-  </parent>
-
- <dependencies>
-   <dependency>
-     <groupId>${project.groupId}</groupId>
-     <artifactId>helpserver-impl</artifactId>
-     <version>${project.version}</version>
-   </dependency>
- </dependencies>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/features/src/main/features/features.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/features/src/main/features/features.xml
deleted file mode 100644 (file)
index a675feb..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<features name="helpserver-${project.version}"  xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-
-  <feature name="odl-ht-helpserver" version="${project.version}" description="OpenDaylight :: Help :: Core">
-    <feature>http</feature>
-    <bundle>mvn:com.highstreet.technologies.helpserver/helpserver-impl/${project.version}</bundle>
-</feature>
-
-</features>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/pom.xml
deleted file mode 100644 (file)
index a8a11af..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project 
-       xmlns="http://maven.apache.org/POM/4.0.0" 
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-       <modelVersion>4.0.0</modelVersion>
-       <groupId>com.highstreet.technologies.helpserver</groupId>
-       <artifactId>helpserver-impl</artifactId>
-       <packaging>bundle</packaging>
-       <parent>
-               <groupId>org.opendaylight.mwtn</groupId>
-               <artifactId>config-parent</artifactId>
-               <version>0.5.1-SNAPSHOT</version>
-               <relativePath>../../commons/config-parent</relativePath>
-       </parent>
-       <dependencies>
-               <dependency>
-                       <groupId>javax.servlet</groupId>
-                       <artifactId>servlet-api</artifactId>
-                       <version>2.5</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.json</groupId>
-                       <artifactId>json</artifactId>
-               </dependency>
-       </dependencies>
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>com.google.code.maven-replacer-plugin</groupId>
-                               <artifactId>replacer</artifactId>
-                               <version>1.5.3</version>
-                               <executions>
-                                       <execution>
-                                               <phase>test</phase>
-                                               <goals>
-                                                       <goal>replace</goal>
-                                               </goals>
-                                       </execution>
-                               </executions>
-                               <configuration>
-                                       <basedir>${project.basedir}/src/main/resources</basedir>
-                                       <includes>
-                                               <include>**/*.md</include>
-                                       </includes>
-                                       <replacements>
-                                               <replacement>
-                                                       <token>@distversion@</token>
-                                                       <value>${distversion}</value>
-                                               </replacement>
-                                               <replacement>
-                                                       <token>@buildtime@</token>
-                                                       <value>${buildtime}</value>
-                                               </replacement>
-                                       </replacements>
-                               </configuration>
-                       </plugin>
-               </plugins>
-       </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/HelpServlet.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/HelpServlet.java
deleted file mode 100644 (file)
index 14272d6..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-package com.highstreet.technologies.helpserver;
-
-import java.io.BufferedReader;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.StringReader;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.nio.file.Path;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.highstreet.technologies.helpserver.data.HelpInfrastructureObject;
-
-public class HelpServlet extends HttpServlet implements AutoCloseable {
-
-       private static Logger LOG = LoggerFactory.getLogger(HelpServlet.class);
-       private static final long serialVersionUID = -4285072760648493461L;
-
-       private static final boolean USE_FILESYSTEM = true;
-       private static final boolean USE_RESSOURCES = !USE_FILESYSTEM;
-       private static final String BASEURI = "/help";
-
-       private static final boolean REDIRECT_LINKS = true;
-
-       private Path basePath;
-
-       public HelpServlet() {
-               LOG.info("Starting HelpServlet instance {}", this.hashCode());
-               HelpInfrastructureObject.createFilesFromResources();
-               this.basePath = HelpInfrastructureObject.getHelpDirectoryBase();
-       }
-
-       @Override
-       protected void doOptions(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               resp.addHeader("Access-Control-Allow-Origin", "*");
-               resp.addHeader("Access-Control-Allow-Methods", "OPTIONS, HEAD, GET, POST, PUT, DELETE");
-               resp.addHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Content-Length");
-       }
-
-       /*
-        * (non-Javadoc)
-        *
-        * @see
-        * javax.servlet.http.HttpServlet#doGet(javax.servlet.http.HttpServletRequest,
-        * javax.servlet.http.HttpServletResponse) Handle Get Request: if
-        * query=?meta=send json infrastructure for README.md else if file exist send
-        * file
-        */
-       @Override
-       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               String query = req.getQueryString();
-               resp.addHeader("Access-Control-Allow-Origin", "*");
-               resp.addHeader("Access-Control-Allow-Methods", "OPTIONS, HEAD, GET, POST, PUT, DELETE");
-               resp.addHeader("Access-Control-Allow-Headers", "X-Requested-With, Content-Type, Content-Length");
-               if (query != null && query.contains("meta")) {
-                       /*
-                        * LOG.debug("received post with uri="+req.getRequestURI()); String
-                        * uri=req.getRequestURI().substring(BASEURI.length()); if(uri.startsWith("/"))
-                        * uri=uri.substring(1);
-                        */
-                       File f=new File(HelpInfrastructureObject.KARAFHELPDIRECTORY,"meta.json");
-                       try {
-                               if(f.exists())
-                               {
-                                       LOG.debug("found local meta file");
-                                       BufferedReader rd=new BufferedReader(new FileReader(f));
-                                       String line=rd.readLine();
-                                       while(line!=null)
-                                       {
-                                               resp.getOutputStream().println(line);
-                                               line=rd.readLine();
-                                       }
-                                       rd.close();
-                               }
-                               else
-                               {
-                                       LOG.debug("start walking from path=" + basePath.toAbsolutePath().toString());
-                                       HelpInfrastructureObject o = null;
-                                       if (USE_FILESYSTEM)
-                                               o = new HelpInfrastructureObject(this.basePath);
-                                       else if (USE_RESSOURCES) {
-                                               // o=new HelpInfrastructureObject()
-                                       }
-                                       resp.getOutputStream().println(o != null ? o.toString() : "");
-                               }
-                               resp.setHeader("Content-Type", "application/json");
-                       } catch (Exception err) {
-                               err.printStackTrace();
-                       }
-               } else {
-                       LOG.debug("received get with uri=" + req.getRequestURI());
-                       String uri = URLDecoder.decode(req.getRequestURI().substring(BASEURI.length()), "UTF-8");
-                       if (uri.startsWith("/"))
-                               uri = uri.substring(1);
-                       Path p = basePath.resolve(uri);
-                       if (USE_FILESYSTEM) {
-                               File f = p.toFile();
-                               if (f.isFile() && f.exists()) {
-                                       LOG.debug("found file for request");
-                                       if (this.isTextFile(f)) {
-                                               resp.setHeader("Content-Type", "application/text");
-                                               resp.setHeader("charset", "utf-8");
-                                       } else if (this.isImageFile(f)) {
-                                               resp.setHeader("Content-Type", "image/*");
-                                       } else if (this.ispdf(f)) {
-                                               resp.setHeader("Content-Type", "application/pdf");
-                                       } else {
-                                               LOG.debug("file is not allowed to deliver");
-                                               resp.setStatus(404);
-                                               return;
-                                       }
-                                       LOG.debug("delivering file");
-                                       OutputStream out = resp.getOutputStream();
-                                       String version=null;
-                                       if(REDIRECT_LINKS)
-                                               version=getVersionFromRequestedUri(uri);
-                                       if (this.isTextFile(f) && REDIRECT_LINKS && version!=null) {
-                                               final String regex = "(!?\\[[^\\]]*?\\])\\(((?:(?!http|www\\.|\\#|\\.com|\\.net|\\.info|\\.org|\\.svg|\\.png|\\.jpg|\\.gif|\\.jpeg|\\.pdf).)*?)\\)";
-                                               final Pattern pattern = Pattern.compile(regex);
-                                               Matcher matcher;
-                                               String line;
-                                               try (BufferedReader br = new BufferedReader(new FileReader(f))) {
-                                                       line = br.readLine();
-                                                       while (line != null) {
-                                                               //check line for internal link
-                                                               matcher = pattern.matcher(line);
-                                                               if(matcher.find())
-                                                               {
-                                                                       //extend link with specific version
-                                                                       line=line.replace(matcher.group(2),"../"+matcher.group(2)+version+"/README.md");
-                                                               }
-                                                               out.write((line+"\n").getBytes());
-                                                               line = br.readLine();
-
-                                                       }
-                                                       out.flush();
-                                                       out.close();
-                                                       br.close();
-                                               }
-
-                                       } else {
-                                               try (FileInputStream in = new FileInputStream(f)) {
-
-                                                       byte[] buffer = new byte[1024];
-                                                       int len;
-                                                       while ((len = in.read(buffer)) != -1) {
-                                                               out.write(buffer, 0, len);
-                                                       }
-                                                       in.close();
-                                                       out.flush();
-                                                       out.close();
-                                               }
-                                       }
-                               } else {
-                                       LOG.debug("found not file for request");
-                                       resp.setStatus(404);
-                               }
-                       } else if (USE_RESSOURCES) {
-                               URL resurl = this.getClass().getResource(p.toString());
-                               if (resurl != null)// resource file found
-                               {
-                                       if (this.isTextFile(resurl)) {
-                                               resp.setHeader("Content-Type", "application/text");
-                                               resp.setHeader("charset", "utf-8");
-                                       } else if (this.isImageFile(resurl)) {
-                                               resp.setHeader("Content-Type", "image/*");
-                                       } else if (this.ispdf(resurl)) {
-                                               resp.setHeader("Content-Type", "application/pdf");
-                                       } else {
-                                               resp.setStatus(404);
-                                               return;
-                                       }
-                                       try (InputStream in = this.getClass().getResourceAsStream(p.toString())) {
-                                               OutputStream out = resp.getOutputStream();
-                                               byte[] buffer = new byte[1024];
-                                               int len;
-                                               while ((len = in.read(buffer)) != -1) {
-                                                       out.write(buffer, 0, len);
-                                               }
-                                               in.close();
-                                               out.flush();
-                                               out.close();
-                                       }
-
-                               } else // resource file not found
-                               {
-                                       resp.setStatus(404);
-                               }
-                       }
-               }
-       }
-
-       /*
-        *
-        * uri = "help/folder1/folder2/version/README.md"
-        */
-       private static String getVersionFromRequestedUri(String uri) {
-               if(uri==null)
-                       return null;
-               int lastidx=uri.lastIndexOf("/");
-               if(lastidx<0)
-                       return null;
-               int slastidx=uri.lastIndexOf("/", lastidx-1);
-               if(slastidx<0)
-                       return null;
-               return uri.substring(slastidx+1, lastidx);
-
-       }
-       private boolean isTextFile(URL url) {
-               return url != null ? this.isTextFile(url.toString()) : false;
-       }
-
-       private boolean ispdf(URL url) {
-               return url != null ? this.ispdf(url.toString()) : false;
-       }
-
-       private boolean isImageFile(URL url) {
-               return url != null ? this.isImageFile(url.toString()) : false;
-       }
-
-       private boolean ispdf(File f) {
-               return f != null ? this.ispdf(f.getName()) : false;
-       }
-
-       private boolean ispdf(String name) {
-               return name != null ? name.toLowerCase().endsWith("pdf") : false;
-       }
-
-       private boolean isImageFile(File f) {
-               return f != null ? this.isImageFile(f.getName()) : false;
-       }
-
-       private boolean isImageFile(String name) {
-
-               return name != null
-                               ? (name.toLowerCase().endsWith("png") || name.toLowerCase().endsWith("jpg")
-                                               || name.toLowerCase().endsWith("jpeg") || name.toLowerCase().endsWith("svg")
-                                               || name.toLowerCase().endsWith("eps"))
-                               : false;
-       }
-
-       private boolean isTextFile(File f) {
-               return f != null ? this.isTextFile(f.getName()) : false;
-
-       }
-
-       private boolean isTextFile(String name) {
-               return name != null
-                               ? (name.toLowerCase().endsWith("md") || name.toLowerCase().endsWith("txt")
-                                               || name.toLowerCase().endsWith("html") || name.toLowerCase().endsWith("htm")
-                                               || name.toLowerCase().endsWith("js") || name.toLowerCase().endsWith("css"))
-                               : false;
-       }
-
-       @Override
-       protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-       }
-
-       @Override
-       public void close() throws Exception {
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/data/Environment.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/data/Environment.java
deleted file mode 100644 (file)
index 72096d2..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-package com.highstreet.technologies.helpserver.data;
-
-import java.net.Inet4Address;
-import java.net.UnknownHostException;
-import java.util.Map;
-
-public class Environment {
-
-       public static String getVar(String v)
-       {
-               if(v.equals("$HOSTNAME"))
-                       try {
-                               return Inet4Address.getLocalHost().getHostName();
-                       } catch (UnknownHostException e) {
-
-                       }
-               Map<String, String> env = System.getenv();
-        for (String envName : env.keySet()) {
-           if(envName!=null && envName.equals(v))
-              return env.get(envName);
-        }
-        return null;
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/data/ExtactBundleResource.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/data/ExtactBundleResource.java
deleted file mode 100644 (file)
index 32e9364..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.highstreet.technologies.helpserver.data;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Enumeration;
-
-import org.osgi.framework.Bundle;
-
-/**
- * Extract subtree with resources from Opendaylight/Karaf/OSGi bundle into Karaf directory<br>
- *
- * Reference: Eclipsezone @see <a href="https://www.eclipsezone.com/eclipse/forums/t101557.html">https://www.eclipszone.com</a>
- * <br><br>
- * Example for resource and directory path from karaf log.
- *      write resource: help/FAQ/0.4.0/README.md
- *   Create directories for: data/cache/com.highstreet.technologies.help/help/FAQ/0.4.0/README.md
- *   Open the file: data/cache/com.highstreet.technologies.help/help/FAQ/0.4.0/README.md
- *   Problem: Binary, JPG files => do not use buffer related functions
- *
- * Hint: Werify with file manager the content of the bundle.jar file to see the location of the resources.
- * There is no need to mark them via the classpath.
- */
-
-public class ExtactBundleResource {
-
-       /**
-        * Extract resources from Karaf/OSGi bundle into karaf directory structure.
-        * @param bundle Karaf/OSGi bundle with resources
-        * @param filePrefix prefix in karaf file system for destination e.g. "data/cache/com.highstreet.technologies."
-        * @param ressoureRoot root name of ressources, with leading "/". e.g. "/help"
-        * @throws IOException In case of problems.
-        */
-       public static void copyBundleResoucesRecursively(Bundle bundle, String filePrefix, String ressoureRoot) throws IOException {
-                copyResourceTreeRecurse(bundle, filePrefix, bundle.getEntryPaths(ressoureRoot));
-       }
-
-       /**
-        * Delete a file or a directory and its children.
-        * @param file The directory to delete.
-        * @throws IOException Exception when problem occurs during deleting the directory.
-        */
-       public static void deleteRecursively(File file) throws IOException {
-
-               if (file.isDirectory()) {
-                       for (File childFile : file.listFiles()) {
-                               if (childFile.isDirectory()) {
-                                       deleteRecursively(childFile);
-                               } else {
-                                       if (!childFile.delete()) {
-                                               throw new IOException();
-                                       }
-                               }
-                       }
-               }
-
-               if (!file.delete()) {
-                       throw new IOException();
-               }
-       }
-
-       // ------------- Private functions
-
-       /**
-        * Recurse function to steps through the resource element tree
-        * @param b Bundle index for bundle with resourcs
-        * @param filePrefix
-        * @param resource
-        * @throws IOException
-        */
-       private static void copyResourceTreeRecurse(Bundle b, String filePrefix, Enumeration<String> resource) throws IOException {
-               while (resource.hasMoreElements()) {
-                       String name = resource.nextElement();
-                       Enumeration<String> list = b.getEntryPaths(name);
-                       if (list != null) {
-                               copyResourceTreeRecurse(b, filePrefix, list);
-                       } else {
-                               //Read
-                               InputStream in = b.getEntry(name).openStream();
-                               File targetFile = new File(filePrefix+name);
-                               targetFile.getParentFile().mkdirs();
-                               OutputStream outStream = new FileOutputStream(targetFile);
-                               int theInt;
-                               while ((theInt = in.read()) >= 0) {
-                                       outStream.write(theInt);
-                               }
-                               in.close();
-                               outStream.flush();
-                               outStream.close();
-                       }
-               }
-       }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/data/HelpInfrastructureObject.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/java/com/highstreet/technologies/helpserver/data/HelpInfrastructureObject.java
deleted file mode 100644 (file)
index b681547..0000000
+++ /dev/null
@@ -1,184 +0,0 @@
-package com.highstreet.technologies.helpserver.data;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-
-import org.json.JSONObject;
-import org.osgi.framework.Bundle;
-import org.osgi.framework.FrameworkUtil;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class HelpInfrastructureObject extends JSONObject {
-
-       private static final Logger LOG = LoggerFactory.getLogger(HelpInfrastructureObject.class);
-       private static String HELPBASE = "help";
-       private static String KARAFBUNDLERESOURCEHELPROOT = "/"+HELPBASE;
-       private static String KARAFHELPDIRPREFIX = "data/cache/com.highstreet.technologies.";
-       public static File KARAFHELPDIRECTORY = new File(KARAFHELPDIRPREFIX+HELPBASE);
-
-       public static class VersionObject extends JSONObject
-       {
-               private static Comparator<VersionObject> comp;
-               private final String mVersion;
-               public String getVersion() {return this.mVersion;}
-               public VersionObject(String path,String date,String label,String version)
-               {
-                       this.mVersion=version;
-                       this.put("path", path);
-                       this.put("date",date);
-                       this.put("label", label);
-               }
-               public static Comparator<VersionObject> getComparer() {
-                       if(comp==null)
-                               comp=new Comparator<HelpInfrastructureObject.VersionObject>() {
-
-                                       @Override
-                                       public int compare(VersionObject o1, VersionObject o2) {
-                                               return o1.getVersion().compareTo(o2.getVersion());
-                                       }
-                               };
-                               return comp;
-               }
-               public VersionObject cloneAsLatest() {
-                       return new VersionObject(this.getString("path"), this.getString("date"), this.getString("label"), "latest");
-               }
-               public VersionObject cloneAsCurrent() {
-                       return new VersionObject(this.getString("path"), this.getString("date"), this.getString("label"), "current");
-               }
-       }
-       public static class NodeObject extends JSONObject
-       {
-               public NodeObject(Path base,File dir,String label,ArrayList<VersionObject> versions)
-               {
-                       this.put("label", label);
-                       if(versions!=null && versions.size()>0)
-                       {
-                               JSONObject o=new JSONObject();
-                               this.put("versions", o);
-                               for(VersionObject version : versions)
-                                       o.put(version.getVersion(), version);
-
-                       }
-                       File[] list = dir.listFiles();
-                    if (list == null) return;
-                    for(File f: list)
-                    {
-                        if(f.isDirectory())
-                        {
-                                ArrayList<VersionObject> versions2=findReadmeVersionFolders(base, f.toPath(),true);
-                                if(versions2!=null && versions2.size()>0)
-                                {
-                                        JSONObject nodes;
-                                        if(!this.has("nodes"))
-                                                this.put("nodes",new JSONObject());
-                                        nodes=this.getJSONObject("nodes");
-
-                                        NodeObject o=new NodeObject(base,f,f.getName(),versions2);
-                                        nodes.put(o.getString("label").toLowerCase(),o);
-                                }
-                        }
-                    }
-               }
-
-       }
-       public HelpInfrastructureObject(Path proot) throws URISyntaxException
-       {
-                File root = proot.toFile();
-            File[] list = root.listFiles();
-            if (list == null) return;
-            for(File f: list)
-            {
-                if(f.isDirectory())
-                {
-                        ArrayList<VersionObject> versions=findReadmeVersionFolders(root.toPath(), f.toPath(),true);
-                        if(versions!=null && versions.size()>0)
-                        {
-                                NodeObject o=new NodeObject(proot,f,f.getName(),versions);
-                                this.put(o.getString("label").toLowerCase(), o);
-                        }
-                }
-            }
-
-
-       }
-        public static void walk(ArrayList<File> results, String path ) {
-
-               File root = new File( path );
-               File[] list = root.listFiles();
-
-               if (list == null) return;
-
-               for ( File f : list ) {
-                   if ( f.isDirectory() ) {
-                       walk(results, f.getAbsolutePath() );
-                       //System.out.println( "Dir:" + f.getAbsoluteFile() );
-                   }
-                   else {
-                       //System.out.println( "File:" + f.getAbsoluteFile() );
-                       if(f.isFile() && f.getName().endsWith(".md") )
-                               results.add(f);
-                   }
-               }
-           }
-        private static ArrayList<VersionObject> findReadmeVersionFolders(Path base,Path root,boolean appendCurrent)
-        {
-                ArrayList<VersionObject> list=new ArrayList<>();
-                File[] files=root.toFile().listFiles();
-                int baselen=base.toFile().getAbsolutePath().length();
-                if(files!=null)
-                {
-                        for(File f : files)
-                        {
-                               if(f.isDirectory() && new File(f.getAbsolutePath()+"/README.md").exists())
-                                       list.add(new VersionObject(f.getAbsolutePath().substring(baselen+1)+"/README.md","","",f.getName()));
-                        }
-                }
-                Collections.sort(list, VersionObject.getComparer());
-                Collections.reverse(list);
-                if(list.size()>0 && appendCurrent)
-                {
-                        list.add(list.get(0).cloneAsCurrent());
-                }
-                return list;
-        }
-
-
-        public static void createFilesFromResources()
-        {
-
-                if (KARAFHELPDIRECTORY.exists()) {
-                        LOG.info("Delete existing directory");
-                        try {
-                                ExtactBundleResource.deleteRecursively(KARAFHELPDIRECTORY);
-                        } catch (IOException e1) {
-                                LOG.warn(e1.toString());
-                        }
-                }
-
-                LOG.info("Extract");
-                try {
-                        Bundle b=FrameworkUtil.getBundle(HelpInfrastructureObject.class);
-                        if (b == null) {
-                                LOG.info("No bundlereference: Use target in filesystem.");
-                                //URL helpRessource = JarFileUtils.stringToJarURL("target/helpserver-impl-0.4.0-SNAPSHOT.jar",KARAFBUNDLERESOURCEHELPROOT);
-
-                        } else {
-                                LOG.info("Bundle location:{} State:{}",b.getLocation(), b.getState());
-                                LOG.info("Write files from Resource");
-                                ExtactBundleResource.copyBundleResoucesRecursively(b,"data/cache/com.highstreet.technologies." ,KARAFBUNDLERESOURCEHELPROOT);
-                        }
-                } catch (IOException e) {
-                        LOG.warn("No help files available. Exception: "+e.toString());
-                }
-        }
-
-        public static Path getHelpDirectoryBase() {
-                return(KARAFHELPDIRECTORY.toPath());
-        }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/resources/.gitignore b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/resources/.gitignore
deleted file mode 100644 (file)
index 4c01afd..0000000
+++ /dev/null
@@ -1 +0,0 @@
-/help/
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index cfa3160..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs">
-
-    <bean id="helpServlet"
-        class="com.highstreet.technologies.helpserver.HelpServlet">
-    </bean>
-
-   <service interface="javax.servlet.http.HttpServlet" ref="helpServlet">
-        <service-properties>
-            <entry key="alias" value="/help" />
-        </service-properties>
-    </service>
-</blueprint>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/test/SimpleTests.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/main/test/SimpleTests.java
deleted file mode 100644 (file)
index a8b5bf9..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-import java.io.File;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.json.JSONArray;
-import org.json.JSONObject;
-
-import com.highstreet.technologies.helpserver.data.HelpInfrastructureObject;
-
-public class SimpleTests {
-
-
-       private static void testURI()
-       {
-               String uri="/ms/1/api/";
-               String query="task=getconfig";
-
-               long id=0;
-               String remoteUrl="";
-               uri = uri.substring("/ms/".length());
-
-               try {
-                       id = Long.parseLong(uri.substring(0, uri.indexOf("/")));
-                       uri=uri.substring(uri.indexOf("/"));
-               } catch (Exception err) {
-                       System.out.println(err.getMessage());
-               }
-
-               if(id>0)
-               {
-               remoteUrl=baseUrl(id)+uri;
-               if (query != null && query.length() > 0)
-                       remoteUrl += "?" + query;
-               }
-               System.out.println("url="+remoteUrl);
-       }
-       private static void testMSDBDataParser()
-       {
-               String resp="{\"took\":6,\"timed_out\":false,\"_shards\":{\"total\":5,\"successful\":5,\"failed\":0},\"hits\":{\"total\":2,\"max_score\":1.0,\"hits\":[{\"_index\":\"mwtn_v1\",\"_type\":\"mediator-server\",\"_id\":\"2\",\"_score\":1.0,\"_source\":{\"id\":2,\"name\":\"Server 2\",\"url\":\"http://mediatorsnmp.fritz.box:7070\"}},{\"_index\":\"mwtn_v1\",\"_type\":\"mediator-server\",\"_id\":\"1\",\"_score\":1.0,\"_source\":{\"id\":1,\"name\":\"Server 1\",\"url\":\"http://192.168.11.44:7070\"}}]}}";
-               JSONObject ro=new JSONObject(resp);
-               JSONArray a=ro.getJSONObject("hits").getJSONArray("hits");
-               for(int i=0;i<a.length();i++)
-               {
-                       JSONObject x=a.getJSONObject(i).getJSONObject("_source");
-                       System.out.println("id="+x.getLong("id")+" name=\""+x.getString("name")+"\" url=\""+x.getString("url")+"\"");
-               }
-
-       }
-
-        public static void walk(ArrayList<File> results, String path ) {
-
-               File root = new File( path );
-               File[] list = root.listFiles();
-
-               if (list == null) return;
-
-               for ( File f : list ) {
-                   if ( f.isDirectory() ) {
-                       walk(results, f.getAbsolutePath() );
-                       //System.out.println( "Dir:" + f.getAbsoluteFile() );
-                   }
-                   else {
-                       //System.out.println( "File:" + f.getAbsoluteFile() );
-                       if(f.isFile() && f.getName().endsWith(".md") )
-                               results.add(f);
-                   }
-               }
-           }
-       private static void testFindMDs()
-       {
-               final String BASEURI = "/help";
-               final int MAX_DEPTH = 10;
-               String uri="/help/";//req.getRequestURI();
-               Path basePath=new File("/home/herbert/odl/distribution-karaf-0.5.3-Boron-SR3").toPath();
-               uri=uri.substring(BASEURI.length());
-               try
-               {
-                       ArrayList<File> mdfiles=new ArrayList<>();
-                       walk(mdfiles,basePath.toAbsolutePath().toString());
-                       JSONArray a=new JSONArray();
-                       Iterator<File> it=mdfiles.iterator();
-                       while(it.hasNext())
-                               a.put(it.next().toString().substring(basePath.toAbsolutePath().toString().length()));
-                       //resp.getOutputStream().println(a.toString());
-                       System.out.println(a.toString());
-
-               }
-               catch(Exception err)
-               {
-                       err.printStackTrace();
-               }
-       }
-       private static void folderTests()
-       {
-               Path basePath=new File("/home/herbert/odl/distribution-karaf-0.5.3-Boron-SR3").toPath();
-               Path pHelp=basePath.resolve("help/");
-               String uri="0.1.0-SNAPSHOT/OpenDaylight";
-               System.out.println("phelp="+pHelp.toString());
-               Path pUri=pHelp.resolve(uri);
-               System.out.println("puri="+pUri.toString());
-       }
-       public static void folderTests2()
-       {
-               try
-               {
-                       HelpInfrastructureObject o =new HelpInfrastructureObject(new File("/home/herbert/odl/distribution-karaf-0.5.3-Boron-SR3/help").toPath());
-
-               System.out.println(o.toString());
-               }
-               catch(Exception e )
-               {
-                       e.printStackTrace();
-               }
-       }
-
-       public static void folderCreateTestFromRes()
-       {
-               HelpInfrastructureObject.createFilesFromResources();
-       }
-
-       private static String getVersionFromRequestedUri(String uri) {
-               if(uri==null)
-                       return null;
-               int lastidx=uri.lastIndexOf("/");
-               if(lastidx<0)
-                       return null;
-               int slastidx=uri.lastIndexOf("/", lastidx-1);
-               if(slastidx<0)
-                       return null;
-               return uri.substring(slastidx+1, lastidx);
-
-       }
-       public static void testUriVersionExtract()
-       {
-               String uri="help/test2/folder4/0.4.1/README.md";
-               String version=getVersionFromRequestedUri(uri);
-               System.out.println("uri="+uri);
-               System.out.println("version="+version);
-       }
-       public static void main(String[] args)
-       {
-               //testURI();
-               //testMSDBDataParser();
-               //testFindMDs();
-               //folderTests2();
-               //folderCreateTestFromRes();
-               testUriVersionExtract();
-       }
-
-       private static String baseUrl(long id) {
-               return "http://test.tld:7021";
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/test/resources/log4j.properties b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/impl/src/test/resources/log4j.properties
deleted file mode 100644 (file)
index 142663b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-log4j.rootLogger=INFO, out
-
-log4j.logger.org.apache.camel.impl.converter=WARN
-log4j.logger.org.apache.camel.management=WARN
-log4j.logger.org.apache.camel.impl.DefaultPackageScanClassResolver=WARN
-log4j.logger.org.springframework=ERROR
-
-# CONSOLE appender not used by default
-log4j.appender.out=org.apache.log4j.ConsoleAppender
-log4j.appender.out.layout=org.apache.log4j.PatternLayout
-log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/helpServer/pom.xml
deleted file mode 100644 (file)
index 22043a7..0000000
+++ /dev/null
@@ -1,93 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
-       license agreements. See the NOTICE file distributed with this work for additional
-       information regarding copyright ownership. The ASF licenses this file to
-       You under the Apache License, Version 2.0 (the "License"); you may not use
-       this file except in compliance with the License. You may obtain a copy of
-       the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
-       by applicable law or agreed to in writing, software distributed under the
-       License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-       OF ANY KIND, either express or implied. See the License for the specific
-       language governing permissions and limitations under the License. -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-       <modelVersion>4.0.0</modelVersion>
-
-       <groupId>com.highstreet.technologies.helpserver</groupId>
-       <artifactId>helpserver-parent</artifactId>
-       <version>0.5.1-SNAPSHOT</version>
-       <packaging>pom</packaging>
-
-       <properties>
-               <log4j-version>1.2.16</log4j-version>
-               <slf4j-version>1.6.1</slf4j-version>
-       </properties>
-
-       <modules>
-               <module>impl</module>
-               <module>features</module>
-       </modules>
-
-       <dependencies>
-           <dependency>
-                   <groupId>javax.ws.rs</groupId>
-           <artifactId>javax.ws.rs-api</artifactId>
-           <version>2.0.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>${slf4j-version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.12</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-            <version>${slf4j-version}</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>${log4j-version}</version>
-            <scope>test</scope>
-        </dependency>
-         <dependency>
-        <groupId>org.json</groupId>
-        <artifactId>json</artifactId>
-        <version>20131018</version>
-      </dependency>
-    </dependencies>
-
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-compiler-plugin</artifactId>
-                               <version>3.3</version>
-                               <configuration>
-                                       <source>1.7</source>
-                                       <target>1.7</target>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.apache.felix</groupId>
-                               <artifactId>maven-bundle-plugin</artifactId>
-                               <version>3.0.1</version>
-                               <extensions>true</extensions>
-                               <configuration>
-                                       <instructions>
-                                               <_include>-bnd.bnd</_include>
-                                       </instructions>
-                               </configuration>
-                       </plugin>
-               </plugins>
-       </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/features/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/features/pom.xml
deleted file mode 100644 (file)
index 049296d..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
- <parent>
-    <groupId>org.opendaylight.odlparent</groupId>
-    <artifactId>features-parent</artifactId>
-    <version>1.8.1-Carbon</version>
-    <relativePath/>
-</parent>
-
-   <groupId>com.highstreet.technologies.info</groupId>
-  <artifactId>info-features</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-  <name>${project.artifactId}</name>
-
-  <prerequisites>
-    <maven>3.3.3</maven>
-  </prerequisites>
-
-
- <dependencies>
-  <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>info-impl</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/features/src/main/features/features.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/features/src/main/features/features.xml
deleted file mode 100644 (file)
index 5c6adfe..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<features name="apigateway-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-
-  <feature name="odl-ht-info" version="${project.version}" description="OpenDaylight :: Info :: Core">
-    <feature>http</feature>
-    <bundle>mvn:org.apache.commons/commons-compress/1.14</bundle>
-    <bundle>mvn:com.highstreet.technologies.info/info-impl/${project.version}</bundle>
-</feature>
-
-</features>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/pom.xml
deleted file mode 100644 (file)
index 0ff42b4..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-
-       <modelVersion>4.0.0</modelVersion>
-       <groupId>com.highstreet.technologies.info</groupId>
-       <artifactId>info-impl</artifactId>
-       <packaging>bundle</packaging>
-
-       <parent>
-               <groupId>com.highstreet.technologies.info</groupId>
-               <artifactId>info-parent</artifactId>
-               <version>0.5.1-SNAPSHOT</version>
-       </parent>
-
-       <dependencies>
-               <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-compress -->
-               <dependency>
-                       <groupId>org.apache.commons</groupId>
-                       <artifactId>commons-compress</artifactId>
-                       <version>1.14</version>
-               </dependency>
-               <dependency>
-                       <groupId>javax.servlet</groupId>
-                       <artifactId>servlet-api</artifactId>
-                       <version>2.5</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.slf4j</groupId>
-                       <artifactId>slf4j-log4j12</artifactId>
-                       <version>1.6.6</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.json</groupId>
-                       <artifactId>json</artifactId>
-                       <version>20131018</version>
-               </dependency>
-       </dependencies>
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-compiler-plugin</artifactId>
-                               <configuration>
-                                       <source>1.8</source>
-                                       <target>1.8</target>
-                               </configuration>
-                       </plugin>
-
-               </plugins>
-       </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/java/com/highstreet/technologies/info/InfoServlet.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/java/com/highstreet/technologies/info/InfoServlet.java
deleted file mode 100644 (file)
index fc40533..0000000
+++ /dev/null
@@ -1,430 +0,0 @@
-package com.highstreet.technologies.info;
-
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.net.URL;
-import java.net.URLDecoder;
-import java.nio.charset.Charset;
-import java.nio.file.Path;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
-import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
-import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream;
-import org.apache.commons.compress.utils.IOUtils;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class InfoServlet extends HttpServlet {
-
-       private static Logger LOG = LoggerFactory.getLogger(InfoServlet.class);
-       private static final String BASEURI = "/info";
-       private static final String AKKACONF_FILENAME = "configuration/initial/akka.conf";
-       private static final String GEOCONF_FILENAME = "configuration/initial/geo.conf";
-       private static final String DATABASECONF_FILENAME = "etc/elasticsearch.yml";
-       private static final String DEVMGRCONF_FILENAME = "etc/devicemanager.properties";
-       private static final String KARAFLOG_FILENAME = "etc/org.ops4j.pax.logging.cfg";
-       private static final String KARAFLOG_FOLDER = "data/log/";
-       private static final String BUNDLE_FOLDER = "data/cache/org.eclipse.osgi/bundles";
-
-       private static final String VERSIONTXT_FILENAME = "etc/version.txt";
-       private static final String KARAFLOG_TARGZ = "data/log/karaflog.tar.gz";
-       private static final String CHARSET = "UTF-8";
-       private final Path basePath;
-
-       public InfoServlet() {
-               this.basePath = new File("/html").toPath();
-       }
-
-       @Override
-       protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-
-               String uri = URLDecoder.decode(req.getRequestURI().substring(BASEURI.length()), "UTF-8");
-               LOG.debug("handle get request for uri="+uri);
-               if (uri.startsWith("/"))
-                       uri = uri.substring(1);
-               if(uri.startsWith("api/"))
-               {
-                       uri = uri.substring("api/".length());
-                       if (uri.startsWith("data/")) {
-                               uri = uri.substring("data/".length());
-                               this.doGetDataRequest(uri, req, resp);
-                       }
-               }
-               else
-               {
-                       Path p = basePath.resolve(uri);
-                       LOG.debug("try to find file:"+p.toString());
-                       URL resurl = this.getClass().getResource(p.toString());
-                       if (resurl != null)// resource file found
-                       {
-                               if (this.isHTMLFile(resurl)) {
-                                       LOG.debug("filetype: html");
-                                       resp.setHeader("Content-Type", "text/html");
-                                       resp.setHeader("charset", "utf-8");
-                               } else if (this.isJavascript(resurl)) {
-                                       LOG.debug("filetype: js");
-                                       resp.setHeader("Content-Type", "application/javascript");
-                                       resp.setHeader("charset", "utf-8");
-                               } else if (this.isStylesheet(resurl)) {
-                                       LOG.debug("filetype: css");
-                                       resp.setHeader("Content-Type", "text/css");
-                                       resp.setHeader("charset", "utf-8");
-                               } else if (this.isTextFile(resurl)) {
-                                       LOG.debug("filetype: text");
-                                       resp.setHeader("Content-Type", "application/text");
-                                       resp.setHeader("charset", "utf-8");
-                               } else if (this.isImageFile(resurl)) {
-                                       LOG.debug("filetype: image");
-                                       resp.setHeader("Content-Type", "image/*");
-                               } else if (this.ispdf(resurl)) {
-                                       LOG.debug("filetype: pdf");
-                                       resp.setHeader("Content-Type", "application/pdf");
-                               } else {
-                                       LOG.debug("unknown file type request");
-                                       resp.setStatus(404);
-                                       return;
-                               }
-                               try (InputStream in = this.getClass().getResourceAsStream(p.toString())) {
-                                       OutputStream out = resp.getOutputStream();
-                                       byte[] buffer = new byte[1024];
-                                       int len;
-                                       while ((len = in.read(buffer)) != -1) {
-                                               out.write(buffer, 0, len);
-                                       }
-                                       in.close();
-                                       out.flush();
-                                       out.close();
-                               }
-
-                       } else // resource file not found
-                       {
-                               LOG.debug("resource file not found");
-                               resp.setStatus(404);
-                       }
-               }
-       }
-
-       private void doGetDataRequest(String uri, HttpServletRequest req, HttpServletResponse resp) {
-               switch(uri)
-               {
-               case "log.download":
-                       try {
-                               this.writeFileStream(KARAFLOG_TARGZ, resp, "application/x-gzip",true);
-                       } catch (Exception e) {
-                               LOG.warn("problem reading " + KARAFLOG_TARGZ + ": " + e.getMessage());
-                               resp.setStatus(500);
-                       }
-                       break;
-               }
-
-       }
-
-       protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
-               String uri = URLDecoder.decode(req.getRequestURI().substring(BASEURI.length()), "UTF-8");
-               LOG.debug("handle get request for uri="+uri);
-               if (uri.startsWith("/"))
-                       uri = uri.substring(1);
-               if (uri.startsWith("api/")) {
-                       uri = uri.substring("api/".length());
-                       if (uri.startsWith("data/")) {
-                               uri = uri.substring("data/".length());
-                               this.doPostDataRequest(uri, req, resp);
-                       } else if (uri.startsWith("task/")) {
-                               uri = uri.substring("task/".length());
-                               this.doPostTaskRequest(uri, req, resp);
-                       } else {
-                               resp.setStatus(404);
-                       }
-
-               } else
-               {
-                       LOG.debug("unknown uri to handle");
-                       resp.setStatus(404);
-               }
-       }
-
-       private void doPostTaskRequest(String uri, HttpServletRequest req, HttpServletResponse resp) {
-               switch(uri)
-               {
-               case "dbbackup.create":
-                       try {
-                               resp.getOutputStream().write("not yet supported".getBytes());
-                       } catch (IOException e) {
-
-                       }
-                       break;
-               case "dbbackup.restore":
-                       try {
-                               resp.getOutputStream().write("not yet supported".getBytes());
-                       } catch (IOException e) {
-
-                       }
-                       break;
-               default:
-                       resp.setStatus(404);
-                       break;
-               }
-
-       }
-
-       private void doPostDataRequest(String uri, HttpServletRequest req, HttpServletResponse resp) {
-               String acceptFormat=req.getHeader("Accept");
-               switch (uri) {
-               case "akka.conf":
-                       try {
-                               this.writeFileStream(AKKACONF_FILENAME, resp);
-                       } catch (Exception e) {
-                               LOG.warn("problem reading " + AKKACONF_FILENAME + ": " + e.getMessage());
-                               resp.setStatus(500);
-                       }
-                       break;
-               case "geo.conf":
-                       try {
-                               this.writeFileStream(GEOCONF_FILENAME, resp);
-                       } catch (Exception e) {
-                               LOG.warn("problem reading " + GEOCONF_FILENAME + ": " + e.getMessage());
-                               resp.setStatus(500);
-
-                       }
-                       break;
-               case "devmgr.prop":
-                       try {
-                               this.writeFileStream(DEVMGRCONF_FILENAME, resp);
-                       } catch (Exception e) {
-                               LOG.warn("problem reading " + DEVMGRCONF_FILENAME + ": " + e.getMessage());
-                               resp.setStatus(500);
-
-                       }
-                       break;
-               case "es.yml":
-                       try {
-                               this.writeFileStream(DATABASECONF_FILENAME, resp);
-                       } catch (Exception e) {
-                               LOG.warn("problem reading " + DATABASECONF_FILENAME + ": " + e.getMessage());
-                               resp.setStatus(500);
-
-                       }
-                       break;
-               case "log.prop":
-                       try {
-                               this.writeFileStream(KARAFLOG_FILENAME, resp);
-                       } catch (Exception e) {
-                               LOG.warn("problem reading " + KARAFLOG_FILENAME + ": " + e.getMessage());
-                               resp.setStatus(500);
-
-                       }
-                       break;
-               case "bundle.list":
-                       try
-                       {
-                               KarafBundleList list=new KarafBundleList(BUNDLE_FOLDER);
-                               list.scan();
-                               this.writeOutput(list.toJSON(),resp, "application/json");
-                       }
-                       catch(IOException e)
-                       {
-                               LOG.warn("problem reading bundlelist: " + e.getMessage());
-                               resp.setStatus(500);
-                       }
-               case "log.download":
-                       try {
-                               this.createLogDownload(KARAFLOG_TARGZ);
-                               this.writeFileStream(KARAFLOG_TARGZ, resp, "application/x-gzip",true);
-                       } catch (Exception e) {
-                               LOG.warn("problem reading " + KARAFLOG_TARGZ + ": " + e.getMessage());
-                               resp.setStatus(500);
-                       }
-                       break;
-
-               default:
-                       resp.setStatus(404);
-                       break;
-               }
-       }
-
-       private void writeOutput(String str, HttpServletResponse resp) throws IOException
-       {
-               this.writeOutput(str,resp,"text/plain");
-       }
-       private void writeOutput(String str, HttpServletResponse resp, String contentType) throws IOException
-       {
-               this.writeOutput(str,resp,contentType,null);
-       }
-       private void writeOutput(String str, HttpServletResponse resp, String contentType,String asDownloadFilename) throws IOException{
-               OutputStream out = resp.getOutputStream();
-               if (contentType != null)
-                       resp.setHeader("Content-Type", contentType);
-               if(asDownloadFilename!=null)
-                       resp.setHeader("Content-Disposition","inline; filename=\""+asDownloadFilename+"\"");
-               byte[] buffer = new byte[1024];
-               int len;
-               out.write(str.getBytes(CHARSET));
-               out.flush();
-               out.close();
-       }
-
-       private void createLogDownload(String tarFilename) {
-               LOG.debug("start creating tar file "+tarFilename);
-               File f = new File(tarFilename);
-               if (f.exists())
-                       f.delete();
-               FileOutputStream fOut = null;
-               BufferedOutputStream bOut = null;
-               GzipCompressorOutputStream gzOut = null;
-               TarArchiveOutputStream tOut = null;
-               try {
-               //      System.out.println(new File(".").getAbsolutePath());
-                       fOut = new FileOutputStream(new File(tarFilename));
-                       bOut = new BufferedOutputStream(fOut);
-                       gzOut = new GzipCompressorOutputStream(bOut);
-                       tOut = new TarArchiveOutputStream(gzOut);
-                       this.addFileToTarGz(tOut, KARAFLOG_FOLDER, "", ".log");
-               } catch (IOException e) {
-                       LOG.warn("problem creating tar:" + e.getMessage());
-               } finally {
-                       try {
-                               if (tOut != null) {
-                                       tOut.finish();
-                                       tOut.close();
-                               }
-                               if (gzOut != null)
-                                       gzOut.close();
-                               if (bOut != null)
-                                       bOut.close();
-                               if (fOut != null)
-                                       fOut.close();
-                               LOG.debug("finished creating tar file");
-                       } catch (IOException e) {
-                               LOG.warn("problem closing streams:" + e.getMessage());
-                       }
-               }
-
-       }
-
-       private void addFileToTarGz(TarArchiveOutputStream tOut, String path, String base, final String filter)
-                       throws IOException {
-               File f = new File(path);
-               String entryName = base + f.getName();
-               TarArchiveEntry tarEntry = new TarArchiveEntry(f, entryName);
-               tOut.putArchiveEntry(tarEntry);
-
-               if (f.isFile())
-               {
-                       if( f.getName().contains(filter)) {
-                               LOG.debug("adding to tar:"+f.getName());
-                               IOUtils.copy(new FileInputStream(f), tOut);
-                               tOut.closeArchiveEntry();
-                       }
-                       else
-                               LOG.debug("file "+f.getName()+" filtered out, filter="+filter);
-               } else {
-                       tOut.closeArchiveEntry();
-                       File[] children = f.listFiles();
-                       if (children != null) {
-                               for (File child : children) {
-                                       addFileToTarGz(tOut, child.getAbsolutePath(), entryName + "/", filter);
-                               }
-                       }
-               }
-       }
-
-       private void writeFileStream(String filename, HttpServletResponse resp) throws IOException {
-               this.writeFileStream(filename, resp, null);
-       }
-       private void writeFileStream(String filename, HttpServletResponse resp,String contentType) throws IOException {
-               this.writeFileStream(filename, resp, contentType,false);
-       }
-       private void writeFileStream(String filename, HttpServletResponse resp, String contentType,boolean asDownload) throws IOException {
-               File file=new File(filename);
-               if(!file.exists())
-               {
-                       LOG.debug("unable to write filestream to http. file not found: "+filename);
-                       resp.setStatus(404);
-                       return;
-               }
-               LOG.debug("write file "+filename+" to http with content-type "+contentType);
-               InputStream in = new FileInputStream(file);
-               OutputStream out = resp.getOutputStream();
-               if (contentType != null)
-                       resp.setHeader("Content-Type", contentType);
-               if(asDownload)
-                       resp.setHeader("Content-Disposition","inline; filename=\""+file.getName()+"\"");
-               byte[] buffer = new byte[1024];
-               int len;
-               while ((len = in.read(buffer)) != -1) {
-                       out.write(buffer, 0, len);
-               }
-               in.close();
-               out.flush();
-               out.close();
-       }
-
-       private boolean isHTMLFile(URL url) {
-               return url != null ? (url.toString().endsWith("html") || url.toString().endsWith("htm")) : false;
-       }
-
-       private boolean isTextFile(URL url) {
-               return url != null ? this.isTextFile(url.toString()) : false;
-       }
-
-       private boolean ispdf(URL url) {
-               return url != null ? this.ispdf(url.toString()) : false;
-       }
-
-       private boolean isImageFile(URL url) {
-               return url != null ? this.isImageFile(url.toString()) : false;
-       }
-
-       private boolean ispdf(File f) {
-               return f != null ? this.ispdf(f.getName()) : false;
-       }
-
-       private boolean ispdf(String name) {
-               return name != null ? name.toLowerCase().endsWith("pdf") : false;
-       }
-
-       private boolean isImageFile(File f) {
-               return f != null ? this.isImageFile(f.getName()) : false;
-       }
-
-       private boolean isImageFile(String name) {
-
-               return name != null
-                               ? (name.toLowerCase().endsWith("png") || name.toLowerCase().endsWith("jpg")
-                                               || name.toLowerCase().endsWith("jpeg") || name.toLowerCase().endsWith("svg")
-                                               || name.toLowerCase().endsWith("eps"))
-                               : false;
-       }
-
-       private boolean isTextFile(File f) {
-               return f != null ? this.isTextFile(f.getName()) : false;
-
-       }
-
-       private boolean isJavascript(URL url) {
-               return url != null ? url.toString().endsWith("js") : false;
-       }
-
-       private boolean isStylesheet(URL url) {
-               return url != null ? url.toString().endsWith("css") : false;
-       }
-
-       private boolean isTextFile(String name) {
-               return name != null
-                               ? (name.toLowerCase().endsWith("md") || name.toLowerCase().endsWith("txt")
-                                               || name.toLowerCase().endsWith("map"))
-                               : false;
-       }
-
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/java/com/highstreet/technologies/info/KarafBundle.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/java/com/highstreet/technologies/info/KarafBundle.java
deleted file mode 100644 (file)
index 88f5f77..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-package com.highstreet.technologies.info;
-
-import org.json.JSONObject;
-
-public class KarafBundle implements CharSequence
-{
-       @Override
-       public String toString() {
-               return this.json;
-       }
-
-       public final int id;
-       public final String name;//: OPS4J Pax Swissbox :: OSGi Core
-       public final String symbolicName;//: org.ops4j.pax.swissbox.core
-       public final String vendor;//: OPS4J - Open Participation Software for Java
-       public final String version;//: 1.8.2
-       private final String json;
-       public KarafBundle(int id,String name,String symbName,String vendor,String version)
-       {
-               this.id=id;this.name=name;this.symbolicName=symbName;this.vendor=vendor;this.version=version;
-               this.json=this.toJSON();
-       }
-       public String toJSON()
-       {
-               JSONObject o=new JSONObject();
-               o.put("id", this.id);
-               o.put("name", this.name);
-               o.put("symbolicName", this.symbolicName);
-               o.put("vendor", this.vendor);
-               o.put("version",this.version);
-               return o.toString();
-       }
-       @Override
-       public char charAt(int arg0) {
-               return json.charAt(arg0);
-       }
-       @Override
-       public int length() {
-               return json.length();
-       }
-       @Override
-       public CharSequence subSequence(int arg0, int arg1) {
-               return json.subSequence(arg0, arg1);
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/java/com/highstreet/technologies/info/KarafBundleList.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/java/com/highstreet/technologies/info/KarafBundleList.java
deleted file mode 100644 (file)
index 4f2c36f..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-package com.highstreet.technologies.info;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileNotFoundException;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.jar.Attributes;
-import java.util.jar.JarInputStream;
-import java.util.jar.Manifest;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class KarafBundleList extends ArrayList<KarafBundle>{
-
-
-       private static Logger LOG = LoggerFactory.getLogger(KarafBundleList.class);
-       /**
-        *
-        */
-       private static final long serialVersionUID = 2856302408338858883L;
-       private final Path _root;
-       public KarafBundleList(String root)
-       {
-               this._root=new File(root).toPath();
-       }
-       public void scan()
-       {
-               LOG.debug("start scanning "+this._root.toString()+" for bundles");
-               for(File f : this._root.toFile().listFiles())
-               {
-                       if(!f.isDirectory())
-                               continue;
-                       int id=Integer.parseInt(f.getName());
-                       File bundleFile=new File(f,"1/bundlefile");
-                       if(bundleFile.exists() && bundleFile.isFile())
-                       {
-                               LOG.trace("try to load bundleinfos for "+bundleFile.getName()+"("+id+")");
-                               try {
-                                       KarafBundle infos=this._readManifestFromZip(id,bundleFile);
-                                       this.add(infos);
-                               } catch (IOException e) {
-                                       LOG.warn("problem reading bundle with id="+id+": "+e.getMessage());
-                               }
-                       }
-               }
-       }
-       private KarafBundle _readManifestFromZip(int id,File bundleFile) throws FileNotFoundException, IOException  {
-
-               JarInputStream jarStream = new JarInputStream(new FileInputStream(bundleFile));
-               Manifest mf = jarStream.getManifest();
-               Attributes a=mf.getMainAttributes();
-               jarStream.close();
-               return new KarafBundle(id, a.getValue("Bundle-Name"), a.getValue("Bundle-SymbolicName"), a.getValue("Bundle-Vendor"), a.getValue("Bundle-Version"));
-       }
-
-       public String toJSON()
-       {
-               return "["+String.join(",", this)+"]";
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 5f03f24..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs">
-
-    <bean id="infoServlet"
-        class="com.highstreet.technologies.info.InfoServlet">
-    </bean>
-
-   <service interface="javax.servlet.http.HttpServlet" ref="infoServlet">
-        <service-properties>
-            <entry key="alias" value="/info" />
-        </service-properties>
-    </service>
-
-</blueprint>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/css/bootstrap.min.css b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/css/bootstrap.min.css
deleted file mode 100644 (file)
index 7aebd0f..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Bootstrap v4.1.1 (https://getbootstrap.com/)
- * Copyright 2011-2018 The Bootstrap Authors
- * Copyright 2011-2018 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */:root{--blue:#007bff;--indigo:#6610f2;--purple:#6f42c1;--pink:#e83e8c;--red:#dc3545;--orange:#fd7e14;--yellow:#ffc107;--green:#28a745;--teal:#20c997;--cyan:#17a2b8;--white:#fff;--gray:#6c757d;--gray-dark:#343a40;--primary:#007bff;--secondary:#6c757d;--success:#28a745;--info:#17a2b8;--warning:#ffc107;--danger:#dc3545;--light:#f8f9fa;--dark:#343a40;--breakpoint-xs:0;--breakpoint-sm:576px;--breakpoint-md:768px;--breakpoint-lg:992px;--breakpoint-xl:1200px;--font-family-sans-serif:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}*,::after,::before{box-sizing:border-box}html{font-family:sans-serif;line-height:1.15;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%;-ms-overflow-style:scrollbar;-webkit-tap-highlight-color:transparent}@-ms-viewport{width:device-width}article,aside,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-size:1rem;font-weight:400;line-height:1.5;color:#212529;text-align:left;background-color:#fff}[tabindex="-1"]:focus{outline:0!important}hr{box-sizing:content-box;height:0;overflow:visible}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.5rem}p{margin-top:0;margin-bottom:1rem}abbr[data-original-title],abbr[title]{text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;border-bottom:0}address{margin-bottom:1rem;font-style:normal;line-height:inherit}dl,ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ol ul,ul ol,ul ul{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:.5rem;margin-left:0}blockquote{margin:0 0 1rem}dfn{font-style:italic}b,strong{font-weight:bolder}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}a{color:#007bff;text-decoration:none;background-color:transparent;-webkit-text-decoration-skip:objects}a:hover{color:#0056b3;text-decoration:underline}a:not([href]):not([tabindex]){color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus,a:not([href]):not([tabindex]):hover{color:inherit;text-decoration:none}a:not([href]):not([tabindex]):focus{outline:0}code,kbd,pre,samp{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:1em}pre{margin-top:0;margin-bottom:1rem;overflow:auto;-ms-overflow-style:scrollbar}figure{margin:0 0 1rem}img{vertical-align:middle;border-style:none}svg:not(:root){overflow:hidden}table{border-collapse:collapse}caption{padding-top:.75rem;padding-bottom:.75rem;color:#6c757d;text-align:left;caption-side:bottom}th{text-align:inherit}label{display:inline-block;margin-bottom:.5rem}button{border-radius:0}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}button,input,optgroup,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,input{overflow:visible}button,select{text-transform:none}[type=reset],[type=submit],button,html [type=button]{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{padding:0;border-style:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=date],input[type=datetime-local],input[type=month],input[type=time]{-webkit-appearance:listbox}textarea{overflow:auto;resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{display:block;width:100%;max-width:100%;padding:0;margin-bottom:.5rem;font-size:1.5rem;line-height:inherit;color:inherit;white-space:normal}progress{vertical-align:baseline}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{outline-offset:-2px;-webkit-appearance:none}[type=search]::-webkit-search-cancel-button,[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}output{display:inline-block}summary{display:list-item;cursor:pointer}template{display:none}[hidden]{display:none!important}.h1,.h2,.h3,.h4,.h5,.h6,h1,h2,h3,h4,h5,h6{margin-bottom:.5rem;font-family:inherit;font-weight:500;line-height:1.2;color:inherit}.h1,h1{font-size:2.5rem}.h2,h2{font-size:2rem}.h3,h3{font-size:1.75rem}.h4,h4{font-size:1.5rem}.h5,h5{font-size:1.25rem}.h6,h6{font-size:1rem}.lead{font-size:1.25rem;font-weight:300}.display-1{font-size:6rem;font-weight:300;line-height:1.2}.display-2{font-size:5.5rem;font-weight:300;line-height:1.2}.display-3{font-size:4.5rem;font-weight:300;line-height:1.2}.display-4{font-size:3.5rem;font-weight:300;line-height:1.2}hr{margin-top:1rem;margin-bottom:1rem;border:0;border-top:1px solid rgba(0,0,0,.1)}.small,small{font-size:80%;font-weight:400}.mark,mark{padding:.2em;background-color:#fcf8e3}.list-unstyled{padding-left:0;list-style:none}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.initialism{font-size:90%;text-transform:uppercase}.blockquote{margin-bottom:1rem;font-size:1.25rem}.blockquote-footer{display:block;font-size:80%;color:#6c757d}.blockquote-footer::before{content:"\2014 \00A0"}.img-fluid{max-width:100%;height:auto}.img-thumbnail{padding:.25rem;background-color:#fff;border:1px solid #dee2e6;border-radius:.25rem;max-width:100%;height:auto}.figure{display:inline-block}.figure-img{margin-bottom:.5rem;line-height:1}.figure-caption{font-size:90%;color:#6c757d}code{font-size:87.5%;color:#e83e8c;word-break:break-word}a>code{color:inherit}kbd{padding:.2rem .4rem;font-size:87.5%;color:#fff;background-color:#212529;border-radius:.2rem}kbd kbd{padding:0;font-size:100%;font-weight:700}pre{display:block;font-size:87.5%;color:#212529}pre code{font-size:inherit;color:inherit;word-break:normal}.pre-scrollable{max-height:340px;overflow-y:scroll}.container{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}@media (min-width:576px){.container{max-width:540px}}@media (min-width:768px){.container{max-width:720px}}@media (min-width:992px){.container{max-width:960px}}@media (min-width:1200px){.container{max-width:1140px}}.container-fluid{width:100%;padding-right:15px;padding-left:15px;margin-right:auto;margin-left:auto}.row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-15px;margin-left:-15px}.no-gutters{margin-right:0;margin-left:0}.no-gutters>.col,.no-gutters>[class*=col-]{padding-right:0;padding-left:0}.col,.col-1,.col-10,.col-11,.col-12,.col-2,.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-9,.col-auto,.col-lg,.col-lg-1,.col-lg-10,.col-lg-11,.col-lg-12,.col-lg-2,.col-lg-3,.col-lg-4,.col-lg-5,.col-lg-6,.col-lg-7,.col-lg-8,.col-lg-9,.col-lg-auto,.col-md,.col-md-1,.col-md-10,.col-md-11,.col-md-12,.col-md-2,.col-md-3,.col-md-4,.col-md-5,.col-md-6,.col-md-7,.col-md-8,.col-md-9,.col-md-auto,.col-sm,.col-sm-1,.col-sm-10,.col-sm-11,.col-sm-12,.col-sm-2,.col-sm-3,.col-sm-4,.col-sm-5,.col-sm-6,.col-sm-7,.col-sm-8,.col-sm-9,.col-sm-auto,.col-xl,.col-xl-1,.col-xl-10,.col-xl-11,.col-xl-12,.col-xl-2,.col-xl-3,.col-xl-4,.col-xl-5,.col-xl-6,.col-xl-7,.col-xl-8,.col-xl-9,.col-xl-auto{position:relative;width:100%;min-height:1px;padding-right:15px;padding-left:15px}.col{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-first{-ms-flex-order:-1;order:-1}.order-last{-ms-flex-order:13;order:13}.order-0{-ms-flex-order:0;order:0}.order-1{-ms-flex-order:1;order:1}.order-2{-ms-flex-order:2;order:2}.order-3{-ms-flex-order:3;order:3}.order-4{-ms-flex-order:4;order:4}.order-5{-ms-flex-order:5;order:5}.order-6{-ms-flex-order:6;order:6}.order-7{-ms-flex-order:7;order:7}.order-8{-ms-flex-order:8;order:8}.order-9{-ms-flex-order:9;order:9}.order-10{-ms-flex-order:10;order:10}.order-11{-ms-flex-order:11;order:11}.order-12{-ms-flex-order:12;order:12}.offset-1{margin-left:8.333333%}.offset-2{margin-left:16.666667%}.offset-3{margin-left:25%}.offset-4{margin-left:33.333333%}.offset-5{margin-left:41.666667%}.offset-6{margin-left:50%}.offset-7{margin-left:58.333333%}.offset-8{margin-left:66.666667%}.offset-9{margin-left:75%}.offset-10{margin-left:83.333333%}.offset-11{margin-left:91.666667%}@media (min-width:576px){.col-sm{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-sm-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-sm-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-sm-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-sm-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-sm-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-sm-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-sm-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-sm-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-sm-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-sm-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-sm-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-sm-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-sm-first{-ms-flex-order:-1;order:-1}.order-sm-last{-ms-flex-order:13;order:13}.order-sm-0{-ms-flex-order:0;order:0}.order-sm-1{-ms-flex-order:1;order:1}.order-sm-2{-ms-flex-order:2;order:2}.order-sm-3{-ms-flex-order:3;order:3}.order-sm-4{-ms-flex-order:4;order:4}.order-sm-5{-ms-flex-order:5;order:5}.order-sm-6{-ms-flex-order:6;order:6}.order-sm-7{-ms-flex-order:7;order:7}.order-sm-8{-ms-flex-order:8;order:8}.order-sm-9{-ms-flex-order:9;order:9}.order-sm-10{-ms-flex-order:10;order:10}.order-sm-11{-ms-flex-order:11;order:11}.order-sm-12{-ms-flex-order:12;order:12}.offset-sm-0{margin-left:0}.offset-sm-1{margin-left:8.333333%}.offset-sm-2{margin-left:16.666667%}.offset-sm-3{margin-left:25%}.offset-sm-4{margin-left:33.333333%}.offset-sm-5{margin-left:41.666667%}.offset-sm-6{margin-left:50%}.offset-sm-7{margin-left:58.333333%}.offset-sm-8{margin-left:66.666667%}.offset-sm-9{margin-left:75%}.offset-sm-10{margin-left:83.333333%}.offset-sm-11{margin-left:91.666667%}}@media (min-width:768px){.col-md{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-md-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-md-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-md-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-md-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-md-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-md-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-md-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-md-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-md-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-md-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-md-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-md-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-md-first{-ms-flex-order:-1;order:-1}.order-md-last{-ms-flex-order:13;order:13}.order-md-0{-ms-flex-order:0;order:0}.order-md-1{-ms-flex-order:1;order:1}.order-md-2{-ms-flex-order:2;order:2}.order-md-3{-ms-flex-order:3;order:3}.order-md-4{-ms-flex-order:4;order:4}.order-md-5{-ms-flex-order:5;order:5}.order-md-6{-ms-flex-order:6;order:6}.order-md-7{-ms-flex-order:7;order:7}.order-md-8{-ms-flex-order:8;order:8}.order-md-9{-ms-flex-order:9;order:9}.order-md-10{-ms-flex-order:10;order:10}.order-md-11{-ms-flex-order:11;order:11}.order-md-12{-ms-flex-order:12;order:12}.offset-md-0{margin-left:0}.offset-md-1{margin-left:8.333333%}.offset-md-2{margin-left:16.666667%}.offset-md-3{margin-left:25%}.offset-md-4{margin-left:33.333333%}.offset-md-5{margin-left:41.666667%}.offset-md-6{margin-left:50%}.offset-md-7{margin-left:58.333333%}.offset-md-8{margin-left:66.666667%}.offset-md-9{margin-left:75%}.offset-md-10{margin-left:83.333333%}.offset-md-11{margin-left:91.666667%}}@media (min-width:992px){.col-lg{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-lg-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-lg-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-lg-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-lg-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-lg-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-lg-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-lg-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-lg-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-lg-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-lg-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-lg-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-lg-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-lg-first{-ms-flex-order:-1;order:-1}.order-lg-last{-ms-flex-order:13;order:13}.order-lg-0{-ms-flex-order:0;order:0}.order-lg-1{-ms-flex-order:1;order:1}.order-lg-2{-ms-flex-order:2;order:2}.order-lg-3{-ms-flex-order:3;order:3}.order-lg-4{-ms-flex-order:4;order:4}.order-lg-5{-ms-flex-order:5;order:5}.order-lg-6{-ms-flex-order:6;order:6}.order-lg-7{-ms-flex-order:7;order:7}.order-lg-8{-ms-flex-order:8;order:8}.order-lg-9{-ms-flex-order:9;order:9}.order-lg-10{-ms-flex-order:10;order:10}.order-lg-11{-ms-flex-order:11;order:11}.order-lg-12{-ms-flex-order:12;order:12}.offset-lg-0{margin-left:0}.offset-lg-1{margin-left:8.333333%}.offset-lg-2{margin-left:16.666667%}.offset-lg-3{margin-left:25%}.offset-lg-4{margin-left:33.333333%}.offset-lg-5{margin-left:41.666667%}.offset-lg-6{margin-left:50%}.offset-lg-7{margin-left:58.333333%}.offset-lg-8{margin-left:66.666667%}.offset-lg-9{margin-left:75%}.offset-lg-10{margin-left:83.333333%}.offset-lg-11{margin-left:91.666667%}}@media (min-width:1200px){.col-xl{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;max-width:100%}.col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto;max-width:none}.col-xl-1{-ms-flex:0 0 8.333333%;flex:0 0 8.333333%;max-width:8.333333%}.col-xl-2{-ms-flex:0 0 16.666667%;flex:0 0 16.666667%;max-width:16.666667%}.col-xl-3{-ms-flex:0 0 25%;flex:0 0 25%;max-width:25%}.col-xl-4{-ms-flex:0 0 33.333333%;flex:0 0 33.333333%;max-width:33.333333%}.col-xl-5{-ms-flex:0 0 41.666667%;flex:0 0 41.666667%;max-width:41.666667%}.col-xl-6{-ms-flex:0 0 50%;flex:0 0 50%;max-width:50%}.col-xl-7{-ms-flex:0 0 58.333333%;flex:0 0 58.333333%;max-width:58.333333%}.col-xl-8{-ms-flex:0 0 66.666667%;flex:0 0 66.666667%;max-width:66.666667%}.col-xl-9{-ms-flex:0 0 75%;flex:0 0 75%;max-width:75%}.col-xl-10{-ms-flex:0 0 83.333333%;flex:0 0 83.333333%;max-width:83.333333%}.col-xl-11{-ms-flex:0 0 91.666667%;flex:0 0 91.666667%;max-width:91.666667%}.col-xl-12{-ms-flex:0 0 100%;flex:0 0 100%;max-width:100%}.order-xl-first{-ms-flex-order:-1;order:-1}.order-xl-last{-ms-flex-order:13;order:13}.order-xl-0{-ms-flex-order:0;order:0}.order-xl-1{-ms-flex-order:1;order:1}.order-xl-2{-ms-flex-order:2;order:2}.order-xl-3{-ms-flex-order:3;order:3}.order-xl-4{-ms-flex-order:4;order:4}.order-xl-5{-ms-flex-order:5;order:5}.order-xl-6{-ms-flex-order:6;order:6}.order-xl-7{-ms-flex-order:7;order:7}.order-xl-8{-ms-flex-order:8;order:8}.order-xl-9{-ms-flex-order:9;order:9}.order-xl-10{-ms-flex-order:10;order:10}.order-xl-11{-ms-flex-order:11;order:11}.order-xl-12{-ms-flex-order:12;order:12}.offset-xl-0{margin-left:0}.offset-xl-1{margin-left:8.333333%}.offset-xl-2{margin-left:16.666667%}.offset-xl-3{margin-left:25%}.offset-xl-4{margin-left:33.333333%}.offset-xl-5{margin-left:41.666667%}.offset-xl-6{margin-left:50%}.offset-xl-7{margin-left:58.333333%}.offset-xl-8{margin-left:66.666667%}.offset-xl-9{margin-left:75%}.offset-xl-10{margin-left:83.333333%}.offset-xl-11{margin-left:91.666667%}}.table{width:100%;max-width:100%;margin-bottom:1rem;background-color:transparent}.table td,.table th{padding:.75rem;vertical-align:top;border-top:1px solid #dee2e6}.table thead th{vertical-align:bottom;border-bottom:2px solid #dee2e6}.table tbody+tbody{border-top:2px solid #dee2e6}.table .table{background-color:#fff}.table-sm td,.table-sm th{padding:.3rem}.table-bordered{border:1px solid #dee2e6}.table-bordered td,.table-bordered th{border:1px solid #dee2e6}.table-bordered thead td,.table-bordered thead th{border-bottom-width:2px}.table-borderless tbody+tbody,.table-borderless td,.table-borderless th,.table-borderless thead th{border:0}.table-striped tbody tr:nth-of-type(odd){background-color:rgba(0,0,0,.05)}.table-hover tbody tr:hover{background-color:rgba(0,0,0,.075)}.table-primary,.table-primary>td,.table-primary>th{background-color:#b8daff}.table-hover .table-primary:hover{background-color:#9fcdff}.table-hover .table-primary:hover>td,.table-hover .table-primary:hover>th{background-color:#9fcdff}.table-secondary,.table-secondary>td,.table-secondary>th{background-color:#d6d8db}.table-hover .table-secondary:hover{background-color:#c8cbcf}.table-hover .table-secondary:hover>td,.table-hover .table-secondary:hover>th{background-color:#c8cbcf}.table-success,.table-success>td,.table-success>th{background-color:#c3e6cb}.table-hover .table-success:hover{background-color:#b1dfbb}.table-hover .table-success:hover>td,.table-hover .table-success:hover>th{background-color:#b1dfbb}.table-info,.table-info>td,.table-info>th{background-color:#bee5eb}.table-hover .table-info:hover{background-color:#abdde5}.table-hover .table-info:hover>td,.table-hover .table-info:hover>th{background-color:#abdde5}.table-warning,.table-warning>td,.table-warning>th{background-color:#ffeeba}.table-hover .table-warning:hover{background-color:#ffe8a1}.table-hover .table-warning:hover>td,.table-hover .table-warning:hover>th{background-color:#ffe8a1}.table-danger,.table-danger>td,.table-danger>th{background-color:#f5c6cb}.table-hover .table-danger:hover{background-color:#f1b0b7}.table-hover .table-danger:hover>td,.table-hover .table-danger:hover>th{background-color:#f1b0b7}.table-light,.table-light>td,.table-light>th{background-color:#fdfdfe}.table-hover .table-light:hover{background-color:#ececf6}.table-hover .table-light:hover>td,.table-hover .table-light:hover>th{background-color:#ececf6}.table-dark,.table-dark>td,.table-dark>th{background-color:#c6c8ca}.table-hover .table-dark:hover{background-color:#b9bbbe}.table-hover .table-dark:hover>td,.table-hover .table-dark:hover>th{background-color:#b9bbbe}.table-active,.table-active>td,.table-active>th{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover{background-color:rgba(0,0,0,.075)}.table-hover .table-active:hover>td,.table-hover .table-active:hover>th{background-color:rgba(0,0,0,.075)}.table .thead-dark th{color:#fff;background-color:#212529;border-color:#32383e}.table .thead-light th{color:#495057;background-color:#e9ecef;border-color:#dee2e6}.table-dark{color:#fff;background-color:#212529}.table-dark td,.table-dark th,.table-dark thead th{border-color:#32383e}.table-dark.table-bordered{border:0}.table-dark.table-striped tbody tr:nth-of-type(odd){background-color:rgba(255,255,255,.05)}.table-dark.table-hover tbody tr:hover{background-color:rgba(255,255,255,.075)}@media (max-width:575.98px){.table-responsive-sm{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-sm>.table-bordered{border:0}}@media (max-width:767.98px){.table-responsive-md{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-md>.table-bordered{border:0}}@media (max-width:991.98px){.table-responsive-lg{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-lg>.table-bordered{border:0}}@media (max-width:1199.98px){.table-responsive-xl{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive-xl>.table-bordered{border:0}}.table-responsive{display:block;width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar}.table-responsive>.table-bordered{border:0}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;line-height:1.5;color:#495057;background-color:#fff;background-clip:padding-box;border:1px solid #ced4da;border-radius:.25rem;transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control::-ms-expand{background-color:transparent;border:0}.form-control:focus{color:#495057;background-color:#fff;border-color:#80bdff;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.form-control::-webkit-input-placeholder{color:#6c757d;opacity:1}.form-control::-moz-placeholder{color:#6c757d;opacity:1}.form-control:-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::-ms-input-placeholder{color:#6c757d;opacity:1}.form-control::placeholder{color:#6c757d;opacity:1}.form-control:disabled,.form-control[readonly]{background-color:#e9ecef;opacity:1}select.form-control:not([size]):not([multiple]){height:calc(2.25rem + 2px)}select.form-control:focus::-ms-value{color:#495057;background-color:#fff}.form-control-file,.form-control-range{display:block;width:100%}.col-form-label{padding-top:calc(.375rem + 1px);padding-bottom:calc(.375rem + 1px);margin-bottom:0;font-size:inherit;line-height:1.5}.col-form-label-lg{padding-top:calc(.5rem + 1px);padding-bottom:calc(.5rem + 1px);font-size:1.25rem;line-height:1.5}.col-form-label-sm{padding-top:calc(.25rem + 1px);padding-bottom:calc(.25rem + 1px);font-size:.875rem;line-height:1.5}.form-control-plaintext{display:block;width:100%;padding-top:.375rem;padding-bottom:.375rem;margin-bottom:0;line-height:1.5;color:#212529;background-color:transparent;border:solid transparent;border-width:1px 0}.form-control-plaintext.form-control-lg,.form-control-plaintext.form-control-sm,.input-group-lg>.form-control-plaintext.form-control,.input-group-lg>.input-group-append>.form-control-plaintext.btn,.input-group-lg>.input-group-append>.form-control-plaintext.input-group-text,.input-group-lg>.input-group-prepend>.form-control-plaintext.btn,.input-group-lg>.input-group-prepend>.form-control-plaintext.input-group-text,.input-group-sm>.form-control-plaintext.form-control,.input-group-sm>.input-group-append>.form-control-plaintext.btn,.input-group-sm>.input-group-append>.form-control-plaintext.input-group-text,.input-group-sm>.input-group-prepend>.form-control-plaintext.btn,.input-group-sm>.input-group-prepend>.form-control-plaintext.input-group-text{padding-right:0;padding-left:0}.form-control-sm,.input-group-sm>.form-control,.input-group-sm>.input-group-append>.btn,.input-group-sm>.input-group-append>.input-group-text,.input-group-sm>.input-group-prepend>.btn,.input-group-sm>.input-group-prepend>.input-group-text{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.input-group-sm>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-sm>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-sm>select.form-control:not([size]):not([multiple]),select.form-control-sm:not([size]):not([multiple]){height:calc(1.8125rem + 2px)}.form-control-lg,.input-group-lg>.form-control,.input-group-lg>.input-group-append>.btn,.input-group-lg>.input-group-append>.input-group-text,.input-group-lg>.input-group-prepend>.btn,.input-group-lg>.input-group-prepend>.input-group-text{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.input-group-lg>.input-group-append>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-append>select.input-group-text:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.btn:not([size]):not([multiple]),.input-group-lg>.input-group-prepend>select.input-group-text:not([size]):not([multiple]),.input-group-lg>select.form-control:not([size]):not([multiple]),select.form-control-lg:not([size]):not([multiple]){height:calc(2.875rem + 2px)}.form-group{margin-bottom:1rem}.form-text{display:block;margin-top:.25rem}.form-row{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-right:-5px;margin-left:-5px}.form-row>.col,.form-row>[class*=col-]{padding-right:5px;padding-left:5px}.form-check{position:relative;display:block;padding-left:1.25rem}.form-check-input{position:absolute;margin-top:.3rem;margin-left:-1.25rem}.form-check-input:disabled~.form-check-label{color:#6c757d}.form-check-label{margin-bottom:0}.form-check-inline{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;padding-left:0;margin-right:.75rem}.form-check-inline .form-check-input{position:static;margin-top:0;margin-right:.3125rem;margin-left:0}.valid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#28a745}.valid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(40,167,69,.8);border-radius:.2rem}.custom-select.is-valid,.form-control.is-valid,.was-validated .custom-select:valid,.was-validated .form-control:valid{border-color:#28a745}.custom-select.is-valid:focus,.form-control.is-valid:focus,.was-validated .custom-select:valid:focus,.was-validated .form-control:valid:focus{border-color:#28a745;box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.custom-select.is-valid~.valid-feedback,.custom-select.is-valid~.valid-tooltip,.form-control.is-valid~.valid-feedback,.form-control.is-valid~.valid-tooltip,.was-validated .custom-select:valid~.valid-feedback,.was-validated .custom-select:valid~.valid-tooltip,.was-validated .form-control:valid~.valid-feedback,.was-validated .form-control:valid~.valid-tooltip{display:block}.form-control-file.is-valid~.valid-feedback,.form-control-file.is-valid~.valid-tooltip,.was-validated .form-control-file:valid~.valid-feedback,.was-validated .form-control-file:valid~.valid-tooltip{display:block}.form-check-input.is-valid~.form-check-label,.was-validated .form-check-input:valid~.form-check-label{color:#28a745}.form-check-input.is-valid~.valid-feedback,.form-check-input.is-valid~.valid-tooltip,.was-validated .form-check-input:valid~.valid-feedback,.was-validated .form-check-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid~.custom-control-label,.was-validated .custom-control-input:valid~.custom-control-label{color:#28a745}.custom-control-input.is-valid~.custom-control-label::before,.was-validated .custom-control-input:valid~.custom-control-label::before{background-color:#71dd8a}.custom-control-input.is-valid~.valid-feedback,.custom-control-input.is-valid~.valid-tooltip,.was-validated .custom-control-input:valid~.valid-feedback,.was-validated .custom-control-input:valid~.valid-tooltip{display:block}.custom-control-input.is-valid:checked~.custom-control-label::before,.was-validated .custom-control-input:valid:checked~.custom-control-label::before{background-color:#34ce57}.custom-control-input.is-valid:focus~.custom-control-label::before,.was-validated .custom-control-input:valid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(40,167,69,.25)}.custom-file-input.is-valid~.custom-file-label,.was-validated .custom-file-input:valid~.custom-file-label{border-color:#28a745}.custom-file-input.is-valid~.custom-file-label::before,.was-validated .custom-file-input:valid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-valid~.valid-feedback,.custom-file-input.is-valid~.valid-tooltip,.was-validated .custom-file-input:valid~.valid-feedback,.was-validated .custom-file-input:valid~.valid-tooltip{display:block}.custom-file-input.is-valid:focus~.custom-file-label,.was-validated .custom-file-input:valid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(40,167,69,.25)}.invalid-feedback{display:none;width:100%;margin-top:.25rem;font-size:80%;color:#dc3545}.invalid-tooltip{position:absolute;top:100%;z-index:5;display:none;max-width:100%;padding:.5rem;margin-top:.1rem;font-size:.875rem;line-height:1;color:#fff;background-color:rgba(220,53,69,.8);border-radius:.2rem}.custom-select.is-invalid,.form-control.is-invalid,.was-validated .custom-select:invalid,.was-validated .form-control:invalid{border-color:#dc3545}.custom-select.is-invalid:focus,.form-control.is-invalid:focus,.was-validated .custom-select:invalid:focus,.was-validated .form-control:invalid:focus{border-color:#dc3545;box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.custom-select.is-invalid~.invalid-feedback,.custom-select.is-invalid~.invalid-tooltip,.form-control.is-invalid~.invalid-feedback,.form-control.is-invalid~.invalid-tooltip,.was-validated .custom-select:invalid~.invalid-feedback,.was-validated .custom-select:invalid~.invalid-tooltip,.was-validated .form-control:invalid~.invalid-feedback,.was-validated .form-control:invalid~.invalid-tooltip{display:block}.form-control-file.is-invalid~.invalid-feedback,.form-control-file.is-invalid~.invalid-tooltip,.was-validated .form-control-file:invalid~.invalid-feedback,.was-validated .form-control-file:invalid~.invalid-tooltip{display:block}.form-check-input.is-invalid~.form-check-label,.was-validated .form-check-input:invalid~.form-check-label{color:#dc3545}.form-check-input.is-invalid~.invalid-feedback,.form-check-input.is-invalid~.invalid-tooltip,.was-validated .form-check-input:invalid~.invalid-feedback,.was-validated .form-check-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid~.custom-control-label,.was-validated .custom-control-input:invalid~.custom-control-label{color:#dc3545}.custom-control-input.is-invalid~.custom-control-label::before,.was-validated .custom-control-input:invalid~.custom-control-label::before{background-color:#efa2a9}.custom-control-input.is-invalid~.invalid-feedback,.custom-control-input.is-invalid~.invalid-tooltip,.was-validated .custom-control-input:invalid~.invalid-feedback,.was-validated .custom-control-input:invalid~.invalid-tooltip{display:block}.custom-control-input.is-invalid:checked~.custom-control-label::before,.was-validated .custom-control-input:invalid:checked~.custom-control-label::before{background-color:#e4606d}.custom-control-input.is-invalid:focus~.custom-control-label::before,.was-validated .custom-control-input:invalid:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(220,53,69,.25)}.custom-file-input.is-invalid~.custom-file-label,.was-validated .custom-file-input:invalid~.custom-file-label{border-color:#dc3545}.custom-file-input.is-invalid~.custom-file-label::before,.was-validated .custom-file-input:invalid~.custom-file-label::before{border-color:inherit}.custom-file-input.is-invalid~.invalid-feedback,.custom-file-input.is-invalid~.invalid-tooltip,.was-validated .custom-file-input:invalid~.invalid-feedback,.was-validated .custom-file-input:invalid~.invalid-tooltip{display:block}.custom-file-input.is-invalid:focus~.custom-file-label,.was-validated .custom-file-input:invalid:focus~.custom-file-label{box-shadow:0 0 0 .2rem rgba(220,53,69,.25)}.form-inline{display:-ms-flexbox;display:flex;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center}.form-inline .form-check{width:100%}@media (min-width:576px){.form-inline label{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;margin-bottom:0}.form-inline .form-group{display:-ms-flexbox;display:flex;-ms-flex:0 0 auto;flex:0 0 auto;-ms-flex-flow:row wrap;flex-flow:row wrap;-ms-flex-align:center;align-items:center;margin-bottom:0}.form-inline .form-control{display:inline-block;width:auto;vertical-align:middle}.form-inline .form-control-plaintext{display:inline-block}.form-inline .custom-select,.form-inline .input-group{width:auto}.form-inline .form-check{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:auto;padding-left:0}.form-inline .form-check-input{position:relative;margin-top:0;margin-right:.25rem;margin-left:0}.form-inline .custom-control{-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.form-inline .custom-control-label{margin-bottom:0}}.btn{display:inline-block;font-weight:400;text-align:center;white-space:nowrap;vertical-align:middle;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;border:1px solid transparent;padding:.375rem .75rem;font-size:1rem;line-height:1.5;border-radius:.25rem;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media screen and (prefers-reduced-motion:reduce){.btn{transition:none}}.btn:focus,.btn:hover{text-decoration:none}.btn.focus,.btn:focus{outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.btn.disabled,.btn:disabled{opacity:.65}.btn:not(:disabled):not(.disabled){cursor:pointer}.btn:not(:disabled):not(.disabled).active,.btn:not(:disabled):not(.disabled):active{background-image:none}a.btn.disabled,fieldset:disabled a.btn{pointer-events:none}.btn-primary{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:hover{color:#fff;background-color:#0069d9;border-color:#0062cc}.btn-primary.focus,.btn-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-primary.disabled,.btn-primary:disabled{color:#fff;background-color:#007bff;border-color:#007bff}.btn-primary:not(:disabled):not(.disabled).active,.btn-primary:not(:disabled):not(.disabled):active,.show>.btn-primary.dropdown-toggle{color:#fff;background-color:#0062cc;border-color:#005cbf}.btn-primary:not(:disabled):not(.disabled).active:focus,.btn-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-secondary{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:hover{color:#fff;background-color:#5a6268;border-color:#545b62}.btn-secondary.focus,.btn-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-secondary.disabled,.btn-secondary:disabled{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-secondary:not(:disabled):not(.disabled).active,.btn-secondary:not(:disabled):not(.disabled):active,.show>.btn-secondary.dropdown-toggle{color:#fff;background-color:#545b62;border-color:#4e555b}.btn-secondary:not(:disabled):not(.disabled).active:focus,.btn-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-success{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:hover{color:#fff;background-color:#218838;border-color:#1e7e34}.btn-success.focus,.btn-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-success.disabled,.btn-success:disabled{color:#fff;background-color:#28a745;border-color:#28a745}.btn-success:not(:disabled):not(.disabled).active,.btn-success:not(:disabled):not(.disabled):active,.show>.btn-success.dropdown-toggle{color:#fff;background-color:#1e7e34;border-color:#1c7430}.btn-success:not(:disabled):not(.disabled).active:focus,.btn-success:not(:disabled):not(.disabled):active:focus,.show>.btn-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-info{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:hover{color:#fff;background-color:#138496;border-color:#117a8b}.btn-info.focus,.btn-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-info.disabled,.btn-info:disabled{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-info:not(:disabled):not(.disabled).active,.btn-info:not(:disabled):not(.disabled):active,.show>.btn-info.dropdown-toggle{color:#fff;background-color:#117a8b;border-color:#10707f}.btn-info:not(:disabled):not(.disabled).active:focus,.btn-info:not(:disabled):not(.disabled):active:focus,.show>.btn-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-warning{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:hover{color:#212529;background-color:#e0a800;border-color:#d39e00}.btn-warning.focus,.btn-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-warning.disabled,.btn-warning:disabled{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-warning:not(:disabled):not(.disabled).active,.btn-warning:not(:disabled):not(.disabled):active,.show>.btn-warning.dropdown-toggle{color:#212529;background-color:#d39e00;border-color:#c69500}.btn-warning:not(:disabled):not(.disabled).active:focus,.btn-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-danger{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:hover{color:#fff;background-color:#c82333;border-color:#bd2130}.btn-danger.focus,.btn-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-danger.disabled,.btn-danger:disabled{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-danger:not(:disabled):not(.disabled).active,.btn-danger:not(:disabled):not(.disabled):active,.show>.btn-danger.dropdown-toggle{color:#fff;background-color:#bd2130;border-color:#b21f2d}.btn-danger:not(:disabled):not(.disabled).active:focus,.btn-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-light{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:hover{color:#212529;background-color:#e2e6ea;border-color:#dae0e5}.btn-light.focus,.btn-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-light.disabled,.btn-light:disabled{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-light:not(:disabled):not(.disabled).active,.btn-light:not(:disabled):not(.disabled):active,.show>.btn-light.dropdown-toggle{color:#212529;background-color:#dae0e5;border-color:#d3d9df}.btn-light:not(:disabled):not(.disabled).active:focus,.btn-light:not(:disabled):not(.disabled):active:focus,.show>.btn-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-dark{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:hover{color:#fff;background-color:#23272b;border-color:#1d2124}.btn-dark.focus,.btn-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-dark.disabled,.btn-dark:disabled{color:#fff;background-color:#343a40;border-color:#343a40}.btn-dark:not(:disabled):not(.disabled).active,.btn-dark:not(:disabled):not(.disabled):active,.show>.btn-dark.dropdown-toggle{color:#fff;background-color:#1d2124;border-color:#171a1d}.btn-dark:not(:disabled):not(.disabled).active:focus,.btn-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-primary{color:#007bff;background-color:transparent;background-image:none;border-color:#007bff}.btn-outline-primary:hover{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary.focus,.btn-outline-primary:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-primary.disabled,.btn-outline-primary:disabled{color:#007bff;background-color:transparent}.btn-outline-primary:not(:disabled):not(.disabled).active,.btn-outline-primary:not(:disabled):not(.disabled):active,.show>.btn-outline-primary.dropdown-toggle{color:#fff;background-color:#007bff;border-color:#007bff}.btn-outline-primary:not(:disabled):not(.disabled).active:focus,.btn-outline-primary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-primary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(0,123,255,.5)}.btn-outline-secondary{color:#6c757d;background-color:transparent;background-image:none;border-color:#6c757d}.btn-outline-secondary:hover{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary.focus,.btn-outline-secondary:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-secondary.disabled,.btn-outline-secondary:disabled{color:#6c757d;background-color:transparent}.btn-outline-secondary:not(:disabled):not(.disabled).active,.btn-outline-secondary:not(:disabled):not(.disabled):active,.show>.btn-outline-secondary.dropdown-toggle{color:#fff;background-color:#6c757d;border-color:#6c757d}.btn-outline-secondary:not(:disabled):not(.disabled).active:focus,.btn-outline-secondary:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-secondary.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(108,117,125,.5)}.btn-outline-success{color:#28a745;background-color:transparent;background-image:none;border-color:#28a745}.btn-outline-success:hover{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success.focus,.btn-outline-success:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-success.disabled,.btn-outline-success:disabled{color:#28a745;background-color:transparent}.btn-outline-success:not(:disabled):not(.disabled).active,.btn-outline-success:not(:disabled):not(.disabled):active,.show>.btn-outline-success.dropdown-toggle{color:#fff;background-color:#28a745;border-color:#28a745}.btn-outline-success:not(:disabled):not(.disabled).active:focus,.btn-outline-success:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-success.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(40,167,69,.5)}.btn-outline-info{color:#17a2b8;background-color:transparent;background-image:none;border-color:#17a2b8}.btn-outline-info:hover{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info.focus,.btn-outline-info:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-info.disabled,.btn-outline-info:disabled{color:#17a2b8;background-color:transparent}.btn-outline-info:not(:disabled):not(.disabled).active,.btn-outline-info:not(:disabled):not(.disabled):active,.show>.btn-outline-info.dropdown-toggle{color:#fff;background-color:#17a2b8;border-color:#17a2b8}.btn-outline-info:not(:disabled):not(.disabled).active:focus,.btn-outline-info:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-info.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(23,162,184,.5)}.btn-outline-warning{color:#ffc107;background-color:transparent;background-image:none;border-color:#ffc107}.btn-outline-warning:hover{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning.focus,.btn-outline-warning:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-warning.disabled,.btn-outline-warning:disabled{color:#ffc107;background-color:transparent}.btn-outline-warning:not(:disabled):not(.disabled).active,.btn-outline-warning:not(:disabled):not(.disabled):active,.show>.btn-outline-warning.dropdown-toggle{color:#212529;background-color:#ffc107;border-color:#ffc107}.btn-outline-warning:not(:disabled):not(.disabled).active:focus,.btn-outline-warning:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-warning.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(255,193,7,.5)}.btn-outline-danger{color:#dc3545;background-color:transparent;background-image:none;border-color:#dc3545}.btn-outline-danger:hover{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger.focus,.btn-outline-danger:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-danger.disabled,.btn-outline-danger:disabled{color:#dc3545;background-color:transparent}.btn-outline-danger:not(:disabled):not(.disabled).active,.btn-outline-danger:not(:disabled):not(.disabled):active,.show>.btn-outline-danger.dropdown-toggle{color:#fff;background-color:#dc3545;border-color:#dc3545}.btn-outline-danger:not(:disabled):not(.disabled).active:focus,.btn-outline-danger:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-danger.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(220,53,69,.5)}.btn-outline-light{color:#f8f9fa;background-color:transparent;background-image:none;border-color:#f8f9fa}.btn-outline-light:hover{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light.focus,.btn-outline-light:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-light.disabled,.btn-outline-light:disabled{color:#f8f9fa;background-color:transparent}.btn-outline-light:not(:disabled):not(.disabled).active,.btn-outline-light:not(:disabled):not(.disabled):active,.show>.btn-outline-light.dropdown-toggle{color:#212529;background-color:#f8f9fa;border-color:#f8f9fa}.btn-outline-light:not(:disabled):not(.disabled).active:focus,.btn-outline-light:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-light.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(248,249,250,.5)}.btn-outline-dark{color:#343a40;background-color:transparent;background-image:none;border-color:#343a40}.btn-outline-dark:hover{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark.focus,.btn-outline-dark:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-outline-dark.disabled,.btn-outline-dark:disabled{color:#343a40;background-color:transparent}.btn-outline-dark:not(:disabled):not(.disabled).active,.btn-outline-dark:not(:disabled):not(.disabled):active,.show>.btn-outline-dark.dropdown-toggle{color:#fff;background-color:#343a40;border-color:#343a40}.btn-outline-dark:not(:disabled):not(.disabled).active:focus,.btn-outline-dark:not(:disabled):not(.disabled):active:focus,.show>.btn-outline-dark.dropdown-toggle:focus{box-shadow:0 0 0 .2rem rgba(52,58,64,.5)}.btn-link{font-weight:400;color:#007bff;background-color:transparent}.btn-link:hover{color:#0056b3;text-decoration:underline;background-color:transparent;border-color:transparent}.btn-link.focus,.btn-link:focus{text-decoration:underline;border-color:transparent;box-shadow:none}.btn-link.disabled,.btn-link:disabled{color:#6c757d;pointer-events:none}.btn-group-lg>.btn,.btn-lg{padding:.5rem 1rem;font-size:1.25rem;line-height:1.5;border-radius:.3rem}.btn-group-sm>.btn,.btn-sm{padding:.25rem .5rem;font-size:.875rem;line-height:1.5;border-radius:.2rem}.btn-block{display:block;width:100%}.btn-block+.btn-block{margin-top:.5rem}input[type=button].btn-block,input[type=reset].btn-block,input[type=submit].btn-block{width:100%}.fade{transition:opacity .15s linear}@media screen and (prefers-reduced-motion:reduce){.fade{transition:none}}.fade:not(.show){opacity:0}.collapse:not(.show){display:none}.collapsing{position:relative;height:0;overflow:hidden;transition:height .35s ease}@media screen and (prefers-reduced-motion:reduce){.collapsing{transition:none}}.dropdown,.dropleft,.dropright,.dropup{position:relative}.dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{position:absolute;top:100%;left:0;z-index:1000;display:none;float:left;min-width:10rem;padding:.5rem 0;margin:.125rem 0 0;font-size:1rem;color:#212529;text-align:left;list-style:none;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.15);border-radius:.25rem}.dropdown-menu-right{right:0;left:auto}.dropup .dropdown-menu{top:auto;bottom:100%;margin-top:0;margin-bottom:.125rem}.dropup .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:0;border-right:.3em solid transparent;border-bottom:.3em solid;border-left:.3em solid transparent}.dropup .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-menu{top:0;right:auto;left:100%;margin-top:0;margin-left:.125rem}.dropright .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:0;border-bottom:.3em solid transparent;border-left:.3em solid}.dropright .dropdown-toggle:empty::after{margin-left:0}.dropright .dropdown-toggle::after{vertical-align:0}.dropleft .dropdown-menu{top:0;right:100%;left:auto;margin-top:0;margin-right:.125rem}.dropleft .dropdown-toggle::after{display:inline-block;width:0;height:0;margin-left:.255em;vertical-align:.255em;content:""}.dropleft .dropdown-toggle::after{display:none}.dropleft .dropdown-toggle::before{display:inline-block;width:0;height:0;margin-right:.255em;vertical-align:.255em;content:"";border-top:.3em solid transparent;border-right:.3em solid;border-bottom:.3em solid transparent}.dropleft .dropdown-toggle:empty::after{margin-left:0}.dropleft .dropdown-toggle::before{vertical-align:0}.dropdown-menu[x-placement^=bottom],.dropdown-menu[x-placement^=left],.dropdown-menu[x-placement^=right],.dropdown-menu[x-placement^=top]{right:auto;bottom:auto}.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid #e9ecef}.dropdown-item{display:block;width:100%;padding:.25rem 1.5rem;clear:both;font-weight:400;color:#212529;text-align:inherit;white-space:nowrap;background-color:transparent;border:0}.dropdown-item:focus,.dropdown-item:hover{color:#16181b;text-decoration:none;background-color:#f8f9fa}.dropdown-item.active,.dropdown-item:active{color:#fff;text-decoration:none;background-color:#007bff}.dropdown-item.disabled,.dropdown-item:disabled{color:#6c757d;background-color:transparent}.dropdown-menu.show{display:block}.dropdown-header{display:block;padding:.5rem 1.5rem;margin-bottom:0;font-size:.875rem;color:#6c757d;white-space:nowrap}.dropdown-item-text{display:block;padding:.25rem 1.5rem;color:#212529}.btn-group,.btn-group-vertical{position:relative;display:-ms-inline-flexbox;display:inline-flex;vertical-align:middle}.btn-group-vertical>.btn,.btn-group>.btn{position:relative;-ms-flex:0 1 auto;flex:0 1 auto}.btn-group-vertical>.btn:hover,.btn-group>.btn:hover{z-index:1}.btn-group-vertical>.btn.active,.btn-group-vertical>.btn:active,.btn-group-vertical>.btn:focus,.btn-group>.btn.active,.btn-group>.btn:active,.btn-group>.btn:focus{z-index:1}.btn-group .btn+.btn,.btn-group .btn+.btn-group,.btn-group .btn-group+.btn,.btn-group .btn-group+.btn-group,.btn-group-vertical .btn+.btn,.btn-group-vertical .btn+.btn-group,.btn-group-vertical .btn-group+.btn,.btn-group-vertical .btn-group+.btn-group{margin-left:-1px}.btn-toolbar{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-pack:start;justify-content:flex-start}.btn-toolbar .input-group{width:auto}.btn-group>.btn:first-child{margin-left:0}.btn-group>.btn-group:not(:last-child)>.btn,.btn-group>.btn:not(:last-child):not(.dropdown-toggle){border-top-right-radius:0;border-bottom-right-radius:0}.btn-group>.btn-group:not(:first-child)>.btn,.btn-group>.btn:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.dropdown-toggle-split{padding-right:.5625rem;padding-left:.5625rem}.dropdown-toggle-split::after,.dropright .dropdown-toggle-split::after,.dropup .dropdown-toggle-split::after{margin-left:0}.dropleft .dropdown-toggle-split::before{margin-right:0}.btn-group-sm>.btn+.dropdown-toggle-split,.btn-sm+.dropdown-toggle-split{padding-right:.375rem;padding-left:.375rem}.btn-group-lg>.btn+.dropdown-toggle-split,.btn-lg+.dropdown-toggle-split{padding-right:.75rem;padding-left:.75rem}.btn-group-vertical{-ms-flex-direction:column;flex-direction:column;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:center;justify-content:center}.btn-group-vertical .btn,.btn-group-vertical .btn-group{width:100%}.btn-group-vertical>.btn+.btn,.btn-group-vertical>.btn+.btn-group,.btn-group-vertical>.btn-group+.btn,.btn-group-vertical>.btn-group+.btn-group{margin-top:-1px;margin-left:0}.btn-group-vertical>.btn-group:not(:last-child)>.btn,.btn-group-vertical>.btn:not(:last-child):not(.dropdown-toggle){border-bottom-right-radius:0;border-bottom-left-radius:0}.btn-group-vertical>.btn-group:not(:first-child)>.btn,.btn-group-vertical>.btn:not(:first-child){border-top-left-radius:0;border-top-right-radius:0}.btn-group-toggle>.btn,.btn-group-toggle>.btn-group>.btn{margin-bottom:0}.btn-group-toggle>.btn input[type=checkbox],.btn-group-toggle>.btn input[type=radio],.btn-group-toggle>.btn-group>.btn input[type=checkbox],.btn-group-toggle>.btn-group>.btn input[type=radio]{position:absolute;clip:rect(0,0,0,0);pointer-events:none}.input-group{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:stretch;align-items:stretch;width:100%}.input-group>.custom-file,.input-group>.custom-select,.input-group>.form-control{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;width:1%;margin-bottom:0}.input-group>.custom-file:focus,.input-group>.custom-select:focus,.input-group>.form-control:focus{z-index:3}.input-group>.custom-file+.custom-file,.input-group>.custom-file+.custom-select,.input-group>.custom-file+.form-control,.input-group>.custom-select+.custom-file,.input-group>.custom-select+.custom-select,.input-group>.custom-select+.form-control,.input-group>.form-control+.custom-file,.input-group>.form-control+.custom-select,.input-group>.form-control+.form-control{margin-left:-1px}.input-group>.custom-select:not(:last-child),.input-group>.form-control:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-select:not(:first-child),.input-group>.form-control:not(:first-child){border-top-left-radius:0;border-bottom-left-radius:0}.input-group>.custom-file{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center}.input-group>.custom-file:not(:last-child) .custom-file-label,.input-group>.custom-file:not(:last-child) .custom-file-label::after{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.custom-file:not(:first-child) .custom-file-label{border-top-left-radius:0;border-bottom-left-radius:0}.input-group-append,.input-group-prepend{display:-ms-flexbox;display:flex}.input-group-append .btn,.input-group-prepend .btn{position:relative;z-index:2}.input-group-append .btn+.btn,.input-group-append .btn+.input-group-text,.input-group-append .input-group-text+.btn,.input-group-append .input-group-text+.input-group-text,.input-group-prepend .btn+.btn,.input-group-prepend .btn+.input-group-text,.input-group-prepend .input-group-text+.btn,.input-group-prepend .input-group-text+.input-group-text{margin-left:-1px}.input-group-prepend{margin-right:-1px}.input-group-append{margin-left:-1px}.input-group-text{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;padding:.375rem .75rem;margin-bottom:0;font-size:1rem;font-weight:400;line-height:1.5;color:#495057;text-align:center;white-space:nowrap;background-color:#e9ecef;border:1px solid #ced4da;border-radius:.25rem}.input-group-text input[type=checkbox],.input-group-text input[type=radio]{margin-top:0}.input-group>.input-group-append:last-child>.btn:not(:last-child):not(.dropdown-toggle),.input-group>.input-group-append:last-child>.input-group-text:not(:last-child),.input-group>.input-group-append:not(:last-child)>.btn,.input-group>.input-group-append:not(:last-child)>.input-group-text,.input-group>.input-group-prepend>.btn,.input-group>.input-group-prepend>.input-group-text{border-top-right-radius:0;border-bottom-right-radius:0}.input-group>.input-group-append>.btn,.input-group>.input-group-append>.input-group-text,.input-group>.input-group-prepend:first-child>.btn:not(:first-child),.input-group>.input-group-prepend:first-child>.input-group-text:not(:first-child),.input-group>.input-group-prepend:not(:first-child)>.btn,.input-group>.input-group-prepend:not(:first-child)>.input-group-text{border-top-left-radius:0;border-bottom-left-radius:0}.custom-control{position:relative;display:block;min-height:1.5rem;padding-left:1.5rem}.custom-control-inline{display:-ms-inline-flexbox;display:inline-flex;margin-right:1rem}.custom-control-input{position:absolute;z-index:-1;opacity:0}.custom-control-input:checked~.custom-control-label::before{color:#fff;background-color:#007bff}.custom-control-input:focus~.custom-control-label::before{box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-control-input:active~.custom-control-label::before{color:#fff;background-color:#b3d7ff}.custom-control-input:disabled~.custom-control-label{color:#6c757d}.custom-control-input:disabled~.custom-control-label::before{background-color:#e9ecef}.custom-control-label{position:relative;margin-bottom:0}.custom-control-label::before{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;pointer-events:none;content:"";-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background-color:#dee2e6}.custom-control-label::after{position:absolute;top:.25rem;left:-1.5rem;display:block;width:1rem;height:1rem;content:"";background-repeat:no-repeat;background-position:center center;background-size:50% 50%}.custom-checkbox .custom-control-label::before{border-radius:.25rem}.custom-checkbox .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::before{background-color:#007bff}.custom-checkbox .custom-control-input:indeterminate~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E")}.custom-checkbox .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-checkbox .custom-control-input:disabled:indeterminate~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-radio .custom-control-label::before{border-radius:50%}.custom-radio .custom-control-input:checked~.custom-control-label::before{background-color:#007bff}.custom-radio .custom-control-input:checked~.custom-control-label::after{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E")}.custom-radio .custom-control-input:disabled:checked~.custom-control-label::before{background-color:rgba(0,123,255,.5)}.custom-select{display:inline-block;width:100%;height:calc(2.25rem + 2px);padding:.375rem 1.75rem .375rem .75rem;line-height:1.5;color:#495057;vertical-align:middle;background:#fff url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E") no-repeat right .75rem center;background-size:8px 10px;border:1px solid #ced4da;border-radius:.25rem;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-select:focus{border-color:#80bdff;outline:0;box-shadow:inset 0 1px 2px rgba(0,0,0,.075),0 0 5px rgba(128,189,255,.5)}.custom-select:focus::-ms-value{color:#495057;background-color:#fff}.custom-select[multiple],.custom-select[size]:not([size="1"]){height:auto;padding-right:.75rem;background-image:none}.custom-select:disabled{color:#6c757d;background-color:#e9ecef}.custom-select::-ms-expand{opacity:0}.custom-select-sm{height:calc(1.8125rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:75%}.custom-select-lg{height:calc(2.875rem + 2px);padding-top:.375rem;padding-bottom:.375rem;font-size:125%}.custom-file{position:relative;display:inline-block;width:100%;height:calc(2.25rem + 2px);margin-bottom:0}.custom-file-input{position:relative;z-index:2;width:100%;height:calc(2.25rem + 2px);margin:0;opacity:0}.custom-file-input:focus~.custom-file-label{border-color:#80bdff;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.custom-file-input:focus~.custom-file-label::after{border-color:#80bdff}.custom-file-input:lang(en)~.custom-file-label::after{content:"Browse"}.custom-file-label{position:absolute;top:0;right:0;left:0;z-index:1;height:calc(2.25rem + 2px);padding:.375rem .75rem;line-height:1.5;color:#495057;background-color:#fff;border:1px solid #ced4da;border-radius:.25rem}.custom-file-label::after{position:absolute;top:0;right:0;bottom:0;z-index:3;display:block;height:2.25rem;padding:.375rem .75rem;line-height:1.5;color:#495057;content:"Browse";background-color:#e9ecef;border-left:1px solid #ced4da;border-radius:0 .25rem .25rem 0}.custom-range{width:100%;padding-left:0;background-color:transparent;-webkit-appearance:none;-moz-appearance:none;appearance:none}.custom-range:focus{outline:0}.custom-range::-moz-focus-outer{border:0}.custom-range::-webkit-slider-thumb{width:1rem;height:1rem;margin-top:-.25rem;background-color:#007bff;border:0;border-radius:1rem;-webkit-appearance:none;appearance:none}.custom-range::-webkit-slider-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-webkit-slider-thumb:active{background-color:#b3d7ff}.custom-range::-webkit-slider-runnable-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-moz-range-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;-moz-appearance:none;appearance:none}.custom-range::-moz-range-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-moz-range-thumb:active{background-color:#b3d7ff}.custom-range::-moz-range-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:#dee2e6;border-color:transparent;border-radius:1rem}.custom-range::-ms-thumb{width:1rem;height:1rem;background-color:#007bff;border:0;border-radius:1rem;appearance:none}.custom-range::-ms-thumb:focus{outline:0;box-shadow:0 0 0 1px #fff,0 0 0 .2rem rgba(0,123,255,.25)}.custom-range::-ms-thumb:active{background-color:#b3d7ff}.custom-range::-ms-track{width:100%;height:.5rem;color:transparent;cursor:pointer;background-color:transparent;border-color:transparent;border-width:.5rem}.custom-range::-ms-fill-lower{background-color:#dee2e6;border-radius:1rem}.custom-range::-ms-fill-upper{margin-right:15px;background-color:#dee2e6;border-radius:1rem}.nav{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:.5rem 1rem}.nav-link:focus,.nav-link:hover{text-decoration:none}.nav-link.disabled{color:#6c757d}.nav-tabs{border-bottom:1px solid #dee2e6}.nav-tabs .nav-item{margin-bottom:-1px}.nav-tabs .nav-link{border:1px solid transparent;border-top-left-radius:.25rem;border-top-right-radius:.25rem}.nav-tabs .nav-link:focus,.nav-tabs .nav-link:hover{border-color:#e9ecef #e9ecef #dee2e6}.nav-tabs .nav-link.disabled{color:#6c757d;background-color:transparent;border-color:transparent}.nav-tabs .nav-item.show .nav-link,.nav-tabs .nav-link.active{color:#495057;background-color:#fff;border-color:#dee2e6 #dee2e6 #fff}.nav-tabs .dropdown-menu{margin-top:-1px;border-top-left-radius:0;border-top-right-radius:0}.nav-pills .nav-link{border-radius:.25rem}.nav-pills .nav-link.active,.nav-pills .show>.nav-link{color:#fff;background-color:#007bff}.nav-fill .nav-item{-ms-flex:1 1 auto;flex:1 1 auto;text-align:center}.nav-justified .nav-item{-ms-flex-preferred-size:0;flex-basis:0;-ms-flex-positive:1;flex-grow:1;text-align:center}.tab-content>.tab-pane{display:none}.tab-content>.active{display:block}.navbar{position:relative;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between;padding:.5rem 1rem}.navbar>.container,.navbar>.container-fluid{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-align:center;align-items:center;-ms-flex-pack:justify;justify-content:space-between}.navbar-brand{display:inline-block;padding-top:.3125rem;padding-bottom:.3125rem;margin-right:1rem;font-size:1.25rem;line-height:inherit;white-space:nowrap}.navbar-brand:focus,.navbar-brand:hover{text-decoration:none}.navbar-nav{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link{padding-right:0;padding-left:0}.navbar-nav .dropdown-menu{position:static;float:none}.navbar-text{display:inline-block;padding-top:.5rem;padding-bottom:.5rem}.navbar-collapse{-ms-flex-preferred-size:100%;flex-basis:100%;-ms-flex-positive:1;flex-grow:1;-ms-flex-align:center;align-items:center}.navbar-toggler{padding:.25rem .75rem;font-size:1.25rem;line-height:1;background-color:transparent;border:1px solid transparent;border-radius:.25rem}.navbar-toggler:focus,.navbar-toggler:hover{text-decoration:none}.navbar-toggler:not(:disabled):not(.disabled){cursor:pointer}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;content:"";background:no-repeat center center;background-size:100% 100%}@media (max-width:575.98px){.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:576px){.navbar-expand-sm{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-sm .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-sm .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-sm .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-sm>.container,.navbar-expand-sm>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-sm .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-sm .navbar-toggler{display:none}}@media (max-width:767.98px){.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:768px){.navbar-expand-md{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-md .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-md .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-md .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-md>.container,.navbar-expand-md>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-md .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-md .navbar-toggler{display:none}}@media (max-width:991.98px){.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:992px){.navbar-expand-lg{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-lg .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-lg>.container,.navbar-expand-lg>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-lg .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}@media (max-width:1199.98px){.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{padding-right:0;padding-left:0}}@media (min-width:1200px){.navbar-expand-xl{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand-xl .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand-xl .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-xl .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand-xl>.container,.navbar-expand-xl>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand-xl .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand-xl .navbar-toggler{display:none}}.navbar-expand{-ms-flex-flow:row nowrap;flex-flow:row nowrap;-ms-flex-pack:start;justify-content:flex-start}.navbar-expand>.container,.navbar-expand>.container-fluid{padding-right:0;padding-left:0}.navbar-expand .navbar-nav{-ms-flex-direction:row;flex-direction:row}.navbar-expand .navbar-nav .dropdown-menu{position:absolute}.navbar-expand .navbar-nav .nav-link{padding-right:.5rem;padding-left:.5rem}.navbar-expand>.container,.navbar-expand>.container-fluid{-ms-flex-wrap:nowrap;flex-wrap:nowrap}.navbar-expand .navbar-collapse{display:-ms-flexbox!important;display:flex!important;-ms-flex-preferred-size:auto;flex-basis:auto}.navbar-expand .navbar-toggler{display:none}.navbar-light .navbar-brand{color:rgba(0,0,0,.9)}.navbar-light .navbar-brand:focus,.navbar-light .navbar-brand:hover{color:rgba(0,0,0,.9)}.navbar-light .navbar-nav .nav-link{color:rgba(0,0,0,.5)}.navbar-light .navbar-nav .nav-link:focus,.navbar-light .navbar-nav .nav-link:hover{color:rgba(0,0,0,.7)}.navbar-light .navbar-nav .nav-link.disabled{color:rgba(0,0,0,.3)}.navbar-light .navbar-nav .active>.nav-link,.navbar-light .navbar-nav .nav-link.active,.navbar-light .navbar-nav .nav-link.show,.navbar-light .navbar-nav .show>.nav-link{color:rgba(0,0,0,.9)}.navbar-light .navbar-toggler{color:rgba(0,0,0,.5);border-color:rgba(0,0,0,.1)}.navbar-light .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-light .navbar-text{color:rgba(0,0,0,.5)}.navbar-light .navbar-text a{color:rgba(0,0,0,.9)}.navbar-light .navbar-text a:focus,.navbar-light .navbar-text a:hover{color:rgba(0,0,0,.9)}.navbar-dark .navbar-brand{color:#fff}.navbar-dark .navbar-brand:focus,.navbar-dark .navbar-brand:hover{color:#fff}.navbar-dark .navbar-nav .nav-link{color:rgba(255,255,255,.5)}.navbar-dark .navbar-nav .nav-link:focus,.navbar-dark .navbar-nav .nav-link:hover{color:rgba(255,255,255,.75)}.navbar-dark .navbar-nav .nav-link.disabled{color:rgba(255,255,255,.25)}.navbar-dark .navbar-nav .active>.nav-link,.navbar-dark .navbar-nav .nav-link.active,.navbar-dark .navbar-nav .nav-link.show,.navbar-dark .navbar-nav .show>.nav-link{color:#fff}.navbar-dark .navbar-toggler{color:rgba(255,255,255,.5);border-color:rgba(255,255,255,.1)}.navbar-dark .navbar-toggler-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E")}.navbar-dark .navbar-text{color:rgba(255,255,255,.5)}.navbar-dark .navbar-text a{color:#fff}.navbar-dark .navbar-text a:focus,.navbar-dark .navbar-text a:hover{color:#fff}.card{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;word-wrap:break-word;background-color:#fff;background-clip:border-box;border:1px solid rgba(0,0,0,.125);border-radius:.25rem}.card>hr{margin-right:0;margin-left:0}.card>.list-group:first-child .list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card>.list-group:last-child .list-group-item:last-child{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1.25rem}.card-title{margin-bottom:.75rem}.card-subtitle{margin-top:-.375rem;margin-bottom:0}.card-text:last-child{margin-bottom:0}.card-link:hover{text-decoration:none}.card-link+.card-link{margin-left:1.25rem}.card-header{padding:.75rem 1.25rem;margin-bottom:0;background-color:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}.card-header:first-child{border-radius:calc(.25rem - 1px) calc(.25rem - 1px) 0 0}.card-header+.list-group .list-group-item:first-child{border-top:0}.card-footer{padding:.75rem 1.25rem;background-color:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}.card-footer:last-child{border-radius:0 0 calc(.25rem - 1px) calc(.25rem - 1px)}.card-header-tabs{margin-right:-.625rem;margin-bottom:-.75rem;margin-left:-.625rem;border-bottom:0}.card-header-pills{margin-right:-.625rem;margin-left:-.625rem}.card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1.25rem}.card-img{width:100%;border-radius:calc(.25rem - 1px)}.card-img-top{width:100%;border-top-left-radius:calc(.25rem - 1px);border-top-right-radius:calc(.25rem - 1px)}.card-img-bottom{width:100%;border-bottom-right-radius:calc(.25rem - 1px);border-bottom-left-radius:calc(.25rem - 1px)}.card-deck{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-deck .card{margin-bottom:15px}@media (min-width:576px){.card-deck{-ms-flex-flow:row wrap;flex-flow:row wrap;margin-right:-15px;margin-left:-15px}.card-deck .card{display:-ms-flexbox;display:flex;-ms-flex:1 0 0%;flex:1 0 0%;-ms-flex-direction:column;flex-direction:column;margin-right:15px;margin-bottom:0;margin-left:15px}}.card-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column}.card-group>.card{margin-bottom:15px}@media (min-width:576px){.card-group{-ms-flex-flow:row wrap;flex-flow:row wrap}.card-group>.card{-ms-flex:1 0 0%;flex:1 0 0%;margin-bottom:0}.card-group>.card+.card{margin-left:0;border-left:0}.card-group>.card:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.card-group>.card:first-child .card-header,.card-group>.card:first-child .card-img-top{border-top-right-radius:0}.card-group>.card:first-child .card-footer,.card-group>.card:first-child .card-img-bottom{border-bottom-right-radius:0}.card-group>.card:last-child{border-top-left-radius:0;border-bottom-left-radius:0}.card-group>.card:last-child .card-header,.card-group>.card:last-child .card-img-top{border-top-left-radius:0}.card-group>.card:last-child .card-footer,.card-group>.card:last-child .card-img-bottom{border-bottom-left-radius:0}.card-group>.card:only-child{border-radius:.25rem}.card-group>.card:only-child .card-header,.card-group>.card:only-child .card-img-top{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.card-group>.card:only-child .card-footer,.card-group>.card:only-child .card-img-bottom{border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.card-group>.card:not(:first-child):not(:last-child):not(:only-child){border-radius:0}.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-footer,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-header,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,.card-group>.card:not(:first-child):not(:last-child):not(:only-child) .card-img-top{border-radius:0}}.card-columns .card{margin-bottom:.75rem}@media (min-width:576px){.card-columns{-webkit-column-count:3;-moz-column-count:3;column-count:3;-webkit-column-gap:1.25rem;-moz-column-gap:1.25rem;column-gap:1.25rem;orphans:1;widows:1}.card-columns .card{display:inline-block;width:100%}}.accordion .card:not(:first-of-type):not(:last-of-type){border-bottom:0;border-radius:0}.accordion .card:not(:first-of-type) .card-header:first-child{border-radius:0}.accordion .card:first-of-type{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.accordion .card:last-of-type{border-top-left-radius:0;border-top-right-radius:0}.breadcrumb{display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;padding:.75rem 1rem;margin-bottom:1rem;list-style:none;background-color:#e9ecef;border-radius:.25rem}.breadcrumb-item+.breadcrumb-item{padding-left:.5rem}.breadcrumb-item+.breadcrumb-item::before{display:inline-block;padding-right:.5rem;color:#6c757d;content:"/"}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:underline}.breadcrumb-item+.breadcrumb-item:hover::before{text-decoration:none}.breadcrumb-item.active{color:#6c757d}.pagination{display:-ms-flexbox;display:flex;padding-left:0;list-style:none;border-radius:.25rem}.page-link{position:relative;display:block;padding:.5rem .75rem;margin-left:-1px;line-height:1.25;color:#007bff;background-color:#fff;border:1px solid #dee2e6}.page-link:hover{z-index:2;color:#0056b3;text-decoration:none;background-color:#e9ecef;border-color:#dee2e6}.page-link:focus{z-index:2;outline:0;box-shadow:0 0 0 .2rem rgba(0,123,255,.25)}.page-link:not(:disabled):not(.disabled){cursor:pointer}.page-item:first-child .page-link{margin-left:0;border-top-left-radius:.25rem;border-bottom-left-radius:.25rem}.page-item:last-child .page-link{border-top-right-radius:.25rem;border-bottom-right-radius:.25rem}.page-item.active .page-link{z-index:1;color:#fff;background-color:#007bff;border-color:#007bff}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;cursor:auto;background-color:#fff;border-color:#dee2e6}.pagination-lg .page-link{padding:.75rem 1.5rem;font-size:1.25rem;line-height:1.5}.pagination-lg .page-item:first-child .page-link{border-top-left-radius:.3rem;border-bottom-left-radius:.3rem}.pagination-lg .page-item:last-child .page-link{border-top-right-radius:.3rem;border-bottom-right-radius:.3rem}.pagination-sm .page-link{padding:.25rem .5rem;font-size:.875rem;line-height:1.5}.pagination-sm .page-item:first-child .page-link{border-top-left-radius:.2rem;border-bottom-left-radius:.2rem}.pagination-sm .page-item:last-child .page-link{border-top-right-radius:.2rem;border-bottom-right-radius:.2rem}.badge{display:inline-block;padding:.25em .4em;font-size:75%;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.badge:empty{display:none}.btn .badge{position:relative;top:-1px}.badge-pill{padding-right:.6em;padding-left:.6em;border-radius:10rem}.badge-primary{color:#fff;background-color:#007bff}.badge-primary[href]:focus,.badge-primary[href]:hover{color:#fff;text-decoration:none;background-color:#0062cc}.badge-secondary{color:#fff;background-color:#6c757d}.badge-secondary[href]:focus,.badge-secondary[href]:hover{color:#fff;text-decoration:none;background-color:#545b62}.badge-success{color:#fff;background-color:#28a745}.badge-success[href]:focus,.badge-success[href]:hover{color:#fff;text-decoration:none;background-color:#1e7e34}.badge-info{color:#fff;background-color:#17a2b8}.badge-info[href]:focus,.badge-info[href]:hover{color:#fff;text-decoration:none;background-color:#117a8b}.badge-warning{color:#212529;background-color:#ffc107}.badge-warning[href]:focus,.badge-warning[href]:hover{color:#212529;text-decoration:none;background-color:#d39e00}.badge-danger{color:#fff;background-color:#dc3545}.badge-danger[href]:focus,.badge-danger[href]:hover{color:#fff;text-decoration:none;background-color:#bd2130}.badge-light{color:#212529;background-color:#f8f9fa}.badge-light[href]:focus,.badge-light[href]:hover{color:#212529;text-decoration:none;background-color:#dae0e5}.badge-dark{color:#fff;background-color:#343a40}.badge-dark[href]:focus,.badge-dark[href]:hover{color:#fff;text-decoration:none;background-color:#1d2124}.jumbotron{padding:2rem 1rem;margin-bottom:2rem;background-color:#e9ecef;border-radius:.3rem}@media (min-width:576px){.jumbotron{padding:4rem 2rem}}.jumbotron-fluid{padding-right:0;padding-left:0;border-radius:0}.alert{position:relative;padding:.75rem 1.25rem;margin-bottom:1rem;border:1px solid transparent;border-radius:.25rem}.alert-heading{color:inherit}.alert-link{font-weight:700}.alert-dismissible{padding-right:4rem}.alert-dismissible .close{position:absolute;top:0;right:0;padding:.75rem 1.25rem;color:inherit}.alert-primary{color:#004085;background-color:#cce5ff;border-color:#b8daff}.alert-primary hr{border-top-color:#9fcdff}.alert-primary .alert-link{color:#002752}.alert-secondary{color:#383d41;background-color:#e2e3e5;border-color:#d6d8db}.alert-secondary hr{border-top-color:#c8cbcf}.alert-secondary .alert-link{color:#202326}.alert-success{color:#155724;background-color:#d4edda;border-color:#c3e6cb}.alert-success hr{border-top-color:#b1dfbb}.alert-success .alert-link{color:#0b2e13}.alert-info{color:#0c5460;background-color:#d1ecf1;border-color:#bee5eb}.alert-info hr{border-top-color:#abdde5}.alert-info .alert-link{color:#062c33}.alert-warning{color:#856404;background-color:#fff3cd;border-color:#ffeeba}.alert-warning hr{border-top-color:#ffe8a1}.alert-warning .alert-link{color:#533f03}.alert-danger{color:#721c24;background-color:#f8d7da;border-color:#f5c6cb}.alert-danger hr{border-top-color:#f1b0b7}.alert-danger .alert-link{color:#491217}.alert-light{color:#818182;background-color:#fefefe;border-color:#fdfdfe}.alert-light hr{border-top-color:#ececf6}.alert-light .alert-link{color:#686868}.alert-dark{color:#1b1e21;background-color:#d6d8d9;border-color:#c6c8ca}.alert-dark hr{border-top-color:#b9bbbe}.alert-dark .alert-link{color:#040505}@-webkit-keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}@keyframes progress-bar-stripes{from{background-position:1rem 0}to{background-position:0 0}}.progress{display:-ms-flexbox;display:flex;height:1rem;overflow:hidden;font-size:.75rem;background-color:#e9ecef;border-radius:.25rem}.progress-bar{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;color:#fff;text-align:center;white-space:nowrap;background-color:#007bff;transition:width .6s ease}@media screen and (prefers-reduced-motion:reduce){.progress-bar{transition:none}}.progress-bar-striped{background-image:linear-gradient(45deg,rgba(255,255,255,.15) 25%,transparent 25%,transparent 50%,rgba(255,255,255,.15) 50%,rgba(255,255,255,.15) 75%,transparent 75%,transparent);background-size:1rem 1rem}.progress-bar-animated{-webkit-animation:progress-bar-stripes 1s linear infinite;animation:progress-bar-stripes 1s linear infinite}.media{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start}.media-body{-ms-flex:1;flex:1}.list-group{display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;padding-left:0;margin-bottom:0}.list-group-item-action{width:100%;color:#495057;text-align:inherit}.list-group-item-action:focus,.list-group-item-action:hover{color:#495057;text-decoration:none;background-color:#f8f9fa}.list-group-item-action:active{color:#212529;background-color:#e9ecef}.list-group-item{position:relative;display:block;padding:.75rem 1.25rem;margin-bottom:-1px;background-color:#fff;border:1px solid rgba(0,0,0,.125)}.list-group-item:first-child{border-top-left-radius:.25rem;border-top-right-radius:.25rem}.list-group-item:last-child{margin-bottom:0;border-bottom-right-radius:.25rem;border-bottom-left-radius:.25rem}.list-group-item:focus,.list-group-item:hover{z-index:1;text-decoration:none}.list-group-item.disabled,.list-group-item:disabled{color:#6c757d;background-color:#fff}.list-group-item.active{z-index:2;color:#fff;background-color:#007bff;border-color:#007bff}.list-group-flush .list-group-item{border-right:0;border-left:0;border-radius:0}.list-group-flush:first-child .list-group-item:first-child{border-top:0}.list-group-flush:last-child .list-group-item:last-child{border-bottom:0}.list-group-item-primary{color:#004085;background-color:#b8daff}.list-group-item-primary.list-group-item-action:focus,.list-group-item-primary.list-group-item-action:hover{color:#004085;background-color:#9fcdff}.list-group-item-primary.list-group-item-action.active{color:#fff;background-color:#004085;border-color:#004085}.list-group-item-secondary{color:#383d41;background-color:#d6d8db}.list-group-item-secondary.list-group-item-action:focus,.list-group-item-secondary.list-group-item-action:hover{color:#383d41;background-color:#c8cbcf}.list-group-item-secondary.list-group-item-action.active{color:#fff;background-color:#383d41;border-color:#383d41}.list-group-item-success{color:#155724;background-color:#c3e6cb}.list-group-item-success.list-group-item-action:focus,.list-group-item-success.list-group-item-action:hover{color:#155724;background-color:#b1dfbb}.list-group-item-success.list-group-item-action.active{color:#fff;background-color:#155724;border-color:#155724}.list-group-item-info{color:#0c5460;background-color:#bee5eb}.list-group-item-info.list-group-item-action:focus,.list-group-item-info.list-group-item-action:hover{color:#0c5460;background-color:#abdde5}.list-group-item-info.list-group-item-action.active{color:#fff;background-color:#0c5460;border-color:#0c5460}.list-group-item-warning{color:#856404;background-color:#ffeeba}.list-group-item-warning.list-group-item-action:focus,.list-group-item-warning.list-group-item-action:hover{color:#856404;background-color:#ffe8a1}.list-group-item-warning.list-group-item-action.active{color:#fff;background-color:#856404;border-color:#856404}.list-group-item-danger{color:#721c24;background-color:#f5c6cb}.list-group-item-danger.list-group-item-action:focus,.list-group-item-danger.list-group-item-action:hover{color:#721c24;background-color:#f1b0b7}.list-group-item-danger.list-group-item-action.active{color:#fff;background-color:#721c24;border-color:#721c24}.list-group-item-light{color:#818182;background-color:#fdfdfe}.list-group-item-light.list-group-item-action:focus,.list-group-item-light.list-group-item-action:hover{color:#818182;background-color:#ececf6}.list-group-item-light.list-group-item-action.active{color:#fff;background-color:#818182;border-color:#818182}.list-group-item-dark{color:#1b1e21;background-color:#c6c8ca}.list-group-item-dark.list-group-item-action:focus,.list-group-item-dark.list-group-item-action:hover{color:#1b1e21;background-color:#b9bbbe}.list-group-item-dark.list-group-item-action.active{color:#fff;background-color:#1b1e21;border-color:#1b1e21}.close{float:right;font-size:1.5rem;font-weight:700;line-height:1;color:#000;text-shadow:0 1px 0 #fff;opacity:.5}.close:focus,.close:hover{color:#000;text-decoration:none;opacity:.75}.close:not(:disabled):not(.disabled){cursor:pointer}button.close{padding:0;background-color:transparent;border:0;-webkit-appearance:none}.modal-open{overflow:hidden}.modal{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1050;display:none;overflow:hidden;outline:0}.modal-open .modal{overflow-x:hidden;overflow-y:auto}.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}.modal.fade .modal-dialog{transition:-webkit-transform .3s ease-out;transition:transform .3s ease-out;transition:transform .3s ease-out,-webkit-transform .3s ease-out;-webkit-transform:translate(0,-25%);transform:translate(0,-25%)}@media screen and (prefers-reduced-motion:reduce){.modal.fade .modal-dialog{transition:none}}.modal.show .modal-dialog{-webkit-transform:translate(0,0);transform:translate(0,0)}.modal-dialog-centered{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;min-height:calc(100% - (.5rem * 2))}.modal-content{position:relative;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;width:100%;pointer-events:auto;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem;outline:0}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:#000}.modal-backdrop.fade{opacity:0}.modal-backdrop.show{opacity:.5}.modal-header{display:-ms-flexbox;display:flex;-ms-flex-align:start;align-items:flex-start;-ms-flex-pack:justify;justify-content:space-between;padding:1rem;border-bottom:1px solid #e9ecef;border-top-left-radius:.3rem;border-top-right-radius:.3rem}.modal-header .close{padding:1rem;margin:-1rem -1rem -1rem auto}.modal-title{margin-bottom:0;line-height:1.5}.modal-body{position:relative;-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem}.modal-footer{display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:end;justify-content:flex-end;padding:1rem;border-top:1px solid #e9ecef}.modal-footer>:not(:first-child){margin-left:.25rem}.modal-footer>:not(:last-child){margin-right:.25rem}.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}@media (min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}.modal-dialog-centered{min-height:calc(100% - (1.75rem * 2))}.modal-sm{max-width:300px}}@media (min-width:992px){.modal-lg{max-width:800px}}.tooltip{position:absolute;z-index:1070;display:block;margin:0;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;opacity:0}.tooltip.show{opacity:.9}.tooltip .arrow{position:absolute;display:block;width:.8rem;height:.4rem}.tooltip .arrow::before{position:absolute;content:"";border-color:transparent;border-style:solid}.bs-tooltip-auto[x-placement^=top],.bs-tooltip-top{padding:.4rem 0}.bs-tooltip-auto[x-placement^=top] .arrow,.bs-tooltip-top .arrow{bottom:0}.bs-tooltip-auto[x-placement^=top] .arrow::before,.bs-tooltip-top .arrow::before{top:0;border-width:.4rem .4rem 0;border-top-color:#000}.bs-tooltip-auto[x-placement^=right],.bs-tooltip-right{padding:0 .4rem}.bs-tooltip-auto[x-placement^=right] .arrow,.bs-tooltip-right .arrow{left:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=right] .arrow::before,.bs-tooltip-right .arrow::before{right:0;border-width:.4rem .4rem .4rem 0;border-right-color:#000}.bs-tooltip-auto[x-placement^=bottom],.bs-tooltip-bottom{padding:.4rem 0}.bs-tooltip-auto[x-placement^=bottom] .arrow,.bs-tooltip-bottom .arrow{top:0}.bs-tooltip-auto[x-placement^=bottom] .arrow::before,.bs-tooltip-bottom .arrow::before{bottom:0;border-width:0 .4rem .4rem;border-bottom-color:#000}.bs-tooltip-auto[x-placement^=left],.bs-tooltip-left{padding:0 .4rem}.bs-tooltip-auto[x-placement^=left] .arrow,.bs-tooltip-left .arrow{right:0;width:.4rem;height:.8rem}.bs-tooltip-auto[x-placement^=left] .arrow::before,.bs-tooltip-left .arrow::before{left:0;border-width:.4rem 0 .4rem .4rem;border-left-color:#000}.tooltip-inner{max-width:200px;padding:.25rem .5rem;color:#fff;text-align:center;background-color:#000;border-radius:.25rem}.popover{position:absolute;top:0;left:0;z-index:1060;display:block;max-width:276px;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";font-style:normal;font-weight:400;line-height:1.5;text-align:left;text-align:start;text-decoration:none;text-shadow:none;text-transform:none;letter-spacing:normal;word-break:normal;word-spacing:normal;white-space:normal;line-break:auto;font-size:.875rem;word-wrap:break-word;background-color:#fff;background-clip:padding-box;border:1px solid rgba(0,0,0,.2);border-radius:.3rem}.popover .arrow{position:absolute;display:block;width:1rem;height:.5rem;margin:0 .3rem}.popover .arrow::after,.popover .arrow::before{position:absolute;display:block;content:"";border-color:transparent;border-style:solid}.bs-popover-auto[x-placement^=top],.bs-popover-top{margin-bottom:.5rem}.bs-popover-auto[x-placement^=top] .arrow,.bs-popover-top .arrow{bottom:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::after,.bs-popover-top .arrow::before{border-width:.5rem .5rem 0}.bs-popover-auto[x-placement^=top] .arrow::before,.bs-popover-top .arrow::before{bottom:0;border-top-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=top] .arrow::after,.bs-popover-top .arrow::after{bottom:1px;border-top-color:#fff}.bs-popover-auto[x-placement^=right],.bs-popover-right{margin-left:.5rem}.bs-popover-auto[x-placement^=right] .arrow,.bs-popover-right .arrow{left:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::after,.bs-popover-right .arrow::before{border-width:.5rem .5rem .5rem 0}.bs-popover-auto[x-placement^=right] .arrow::before,.bs-popover-right .arrow::before{left:0;border-right-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=right] .arrow::after,.bs-popover-right .arrow::after{left:1px;border-right-color:#fff}.bs-popover-auto[x-placement^=bottom],.bs-popover-bottom{margin-top:.5rem}.bs-popover-auto[x-placement^=bottom] .arrow,.bs-popover-bottom .arrow{top:calc((.5rem + 1px) * -1)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::after,.bs-popover-bottom .arrow::before{border-width:0 .5rem .5rem .5rem}.bs-popover-auto[x-placement^=bottom] .arrow::before,.bs-popover-bottom .arrow::before{top:0;border-bottom-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=bottom] .arrow::after,.bs-popover-bottom .arrow::after{top:1px;border-bottom-color:#fff}.bs-popover-auto[x-placement^=bottom] .popover-header::before,.bs-popover-bottom .popover-header::before{position:absolute;top:0;left:50%;display:block;width:1rem;margin-left:-.5rem;content:"";border-bottom:1px solid #f7f7f7}.bs-popover-auto[x-placement^=left],.bs-popover-left{margin-right:.5rem}.bs-popover-auto[x-placement^=left] .arrow,.bs-popover-left .arrow{right:calc((.5rem + 1px) * -1);width:.5rem;height:1rem;margin:.3rem 0}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::after,.bs-popover-left .arrow::before{border-width:.5rem 0 .5rem .5rem}.bs-popover-auto[x-placement^=left] .arrow::before,.bs-popover-left .arrow::before{right:0;border-left-color:rgba(0,0,0,.25)}.bs-popover-auto[x-placement^=left] .arrow::after,.bs-popover-left .arrow::after{right:1px;border-left-color:#fff}.popover-header{padding:.5rem .75rem;margin-bottom:0;font-size:1rem;color:inherit;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;border-top-left-radius:calc(.3rem - 1px);border-top-right-radius:calc(.3rem - 1px)}.popover-header:empty{display:none}.popover-body{padding:.5rem .75rem;color:#212529}.carousel{position:relative}.carousel-inner{position:relative;width:100%;overflow:hidden}.carousel-item{position:relative;display:none;-ms-flex-align:center;align-items:center;width:100%;transition:-webkit-transform .6s ease;transition:transform .6s ease;transition:transform .6s ease,-webkit-transform .6s ease;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-perspective:1000px;perspective:1000px}@media screen and (prefers-reduced-motion:reduce){.carousel-item{transition:none}}.carousel-item-next,.carousel-item-prev,.carousel-item.active{display:block}.carousel-item-next,.carousel-item-prev{position:absolute;top:0}.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-item-next.carousel-item-left,.carousel-item-prev.carousel-item-right{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.active.carousel-item-right,.carousel-item-next{-webkit-transform:translateX(100%);transform:translateX(100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-right,.carousel-item-next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}}.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translateX(-100%);transform:translateX(-100%)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.active.carousel-item-left,.carousel-item-prev{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}}.carousel-fade .carousel-item{opacity:0;transition-duration:.6s;transition-property:opacity}.carousel-fade .carousel-item-next.carousel-item-left,.carousel-fade .carousel-item-prev.carousel-item-right,.carousel-fade .carousel-item.active{opacity:1}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-right{opacity:0}.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{-webkit-transform:translateX(0);transform:translateX(0)}@supports ((-webkit-transform-style:preserve-3d) or (transform-style:preserve-3d)){.carousel-fade .active.carousel-item-left,.carousel-fade .active.carousel-item-prev,.carousel-fade .carousel-item-next,.carousel-fade .carousel-item-prev,.carousel-fade .carousel-item.active{-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}.carousel-control-next,.carousel-control-prev{position:absolute;top:0;bottom:0;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;width:15%;color:#fff;text-align:center;opacity:.5}.carousel-control-next:focus,.carousel-control-next:hover,.carousel-control-prev:focus,.carousel-control-prev:hover{color:#fff;text-decoration:none;outline:0;opacity:.9}.carousel-control-prev{left:0}.carousel-control-next{right:0}.carousel-control-next-icon,.carousel-control-prev-icon{display:inline-block;width:20px;height:20px;background:transparent no-repeat center center;background-size:100% 100%}.carousel-control-prev-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E")}.carousel-control-next-icon{background-image:url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E")}.carousel-indicators{position:absolute;right:0;bottom:10px;left:0;z-index:15;display:-ms-flexbox;display:flex;-ms-flex-pack:center;justify-content:center;padding-left:0;margin-right:15%;margin-left:15%;list-style:none}.carousel-indicators li{position:relative;-ms-flex:0 1 auto;flex:0 1 auto;width:30px;height:3px;margin-right:3px;margin-left:3px;text-indent:-999px;cursor:pointer;background-color:rgba(255,255,255,.5)}.carousel-indicators li::before{position:absolute;top:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators li::after{position:absolute;bottom:-10px;left:0;display:inline-block;width:100%;height:10px;content:""}.carousel-indicators .active{background-color:#fff}.carousel-caption{position:absolute;right:15%;bottom:20px;left:15%;z-index:10;padding-top:20px;padding-bottom:20px;color:#fff;text-align:center}.align-baseline{vertical-align:baseline!important}.align-top{vertical-align:top!important}.align-middle{vertical-align:middle!important}.align-bottom{vertical-align:bottom!important}.align-text-bottom{vertical-align:text-bottom!important}.align-text-top{vertical-align:text-top!important}.bg-primary{background-color:#007bff!important}a.bg-primary:focus,a.bg-primary:hover,button.bg-primary:focus,button.bg-primary:hover{background-color:#0062cc!important}.bg-secondary{background-color:#6c757d!important}a.bg-secondary:focus,a.bg-secondary:hover,button.bg-secondary:focus,button.bg-secondary:hover{background-color:#545b62!important}.bg-success{background-color:#28a745!important}a.bg-success:focus,a.bg-success:hover,button.bg-success:focus,button.bg-success:hover{background-color:#1e7e34!important}.bg-info{background-color:#17a2b8!important}a.bg-info:focus,a.bg-info:hover,button.bg-info:focus,button.bg-info:hover{background-color:#117a8b!important}.bg-warning{background-color:#ffc107!important}a.bg-warning:focus,a.bg-warning:hover,button.bg-warning:focus,button.bg-warning:hover{background-color:#d39e00!important}.bg-danger{background-color:#dc3545!important}a.bg-danger:focus,a.bg-danger:hover,button.bg-danger:focus,button.bg-danger:hover{background-color:#bd2130!important}.bg-light{background-color:#f8f9fa!important}a.bg-light:focus,a.bg-light:hover,button.bg-light:focus,button.bg-light:hover{background-color:#dae0e5!important}.bg-dark{background-color:#343a40!important}a.bg-dark:focus,a.bg-dark:hover,button.bg-dark:focus,button.bg-dark:hover{background-color:#1d2124!important}.bg-white{background-color:#fff!important}.bg-transparent{background-color:transparent!important}.border{border:1px solid #dee2e6!important}.border-top{border-top:1px solid #dee2e6!important}.border-right{border-right:1px solid #dee2e6!important}.border-bottom{border-bottom:1px solid #dee2e6!important}.border-left{border-left:1px solid #dee2e6!important}.border-0{border:0!important}.border-top-0{border-top:0!important}.border-right-0{border-right:0!important}.border-bottom-0{border-bottom:0!important}.border-left-0{border-left:0!important}.border-primary{border-color:#007bff!important}.border-secondary{border-color:#6c757d!important}.border-success{border-color:#28a745!important}.border-info{border-color:#17a2b8!important}.border-warning{border-color:#ffc107!important}.border-danger{border-color:#dc3545!important}.border-light{border-color:#f8f9fa!important}.border-dark{border-color:#343a40!important}.border-white{border-color:#fff!important}.rounded{border-radius:.25rem!important}.rounded-top{border-top-left-radius:.25rem!important;border-top-right-radius:.25rem!important}.rounded-right{border-top-right-radius:.25rem!important;border-bottom-right-radius:.25rem!important}.rounded-bottom{border-bottom-right-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-left{border-top-left-radius:.25rem!important;border-bottom-left-radius:.25rem!important}.rounded-circle{border-radius:50%!important}.rounded-0{border-radius:0!important}.clearfix::after{display:block;clear:both;content:""}.d-none{display:none!important}.d-inline{display:inline!important}.d-inline-block{display:inline-block!important}.d-block{display:block!important}.d-table{display:table!important}.d-table-row{display:table-row!important}.d-table-cell{display:table-cell!important}.d-flex{display:-ms-flexbox!important;display:flex!important}.d-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}@media (min-width:576px){.d-sm-none{display:none!important}.d-sm-inline{display:inline!important}.d-sm-inline-block{display:inline-block!important}.d-sm-block{display:block!important}.d-sm-table{display:table!important}.d-sm-table-row{display:table-row!important}.d-sm-table-cell{display:table-cell!important}.d-sm-flex{display:-ms-flexbox!important;display:flex!important}.d-sm-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:768px){.d-md-none{display:none!important}.d-md-inline{display:inline!important}.d-md-inline-block{display:inline-block!important}.d-md-block{display:block!important}.d-md-table{display:table!important}.d-md-table-row{display:table-row!important}.d-md-table-cell{display:table-cell!important}.d-md-flex{display:-ms-flexbox!important;display:flex!important}.d-md-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:992px){.d-lg-none{display:none!important}.d-lg-inline{display:inline!important}.d-lg-inline-block{display:inline-block!important}.d-lg-block{display:block!important}.d-lg-table{display:table!important}.d-lg-table-row{display:table-row!important}.d-lg-table-cell{display:table-cell!important}.d-lg-flex{display:-ms-flexbox!important;display:flex!important}.d-lg-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media (min-width:1200px){.d-xl-none{display:none!important}.d-xl-inline{display:inline!important}.d-xl-inline-block{display:inline-block!important}.d-xl-block{display:block!important}.d-xl-table{display:table!important}.d-xl-table-row{display:table-row!important}.d-xl-table-cell{display:table-cell!important}.d-xl-flex{display:-ms-flexbox!important;display:flex!important}.d-xl-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}@media print{.d-print-none{display:none!important}.d-print-inline{display:inline!important}.d-print-inline-block{display:inline-block!important}.d-print-block{display:block!important}.d-print-table{display:table!important}.d-print-table-row{display:table-row!important}.d-print-table-cell{display:table-cell!important}.d-print-flex{display:-ms-flexbox!important;display:flex!important}.d-print-inline-flex{display:-ms-inline-flexbox!important;display:inline-flex!important}}.embed-responsive{position:relative;display:block;width:100%;padding:0;overflow:hidden}.embed-responsive::before{display:block;content:""}.embed-responsive .embed-responsive-item,.embed-responsive embed,.embed-responsive iframe,.embed-responsive object,.embed-responsive video{position:absolute;top:0;bottom:0;left:0;width:100%;height:100%;border:0}.embed-responsive-21by9::before{padding-top:42.857143%}.embed-responsive-16by9::before{padding-top:56.25%}.embed-responsive-4by3::before{padding-top:75%}.embed-responsive-1by1::before{padding-top:100%}.flex-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-center{-ms-flex-align:center!important;align-items:center!important}.align-items-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}@media (min-width:576px){.flex-sm-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-sm-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-sm-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-sm-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-sm-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-sm-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-sm-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-sm-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-sm-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-sm-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-sm-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-sm-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-sm-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-sm-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-sm-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-sm-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-sm-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-sm-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-sm-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-sm-center{-ms-flex-align:center!important;align-items:center!important}.align-items-sm-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-sm-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-sm-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-sm-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-sm-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-sm-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-sm-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-sm-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-sm-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-sm-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-sm-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-sm-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-sm-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-sm-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:768px){.flex-md-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-md-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-md-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-md-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-md-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-md-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-md-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-md-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-md-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-md-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-md-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-md-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-md-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-md-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-md-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-md-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-md-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-md-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-md-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-md-center{-ms-flex-align:center!important;align-items:center!important}.align-items-md-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-md-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-md-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-md-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-md-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-md-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-md-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-md-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-md-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-md-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-md-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-md-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-md-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-md-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:992px){.flex-lg-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-lg-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-lg-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-lg-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-lg-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-lg-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-lg-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-lg-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-lg-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-lg-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-lg-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-lg-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-lg-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-lg-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-lg-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-lg-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-lg-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-lg-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-lg-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-lg-center{-ms-flex-align:center!important;align-items:center!important}.align-items-lg-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-lg-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-lg-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-lg-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-lg-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-lg-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-lg-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-lg-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-lg-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-lg-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-lg-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-lg-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-lg-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-lg-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}@media (min-width:1200px){.flex-xl-row{-ms-flex-direction:row!important;flex-direction:row!important}.flex-xl-column{-ms-flex-direction:column!important;flex-direction:column!important}.flex-xl-row-reverse{-ms-flex-direction:row-reverse!important;flex-direction:row-reverse!important}.flex-xl-column-reverse{-ms-flex-direction:column-reverse!important;flex-direction:column-reverse!important}.flex-xl-wrap{-ms-flex-wrap:wrap!important;flex-wrap:wrap!important}.flex-xl-nowrap{-ms-flex-wrap:nowrap!important;flex-wrap:nowrap!important}.flex-xl-wrap-reverse{-ms-flex-wrap:wrap-reverse!important;flex-wrap:wrap-reverse!important}.flex-xl-fill{-ms-flex:1 1 auto!important;flex:1 1 auto!important}.flex-xl-grow-0{-ms-flex-positive:0!important;flex-grow:0!important}.flex-xl-grow-1{-ms-flex-positive:1!important;flex-grow:1!important}.flex-xl-shrink-0{-ms-flex-negative:0!important;flex-shrink:0!important}.flex-xl-shrink-1{-ms-flex-negative:1!important;flex-shrink:1!important}.justify-content-xl-start{-ms-flex-pack:start!important;justify-content:flex-start!important}.justify-content-xl-end{-ms-flex-pack:end!important;justify-content:flex-end!important}.justify-content-xl-center{-ms-flex-pack:center!important;justify-content:center!important}.justify-content-xl-between{-ms-flex-pack:justify!important;justify-content:space-between!important}.justify-content-xl-around{-ms-flex-pack:distribute!important;justify-content:space-around!important}.align-items-xl-start{-ms-flex-align:start!important;align-items:flex-start!important}.align-items-xl-end{-ms-flex-align:end!important;align-items:flex-end!important}.align-items-xl-center{-ms-flex-align:center!important;align-items:center!important}.align-items-xl-baseline{-ms-flex-align:baseline!important;align-items:baseline!important}.align-items-xl-stretch{-ms-flex-align:stretch!important;align-items:stretch!important}.align-content-xl-start{-ms-flex-line-pack:start!important;align-content:flex-start!important}.align-content-xl-end{-ms-flex-line-pack:end!important;align-content:flex-end!important}.align-content-xl-center{-ms-flex-line-pack:center!important;align-content:center!important}.align-content-xl-between{-ms-flex-line-pack:justify!important;align-content:space-between!important}.align-content-xl-around{-ms-flex-line-pack:distribute!important;align-content:space-around!important}.align-content-xl-stretch{-ms-flex-line-pack:stretch!important;align-content:stretch!important}.align-self-xl-auto{-ms-flex-item-align:auto!important;align-self:auto!important}.align-self-xl-start{-ms-flex-item-align:start!important;align-self:flex-start!important}.align-self-xl-end{-ms-flex-item-align:end!important;align-self:flex-end!important}.align-self-xl-center{-ms-flex-item-align:center!important;align-self:center!important}.align-self-xl-baseline{-ms-flex-item-align:baseline!important;align-self:baseline!important}.align-self-xl-stretch{-ms-flex-item-align:stretch!important;align-self:stretch!important}}.float-left{float:left!important}.float-right{float:right!important}.float-none{float:none!important}@media (min-width:576px){.float-sm-left{float:left!important}.float-sm-right{float:right!important}.float-sm-none{float:none!important}}@media (min-width:768px){.float-md-left{float:left!important}.float-md-right{float:right!important}.float-md-none{float:none!important}}@media (min-width:992px){.float-lg-left{float:left!important}.float-lg-right{float:right!important}.float-lg-none{float:none!important}}@media (min-width:1200px){.float-xl-left{float:left!important}.float-xl-right{float:right!important}.float-xl-none{float:none!important}}.position-static{position:static!important}.position-relative{position:relative!important}.position-absolute{position:absolute!important}.position-fixed{position:fixed!important}.position-sticky{position:-webkit-sticky!important;position:sticky!important}.fixed-top{position:fixed;top:0;right:0;left:0;z-index:1030}.fixed-bottom{position:fixed;right:0;bottom:0;left:0;z-index:1030}@supports ((position:-webkit-sticky) or (position:sticky)){.sticky-top{position:-webkit-sticky;position:sticky;top:0;z-index:1020}}.sr-only{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;overflow:visible;clip:auto;white-space:normal}.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}.shadow-lg{box-shadow:0 1rem 3rem rgba(0,0,0,.175)!important}.shadow-none{box-shadow:none!important}.w-25{width:25%!important}.w-50{width:50%!important}.w-75{width:75%!important}.w-100{width:100%!important}.w-auto{width:auto!important}.h-25{height:25%!important}.h-50{height:50%!important}.h-75{height:75%!important}.h-100{height:100%!important}.h-auto{height:auto!important}.mw-100{max-width:100%!important}.mh-100{max-height:100%!important}.m-0{margin:0!important}.mt-0,.my-0{margin-top:0!important}.mr-0,.mx-0{margin-right:0!important}.mb-0,.my-0{margin-bottom:0!important}.ml-0,.mx-0{margin-left:0!important}.m-1{margin:.25rem!important}.mt-1,.my-1{margin-top:.25rem!important}.mr-1,.mx-1{margin-right:.25rem!important}.mb-1,.my-1{margin-bottom:.25rem!important}.ml-1,.mx-1{margin-left:.25rem!important}.m-2{margin:.5rem!important}.mt-2,.my-2{margin-top:.5rem!important}.mr-2,.mx-2{margin-right:.5rem!important}.mb-2,.my-2{margin-bottom:.5rem!important}.ml-2,.mx-2{margin-left:.5rem!important}.m-3{margin:1rem!important}.mt-3,.my-3{margin-top:1rem!important}.mr-3,.mx-3{margin-right:1rem!important}.mb-3,.my-3{margin-bottom:1rem!important}.ml-3,.mx-3{margin-left:1rem!important}.m-4{margin:1.5rem!important}.mt-4,.my-4{margin-top:1.5rem!important}.mr-4,.mx-4{margin-right:1.5rem!important}.mb-4,.my-4{margin-bottom:1.5rem!important}.ml-4,.mx-4{margin-left:1.5rem!important}.m-5{margin:3rem!important}.mt-5,.my-5{margin-top:3rem!important}.mr-5,.mx-5{margin-right:3rem!important}.mb-5,.my-5{margin-bottom:3rem!important}.ml-5,.mx-5{margin-left:3rem!important}.p-0{padding:0!important}.pt-0,.py-0{padding-top:0!important}.pr-0,.px-0{padding-right:0!important}.pb-0,.py-0{padding-bottom:0!important}.pl-0,.px-0{padding-left:0!important}.p-1{padding:.25rem!important}.pt-1,.py-1{padding-top:.25rem!important}.pr-1,.px-1{padding-right:.25rem!important}.pb-1,.py-1{padding-bottom:.25rem!important}.pl-1,.px-1{padding-left:.25rem!important}.p-2{padding:.5rem!important}.pt-2,.py-2{padding-top:.5rem!important}.pr-2,.px-2{padding-right:.5rem!important}.pb-2,.py-2{padding-bottom:.5rem!important}.pl-2,.px-2{padding-left:.5rem!important}.p-3{padding:1rem!important}.pt-3,.py-3{padding-top:1rem!important}.pr-3,.px-3{padding-right:1rem!important}.pb-3,.py-3{padding-bottom:1rem!important}.pl-3,.px-3{padding-left:1rem!important}.p-4{padding:1.5rem!important}.pt-4,.py-4{padding-top:1.5rem!important}.pr-4,.px-4{padding-right:1.5rem!important}.pb-4,.py-4{padding-bottom:1.5rem!important}.pl-4,.px-4{padding-left:1.5rem!important}.p-5{padding:3rem!important}.pt-5,.py-5{padding-top:3rem!important}.pr-5,.px-5{padding-right:3rem!important}.pb-5,.py-5{padding-bottom:3rem!important}.pl-5,.px-5{padding-left:3rem!important}.m-auto{margin:auto!important}.mt-auto,.my-auto{margin-top:auto!important}.mr-auto,.mx-auto{margin-right:auto!important}.mb-auto,.my-auto{margin-bottom:auto!important}.ml-auto,.mx-auto{margin-left:auto!important}@media (min-width:576px){.m-sm-0{margin:0!important}.mt-sm-0,.my-sm-0{margin-top:0!important}.mr-sm-0,.mx-sm-0{margin-right:0!important}.mb-sm-0,.my-sm-0{margin-bottom:0!important}.ml-sm-0,.mx-sm-0{margin-left:0!important}.m-sm-1{margin:.25rem!important}.mt-sm-1,.my-sm-1{margin-top:.25rem!important}.mr-sm-1,.mx-sm-1{margin-right:.25rem!important}.mb-sm-1,.my-sm-1{margin-bottom:.25rem!important}.ml-sm-1,.mx-sm-1{margin-left:.25rem!important}.m-sm-2{margin:.5rem!important}.mt-sm-2,.my-sm-2{margin-top:.5rem!important}.mr-sm-2,.mx-sm-2{margin-right:.5rem!important}.mb-sm-2,.my-sm-2{margin-bottom:.5rem!important}.ml-sm-2,.mx-sm-2{margin-left:.5rem!important}.m-sm-3{margin:1rem!important}.mt-sm-3,.my-sm-3{margin-top:1rem!important}.mr-sm-3,.mx-sm-3{margin-right:1rem!important}.mb-sm-3,.my-sm-3{margin-bottom:1rem!important}.ml-sm-3,.mx-sm-3{margin-left:1rem!important}.m-sm-4{margin:1.5rem!important}.mt-sm-4,.my-sm-4{margin-top:1.5rem!important}.mr-sm-4,.mx-sm-4{margin-right:1.5rem!important}.mb-sm-4,.my-sm-4{margin-bottom:1.5rem!important}.ml-sm-4,.mx-sm-4{margin-left:1.5rem!important}.m-sm-5{margin:3rem!important}.mt-sm-5,.my-sm-5{margin-top:3rem!important}.mr-sm-5,.mx-sm-5{margin-right:3rem!important}.mb-sm-5,.my-sm-5{margin-bottom:3rem!important}.ml-sm-5,.mx-sm-5{margin-left:3rem!important}.p-sm-0{padding:0!important}.pt-sm-0,.py-sm-0{padding-top:0!important}.pr-sm-0,.px-sm-0{padding-right:0!important}.pb-sm-0,.py-sm-0{padding-bottom:0!important}.pl-sm-0,.px-sm-0{padding-left:0!important}.p-sm-1{padding:.25rem!important}.pt-sm-1,.py-sm-1{padding-top:.25rem!important}.pr-sm-1,.px-sm-1{padding-right:.25rem!important}.pb-sm-1,.py-sm-1{padding-bottom:.25rem!important}.pl-sm-1,.px-sm-1{padding-left:.25rem!important}.p-sm-2{padding:.5rem!important}.pt-sm-2,.py-sm-2{padding-top:.5rem!important}.pr-sm-2,.px-sm-2{padding-right:.5rem!important}.pb-sm-2,.py-sm-2{padding-bottom:.5rem!important}.pl-sm-2,.px-sm-2{padding-left:.5rem!important}.p-sm-3{padding:1rem!important}.pt-sm-3,.py-sm-3{padding-top:1rem!important}.pr-sm-3,.px-sm-3{padding-right:1rem!important}.pb-sm-3,.py-sm-3{padding-bottom:1rem!important}.pl-sm-3,.px-sm-3{padding-left:1rem!important}.p-sm-4{padding:1.5rem!important}.pt-sm-4,.py-sm-4{padding-top:1.5rem!important}.pr-sm-4,.px-sm-4{padding-right:1.5rem!important}.pb-sm-4,.py-sm-4{padding-bottom:1.5rem!important}.pl-sm-4,.px-sm-4{padding-left:1.5rem!important}.p-sm-5{padding:3rem!important}.pt-sm-5,.py-sm-5{padding-top:3rem!important}.pr-sm-5,.px-sm-5{padding-right:3rem!important}.pb-sm-5,.py-sm-5{padding-bottom:3rem!important}.pl-sm-5,.px-sm-5{padding-left:3rem!important}.m-sm-auto{margin:auto!important}.mt-sm-auto,.my-sm-auto{margin-top:auto!important}.mr-sm-auto,.mx-sm-auto{margin-right:auto!important}.mb-sm-auto,.my-sm-auto{margin-bottom:auto!important}.ml-sm-auto,.mx-sm-auto{margin-left:auto!important}}@media (min-width:768px){.m-md-0{margin:0!important}.mt-md-0,.my-md-0{margin-top:0!important}.mr-md-0,.mx-md-0{margin-right:0!important}.mb-md-0,.my-md-0{margin-bottom:0!important}.ml-md-0,.mx-md-0{margin-left:0!important}.m-md-1{margin:.25rem!important}.mt-md-1,.my-md-1{margin-top:.25rem!important}.mr-md-1,.mx-md-1{margin-right:.25rem!important}.mb-md-1,.my-md-1{margin-bottom:.25rem!important}.ml-md-1,.mx-md-1{margin-left:.25rem!important}.m-md-2{margin:.5rem!important}.mt-md-2,.my-md-2{margin-top:.5rem!important}.mr-md-2,.mx-md-2{margin-right:.5rem!important}.mb-md-2,.my-md-2{margin-bottom:.5rem!important}.ml-md-2,.mx-md-2{margin-left:.5rem!important}.m-md-3{margin:1rem!important}.mt-md-3,.my-md-3{margin-top:1rem!important}.mr-md-3,.mx-md-3{margin-right:1rem!important}.mb-md-3,.my-md-3{margin-bottom:1rem!important}.ml-md-3,.mx-md-3{margin-left:1rem!important}.m-md-4{margin:1.5rem!important}.mt-md-4,.my-md-4{margin-top:1.5rem!important}.mr-md-4,.mx-md-4{margin-right:1.5rem!important}.mb-md-4,.my-md-4{margin-bottom:1.5rem!important}.ml-md-4,.mx-md-4{margin-left:1.5rem!important}.m-md-5{margin:3rem!important}.mt-md-5,.my-md-5{margin-top:3rem!important}.mr-md-5,.mx-md-5{margin-right:3rem!important}.mb-md-5,.my-md-5{margin-bottom:3rem!important}.ml-md-5,.mx-md-5{margin-left:3rem!important}.p-md-0{padding:0!important}.pt-md-0,.py-md-0{padding-top:0!important}.pr-md-0,.px-md-0{padding-right:0!important}.pb-md-0,.py-md-0{padding-bottom:0!important}.pl-md-0,.px-md-0{padding-left:0!important}.p-md-1{padding:.25rem!important}.pt-md-1,.py-md-1{padding-top:.25rem!important}.pr-md-1,.px-md-1{padding-right:.25rem!important}.pb-md-1,.py-md-1{padding-bottom:.25rem!important}.pl-md-1,.px-md-1{padding-left:.25rem!important}.p-md-2{padding:.5rem!important}.pt-md-2,.py-md-2{padding-top:.5rem!important}.pr-md-2,.px-md-2{padding-right:.5rem!important}.pb-md-2,.py-md-2{padding-bottom:.5rem!important}.pl-md-2,.px-md-2{padding-left:.5rem!important}.p-md-3{padding:1rem!important}.pt-md-3,.py-md-3{padding-top:1rem!important}.pr-md-3,.px-md-3{padding-right:1rem!important}.pb-md-3,.py-md-3{padding-bottom:1rem!important}.pl-md-3,.px-md-3{padding-left:1rem!important}.p-md-4{padding:1.5rem!important}.pt-md-4,.py-md-4{padding-top:1.5rem!important}.pr-md-4,.px-md-4{padding-right:1.5rem!important}.pb-md-4,.py-md-4{padding-bottom:1.5rem!important}.pl-md-4,.px-md-4{padding-left:1.5rem!important}.p-md-5{padding:3rem!important}.pt-md-5,.py-md-5{padding-top:3rem!important}.pr-md-5,.px-md-5{padding-right:3rem!important}.pb-md-5,.py-md-5{padding-bottom:3rem!important}.pl-md-5,.px-md-5{padding-left:3rem!important}.m-md-auto{margin:auto!important}.mt-md-auto,.my-md-auto{margin-top:auto!important}.mr-md-auto,.mx-md-auto{margin-right:auto!important}.mb-md-auto,.my-md-auto{margin-bottom:auto!important}.ml-md-auto,.mx-md-auto{margin-left:auto!important}}@media (min-width:992px){.m-lg-0{margin:0!important}.mt-lg-0,.my-lg-0{margin-top:0!important}.mr-lg-0,.mx-lg-0{margin-right:0!important}.mb-lg-0,.my-lg-0{margin-bottom:0!important}.ml-lg-0,.mx-lg-0{margin-left:0!important}.m-lg-1{margin:.25rem!important}.mt-lg-1,.my-lg-1{margin-top:.25rem!important}.mr-lg-1,.mx-lg-1{margin-right:.25rem!important}.mb-lg-1,.my-lg-1{margin-bottom:.25rem!important}.ml-lg-1,.mx-lg-1{margin-left:.25rem!important}.m-lg-2{margin:.5rem!important}.mt-lg-2,.my-lg-2{margin-top:.5rem!important}.mr-lg-2,.mx-lg-2{margin-right:.5rem!important}.mb-lg-2,.my-lg-2{margin-bottom:.5rem!important}.ml-lg-2,.mx-lg-2{margin-left:.5rem!important}.m-lg-3{margin:1rem!important}.mt-lg-3,.my-lg-3{margin-top:1rem!important}.mr-lg-3,.mx-lg-3{margin-right:1rem!important}.mb-lg-3,.my-lg-3{margin-bottom:1rem!important}.ml-lg-3,.mx-lg-3{margin-left:1rem!important}.m-lg-4{margin:1.5rem!important}.mt-lg-4,.my-lg-4{margin-top:1.5rem!important}.mr-lg-4,.mx-lg-4{margin-right:1.5rem!important}.mb-lg-4,.my-lg-4{margin-bottom:1.5rem!important}.ml-lg-4,.mx-lg-4{margin-left:1.5rem!important}.m-lg-5{margin:3rem!important}.mt-lg-5,.my-lg-5{margin-top:3rem!important}.mr-lg-5,.mx-lg-5{margin-right:3rem!important}.mb-lg-5,.my-lg-5{margin-bottom:3rem!important}.ml-lg-5,.mx-lg-5{margin-left:3rem!important}.p-lg-0{padding:0!important}.pt-lg-0,.py-lg-0{padding-top:0!important}.pr-lg-0,.px-lg-0{padding-right:0!important}.pb-lg-0,.py-lg-0{padding-bottom:0!important}.pl-lg-0,.px-lg-0{padding-left:0!important}.p-lg-1{padding:.25rem!important}.pt-lg-1,.py-lg-1{padding-top:.25rem!important}.pr-lg-1,.px-lg-1{padding-right:.25rem!important}.pb-lg-1,.py-lg-1{padding-bottom:.25rem!important}.pl-lg-1,.px-lg-1{padding-left:.25rem!important}.p-lg-2{padding:.5rem!important}.pt-lg-2,.py-lg-2{padding-top:.5rem!important}.pr-lg-2,.px-lg-2{padding-right:.5rem!important}.pb-lg-2,.py-lg-2{padding-bottom:.5rem!important}.pl-lg-2,.px-lg-2{padding-left:.5rem!important}.p-lg-3{padding:1rem!important}.pt-lg-3,.py-lg-3{padding-top:1rem!important}.pr-lg-3,.px-lg-3{padding-right:1rem!important}.pb-lg-3,.py-lg-3{padding-bottom:1rem!important}.pl-lg-3,.px-lg-3{padding-left:1rem!important}.p-lg-4{padding:1.5rem!important}.pt-lg-4,.py-lg-4{padding-top:1.5rem!important}.pr-lg-4,.px-lg-4{padding-right:1.5rem!important}.pb-lg-4,.py-lg-4{padding-bottom:1.5rem!important}.pl-lg-4,.px-lg-4{padding-left:1.5rem!important}.p-lg-5{padding:3rem!important}.pt-lg-5,.py-lg-5{padding-top:3rem!important}.pr-lg-5,.px-lg-5{padding-right:3rem!important}.pb-lg-5,.py-lg-5{padding-bottom:3rem!important}.pl-lg-5,.px-lg-5{padding-left:3rem!important}.m-lg-auto{margin:auto!important}.mt-lg-auto,.my-lg-auto{margin-top:auto!important}.mr-lg-auto,.mx-lg-auto{margin-right:auto!important}.mb-lg-auto,.my-lg-auto{margin-bottom:auto!important}.ml-lg-auto,.mx-lg-auto{margin-left:auto!important}}@media (min-width:1200px){.m-xl-0{margin:0!important}.mt-xl-0,.my-xl-0{margin-top:0!important}.mr-xl-0,.mx-xl-0{margin-right:0!important}.mb-xl-0,.my-xl-0{margin-bottom:0!important}.ml-xl-0,.mx-xl-0{margin-left:0!important}.m-xl-1{margin:.25rem!important}.mt-xl-1,.my-xl-1{margin-top:.25rem!important}.mr-xl-1,.mx-xl-1{margin-right:.25rem!important}.mb-xl-1,.my-xl-1{margin-bottom:.25rem!important}.ml-xl-1,.mx-xl-1{margin-left:.25rem!important}.m-xl-2{margin:.5rem!important}.mt-xl-2,.my-xl-2{margin-top:.5rem!important}.mr-xl-2,.mx-xl-2{margin-right:.5rem!important}.mb-xl-2,.my-xl-2{margin-bottom:.5rem!important}.ml-xl-2,.mx-xl-2{margin-left:.5rem!important}.m-xl-3{margin:1rem!important}.mt-xl-3,.my-xl-3{margin-top:1rem!important}.mr-xl-3,.mx-xl-3{margin-right:1rem!important}.mb-xl-3,.my-xl-3{margin-bottom:1rem!important}.ml-xl-3,.mx-xl-3{margin-left:1rem!important}.m-xl-4{margin:1.5rem!important}.mt-xl-4,.my-xl-4{margin-top:1.5rem!important}.mr-xl-4,.mx-xl-4{margin-right:1.5rem!important}.mb-xl-4,.my-xl-4{margin-bottom:1.5rem!important}.ml-xl-4,.mx-xl-4{margin-left:1.5rem!important}.m-xl-5{margin:3rem!important}.mt-xl-5,.my-xl-5{margin-top:3rem!important}.mr-xl-5,.mx-xl-5{margin-right:3rem!important}.mb-xl-5,.my-xl-5{margin-bottom:3rem!important}.ml-xl-5,.mx-xl-5{margin-left:3rem!important}.p-xl-0{padding:0!important}.pt-xl-0,.py-xl-0{padding-top:0!important}.pr-xl-0,.px-xl-0{padding-right:0!important}.pb-xl-0,.py-xl-0{padding-bottom:0!important}.pl-xl-0,.px-xl-0{padding-left:0!important}.p-xl-1{padding:.25rem!important}.pt-xl-1,.py-xl-1{padding-top:.25rem!important}.pr-xl-1,.px-xl-1{padding-right:.25rem!important}.pb-xl-1,.py-xl-1{padding-bottom:.25rem!important}.pl-xl-1,.px-xl-1{padding-left:.25rem!important}.p-xl-2{padding:.5rem!important}.pt-xl-2,.py-xl-2{padding-top:.5rem!important}.pr-xl-2,.px-xl-2{padding-right:.5rem!important}.pb-xl-2,.py-xl-2{padding-bottom:.5rem!important}.pl-xl-2,.px-xl-2{padding-left:.5rem!important}.p-xl-3{padding:1rem!important}.pt-xl-3,.py-xl-3{padding-top:1rem!important}.pr-xl-3,.px-xl-3{padding-right:1rem!important}.pb-xl-3,.py-xl-3{padding-bottom:1rem!important}.pl-xl-3,.px-xl-3{padding-left:1rem!important}.p-xl-4{padding:1.5rem!important}.pt-xl-4,.py-xl-4{padding-top:1.5rem!important}.pr-xl-4,.px-xl-4{padding-right:1.5rem!important}.pb-xl-4,.py-xl-4{padding-bottom:1.5rem!important}.pl-xl-4,.px-xl-4{padding-left:1.5rem!important}.p-xl-5{padding:3rem!important}.pt-xl-5,.py-xl-5{padding-top:3rem!important}.pr-xl-5,.px-xl-5{padding-right:3rem!important}.pb-xl-5,.py-xl-5{padding-bottom:3rem!important}.pl-xl-5,.px-xl-5{padding-left:3rem!important}.m-xl-auto{margin:auto!important}.mt-xl-auto,.my-xl-auto{margin-top:auto!important}.mr-xl-auto,.mx-xl-auto{margin-right:auto!important}.mb-xl-auto,.my-xl-auto{margin-bottom:auto!important}.ml-xl-auto,.mx-xl-auto{margin-left:auto!important}}.text-monospace{font-family:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace}.text-justify{text-align:justify!important}.text-nowrap{white-space:nowrap!important}.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text-left{text-align:left!important}.text-right{text-align:right!important}.text-center{text-align:center!important}@media (min-width:576px){.text-sm-left{text-align:left!important}.text-sm-right{text-align:right!important}.text-sm-center{text-align:center!important}}@media (min-width:768px){.text-md-left{text-align:left!important}.text-md-right{text-align:right!important}.text-md-center{text-align:center!important}}@media (min-width:992px){.text-lg-left{text-align:left!important}.text-lg-right{text-align:right!important}.text-lg-center{text-align:center!important}}@media (min-width:1200px){.text-xl-left{text-align:left!important}.text-xl-right{text-align:right!important}.text-xl-center{text-align:center!important}}.text-lowercase{text-transform:lowercase!important}.text-uppercase{text-transform:uppercase!important}.text-capitalize{text-transform:capitalize!important}.font-weight-light{font-weight:300!important}.font-weight-normal{font-weight:400!important}.font-weight-bold{font-weight:700!important}.font-italic{font-style:italic!important}.text-white{color:#fff!important}.text-primary{color:#007bff!important}a.text-primary:focus,a.text-primary:hover{color:#0062cc!important}.text-secondary{color:#6c757d!important}a.text-secondary:focus,a.text-secondary:hover{color:#545b62!important}.text-success{color:#28a745!important}a.text-success:focus,a.text-success:hover{color:#1e7e34!important}.text-info{color:#17a2b8!important}a.text-info:focus,a.text-info:hover{color:#117a8b!important}.text-warning{color:#ffc107!important}a.text-warning:focus,a.text-warning:hover{color:#d39e00!important}.text-danger{color:#dc3545!important}a.text-danger:focus,a.text-danger:hover{color:#bd2130!important}.text-light{color:#f8f9fa!important}a.text-light:focus,a.text-light:hover{color:#dae0e5!important}.text-dark{color:#343a40!important}a.text-dark:focus,a.text-dark:hover{color:#1d2124!important}.text-body{color:#212529!important}.text-muted{color:#6c757d!important}.text-black-50{color:rgba(0,0,0,.5)!important}.text-white-50{color:rgba(255,255,255,.5)!important}.text-hide{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0}.visible{visibility:visible!important}.invisible{visibility:hidden!important}@media print{*,::after,::before{text-shadow:none!important;box-shadow:none!important}a:not(.btn){text-decoration:underline}abbr[title]::after{content:" (" attr(title) ")"}pre{white-space:pre-wrap!important}blockquote,pre{border:1px solid #adb5bd;page-break-inside:avoid}thead{display:table-header-group}img,tr{page-break-inside:avoid}h2,h3,p{orphans:3;widows:3}h2,h3{page-break-after:avoid}@page{size:a3}body{min-width:992px!important}.container{min-width:992px!important}.navbar{display:none}.badge{border:1px solid #000}.table{border-collapse:collapse!important}.table td,.table th{background-color:#fff!important}.table-bordered td,.table-bordered th{border:1px solid #dee2e6!important}.table-dark{color:inherit}.table-dark tbody+tbody,.table-dark td,.table-dark th,.table-dark thead th{border-color:#dee2e6}.table .thead-dark th{color:inherit;border-color:#dee2e6}}
-/*# sourceMappingURL=bootstrap.min.css.map */
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/css/bootstrap.min.css.map b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/css/bootstrap.min.css.map
deleted file mode 100644 (file)
index d291039..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../../scss/bootstrap.scss","../../scss/_root.scss","../../scss/_reboot.scss","dist/css/bootstrap.css","bootstrap.css","../../scss/mixins/_hover.scss","../../scss/_type.scss","../../scss/mixins/_lists.scss","../../scss/_images.scss","../../scss/mixins/_image.scss","../../scss/mixins/_border-radius.scss","../../scss/_code.scss","../../scss/_grid.scss","../../scss/mixins/_grid.scss","../../scss/mixins/_breakpoints.scss","../../scss/mixins/_grid-framework.scss","../../scss/_tables.scss","../../scss/mixins/_table-row.scss","../../scss/_forms.scss","../../scss/mixins/_transition.scss","../../scss/mixins/_forms.scss","../../scss/mixins/_gradients.scss","../../scss/_buttons.scss","../../scss/mixins/_buttons.scss","../../scss/_transitions.scss","../../scss/_dropdown.scss","../../scss/mixins/_caret.scss","../../scss/mixins/_nav-divider.scss","../../scss/_button-group.scss","../../scss/_input-group.scss","../../scss/_custom-forms.scss","../../scss/_nav.scss","../../scss/_navbar.scss","../../scss/_card.scss","../../scss/_breadcrumb.scss","../../scss/_pagination.scss","../../scss/mixins/_pagination.scss","../../scss/_badge.scss","../../scss/mixins/_badge.scss","../../scss/_jumbotron.scss","../../scss/_alert.scss","../../scss/mixins/_alert.scss","../../scss/_progress.scss","../../scss/_media.scss","../../scss/_list-group.scss","../../scss/mixins/_list-group.scss","../../scss/_close.scss","../../scss/_modal.scss","../../scss/_tooltip.scss","../../scss/mixins/_reset-text.scss","../../scss/_popover.scss","../../scss/_carousel.scss","../../scss/utilities/_align.scss","../../scss/mixins/_background-variant.scss","../../scss/utilities/_background.scss","../../scss/utilities/_borders.scss","../../scss/mixins/_clearfix.scss","../../scss/utilities/_display.scss","../../scss/utilities/_embed.scss","../../scss/utilities/_flex.scss","../../scss/utilities/_float.scss","../../scss/mixins/_float.scss","../../scss/utilities/_position.scss","../../scss/utilities/_screenreaders.scss","../../scss/mixins/_screen-reader.scss","../../scss/utilities/_shadows.scss","../../scss/utilities/_sizing.scss","../../scss/utilities/_spacing.scss","../../scss/utilities/_text.scss","../../scss/mixins/_text-truncate.scss","../../scss/mixins/_text-emphasis.scss","../../scss/mixins/_text-hide.scss","../../scss/utilities/_visibility.scss","../../scss/mixins/_visibility.scss","../../scss/_print.scss"],"names":[],"mappings":"AAAA;;;;;ACAA,MAGI,OAAA,QAAA,SAAA,QAAA,SAAA,QAAA,OAAA,QAAA,MAAA,QAAA,SAAA,QAAA,SAAA,QAAA,QAAA,QAAA,OAAA,QAAA,OAAA,QAAA,QAAA,KAAA,OAAA,QAAA,YAAA,QAIA,UAAA,QAAA,YAAA,QAAA,UAAA,QAAA,OAAA,QAAA,UAAA,QAAA,SAAA,QAAA,QAAA,QAAA,OAAA,QAIA,gBAAA,EAAA,gBAAA,MAAA,gBAAA,MAAA,gBAAA,MAAA,gBAAA,OAKF,yBAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,kBACA,wBAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UCGF,ECmBA,QADA,SDfE,WAAA,WAGF,KACE,YAAA,WACA,YAAA,KACA,yBAAA,KACA,qBAAA,KACA,mBAAA,UACA,4BAAA,YAKA,cACE,MAAA,aAMJ,QAAA,MAAA,WAAA,OAAA,OAAA,OAAA,OAAA,KAAA,IAAA,QACE,QAAA,MAWF,KACE,OAAA,EACA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,kBACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,KACA,iBAAA,KEOF,sBFEE,QAAA,YASF,GACE,WAAA,YACA,OAAA,EACA,SAAA,QAaF,GAAA,GAAA,GAAA,GAAA,GAAA,GACE,WAAA,EACA,cAAA,MAQF,EACE,WAAA,EACA,cAAA,KClBF,0BD4BA,YAEE,gBAAA,UACA,wBAAA,UAAA,OAAA,gBAAA,UAAA,OACA,OAAA,KACA,cAAA,EAGF,QACE,cAAA,KACA,WAAA,OACA,YAAA,QCvBF,GD0BA,GC3BA,GD8BE,WAAA,EACA,cAAA,KAGF,MC1BA,MACA,MAFA,MD+BE,cAAA,EAGF,GACE,YAAA,IAGF,GACE,cAAA,MACA,YAAA,EAGF,WACE,OAAA,EAAA,EAAA,KAGF,IACE,WAAA,OAIF,EC5BA,OD8BE,YAAA,OAIF,MACE,UAAA,IAQF,IClCA,IDoCE,SAAA,SACA,UAAA,IACA,YAAA,EACA,eAAA,SAGF,IAAM,OAAA,OACN,IAAM,IAAA,MAON,EACE,MAAA,QACA,gBAAA,KACA,iBAAA,YACA,6BAAA,QG7LA,QHgME,MAAA,QACA,gBAAA,UAUJ,8BACE,MAAA,QACA,gBAAA,KGzMA,oCAAA,oCH4ME,MAAA,QACA,gBAAA,KANJ,oCAUI,QAAA,ECpCJ,KACA,ID4CA,IC3CA,KD+CE,YAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UACA,UAAA,IAGF,IAEE,WAAA,EAEA,cAAA,KAEA,SAAA,KAGA,mBAAA,UAQF,OAEE,OAAA,EAAA,EAAA,KAQF,IACE,eAAA,OACA,aAAA,KAGF,eACE,SAAA,OAQF,MACE,gBAAA,SAGF,QACE,YAAA,OACA,eAAA,OACA,MAAA,QACA,WAAA,KACA,aAAA,OAGF,GAGE,WAAA,QAQF,MAEE,QAAA,aACA,cAAA,MAMF,OACE,cAAA,EAOF,aACE,QAAA,IAAA,OACA,QAAA,IAAA,KAAA,yBC9EF,ODiFA,MC/EA,SADA,OAEA,SDmFE,OAAA,EACA,YAAA,QACA,UAAA,QACA,YAAA,QAGF,OCjFA,MDmFE,SAAA,QAGF,OCjFA,ODmFE,eAAA,KC7EF,aACA,cDkFA,OCpFA,mBDwFE,mBAAA,OCjFF,gCACA,+BACA,gCDmFA,yBAIE,QAAA,EACA,aAAA,KClFF,qBDqFA,kBAEE,WAAA,WACA,QAAA,EAIF,iBCrFA,2BACA,kBAFA,iBD+FE,mBAAA,QAGF,SACE,SAAA,KAEA,OAAA,SAGF,SAME,UAAA,EAEA,QAAA,EACA,OAAA,EACA,OAAA,EAKF,OACE,QAAA,MACA,MAAA,KACA,UAAA,KACA,QAAA,EACA,cAAA,MACA,UAAA,OACA,YAAA,QACA,MAAA,QACA,YAAA,OAGF,SACE,eAAA,SEnGF,yCDEA,yCDuGE,OAAA,KEpGF,cF4GE,eAAA,KACA,mBAAA,KExGF,4CDEA,yCD+GE,mBAAA,KAQF,6BACE,KAAA,QACA,mBAAA,OAOF,OACE,QAAA,aAGF,QACE,QAAA,UACA,OAAA,QAGF,SACE,QAAA,KErHF,SF2HE,QAAA,eCrHF,IAAK,IAAK,IAAK,IAAK,IAAK,IGnWzB,GAAA,GAAA,GAAA,GAAA,GAAA,GAEE,cAAA,MACA,YAAA,QACA,YAAA,IACA,YAAA,IACA,MAAA,QAGF,IAAA,GAAU,UAAA,OACV,IAAA,GAAU,UAAA,KACV,IAAA,GAAU,UAAA,QACV,IAAA,GAAU,UAAA,OACV,IAAA,GAAU,UAAA,QACV,IAAA,GAAU,UAAA,KAEV,MACE,UAAA,QACA,YAAA,IAIF,WACE,UAAA,KACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IAEF,WACE,UAAA,OACA,YAAA,IACA,YAAA,IJoCF,GI3BE,WAAA,KACA,cAAA,KACA,OAAA,EACA,WAAA,IAAA,MAAA,eHoXF,OG5WA,MAEE,UAAA,IACA,YAAA,IH+WF,MG5WA,KAEE,QAAA,KACA,iBAAA,QAQF,eC/EE,aAAA,EACA,WAAA,KDmFF,aCpFE,aAAA,EACA,WAAA,KDsFF,kBACE,QAAA,aADF,mCAII,aAAA,MAUJ,YACE,UAAA,IACA,eAAA,UAIF,YACE,cAAA,KACA,UAAA,QAGF,mBACE,QAAA,MACA,UAAA,IACA,MAAA,QAHF,2BAMI,QAAA,cEnHJ,WCIE,UAAA,KAGA,OAAA,KDDF,eACE,QAAA,OACA,iBAAA,KACA,OAAA,IAAA,MAAA,QEZE,cAAA,ODOF,UAAA,KAGA,OAAA,KDcF,QAEE,QAAA,aAGF,YACE,cAAA,MACA,YAAA,EAGF,gBACE,UAAA,IACA,MAAA,QGvCF,KACE,UAAA,MACA,MAAA,QACA,WAAA,WAGA,OACE,MAAA,QAKJ,IACE,QAAA,MAAA,MACA,UAAA,MACA,MAAA,KACA,iBAAA,QDbE,cAAA,MCSJ,QASI,QAAA,EACA,UAAA,KACA,YAAA,IT0NJ,ISnNE,QAAA,MACA,UAAA,MACA,MAAA,QAHF,SAOI,UAAA,QACA,MAAA,QACA,WAAA,OAKJ,gBACE,WAAA,MACA,WAAA,OCzCA,WCAA,MAAA,KACA,cAAA,KACA,aAAA,KACA,aAAA,KACA,YAAA,KCmDE,yBFvDF,WCYI,UAAA,OC2CF,yBFvDF,WCYI,UAAA,OC2CF,yBFvDF,WCYI,UAAA,OC2CF,0BFvDF,WCYI,UAAA,QDAJ,iBCZA,MAAA,KACA,cAAA,KACA,aAAA,KACA,aAAA,KACA,YAAA,KDkBA,KCJA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,MACA,YAAA,MDOA,YACE,aAAA,EACA,YAAA,EAFF,iBT0jBF,0BSpjBM,cAAA,EACA,aAAA,EGjCJ,KAAA,OAAA,QAAA,QAAA,QAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OAAA,OZ0lBF,UAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aAFkJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACnG,aAEqJ,QAAvI,UAAmG,WAAY,WAAY,WAAhH,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UAAW,UACtG,aY7lBI,SAAA,SACA,MAAA,KACA,WAAA,IACA,cAAA,KACA,aAAA,KAmBE,KACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,UACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,OFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,OFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,QFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,QFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,QFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,aAAwB,eAAA,GAAA,MAAA,GAExB,YAAuB,eAAA,GAAA,MAAA,GAGrB,SAAwB,eAAA,EAAA,MAAA,EAAxB,SAAwB,eAAA,EAAA,MAAA,EAAxB,SAAwB,eAAA,EAAA,MAAA,EAAxB,SAAwB,eAAA,EAAA,MAAA,EAAxB,SAAwB,eAAA,EAAA,MAAA,EAAxB,SAAwB,eAAA,EAAA,MAAA,EAAxB,SAAwB,eAAA,EAAA,MAAA,EAAxB,SAAwB,eAAA,EAAA,MAAA,EAAxB,SAAwB,eAAA,EAAA,MAAA,EAAxB,SAAwB,eAAA,EAAA,MAAA,EAAxB,UAAwB,eAAA,GAAA,MAAA,GAAxB,UAAwB,eAAA,GAAA,MAAA,GAAxB,UAAwB,eAAA,GAAA,MAAA,GAMtB,UFTR,YAAA,UESQ,UFTR,YAAA,WESQ,UFTR,YAAA,IESQ,UFTR,YAAA,WESQ,UFTR,YAAA,WESQ,UFTR,YAAA,IESQ,UFTR,YAAA,WESQ,UFTR,YAAA,WESQ,UFTR,YAAA,IESQ,WFTR,YAAA,WESQ,WFTR,YAAA,WCUE,yBC7BE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,eAAA,GAAA,MAAA,GAExB,eAAuB,eAAA,GAAA,MAAA,GAGrB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,aAAwB,eAAA,GAAA,MAAA,GAAxB,aAAwB,eAAA,GAAA,MAAA,GAAxB,aAAwB,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YCUE,yBC7BE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,eAAA,GAAA,MAAA,GAExB,eAAuB,eAAA,GAAA,MAAA,GAGrB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,aAAwB,eAAA,GAAA,MAAA,GAAxB,aAAwB,eAAA,GAAA,MAAA,GAAxB,aAAwB,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YCUE,yBC7BE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,eAAA,GAAA,MAAA,GAExB,eAAuB,eAAA,GAAA,MAAA,GAGrB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,aAAwB,eAAA,GAAA,MAAA,GAAxB,aAAwB,eAAA,GAAA,MAAA,GAAxB,aAAwB,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YCUE,0BC7BE,QACE,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,UAAA,KAEF,aACE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,UAAA,KAIA,UFFN,SAAA,EAAA,EAAA,UAAA,KAAA,EAAA,EAAA,UAIA,UAAA,UEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,UFFN,SAAA,EAAA,EAAA,IAAA,KAAA,EAAA,EAAA,IAIA,UAAA,IEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,WAAA,KAAA,EAAA,EAAA,WAIA,UAAA,WEFM,WFFN,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAIA,UAAA,KEGI,gBAAwB,eAAA,GAAA,MAAA,GAExB,eAAuB,eAAA,GAAA,MAAA,GAGrB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,YAAwB,eAAA,EAAA,MAAA,EAAxB,aAAwB,eAAA,GAAA,MAAA,GAAxB,aAAwB,eAAA,GAAA,MAAA,GAAxB,aAAwB,eAAA,GAAA,MAAA,GAMtB,aFTR,YAAA,EESQ,aFTR,YAAA,UESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,aFTR,YAAA,WESQ,aFTR,YAAA,WESQ,aFTR,YAAA,IESQ,cFTR,YAAA,WESQ,cFTR,YAAA,YG9CF,OACE,MAAA,KACA,UAAA,KACA,cAAA,KACA,iBAAA,Yb2+CF,Ua/+CA,UAQI,QAAA,OACA,eAAA,IACA,WAAA,IAAA,MAAA,QAVJ,gBAcI,eAAA,OACA,cAAA,IAAA,MAAA,QAfJ,mBAmBI,WAAA,IAAA,MAAA,QAnBJ,cAuBI,iBAAA,Kb4+CJ,aan+CA,aAGI,QAAA,MASJ,gBACE,OAAA,IAAA,MAAA,Qb+9CF,mBah+CA,mBAKI,OAAA,IAAA,MAAA,Qbg+CJ,yBar+CA,yBAWM,oBAAA,Ibi+CN,8BAFA,qBa19CA,qBb29CA,2Bat9CI,OAAA,EAQJ,yCAEI,iBAAA,gBXnEF,4BW+EI,iBAAA,iBCtFJ,edqiDF,kBADA,kBchiDM,iBAAA,QZGJ,kCYQM,iBAAA,QALN,qCdoiDF,qCc3hDU,iBAAA,QAnBR,iBdojDF,oBADA,oBc/iDM,iBAAA,QZGJ,oCYQM,iBAAA,QALN,uCdmjDF,uCc1iDU,iBAAA,QAnBR,edmkDF,kBADA,kBc9jDM,iBAAA,QZGJ,kCYQM,iBAAA,QALN,qCdkkDF,qCczjDU,iBAAA,QAnBR,YdklDF,eADA,ec7kDM,iBAAA,QZGJ,+BYQM,iBAAA,QALN,kCdilDF,kCcxkDU,iBAAA,QAnBR,edimDF,kBADA,kBc5lDM,iBAAA,QZGJ,kCYQM,iBAAA,QALN,qCdgmDF,qCcvlDU,iBAAA,QAnBR,cdgnDF,iBADA,iBc3mDM,iBAAA,QZGJ,iCYQM,iBAAA,QALN,oCd+mDF,oCctmDU,iBAAA,QAnBR,ad+nDF,gBADA,gBc1nDM,iBAAA,QZGJ,gCYQM,iBAAA,QALN,mCd8nDF,mCcrnDU,iBAAA,QAnBR,Yd8oDF,eADA,eczoDM,iBAAA,QZGJ,+BYQM,iBAAA,QALN,kCd6oDF,kCcpoDU,iBAAA,QAnBR,cd6pDF,iBADA,iBcxpDM,iBAAA,iBZGJ,iCYQM,iBAAA,iBALN,oCd4pDF,oCcnpDU,iBAAA,iBD0FV,sBAGM,MAAA,KACA,iBAAA,QACA,aAAA,QALN,uBAWM,MAAA,QACA,iBAAA,QACA,aAAA,QAKN,YACE,MAAA,KACA,iBAAA,Qb2jDF,ea7jDA,eb8jDA,qBavjDI,aAAA,QAPJ,2BAWI,OAAA,EAXJ,oDAgBM,iBAAA,sBXxIJ,uCW+IM,iBAAA,uBFlFJ,4BEmGA,qBAEI,QAAA,MACA,MAAA,KACA,WAAA,KACA,2BAAA,MACA,mBAAA,yBANH,qCAUK,OAAA,GF7GN,4BEmGA,qBAEI,QAAA,MACA,MAAA,KACA,WAAA,KACA,2BAAA,MACA,mBAAA,yBANH,qCAUK,OAAA,GF7GN,4BEmGA,qBAEI,QAAA,MACA,MAAA,KACA,WAAA,KACA,2BAAA,MACA,mBAAA,yBANH,qCAUK,OAAA,GF7GN,6BEmGA,qBAEI,QAAA,MACA,MAAA,KACA,WAAA,KACA,2BAAA,MACA,mBAAA,yBANH,qCAUK,OAAA,GAfV,kBAOQ,QAAA,MACA,MAAA,KACA,WAAA,KACA,2BAAA,MACA,mBAAA,yBAXR,kCAeU,OAAA,EEhLV,cACE,QAAA,MACA,MAAA,KACA,QAAA,QAAA,OACA,UAAA,KACA,YAAA,IACA,MAAA,QACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,QAKE,cAAA,OCfE,WAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIJ,kDDHF,cCII,WAAA,MDJJ,0BAyBI,iBAAA,YACA,OAAA,EEnBF,oBACE,MAAA,QACA,iBAAA,KACA,aAAA,QACA,QAAA,EAKE,WAAA,EAAA,EAAA,EAAA,MAAA,oBFhBN,yCAkCI,MAAA,QAEA,QAAA,EApCJ,gCAkCI,MAAA,QAEA,QAAA,EApCJ,oCAkCI,MAAA,QAEA,QAAA,EApCJ,qCAkCI,MAAA,QAEA,QAAA,EApCJ,2BAkCI,MAAA,QAEA,QAAA,EApCJ,uBAAA,wBA8CI,iBAAA,QAEA,QAAA,EAIJ,gDAEI,OAAA,oBAFJ,qCAWI,MAAA,QACA,iBAAA,KAKJ,mBfgxDA,oBe9wDE,QAAA,MACA,MAAA,KAUF,gBACE,YAAA,oBACA,eAAA,oBACA,cAAA,EACA,UAAA,QACA,YAAA,IAGF,mBACE,YAAA,kBACA,eAAA,kBACA,UAAA,QACA,YAAA,IAGF,mBACE,YAAA,mBACA,eAAA,mBACA,UAAA,QACA,YAAA,IASF,wBACE,QAAA,MACA,MAAA,KACA,YAAA,QACA,eAAA,QACA,cAAA,EACA,YAAA,IACA,MAAA,QACA,iBAAA,YACA,OAAA,MAAA,YACA,aAAA,IAAA,EfywDmE,wCenxDrE,wCfmxD8G,qDAI9G,gEAFA,6EACA,iEAFA,8EepxDA,qDfmxDA,gEAFA,6EACA,iEAFA,8EelwDI,cAAA,EACA,aAAA,EAaJ,iBAAA,8BfowDA,yCAFA,sDACA,0CAFA,uDehwDE,QAAA,OAAA,MACA,UAAA,QACA,YAAA,IR/IE,cAAA,MP25DJ,2EAFA,wFACA,4EAFA,yFerwDA,gEAAA,mDAEI,OAAA,sBAIJ,iBAAA,8Bf0wDA,yCAFA,sDACA,0CAFA,uDetwDE,QAAA,MAAA,KACA,UAAA,QACA,YAAA,IR5JE,cAAA,MP86DJ,2EAFA,wFACA,4EAFA,yFe3wDA,gEAAA,mDAEI,OAAA,qBAUJ,YACE,cAAA,KAGF,WACE,QAAA,MACA,WAAA,OAQF,UACE,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,KACA,YAAA,KAJF,ef2wDA,wBenwDI,cAAA,IACA,aAAA,IASJ,YACE,SAAA,SACA,QAAA,MACA,aAAA,QAGF,kBACE,SAAA,SACA,WAAA,MACA,YAAA,SAHF,6CAMI,MAAA,QAIJ,kBACE,cAAA,EAGF,mBACE,QAAA,mBAAA,QAAA,YACA,eAAA,OAAA,YAAA,OACA,aAAA,EACA,aAAA,OAJF,qCAQI,SAAA,OACA,WAAA,EACA,aAAA,SACA,YAAA,EElNF,gBACE,QAAA,KACA,MAAA,KACA,WAAA,OACA,UAAA,IACA,MAAA,QAGF,eACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,UAAA,KACA,QAAA,MACA,WAAA,MACA,UAAA,QACA,YAAA,EACA,MAAA,KACA,iBAAA,mBACA,cAAA,MjB09DJ,wBiBr9DI,uBAAA,oCAAA,mCAEE,aAAA,QjBy9DN,8BiB39DI,6BAAA,0CAAA,yCAKI,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,MAAA,oBjBg+DR,wCACA,uCANqD,uCACrD,sCAAyC,oDAEzC,mDiBp+DI,mDjBi+DJ,kDiBt9DQ,QAAA,MjBi+DkD,4CAC1D,2CiB59DI,wDjB29DJ,uDiBv9DQ,QAAA,MAMJ,6CAAA,yDAGI,MAAA,QjBw9DiD,2CACzD,0CiB59DI,uDjB29DJ,sDiBn9DQ,QAAA,MAMJ,qDAAA,iEAGI,MAAA,QAHJ,6DAAA,yEAMM,iBAAA,QjBq9DmD,+CAC7D,8CiB59DI,2DjB29DJ,0DiB/8DQ,QAAA,MAZJ,qEAAA,iFCzFA,iBAAA,QDyFA,mEAAA,+EAuBM,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,MAAA,oBAQN,+CAAA,2DAGI,aAAA,QAHJ,uDAAA,mEAKgB,aAAA,QjB68DsC,4CAC1D,2CiBn9DI,wDjBk9DJ,uDiBx8DQ,QAAA,MAVJ,qDAAA,iEAeM,WAAA,EAAA,EAAA,EAAA,MAAA,oBAhHR,kBACE,QAAA,KACA,MAAA,KACA,WAAA,OACA,UAAA,IACA,MAAA,QAGF,iBACE,SAAA,SACA,IAAA,KACA,QAAA,EACA,QAAA,KACA,UAAA,KACA,QAAA,MACA,WAAA,MACA,UAAA,QACA,YAAA,EACA,MAAA,KACA,iBAAA,mBACA,cAAA,MjBikEJ,0BiB5jEI,yBAAA,sCAAA,qCAEE,aAAA,QjBgkEN,gCiBlkEI,+BAAA,4CAAA,2CAKI,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,MAAA,oBjBukER,4CACA,2CANyD,2CACzD,0CAA6C,wDAE7C,uDiB3kEI,uDjBwkEJ,sDiB7jEQ,QAAA,MjBwkEsD,gDAC9D,+CiBnkEI,4DjBkkEJ,2DiB9jEQ,QAAA,MAMJ,+CAAA,2DAGI,MAAA,QjB+jEqD,+CAC7D,8CiBnkEI,2DjBkkEJ,0DiB1jEQ,QAAA,MAMJ,uDAAA,mEAGI,MAAA,QAHJ,+DAAA,2EAMM,iBAAA,QjB4jEuD,mDACjE,kDiBnkEI,+DjBkkEJ,8DiBtjEQ,QAAA,MAZJ,uEAAA,mFCzFA,iBAAA,QDyFA,qEAAA,iFAuBM,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,MAAA,oBAQN,iDAAA,6DAGI,aAAA,QAHJ,yDAAA,qEAKgB,aAAA,QjBojE0C,gDAC9D,+CiB1jEI,4DjByjEJ,2DiB/iEQ,QAAA,MAVJ,uDAAA,mEAeM,WAAA,EAAA,EAAA,EAAA,MAAA,oBF0HV,aACE,QAAA,YAAA,QAAA,KACA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,eAAA,OAAA,YAAA,OAHF,yBASI,MAAA,KJpNA,yBI2MJ,mBAeM,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,OAAA,gBAAA,OACA,cAAA,EAlBN,yBAuBM,QAAA,YAAA,QAAA,KACA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,EA3BN,2BAgCM,QAAA,aACA,MAAA,KACA,eAAA,OAlCN,qCAuCM,QAAA,af67DJ,4Bep+DF,0BA4CM,MAAA,KA5CN,yBAkDM,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,OAAA,gBAAA,OACA,MAAA,KACA,aAAA,EAtDN,+BAyDM,SAAA,SACA,WAAA,EACA,aAAA,OACA,YAAA,EA5DN,6BAgEM,eAAA,OAAA,YAAA,OACA,cAAA,OAAA,gBAAA,OAjEN,mCAoEM,cAAA,GIrUN,KACE,QAAA,aACA,YAAA,IACA,WAAA,OACA,YAAA,OACA,eAAA,OACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,OAAA,IAAA,MAAA,YCsFA,QAAA,QAAA,OACA,UAAA,KACA,YAAA,IAGE,cAAA,OJnGE,WAAA,MAAA,KAAA,WAAA,CAAA,iBAAA,KAAA,WAAA,CAAA,aAAA,KAAA,WAAA,CAAA,WAAA,KAAA,YAIJ,kDGHF,KHII,WAAA,MdMF,WAAA,WiBGE,gBAAA,KAbJ,WAAA,WAkBI,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,MAAA,oBAnBJ,cAAA,cAyBI,QAAA,IAzBJ,mCA+BI,OAAA,QA/BJ,0CAAA,0CAoCI,iBAAA,KAUJ,enBmwEA,wBmBjwEE,eAAA,KASA,aCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBIA,mBkBAE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,mBAAA,mBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,mBAKJ,sBAAA,sBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,kDAAA,kDpB+yEF,mCoB5yEI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,wDAAA,wDpB4yEJ,yCoBvyEQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDaN,eCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBIA,qBkBAE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,qBAAA,qBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,qBAKJ,wBAAA,wBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,oDAAA,oDpBi1EF,qCoB90EI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,0DAAA,0DpB80EJ,2CoBz0EQ,WAAA,EAAA,EAAA,EAAA,MAAA,qBDaN,aCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBIA,mBkBAE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,mBAAA,mBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,mBAKJ,sBAAA,sBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,kDAAA,kDpBm3EF,mCoBh3EI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,wDAAA,wDpBg3EJ,yCoB32EQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDaN,UCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBIA,gBkBAE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,gBAAA,gBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,oBAKJ,mBAAA,mBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,+CAAA,+CpBq5EF,gCoBl5EI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,qDAAA,qDpBk5EJ,sCoB74EQ,WAAA,EAAA,EAAA,EAAA,MAAA,oBDaN,aCzDA,MAAA,QFAE,iBAAA,QEEF,aAAA,QlBIA,mBkBAE,MAAA,QFNA,iBAAA,QEQA,aAAA,QAGF,mBAAA,mBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,mBAKJ,sBAAA,sBAEE,MAAA,QACA,iBAAA,QACA,aAAA,QAGF,kDAAA,kDpBu7EF,mCoBp7EI,MAAA,QACA,iBAAA,QAIA,aAAA,QAEA,wDAAA,wDpBo7EJ,yCoB/6EQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDaN,YCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBIA,kBkBAE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,kBAAA,kBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,mBAKJ,qBAAA,qBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,iDAAA,iDpBy9EF,kCoBt9EI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,uDAAA,uDpBs9EJ,wCoBj9EQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDaN,WCzDA,MAAA,QFAE,iBAAA,QEEF,aAAA,QlBIA,iBkBAE,MAAA,QFNA,iBAAA,QEQA,aAAA,QAGF,iBAAA,iBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,qBAKJ,oBAAA,oBAEE,MAAA,QACA,iBAAA,QACA,aAAA,QAGF,gDAAA,gDpB2/EF,iCoBx/EI,MAAA,QACA,iBAAA,QAIA,aAAA,QAEA,sDAAA,sDpBw/EJ,uCoBn/EQ,WAAA,EAAA,EAAA,EAAA,MAAA,qBDaN,UCzDA,MAAA,KFAE,iBAAA,QEEF,aAAA,QlBIA,gBkBAE,MAAA,KFNA,iBAAA,QEQA,aAAA,QAGF,gBAAA,gBAMI,WAAA,EAAA,EAAA,EAAA,MAAA,kBAKJ,mBAAA,mBAEE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,+CAAA,+CpB6hFF,gCoB1hFI,MAAA,KACA,iBAAA,QAIA,aAAA,QAEA,qDAAA,qDpB0hFJ,sCoBrhFQ,WAAA,EAAA,EAAA,EAAA,MAAA,kBDmBN,qBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,MAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,0DAAA,0DpBmhFF,2CoBhhFI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,gEAAA,gEpBmhFJ,iDoB9gFQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDtBN,uBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,6BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,6BAAA,6BAEE,WAAA,EAAA,EAAA,EAAA,MAAA,qBAGF,gCAAA,gCAEE,MAAA,QACA,iBAAA,YAGF,4DAAA,4DpBqjFF,6CoBljFI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,kEAAA,kEpBqjFJ,mDoBhjFQ,WAAA,EAAA,EAAA,EAAA,MAAA,qBDtBN,qBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,2BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,MAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,0DAAA,0DpBulFF,2CoBplFI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,gEAAA,gEpBulFJ,iDoBllFQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDtBN,kBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,wBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,wBAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,MAAA,oBAGF,2BAAA,2BAEE,MAAA,QACA,iBAAA,YAGF,uDAAA,uDpBynFF,wCoBtnFI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6DAAA,6DpBynFJ,8CoBpnFQ,WAAA,EAAA,EAAA,EAAA,MAAA,oBDtBN,qBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,2BACE,MAAA,QACA,iBAAA,QACA,aAAA,QAGF,2BAAA,2BAEE,WAAA,EAAA,EAAA,EAAA,MAAA,mBAGF,8BAAA,8BAEE,MAAA,QACA,iBAAA,YAGF,0DAAA,0DpB2pFF,2CoBxpFI,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,gEAAA,gEpB2pFJ,iDoBtpFQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDtBN,oBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,0BACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,0BAAA,0BAEE,WAAA,EAAA,EAAA,EAAA,MAAA,mBAGF,6BAAA,6BAEE,MAAA,QACA,iBAAA,YAGF,yDAAA,yDpB6rFF,0CoB1rFI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,+DAAA,+DpB6rFJ,gDoBxrFQ,WAAA,EAAA,EAAA,EAAA,MAAA,mBDtBN,mBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,yBACE,MAAA,QACA,iBAAA,QACA,aAAA,QAGF,yBAAA,yBAEE,WAAA,EAAA,EAAA,EAAA,MAAA,qBAGF,4BAAA,4BAEE,MAAA,QACA,iBAAA,YAGF,wDAAA,wDpB+tFF,yCoB5tFI,MAAA,QACA,iBAAA,QACA,aAAA,QAEA,8DAAA,8DpB+tFJ,+CoB1tFQ,WAAA,EAAA,EAAA,EAAA,MAAA,qBDtBN,kBCZA,MAAA,QACA,iBAAA,YACA,iBAAA,KACA,aAAA,QAEA,wBACE,MAAA,KACA,iBAAA,QACA,aAAA,QAGF,wBAAA,wBAEE,WAAA,EAAA,EAAA,EAAA,MAAA,kBAGF,2BAAA,2BAEE,MAAA,QACA,iBAAA,YAGF,uDAAA,uDpBiwFF,wCoB9vFI,MAAA,KACA,iBAAA,QACA,aAAA,QAEA,6DAAA,6DpBiwFJ,8CoB5vFQ,WAAA,EAAA,EAAA,EAAA,MAAA,kBDXR,UACE,YAAA,IACA,MAAA,QACA,iBAAA,YjBvEA,gBiB0EE,MAAA,QACA,gBAAA,UACA,iBAAA,YACA,aAAA,YATJ,gBAAA,gBAcI,gBAAA,UACA,aAAA,YACA,WAAA,KAhBJ,mBAAA,mBAqBI,MAAA,QACA,eAAA,KAWJ,mBAAA,QCdE,QAAA,MAAA,KACA,UAAA,QACA,YAAA,IAGE,cAAA,MDaJ,mBAAA,QClBE,QAAA,OAAA,MACA,UAAA,QACA,YAAA,IAGE,cAAA,MDsBJ,WACE,QAAA,MACA,MAAA,KAFF,sBAMI,WAAA,MnBwwFJ,6BADA,4BmBlwFA,6BAII,MAAA,KE3IJ,MLGM,WAAA,QAAA,KAAA,OAIJ,kDKPF,MLQI,WAAA,MKRJ,iBAII,QAAA,EAIJ,qBAEI,QAAA,KAIJ,YACE,SAAA,SACA,OAAA,EACA,SAAA,OLdI,WAAA,OAAA,KAAA,KAIJ,kDKOF,YLNI,WAAA,MhBu6FJ,UACA,UAFA,WsB/6FA,QAIE,SAAA,SCwBE,wBACE,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,OACA,eAAA,OACA,QAAA,GAlCJ,WAAA,KAAA,MACA,aAAA,KAAA,MAAA,YACA,cAAA,EACA,YAAA,KAAA,MAAA,YAyDE,8BACE,YAAA,EDhDN,eACE,SAAA,SACA,IAAA,KACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,MAAA,KACA,UAAA,MACA,QAAA,MAAA,EACA,OAAA,QAAA,EAAA,EACA,UAAA,KACA,MAAA,QACA,WAAA,KACA,WAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,gBf1BE,cAAA,Oe+BJ,qBACE,MAAA,EACA,KAAA,KAKF,uBAEI,IAAA,KACA,OAAA,KACA,WAAA,EACA,cAAA,QClBA,gCACE,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,OACA,eAAA,OACA,QAAA,GA3BJ,WAAA,EACA,aAAA,KAAA,MAAA,YACA,cAAA,KAAA,MACA,YAAA,KAAA,MAAA,YAkDE,sCACE,YAAA,EDPN,0BAEI,IAAA,EACA,MAAA,KACA,KAAA,KACA,WAAA,EACA,YAAA,QChCA,mCACE,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,OACA,eAAA,OACA,QAAA,GApBJ,WAAA,KAAA,MAAA,YACA,aAAA,EACA,cAAA,KAAA,MAAA,YACA,YAAA,KAAA,MA2CE,yCACE,YAAA,EAjCF,mCDsCE,eAAA,EAKN,yBAEI,IAAA,EACA,MAAA,KACA,KAAA,KACA,WAAA,EACA,aAAA,QCjDA,kCACE,QAAA,aACA,MAAA,EACA,OAAA,EACA,YAAA,OACA,eAAA,OACA,QAAA,GANF,kCAkBI,QAAA,KAGF,mCACE,QAAA,aACA,MAAA,EACA,OAAA,EACA,aAAA,OACA,eAAA,OACA,QAAA,GAlCN,WAAA,KAAA,MAAA,YACA,aAAA,KAAA,MACA,cAAA,KAAA,MAAA,YAqCE,wCACE,YAAA,EAZA,mCDkCA,eAAA,EAON,oCAAA,kCAAA,mCAAA,iCAKI,MAAA,KACA,OAAA,KAMJ,kBElGE,OAAA,EACA,OAAA,MAAA,EACA,SAAA,OACA,WAAA,IAAA,MAAA,QFsGF,eACE,QAAA,MACA,MAAA,KACA,QAAA,OAAA,OACA,MAAA,KACA,YAAA,IACA,MAAA,QACA,WAAA,QACA,YAAA,OACA,iBAAA,YACA,OAAA,EpBxGA,qBAAA,qBoB2GE,MAAA,QACA,gBAAA,KJtHA,iBAAA,QIwGJ,sBAAA,sBAoBI,MAAA,KACA,gBAAA,KJ7HA,iBAAA,QIwGJ,wBAAA,wBA2BI,MAAA,QACA,iBAAA,YAQJ,oBACE,QAAA,MAIF,iBACE,QAAA,MACA,QAAA,MAAA,OACA,cAAA,EACA,UAAA,QACA,MAAA,QACA,YAAA,OAIF,oBACE,QAAA,MACA,QAAA,OAAA,OACA,MAAA,QGjKF,WzBynGA,oByBvnGE,SAAA,SACA,QAAA,mBAAA,QAAA,YACA,eAAA,OzB6nGF,yByBjoGA,gBAOI,SAAA,SACA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KzBgoGJ,+BE/nGE,sBuBII,QAAA,EzBkoGN,gCADA,gCADA,+ByB7oGA,uBAAA,uBAAA,sBAkBM,QAAA,EAlBN,qBzBopGA,2BACA,2BACA,iCACA,8BACA,oCACA,oCACA,0CyB/nGI,YAAA,KAKJ,aACE,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,cAAA,MAAA,gBAAA,WAHF,0BAMI,MAAA,KAIJ,4BAEI,YAAA,EzBooGJ,4CyBtoGA,uDlB5BI,wBAAA,EACA,2BAAA,EPuqGJ,6CyB5oGA,kClBdI,uBAAA,EACA,0BAAA,EkB0CJ,uBACE,cAAA,SACA,aAAA,SAFF,8BzB2nGA,yCADA,sCyBnnGI,YAAA,EAGF,yCACE,aAAA,EAIJ,0CAAA,+BACE,cAAA,QACA,aAAA,QAGF,0CAAA,+BACE,cAAA,OACA,aAAA,OAoBF,oBACE,mBAAA,OAAA,eAAA,OACA,eAAA,MAAA,YAAA,WACA,cAAA,OAAA,gBAAA,OAHF,yBzB6mGA,+ByBtmGI,MAAA,KAPJ,8BzBknGA,oCACA,oCACA,0CyBtmGI,WAAA,KACA,YAAA,EzB2mGJ,qDyB1nGA,gElB5FI,2BAAA,EACA,0BAAA,EP2tGJ,sDyBhoGA,2ClB1GI,uBAAA,EACA,wBAAA,EkBoJJ,uBzB2lGA,kCyBxlGI,cAAA,EzB6lGJ,4CyBhmGA,yCzBkmGA,uDADA,oDyB1lGM,SAAA,SACA,KAAA,cACA,eAAA,KClKN,aACE,SAAA,SACA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,eAAA,QAAA,YAAA,QACA,MAAA,K1BywGF,0BADA,4B0B7wGA,2BAUI,SAAA,SACA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KAGA,MAAA,GACA,cAAA,E1BywGJ,gCADA,kC0BvxGA,iCAmBM,QAAA,E1BixGN,uCADA,yCADA,wCADA,yCADA,2CADA,0CADA,wCADA,0C0B7xGA,yCAyBM,YAAA,K1BgxGN,6C0BzyGA,4CnBWI,wBAAA,EACA,2BAAA,EPmyGJ,8C0B/yGA,6CnByBI,uBAAA,EACA,0BAAA,EmB1BJ,0BAsCI,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OAvCJ,8D1B4zGA,qEOjzGI,wBAAA,EACA,2BAAA,EmBZJ,+DnByBI,uBAAA,EACA,0BAAA,EP6yGJ,oB0BjxGA,qBAEE,QAAA,YAAA,QAAA,K1BqxGF,yB0BvxGA,0BAQI,SAAA,SACA,QAAA,E1BuxGJ,8BACA,2CAEA,2CADA,wD0BlyGA,+B1B6xGA,4CAEA,4CADA,yD0B9wGI,YAAA,KAIJ,qBAAuB,aAAA,KACvB,oBAAsB,YAAA,KAQtB,kBACE,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,QAAA,QAAA,OACA,cAAA,EACA,UAAA,KACA,YAAA,IACA,YAAA,IACA,MAAA,QACA,WAAA,OACA,YAAA,OACA,iBAAA,QACA,OAAA,IAAA,MAAA,QnBjGE,cAAA,OP03GJ,uC0BryGA,oCAkBI,WAAA,E1B2xGJ,wFACA,+EAHA,uDACA,oE0BxvGA,uC1BsvGA,oDOl3GI,wBAAA,EACA,2BAAA,EmBoIJ,sC1BuvGA,mDAGA,qEACA,kFAHA,yDACA,sEOh3GI,uBAAA,EACA,0BAAA,EoBvBJ,gBACE,SAAA,SACA,QAAA,MACA,WAAA,OACA,aAAA,OAGF,uBACE,QAAA,mBAAA,QAAA,YACA,aAAA,KAGF,sBACE,SAAA,SACA,QAAA,GACA,QAAA,EAHF,4DAMI,MAAA,KTrBA,iBAAA,QSeJ,0DAaI,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,MAAA,oBAbJ,2DAiBI,MAAA,KACA,iBAAA,QAlBJ,qDAwBM,MAAA,QAxBN,6DA2BQ,iBAAA,QAUR,sBACE,SAAA,SACA,cAAA,EAFF,8BAMI,SAAA,SACA,IAAA,OACA,KAAA,QACA,QAAA,MACA,MAAA,KACA,OAAA,KACA,eAAA,KACA,QAAA,GACA,oBAAA,KAAA,iBAAA,KAAA,gBAAA,KAAA,YAAA,KACA,iBAAA,QAfJ,6BAqBI,SAAA,SACA,IAAA,OACA,KAAA,QACA,QAAA,MACA,MAAA,KACA,OAAA,KACA,QAAA,GACA,kBAAA,UACA,oBAAA,OAAA,OACA,gBAAA,IAAA,IASJ,+CpB7FI,cAAA,OoB6FJ,6ET3FI,iBAAA,QS2FJ,4EAUM,iBAAA,yMAVN,mFT3FI,iBAAA,QS2FJ,kFAoBM,iBAAA,sJApBN,sFA0BM,iBAAA,mBA1BN,4FA6BM,iBAAA,mBASN,4CAEI,cAAA,IAFJ,0ETjII,iBAAA,QSiIJ,yEAUM,iBAAA,mJAVN,mFAgBM,iBAAA,mBAYN,eACE,QAAA,aACA,MAAA,KACA,OAAA,oBACA,QAAA,QAAA,QAAA,QAAA,OACA,YAAA,IACA,MAAA,QACA,eAAA,OACA,WAAA,KAAA,uKAAA,UAAA,MAAA,OAAA,OACA,gBAAA,IAAA,KACA,OAAA,IAAA,MAAA,QAEE,cAAA,OAIF,mBAAA,KAAA,gBAAA,KAAA,WAAA,KAhBF,qBAmBI,aAAA,QACA,QAAA,EACA,WAAA,MAAA,EAAA,IAAA,IAAA,gBAAA,CAAA,EAAA,EAAA,IAAA,qBArBJ,gCA6BM,MAAA,QACA,iBAAA,KA9BN,yBAAA,qCAoCI,OAAA,KACA,cAAA,OACA,iBAAA,KAtCJ,wBA0CI,MAAA,QACA,iBAAA,QA3CJ,2BAgDI,QAAA,EAIJ,kBACE,OAAA,sBACA,YAAA,QACA,eAAA,QACA,UAAA,IAGF,kBACE,OAAA,qBACA,YAAA,QACA,eAAA,QACA,UAAA,KAQF,aACE,SAAA,SACA,QAAA,aACA,MAAA,KACA,OAAA,oBACA,cAAA,EAGF,mBACE,SAAA,SACA,QAAA,EACA,MAAA,KACA,OAAA,oBACA,OAAA,EACA,QAAA,EANF,4CASI,aAAA,QACA,WAAA,EAAA,EAAA,EAAA,MAAA,oBAVJ,mDAaM,aAAA,QAbN,sDAmBM,QAAA,SAKN,mBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,EACA,OAAA,oBACA,QAAA,QAAA,OACA,YAAA,IACA,MAAA,QACA,iBAAA,KACA,OAAA,IAAA,MAAA,QpBjRE,cAAA,OoBsQJ,0BAgBI,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,QAAA,EACA,QAAA,MACA,OAAA,QACA,QAAA,QAAA,OACA,YAAA,IACA,MAAA,QACA,QAAA,ST9RA,iBAAA,QSgSA,YAAA,IAAA,MAAA,QpBlSA,cAAA,EAAA,OAAA,OAAA,EoB6SJ,cACE,MAAA,KACA,aAAA,EACA,iBAAA,YACA,mBAAA,KAAA,gBAAA,KAAA,WAAA,KAJF,oBAOI,QAAA,EAPJ,gCAWI,OAAA,EAXJ,oCAeI,MAAA,KACA,OAAA,KACA,WAAA,QT5TA,iBAAA,QS8TA,OAAA,EpBhUA,cAAA,KoBmUA,mBAAA,KAAA,WAAA,KAtBJ,0CAyBM,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,MAAA,oBA1BN,2CT3SI,iBAAA,QS2SJ,6CAmCI,MAAA,KACA,OAAA,MACA,MAAA,YACA,OAAA,QACA,iBAAA,QACA,aAAA,YpBrVA,cAAA,KoB6SJ,gCA8CI,MAAA,KACA,OAAA,KT1VA,iBAAA,QS4VA,OAAA,EpB9VA,cAAA,KoBiWA,gBAAA,KAAA,WAAA,KApDJ,sCAuDM,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,MAAA,oBAxDN,uCT3SI,iBAAA,QS2SJ,gCAiEI,MAAA,KACA,OAAA,MACA,MAAA,YACA,OAAA,QACA,iBAAA,QACA,aAAA,YpBnXA,cAAA,KoB6SJ,yBA4EI,MAAA,KACA,OAAA,KTxXA,iBAAA,QS0XA,OAAA,EpB5XA,cAAA,KoB+XA,WAAA,KAlFJ,+BAqFM,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,IAAA,IAAA,CAAA,EAAA,EAAA,EAAA,MAAA,oBAtFN,gCT3SI,iBAAA,QS2SJ,yBA+FI,MAAA,KACA,OAAA,MACA,MAAA,YACA,OAAA,QACA,iBAAA,YACA,aAAA,YACA,aAAA,MArGJ,8BA0GI,iBAAA,QpBvZA,cAAA,KoB6SJ,8BA+GI,aAAA,KACA,iBAAA,QpB7ZA,cAAA,KqBCJ,KACE,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,aAAA,EACA,cAAA,EACA,WAAA,KAGF,UACE,QAAA,MACA,QAAA,MAAA,K1BCA,gBAAA,gB0BEE,gBAAA,KALJ,mBAUI,MAAA,QAQJ,UACE,cAAA,IAAA,MAAA,QADF,oBAII,cAAA,KAJJ,oBAQI,OAAA,IAAA,MAAA,YrB7BA,uBAAA,OACA,wBAAA,OLKF,0BAAA,0B0B2BI,aAAA,QAAA,QAAA,QAZN,6BAgBM,MAAA,QACA,iBAAA,YACA,aAAA,Y5BsvHN,mC4BxwHA,2BAwBI,MAAA,QACA,iBAAA,KACA,aAAA,QAAA,QAAA,KA1BJ,yBA+BI,WAAA,KrBpDA,uBAAA,EACA,wBAAA,EqB8DJ,qBrBrEI,cAAA,OqBqEJ,4B5B+uHA,2B4BxuHI,MAAA,KACA,iBAAA,QASJ,oBAEI,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,WAAA,OAIJ,yBAEI,wBAAA,EAAA,WAAA,EACA,kBAAA,EAAA,UAAA,EACA,WAAA,OASJ,uBAEI,QAAA,KAFJ,qBAKI,QAAA,MClGJ,QACE,SAAA,SACA,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,QAAA,gBAAA,cACA,QAAA,MAAA,KANF,mB7Bg1HA,yB6Bp0HI,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,QAAA,gBAAA,cASJ,cACE,QAAA,aACA,YAAA,SACA,eAAA,SACA,aAAA,KACA,UAAA,QACA,YAAA,QACA,YAAA,O3BhCA,oBAAA,oB2BmCE,gBAAA,KASJ,YACE,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OACA,aAAA,EACA,cAAA,EACA,WAAA,KALF,sBAQI,cAAA,EACA,aAAA,EATJ,2BAaI,SAAA,OACA,MAAA,KASJ,aACE,QAAA,aACA,YAAA,MACA,eAAA,MAYF,iBACE,wBAAA,KAAA,WAAA,KACA,kBAAA,EAAA,UAAA,EAGA,eAAA,OAAA,YAAA,OAIF,gBACE,QAAA,OAAA,OACA,UAAA,QACA,YAAA,EACA,iBAAA,YACA,OAAA,IAAA,MAAA,YtB5GE,cAAA,OLYF,sBAAA,sB2BoGE,gBAAA,KATJ,8CAcI,OAAA,QAMJ,qBACE,QAAA,aACA,MAAA,MACA,OAAA,MACA,eAAA,OACA,QAAA,GACA,WAAA,UAAA,OAAA,OACA,gBAAA,KAAA,KlB7DE,4BkBuEC,6B7B0yHH,mC6BtyHQ,cAAA,EACA,aAAA,GlBzFN,yBkBoFA,kBAUI,cAAA,IAAA,OAAA,UAAA,IAAA,OACA,cAAA,MAAA,gBAAA,WAXH,8BAcK,mBAAA,IAAA,eAAA,IAdL,6CAiBO,SAAA,SAjBP,wCAqBO,cAAA,MACA,aAAA,MAtBP,6B7Bm0HH,mC6BtyHQ,cAAA,OAAA,UAAA,OA7BL,mCAiCK,QAAA,sBAAA,QAAA,eAGA,wBAAA,KAAA,WAAA,KApCL,kCAwCK,QAAA,MlB/GN,4BkBuEC,6B7Bo1HH,mC6Bh1HQ,cAAA,EACA,aAAA,GlBzFN,yBkBoFA,kBAUI,cAAA,IAAA,OAAA,UAAA,IAAA,OACA,cAAA,MAAA,gBAAA,WAXH,8BAcK,mBAAA,IAAA,eAAA,IAdL,6CAiBO,SAAA,SAjBP,wCAqBO,cAAA,MACA,aAAA,MAtBP,6B7B62HH,mC6Bh1HQ,cAAA,OAAA,UAAA,OA7BL,mCAiCK,QAAA,sBAAA,QAAA,eAGA,wBAAA,KAAA,WAAA,KApCL,kCAwCK,QAAA,MlB/GN,4BkBuEC,6B7B83HH,mC6B13HQ,cAAA,EACA,aAAA,GlBzFN,yBkBoFA,kBAUI,cAAA,IAAA,OAAA,UAAA,IAAA,OACA,cAAA,MAAA,gBAAA,WAXH,8BAcK,mBAAA,IAAA,eAAA,IAdL,6CAiBO,SAAA,SAjBP,wCAqBO,cAAA,MACA,aAAA,MAtBP,6B7Bu5HH,mC6B13HQ,cAAA,OAAA,UAAA,OA7BL,mCAiCK,QAAA,sBAAA,QAAA,eAGA,wBAAA,KAAA,WAAA,KApCL,kCAwCK,QAAA,MlB/GN,6BkBuEC,6B7Bw6HH,mC6Bp6HQ,cAAA,EACA,aAAA,GlBzFN,0BkBoFA,kBAUI,cAAA,IAAA,OAAA,UAAA,IAAA,OACA,cAAA,MAAA,gBAAA,WAXH,8BAcK,mBAAA,IAAA,eAAA,IAdL,6CAiBO,SAAA,SAjBP,wCAqBO,cAAA,MACA,aAAA,MAtBP,6B7Bi8HH,mC6Bp6HQ,cAAA,OAAA,UAAA,OA7BL,mCAiCK,QAAA,sBAAA,QAAA,eAGA,wBAAA,KAAA,WAAA,KApCL,kCAwCK,QAAA,MA7CV,eAeQ,cAAA,IAAA,OAAA,UAAA,IAAA,OACA,cAAA,MAAA,gBAAA,WAhBR,0B7B69HA,gC6Bp9HU,cAAA,EACA,aAAA,EAVV,2BAmBU,mBAAA,IAAA,eAAA,IAnBV,0CAsBY,SAAA,SAtBZ,qCA0BY,cAAA,MACA,aAAA,MA3BZ,0B7Bi/HA,gC6B/8HU,cAAA,OAAA,UAAA,OAlCV,gCAsCU,QAAA,sBAAA,QAAA,eAGA,wBAAA,KAAA,WAAA,KAzCV,+BA6CU,QAAA,KAaV,4BAEI,MAAA,e3BvLF,kCAAA,kC2B0LI,MAAA,eALN,oCAWM,MAAA,e3BhMJ,0CAAA,0C2BmMM,MAAA,eAdR,6CAkBQ,MAAA,e7B08HR,4CAEA,2CADA,yC6B79HA,0CA0BM,MAAA,eA1BN,8BA+BI,MAAA,eACA,aAAA,eAhCJ,mCAoCI,iBAAA,oPApCJ,2BAwCI,MAAA,eAxCJ,6BA0CM,MAAA,e3B/NJ,mCAAA,mC2BkOM,MAAA,eAOR,2BAEI,MAAA,K3B3OF,iCAAA,iC2B8OI,MAAA,KALN,mCAWM,MAAA,qB3BpPJ,yCAAA,yC2BuPM,MAAA,sBAdR,4CAkBQ,MAAA,sB7Bs8HR,2CAEA,0CADA,wC6Bz9HA,yCA0BM,MAAA,KA1BN,6BA+BI,MAAA,qBACA,aAAA,qBAhCJ,kCAoCI,iBAAA,0PApCJ,0BAwCI,MAAA,qBAxCJ,4BA0CM,MAAA,K3BnRJ,kCAAA,kC2BsRM,MAAA,KClSR,MACE,SAAA,SACA,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OACA,UAAA,EACA,UAAA,WACA,iBAAA,KACA,gBAAA,WACA,OAAA,IAAA,MAAA,iBvBRE,cAAA,OuBAJ,SAYI,aAAA,EACA,YAAA,EAbJ,2DvBMI,uBAAA,OACA,wBAAA,OuBPJ,yDvBoBI,2BAAA,OACA,0BAAA,OuBQJ,WAGE,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,QAAA,QAGF,YACE,cAAA,OAGF,eACE,WAAA,SACA,cAAA,EAGF,sBACE,cAAA,E5BtCA,iB4B2CE,gBAAA,KAFJ,sBAMI,YAAA,QAQJ,aACE,QAAA,OAAA,QACA,cAAA,EACA,iBAAA,gBACA,cAAA,IAAA,MAAA,iBAJF,yBvB/DI,cAAA,mBAAA,mBAAA,EAAA,EuB+DJ,sDAYM,WAAA,EAKN,aACE,QAAA,OAAA,QACA,iBAAA,gBACA,WAAA,IAAA,MAAA,iBAHF,wBvBhFI,cAAA,EAAA,EAAA,mBAAA,mBuB+FJ,kBACE,aAAA,SACA,cAAA,QACA,YAAA,SACA,cAAA,EAGF,mBACE,aAAA,SACA,YAAA,SAIF,kBACE,SAAA,SACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,QAGF,UACE,MAAA,KvBtHE,cAAA,mBuB2HJ,cACE,MAAA,KvBtHE,uBAAA,mBACA,wBAAA,mBuByHJ,iBACE,MAAA,KvB7GE,2BAAA,mBACA,0BAAA,mBuBmHJ,WACE,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OAFF,iBAKI,cAAA,KnBrFA,yBmBgFJ,WASI,cAAA,IAAA,KAAA,UAAA,IAAA,KACA,aAAA,MACA,YAAA,MAXJ,iBAcM,QAAA,YAAA,QAAA,KAEA,SAAA,EAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GACA,mBAAA,OAAA,eAAA,OACA,aAAA,KACA,cAAA,EACA,YAAA,MAUN,YACE,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OAFF,kBAOI,cAAA,KnBrHA,yBmB8GJ,YAWI,cAAA,IAAA,KAAA,UAAA,IAAA,KAXJ,kBAgBM,SAAA,EAAA,EAAA,GAAA,KAAA,EAAA,EAAA,GACA,cAAA,EAjBN,wBAoBQ,YAAA,EACA,YAAA,EArBR,8BvBzJI,wBAAA,EACA,2BAAA,EP84IF,2C8BtvIF,4CA+BY,wBAAA,E9B2tIV,2C8B1vIF,+CAmCY,2BAAA,EAnCZ,6BvB3II,uBAAA,EACA,0BAAA,EP44IF,0C8BlwIF,2CA4CY,uBAAA,E9B0tIV,0C8BtwIF,8CAgDY,0BAAA,EAhDZ,6BvBtKI,cAAA,OPm7IF,0C8B7wIF,2CvBhKI,uBAAA,OACA,wBAAA,OPi7IF,0C8BlxIF,8CvBlJI,2BAAA,OACA,0BAAA,OuBiJJ,sEvBtKI,cAAA,EPk8IF,mFADA,mFADA,uF8B1xIF,oFvBtKI,cAAA,GuB2PJ,oBAEI,cAAA,OnBrMA,yBmBmMJ,cAMI,qBAAA,EAAA,kBAAA,EAAA,aAAA,EACA,mBAAA,QAAA,gBAAA,QAAA,WAAA,QACA,QAAA,EACA,OAAA,EATJ,oBAYM,QAAA,aACA,MAAA,MAUN,wDAEI,cAAA,EACA,cAAA,EAHJ,8DAQM,cAAA,EARN,+BAaI,cAAA,EACA,2BAAA,EACA,0BAAA,EAfJ,8BAmBI,uBAAA,EACA,wBAAA,EC1SJ,YACE,QAAA,YAAA,QAAA,KACA,cAAA,KAAA,UAAA,KACA,QAAA,OAAA,KACA,cAAA,KACA,WAAA,KACA,iBAAA,QxBFE,cAAA,OwBMJ,kCAGI,aAAA,MAHJ,0CAMM,QAAA,aACA,cAAA,MACA,MAAA,QACA,QAAA,IATN,gDAoBI,gBAAA,UApBJ,gDAwBI,gBAAA,KAxBJ,wBA4BI,MAAA,QCtCJ,YACE,QAAA,YAAA,QAAA,K5BGA,aAAA,EACA,WAAA,KGDE,cAAA,OyBEJ,WACE,SAAA,SACA,QAAA,MACA,QAAA,MAAA,OACA,YAAA,KACA,YAAA,KACA,MAAA,QACA,iBAAA,KACA,OAAA,IAAA,MAAA,QARF,iBAWI,QAAA,EACA,MAAA,QACA,gBAAA,KACA,iBAAA,QACA,aAAA,QAfJ,iBAmBI,QAAA,EACA,QAAA,EACA,WAAA,EAAA,EAAA,EAAA,MAAA,oBArBJ,yCA0BI,OAAA,QAIJ,kCAGM,YAAA,EzBRF,uBAAA,OACA,0BAAA,OyBIJ,iCzBnBI,wBAAA,OACA,2BAAA,OyBkBJ,6BAcI,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QAjBJ,+BAqBI,MAAA,QACA,eAAA,KAEA,OAAA,KACA,iBAAA,KACA,aAAA,QC3DF,0BACE,QAAA,OAAA,OACA,UAAA,QACA,YAAA,IAKE,iD1BoBF,uBAAA,MACA,0BAAA,M0BhBE,gD1BCF,wBAAA,MACA,2BAAA,M0BfF,0BACE,QAAA,OAAA,MACA,UAAA,QACA,YAAA,IAKE,iD1BoBF,uBAAA,MACA,0BAAA,M0BhBE,gD1BCF,wBAAA,MACA,2BAAA,M2BbJ,OACE,QAAA,aACA,QAAA,MAAA,KACA,UAAA,IACA,YAAA,IACA,YAAA,EACA,WAAA,OACA,YAAA,OACA,eAAA,S3BTE,cAAA,O2BCJ,aAaI,QAAA,KAKJ,YACE,SAAA,SACA,IAAA,KAOF,YACE,cAAA,KACA,aAAA,K3B9BE,cAAA,M2BuCF,eC1CA,MAAA,KACA,iBAAA,QjCcA,2BAAA,2BiCVI,MAAA,KACA,gBAAA,KACA,iBAAA,QDmCJ,iBC1CA,MAAA,KACA,iBAAA,QjCcA,6BAAA,6BiCVI,MAAA,KACA,gBAAA,KACA,iBAAA,QDmCJ,eC1CA,MAAA,KACA,iBAAA,QjCcA,2BAAA,2BiCVI,MAAA,KACA,gBAAA,KACA,iBAAA,QDmCJ,YC1CA,MAAA,KACA,iBAAA,QjCcA,wBAAA,wBiCVI,MAAA,KACA,gBAAA,KACA,iBAAA,QDmCJ,eC1CA,MAAA,QACA,iBAAA,QjCcA,2BAAA,2BiCVI,MAAA,QACA,gBAAA,KACA,iBAAA,QDmCJ,cC1CA,MAAA,KACA,iBAAA,QjCcA,0BAAA,0BiCVI,MAAA,KACA,gBAAA,KACA,iBAAA,QDmCJ,aC1CA,MAAA,QACA,iBAAA,QjCcA,yBAAA,yBiCVI,MAAA,QACA,gBAAA,KACA,iBAAA,QDmCJ,YC1CA,MAAA,KACA,iBAAA,QjCcA,wBAAA,wBiCVI,MAAA,KACA,gBAAA,KACA,iBAAA,QCRN,WACE,QAAA,KAAA,KACA,cAAA,KACA,iBAAA,Q7BCE,cAAA,MIwDA,yByB5DJ,WAOI,QAAA,KAAA,MAIJ,iBACE,cAAA,EACA,aAAA,E7BTE,cAAA,E8BAJ,OACE,SAAA,SACA,QAAA,OAAA,QACA,cAAA,KACA,OAAA,IAAA,MAAA,Y9BJE,cAAA,O8BSJ,eAEE,MAAA,QAIF,YACE,YAAA,IAQF,mBACE,cAAA,KADF,0BAKI,SAAA,SACA,IAAA,EACA,MAAA,EACA,QAAA,OAAA,QACA,MAAA,QAUF,eC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,kBACE,iBAAA,QAGF,2BACE,MAAA,QDqCF,iBC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,oBACE,iBAAA,QAGF,6BACE,MAAA,QDqCF,eC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,kBACE,iBAAA,QAGF,2BACE,MAAA,QDqCF,YC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,eACE,iBAAA,QAGF,wBACE,MAAA,QDqCF,eC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,kBACE,iBAAA,QAGF,2BACE,MAAA,QDqCF,cC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,iBACE,iBAAA,QAGF,0BACE,MAAA,QDqCF,aC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,gBACE,iBAAA,QAGF,yBACE,MAAA,QDqCF,YC9CA,MAAA,QpBKE,iBAAA,QoBHF,aAAA,QAEA,eACE,iBAAA,QAGF,wBACE,MAAA,QCVJ,wCACE,KAAO,oBAAA,KAAA,EACP,GAAK,oBAAA,EAAA,GAFP,gCACE,KAAO,oBAAA,KAAA,EACP,GAAK,oBAAA,EAAA,GAGP,UACE,QAAA,YAAA,QAAA,KACA,OAAA,KACA,SAAA,OACA,UAAA,OACA,iBAAA,QhCNE,cAAA,OgCWJ,cACE,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OACA,cAAA,OAAA,gBAAA,OACA,MAAA,KACA,WAAA,OACA,YAAA,OACA,iBAAA,QvBjBI,WAAA,MAAA,IAAA,KAIJ,kDuBMF,cvBLI,WAAA,MuBgBJ,sBrBiBE,iBAAA,iKqBfA,gBAAA,KAAA,KAGF,uBACE,kBAAA,qBAAA,GAAA,OAAA,SAAA,UAAA,qBAAA,GAAA,OAAA,SChCF,OACE,QAAA,YAAA,QAAA,KACA,eAAA,MAAA,YAAA,WAGF,YACE,SAAA,EAAA,KAAA,ECFF,YACE,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OAGA,aAAA,EACA,cAAA,EASF,wBACE,MAAA,KACA,MAAA,QACA,WAAA,QvCNA,8BAAA,8BuCUE,MAAA,QACA,gBAAA,KACA,iBAAA,QATJ,+BAaI,MAAA,QACA,iBAAA,QASJ,iBACE,SAAA,SACA,QAAA,MACA,QAAA,OAAA,QAEA,cAAA,KACA,iBAAA,KACA,OAAA,IAAA,MAAA,iBAPF,6BlChCI,uBAAA,OACA,wBAAA,OkC+BJ,4BAcI,cAAA,ElChCA,2BAAA,OACA,0BAAA,OLTF,uBAAA,uBuC6CE,QAAA,EACA,gBAAA,KApBJ,0BAAA,0BAyBI,MAAA,QACA,iBAAA,KA1BJ,wBA+BI,QAAA,EACA,MAAA,KACA,iBAAA,QACA,aAAA,QAUJ,mCAEI,aAAA,EACA,YAAA,ElCrFA,cAAA,EkCkFJ,2DASM,WAAA,EATN,yDAeM,cAAA,EClGJ,yBACE,MAAA,QACA,iBAAA,QxCWF,sDAAA,sDwCPM,MAAA,QACA,iBAAA,QAPN,uDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,2BACE,MAAA,QACA,iBAAA,QxCWF,wDAAA,wDwCPM,MAAA,QACA,iBAAA,QAPN,yDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,yBACE,MAAA,QACA,iBAAA,QxCWF,sDAAA,sDwCPM,MAAA,QACA,iBAAA,QAPN,uDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,sBACE,MAAA,QACA,iBAAA,QxCWF,mDAAA,mDwCPM,MAAA,QACA,iBAAA,QAPN,oDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,yBACE,MAAA,QACA,iBAAA,QxCWF,sDAAA,sDwCPM,MAAA,QACA,iBAAA,QAPN,uDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,wBACE,MAAA,QACA,iBAAA,QxCWF,qDAAA,qDwCPM,MAAA,QACA,iBAAA,QAPN,sDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,uBACE,MAAA,QACA,iBAAA,QxCWF,oDAAA,oDwCPM,MAAA,QACA,iBAAA,QAPN,qDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QAbN,sBACE,MAAA,QACA,iBAAA,QxCWF,mDAAA,mDwCPM,MAAA,QACA,iBAAA,QAPN,oDAWM,MAAA,KACA,iBAAA,QACA,aAAA,QChBR,OACE,MAAA,MACA,UAAA,OACA,YAAA,IACA,YAAA,EACA,MAAA,KACA,YAAA,EAAA,IAAA,EAAA,KACA,QAAA,GzCSA,aAAA,ayCNE,MAAA,KACA,gBAAA,KACA,QAAA,IAZJ,qCAiBI,OAAA,QAUJ,aACE,QAAA,EACA,iBAAA,YACA,OAAA,EACA,mBAAA,KCxBF,YACE,SAAA,OAIF,OACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,KACA,SAAA,OAGA,QAAA,EAKA,mBACE,WAAA,OACA,WAAA,KAKJ,cACE,SAAA,SACA,MAAA,KACA,OAAA,MAEA,eAAA,KAGA,0B5BtCI,WAAA,kBAAA,IAAA,SAAA,WAAA,UAAA,IAAA,SAAA,WAAA,UAAA,IAAA,QAAA,CAAA,kBAAA,IAAA,S4BwCF,kBAAA,kBAAA,UAAA,kB5BpCF,kD4BkCA,0B5BjCE,WAAA,M4BqCF,0BACE,kBAAA,eAAA,UAAA,eAIJ,uBACE,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,WAAA,yBAIF,eACE,SAAA,SACA,QAAA,YAAA,QAAA,KACA,mBAAA,OAAA,eAAA,OACA,MAAA,KAEA,eAAA,KACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,erChEE,cAAA,MqCoEF,QAAA,EAIF,gBACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KACA,iBAAA,KAPF,qBAUW,QAAA,EAVX,qBAWW,QAAA,GAKX,cACE,QAAA,YAAA,QAAA,KACA,eAAA,MAAA,YAAA,WACA,cAAA,QAAA,gBAAA,cACA,QAAA,KACA,cAAA,IAAA,MAAA,QrCvFE,uBAAA,MACA,wBAAA,MqCiFJ,qBASI,QAAA,KAEA,OAAA,MAAA,MAAA,MAAA,KAKJ,aACE,cAAA,EACA,YAAA,IAKF,YACE,SAAA,SAGA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,QAAA,KAIF,cACE,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,IAAA,gBAAA,SACA,QAAA,KACA,WAAA,IAAA,MAAA,QALF,iCAQyB,YAAA,OARzB,gCASwB,aAAA,OAIxB,yBACE,SAAA,SACA,IAAA,QACA,MAAA,KACA,OAAA,KACA,SAAA,OjClFE,yBiCzBJ,cAkHI,UAAA,MACA,OAAA,QAAA,KAlGJ,uBAsGI,WAAA,2BAOF,UAAY,UAAA,OjCrGV,yBiC0GF,UAAY,UAAA,OCrKd,SACE,SAAA,SACA,QAAA,KACA,QAAA,MACA,OAAA,ECJA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,kBAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KDNA,UAAA,QAEA,UAAA,WACA,QAAA,EAXF,cAaW,QAAA,GAbX,gBAgBI,SAAA,SACA,QAAA,MACA,MAAA,MACA,OAAA,MAnBJ,wBAsBM,SAAA,SACA,QAAA,GACA,aAAA,YACA,aAAA,MAKN,mCAAA,gBACE,QAAA,MAAA,EADF,0CAAA,uBAII,OAAA,EAJJ,kDAAA,+BAOM,IAAA,EACA,aAAA,MAAA,MAAA,EACA,iBAAA,KAKN,qCAAA,kBACE,QAAA,EAAA,MADF,4CAAA,yBAII,KAAA,EACA,MAAA,MACA,OAAA,MANJ,oDAAA,iCASM,MAAA,EACA,aAAA,MAAA,MAAA,MAAA,EACA,mBAAA,KAKN,sCAAA,mBACE,QAAA,MAAA,EADF,6CAAA,0BAII,IAAA,EAJJ,qDAAA,kCAOM,OAAA,EACA,aAAA,EAAA,MAAA,MACA,oBAAA,KAKN,oCAAA,iBACE,QAAA,EAAA,MADF,2CAAA,wBAII,MAAA,EACA,MAAA,MACA,OAAA,MANJ,mDAAA,gCASM,KAAA,EACA,aAAA,MAAA,EAAA,MAAA,MACA,kBAAA,KAqBN,eACE,UAAA,MACA,QAAA,OAAA,MACA,MAAA,KACA,WAAA,OACA,iBAAA,KtC5GE,cAAA,OwCJJ,SACE,SAAA,SACA,IAAA,EACA,KAAA,EACA,QAAA,KACA,QAAA,MACA,UAAA,MDLA,YAAA,aAAA,CAAA,kBAAA,CAAA,UAAA,CAAA,MAAA,CAAA,gBAAA,CAAA,KAAA,CAAA,UAAA,CAAA,mBAAA,CAAA,gBAAA,CAAA,kBAEA,WAAA,OACA,YAAA,IACA,YAAA,IACA,WAAA,KACA,WAAA,MACA,gBAAA,KACA,YAAA,KACA,eAAA,KACA,eAAA,OACA,WAAA,OACA,aAAA,OACA,YAAA,OACA,WAAA,KCLA,UAAA,QAEA,UAAA,WACA,iBAAA,KACA,gBAAA,YACA,OAAA,IAAA,MAAA,exCXE,cAAA,MwCJJ,gBAoBI,SAAA,SACA,QAAA,MACA,MAAA,KACA,OAAA,MACA,OAAA,EAAA,MAxBJ,uBAAA,wBA4BM,SAAA,SACA,QAAA,MACA,QAAA,GACA,aAAA,YACA,aAAA,MAKN,mCAAA,gBACE,cAAA,MADF,0CAAA,uBAII,OAAA,yB/Cu9KJ,iD+C39KA,kD/C09KA,8B+C19KA,+BASI,aAAA,MAAA,MAAA,EATJ,kDAAA,+BAaI,OAAA,EACA,iBAAA,gB/Cw9KJ,iD+Ct+KA,8BAkBI,OAAA,IACA,iBAAA,KAIJ,qCAAA,kBACE,YAAA,MADF,4CAAA,yBAII,KAAA,yBACA,MAAA,MACA,OAAA,KACA,OAAA,MAAA,E/C09KJ,mD+Cj+KA,oD/Cg+KA,gC+Ch+KA,iCAYI,aAAA,MAAA,MAAA,MAAA,EAZJ,oDAAA,iCAgBI,KAAA,EACA,mBAAA,gB/C29KJ,mD+C5+KA,gCAqBI,KAAA,IACA,mBAAA,KAIJ,sCAAA,mBACE,WAAA,MADF,6CAAA,0BAII,IAAA,yB/C69KJ,oD+Cj+KA,qD/Cg+KA,iC+Ch+KA,kCASI,aAAA,EAAA,MAAA,MAAA,MATJ,qDAAA,kCAaI,IAAA,EACA,oBAAA,gB/C89KJ,oD+C5+KA,iCAkBI,IAAA,IACA,oBAAA,KAnBJ,8DAAA,2CAwBI,SAAA,SACA,IAAA,EACA,KAAA,IACA,QAAA,MACA,MAAA,KACA,YAAA,OACA,QAAA,GACA,cAAA,IAAA,MAAA,QAIJ,oCAAA,iBACE,aAAA,MADF,2CAAA,wBAII,MAAA,yBACA,MAAA,MACA,OAAA,KACA,OAAA,MAAA,E/C+9KJ,kD+Ct+KA,mD/Cq+KA,+B+Cr+KA,gCAYI,aAAA,MAAA,EAAA,MAAA,MAZJ,mDAAA,gCAgBI,MAAA,EACA,kBAAA,gB/Cg+KJ,kD+Cj/KA,+BAqBI,MAAA,IACA,kBAAA,KAqBJ,gBACE,QAAA,MAAA,OACA,cAAA,EACA,UAAA,KACA,MAAA,QACA,iBAAA,QACA,cAAA,IAAA,MAAA,QxChKE,uBAAA,kBACA,wBAAA,kBwCyJJ,sBAWI,QAAA,KAIJ,cACE,QAAA,MAAA,OACA,MAAA,QC3KF,UACE,SAAA,SAGF,gBACE,SAAA,SACA,MAAA,KACA,SAAA,OAGF,eACE,SAAA,SACA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,MAAA,KhCnBI,WAAA,kBAAA,IAAA,KAAA,WAAA,UAAA,IAAA,KAAA,WAAA,UAAA,IAAA,IAAA,CAAA,kBAAA,IAAA,KgCqBJ,4BAAA,OAAA,oBAAA,OACA,oBAAA,OAAA,YAAA,OhClBA,kDgCWF,ehCVI,WAAA,MhBypLJ,oBACA,oBgDtoLA,sBAGE,QAAA,MAGF,oBhDqoLA,oBgDnoLE,SAAA,SACA,IAAA,EAGF,uChDqoLA,wCgDnoLE,kBAAA,cAAA,UAAA,cAEwC,mFAJ1C,uChD4oLE,wCgDvoLE,kBAAA,mBAAA,UAAA,oBhD8oLJ,4BgD1oLA,oBAEE,kBAAA,iBAAA,UAAA,iBAEwC,mFhD6oLxC,4BgDjpLF,oBAKI,kBAAA,sBAAA,UAAA,uBhDmpLJ,2BgD/oLA,oBAEE,kBAAA,kBAAA,UAAA,kBAEwC,mFhDkpLxC,2BgDtpLF,oBAKI,kBAAA,uBAAA,UAAA,wBASJ,8BAEI,QAAA,EACA,oBAAA,IACA,oBAAA,QhDipLJ,sDACA,uDgDtpLA,qCAUI,QAAA,EAVJ,0ChD2pLA,2CgD5oLI,QAAA,EhDmpLJ,0CACA,0CgDnqLA,mChDgqLA,mCACA,qCgD1oLI,kBAAA,cAAA,UAAA,cAEwC,mFhDmpL1C,0CACA,0CgD7qLF,mChD0qLE,mCACA,qCgDjpLI,kBAAA,mBAAA,UAAA,oBhD0pLN,uBgDhpLA,uBAEE,SAAA,SACA,IAAA,EACA,OAAA,EAEA,QAAA,YAAA,QAAA,KACA,eAAA,OAAA,YAAA,OACA,cAAA,OAAA,gBAAA,OACA,MAAA,IACA,MAAA,KACA,WAAA,OACA,QAAA,GhDspLF,6BADA,6BE/vLE,6BAAA,6B8CgHE,MAAA,KACA,gBAAA,KACA,QAAA,EACA,QAAA,GAGJ,uBACE,KAAA,EAKF,uBACE,MAAA,EhDmpLF,4BgD5oLA,4BAEE,QAAA,aACA,MAAA,KACA,OAAA,KACA,WAAA,YAAA,UAAA,OAAA,OACA,gBAAA,KAAA,KAEF,4BACE,iBAAA,+LAEF,4BACE,iBAAA,+LASF,qBACE,SAAA,SACA,MAAA,EACA,OAAA,KACA,KAAA,EACA,QAAA,GACA,QAAA,YAAA,QAAA,KACA,cAAA,OAAA,gBAAA,OACA,aAAA,EAEA,aAAA,IACA,YAAA,IACA,WAAA,KAZF,wBAeI,SAAA,SACA,SAAA,EAAA,EAAA,KAAA,KAAA,EAAA,EAAA,KACA,MAAA,KACA,OAAA,IACA,aAAA,IACA,YAAA,IACA,YAAA,OACA,OAAA,QACA,iBAAA,qBAvBJ,gCA2BM,SAAA,SACA,IAAA,MACA,KAAA,EACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,QAAA,GAjCN,+BAoCM,SAAA,SACA,OAAA,MACA,KAAA,EACA,QAAA,aACA,MAAA,KACA,OAAA,KACA,QAAA,GA1CN,6BA+CI,iBAAA,KASJ,kBACE,SAAA,SACA,MAAA,IACA,OAAA,KACA,KAAA,IACA,QAAA,GACA,YAAA,KACA,eAAA,KACA,MAAA,KACA,WAAA,OCxOF,gBAAqB,eAAA,mBACrB,WAAqB,eAAA,cACrB,cAAqB,eAAA,iBACrB,cAAqB,eAAA,iBACrB,mBAAqB,eAAA,sBACrB,gBAAqB,eAAA,mBCFnB,YACE,iBAAA,kBhDUF,mBAAA,mBF+3LF,wBADA,wBkDn4LM,iBAAA,kBANJ,cACE,iBAAA,kBhDUF,qBAAA,qBFy4LF,0BADA,0BkD74LM,iBAAA,kBANJ,YACE,iBAAA,kBhDUF,mBAAA,mBFm5LF,wBADA,wBkDv5LM,iBAAA,kBANJ,SACE,iBAAA,kBhDUF,gBAAA,gBF65LF,qBADA,qBkDj6LM,iBAAA,kBANJ,YACE,iBAAA,kBhDUF,mBAAA,mBFu6LF,wBADA,wBkD36LM,iBAAA,kBANJ,WACE,iBAAA,kBhDUF,kBAAA,kBFi7LF,uBADA,uBkDr7LM,iBAAA,kBANJ,UACE,iBAAA,kBhDUF,iBAAA,iBF27LF,sBADA,sBkD/7LM,iBAAA,kBANJ,SACE,iBAAA,kBhDUF,gBAAA,gBFq8LF,qBADA,qBkDz8LM,iBAAA,kBCCN,UACE,iBAAA,eAGF,gBACE,iBAAA,sBCXF,QAAkB,OAAA,IAAA,MAAA,kBAClB,YAAkB,WAAA,IAAA,MAAA,kBAClB,cAAkB,aAAA,IAAA,MAAA,kBAClB,eAAkB,cAAA,IAAA,MAAA,kBAClB,aAAkB,YAAA,IAAA,MAAA,kBAElB,UAAmB,OAAA,YACnB,cAAmB,WAAA,YACnB,gBAAmB,aAAA,YACnB,iBAAmB,cAAA,YACnB,eAAmB,YAAA,YAGjB,gBACE,aAAA,kBADF,kBACE,aAAA,kBADF,gBACE,aAAA,kBADF,aACE,aAAA,kBADF,gBACE,aAAA,kBADF,eACE,aAAA,kBADF,cACE,aAAA,kBADF,aACE,aAAA,kBAIJ,cACE,aAAA,eAOF,SACE,cAAA,iBAEF,aACE,uBAAA,iBACA,wBAAA,iBAEF,eACE,wBAAA,iBACA,2BAAA,iBAEF,gBACE,2BAAA,iBACA,0BAAA,iBAEF,cACE,uBAAA,iBACA,0BAAA,iBAGF,gBACE,cAAA,cAGF,WACE,cAAA,YCxDA,iBACE,QAAA,MACA,MAAA,KACA,QAAA,GCMA,QAA2B,QAAA,eAC3B,UAA2B,QAAA,iBAC3B,gBAA2B,QAAA,uBAC3B,SAA2B,QAAA,gBAC3B,SAA2B,QAAA,gBAC3B,aAA2B,QAAA,oBAC3B,cAA2B,QAAA,qBAC3B,QAA2B,QAAA,sBAAA,QAAA,eAC3B,eAA2B,QAAA,6BAAA,QAAA,sB3C0C3B,yB2ClDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,uB3C0C3B,yB2ClDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,uB3C0C3B,yB2ClDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,uB3C0C3B,0B2ClDA,WAA2B,QAAA,eAC3B,aAA2B,QAAA,iBAC3B,mBAA2B,QAAA,uBAC3B,YAA2B,QAAA,gBAC3B,YAA2B,QAAA,gBAC3B,gBAA2B,QAAA,oBAC3B,iBAA2B,QAAA,qBAC3B,WAA2B,QAAA,sBAAA,QAAA,eAC3B,kBAA2B,QAAA,6BAAA,QAAA,uBAS/B,aACE,cAAwB,QAAA,eACxB,gBAAwB,QAAA,iBACxB,sBAAwB,QAAA,uBACxB,eAAwB,QAAA,gBACxB,eAAwB,QAAA,gBACxB,mBAAwB,QAAA,oBACxB,oBAAwB,QAAA,qBACxB,cAAwB,QAAA,sBAAA,QAAA,eACxB,qBAAwB,QAAA,6BAAA,QAAA,uBClC1B,kBACE,SAAA,SACA,QAAA,MACA,MAAA,KACA,QAAA,EACA,SAAA,OALF,0BAQI,QAAA,MACA,QAAA,GATJ,yCvDsyMA,wBADA,yBAEA,yBACA,wBuDvxMI,SAAA,SACA,IAAA,EACA,OAAA,EACA,KAAA,EACA,MAAA,KACA,OAAA,KACA,OAAA,EAIJ,gCAEI,YAAA,WAIJ,gCAEI,YAAA,OAIJ,+BAEI,YAAA,IAIJ,+BAEI,YAAA,KCvCA,UAAgC,mBAAA,cAAA,eAAA,cAChC,aAAgC,mBAAA,iBAAA,eAAA,iBAChC,kBAAgC,mBAAA,sBAAA,eAAA,sBAChC,qBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,WAA8B,cAAA,eAAA,UAAA,eAC9B,aAA8B,cAAA,iBAAA,UAAA,iBAC9B,mBAA8B,cAAA,uBAAA,UAAA,uBAC9B,WAA8B,SAAA,EAAA,EAAA,eAAA,KAAA,EAAA,EAAA,eAC9B,aAA8B,kBAAA,YAAA,UAAA,YAC9B,aAA8B,kBAAA,YAAA,UAAA,YAC9B,eAA8B,kBAAA,YAAA,YAAA,YAC9B,eAA8B,kBAAA,YAAA,YAAA,YAE9B,uBAAoC,cAAA,gBAAA,gBAAA,qBACpC,qBAAoC,cAAA,cAAA,gBAAA,mBACpC,wBAAoC,cAAA,iBAAA,gBAAA,iBACpC,yBAAoC,cAAA,kBAAA,gBAAA,wBACpC,wBAAoC,cAAA,qBAAA,gBAAA,uBAEpC,mBAAiC,eAAA,gBAAA,YAAA,qBACjC,iBAAiC,eAAA,cAAA,YAAA,mBACjC,oBAAiC,eAAA,iBAAA,YAAA,iBACjC,sBAAiC,eAAA,mBAAA,YAAA,mBACjC,qBAAiC,eAAA,kBAAA,YAAA,kBAEjC,qBAAkC,mBAAA,gBAAA,cAAA,qBAClC,mBAAkC,mBAAA,cAAA,cAAA,mBAClC,sBAAkC,mBAAA,iBAAA,cAAA,iBAClC,uBAAkC,mBAAA,kBAAA,cAAA,wBAClC,sBAAkC,mBAAA,qBAAA,cAAA,uBAClC,uBAAkC,mBAAA,kBAAA,cAAA,kBAElC,iBAAgC,oBAAA,eAAA,WAAA,eAChC,kBAAgC,oBAAA,gBAAA,WAAA,qBAChC,gBAAgC,oBAAA,cAAA,WAAA,mBAChC,mBAAgC,oBAAA,iBAAA,WAAA,iBAChC,qBAAgC,oBAAA,mBAAA,WAAA,mBAChC,oBAAgC,oBAAA,kBAAA,WAAA,kB7CYhC,yB6ClDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAC9B,cAA8B,SAAA,EAAA,EAAA,eAAA,KAAA,EAAA,EAAA,eAC9B,gBAA8B,kBAAA,YAAA,UAAA,YAC9B,gBAA8B,kBAAA,YAAA,UAAA,YAC9B,kBAA8B,kBAAA,YAAA,YAAA,YAC9B,kBAA8B,kBAAA,YAAA,YAAA,YAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mB7CYhC,yB6ClDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAC9B,cAA8B,SAAA,EAAA,EAAA,eAAA,KAAA,EAAA,EAAA,eAC9B,gBAA8B,kBAAA,YAAA,UAAA,YAC9B,gBAA8B,kBAAA,YAAA,UAAA,YAC9B,kBAA8B,kBAAA,YAAA,YAAA,YAC9B,kBAA8B,kBAAA,YAAA,YAAA,YAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mB7CYhC,yB6ClDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAC9B,cAA8B,SAAA,EAAA,EAAA,eAAA,KAAA,EAAA,EAAA,eAC9B,gBAA8B,kBAAA,YAAA,UAAA,YAC9B,gBAA8B,kBAAA,YAAA,UAAA,YAC9B,kBAA8B,kBAAA,YAAA,YAAA,YAC9B,kBAA8B,kBAAA,YAAA,YAAA,YAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mB7CYhC,0B6ClDA,aAAgC,mBAAA,cAAA,eAAA,cAChC,gBAAgC,mBAAA,iBAAA,eAAA,iBAChC,qBAAgC,mBAAA,sBAAA,eAAA,sBAChC,wBAAgC,mBAAA,yBAAA,eAAA,yBAEhC,cAA8B,cAAA,eAAA,UAAA,eAC9B,gBAA8B,cAAA,iBAAA,UAAA,iBAC9B,sBAA8B,cAAA,uBAAA,UAAA,uBAC9B,cAA8B,SAAA,EAAA,EAAA,eAAA,KAAA,EAAA,EAAA,eAC9B,gBAA8B,kBAAA,YAAA,UAAA,YAC9B,gBAA8B,kBAAA,YAAA,UAAA,YAC9B,kBAA8B,kBAAA,YAAA,YAAA,YAC9B,kBAA8B,kBAAA,YAAA,YAAA,YAE9B,0BAAoC,cAAA,gBAAA,gBAAA,qBACpC,wBAAoC,cAAA,cAAA,gBAAA,mBACpC,2BAAoC,cAAA,iBAAA,gBAAA,iBACpC,4BAAoC,cAAA,kBAAA,gBAAA,wBACpC,2BAAoC,cAAA,qBAAA,gBAAA,uBAEpC,sBAAiC,eAAA,gBAAA,YAAA,qBACjC,oBAAiC,eAAA,cAAA,YAAA,mBACjC,uBAAiC,eAAA,iBAAA,YAAA,iBACjC,yBAAiC,eAAA,mBAAA,YAAA,mBACjC,wBAAiC,eAAA,kBAAA,YAAA,kBAEjC,wBAAkC,mBAAA,gBAAA,cAAA,qBAClC,sBAAkC,mBAAA,cAAA,cAAA,mBAClC,yBAAkC,mBAAA,iBAAA,cAAA,iBAClC,0BAAkC,mBAAA,kBAAA,cAAA,wBAClC,yBAAkC,mBAAA,qBAAA,cAAA,uBAClC,0BAAkC,mBAAA,kBAAA,cAAA,kBAElC,oBAAgC,oBAAA,eAAA,WAAA,eAChC,qBAAgC,oBAAA,gBAAA,WAAA,qBAChC,mBAAgC,oBAAA,cAAA,WAAA,mBAChC,sBAAgC,oBAAA,iBAAA,WAAA,iBAChC,wBAAgC,oBAAA,mBAAA,WAAA,mBAChC,uBAAgC,oBAAA,kBAAA,WAAA,mBC5ChC,YCDF,MAAA,eDEE,aCCF,MAAA,gBDAE,YCGF,MAAA,e/CmDE,yB8CxDA,eCDF,MAAA,eDEE,gBCCF,MAAA,gBDAE,eCGF,MAAA,gB/CmDE,yB8CxDA,eCDF,MAAA,eDEE,gBCCF,MAAA,gBDAE,eCGF,MAAA,gB/CmDE,yB8CxDA,eCDF,MAAA,eDEE,gBCCF,MAAA,gBDAE,eCGF,MAAA,gB/CmDE,0B8CxDA,eCDF,MAAA,eDEE,gBCCF,MAAA,gBDAE,eCGF,MAAA,gBCAA,iBAAyB,SAAA,iBAAzB,mBAAyB,SAAA,mBAAzB,mBAAyB,SAAA,mBAAzB,gBAAyB,SAAA,gBAAzB,iBAAyB,SAAA,yBAAA,SAAA,iBAK3B,WACE,SAAA,MACA,IAAA,EACA,MAAA,EACA,KAAA,EACA,QAAA,KAGF,cACE,SAAA,MACA,MAAA,EACA,OAAA,EACA,KAAA,EACA,QAAA,KAI4B,2DAD9B,YAEI,SAAA,eAAA,SAAA,OACA,IAAA,EACA,QAAA,MC9BJ,SCEE,SAAA,SACA,MAAA,IACA,OAAA,IACA,QAAA,EACA,SAAA,OACA,KAAA,cACA,YAAA,OACA,OAAA,EAUA,0BAAA,yBAEE,SAAA,OACA,MAAA,KACA,OAAA,KACA,SAAA,QACA,KAAA,KACA,YAAA,OC5BJ,WAAa,WAAA,EAAA,QAAA,OAAA,2BACb,QAAU,WAAA,EAAA,MAAA,KAAA,0BACV,WAAa,WAAA,EAAA,KAAA,KAAA,2BACb,aAAe,WAAA,eCCX,MAAuB,MAAA,cAAvB,MAAuB,MAAA,cAAvB,MAAuB,MAAA,cAAvB,OAAuB,MAAA,eAAvB,QAAuB,MAAA,eAAvB,MAAuB,OAAA,cAAvB,MAAuB,OAAA,cAAvB,MAAuB,OAAA,cAAvB,OAAuB,OAAA,eAAvB,QAAuB,OAAA,eAI3B,QAAU,UAAA,eACV,QAAU,WAAA,eCAF,KAAgC,OAAA,YAChC,MhEitOR,MgE/sOU,WAAA,YAEF,MhEktOR,MgEhtOU,aAAA,YAEF,MhEmtOR,MgEjtOU,cAAA,YAEF,MhEotOR,MgEltOU,YAAA,YAfF,KAAgC,OAAA,iBAChC,MhEyuOR,MgEvuOU,WAAA,iBAEF,MhE0uOR,MgExuOU,aAAA,iBAEF,MhE2uOR,MgEzuOU,cAAA,iBAEF,MhE4uOR,MgE1uOU,YAAA,iBAfF,KAAgC,OAAA,gBAChC,MhEiwOR,MgE/vOU,WAAA,gBAEF,MhEkwOR,MgEhwOU,aAAA,gBAEF,MhEmwOR,MgEjwOU,cAAA,gBAEF,MhEowOR,MgElwOU,YAAA,gBAfF,KAAgC,OAAA,eAChC,MhEyxOR,MgEvxOU,WAAA,eAEF,MhE0xOR,MgExxOU,aAAA,eAEF,MhE2xOR,MgEzxOU,cAAA,eAEF,MhE4xOR,MgE1xOU,YAAA,eAfF,KAAgC,OAAA,iBAChC,MhEizOR,MgE/yOU,WAAA,iBAEF,MhEkzOR,MgEhzOU,aAAA,iBAEF,MhEmzOR,MgEjzOU,cAAA,iBAEF,MhEozOR,MgElzOU,YAAA,iBAfF,KAAgC,OAAA,eAChC,MhEy0OR,MgEv0OU,WAAA,eAEF,MhE00OR,MgEx0OU,aAAA,eAEF,MhE20OR,MgEz0OU,cAAA,eAEF,MhE40OR,MgE10OU,YAAA,eAfF,KAAgC,QAAA,YAChC,MhEi2OR,MgE/1OU,YAAA,YAEF,MhEk2OR,MgEh2OU,cAAA,YAEF,MhEm2OR,MgEj2OU,eAAA,YAEF,MhEo2OR,MgEl2OU,aAAA,YAfF,KAAgC,QAAA,iBAChC,MhEy3OR,MgEv3OU,YAAA,iBAEF,MhE03OR,MgEx3OU,cAAA,iBAEF,MhE23OR,MgEz3OU,eAAA,iBAEF,MhE43OR,MgE13OU,aAAA,iBAfF,KAAgC,QAAA,gBAChC,MhEi5OR,MgE/4OU,YAAA,gBAEF,MhEk5OR,MgEh5OU,cAAA,gBAEF,MhEm5OR,MgEj5OU,eAAA,gBAEF,MhEo5OR,MgEl5OU,aAAA,gBAfF,KAAgC,QAAA,eAChC,MhEy6OR,MgEv6OU,YAAA,eAEF,MhE06OR,MgEx6OU,cAAA,eAEF,MhE26OR,MgEz6OU,eAAA,eAEF,MhE46OR,MgE16OU,aAAA,eAfF,KAAgC,QAAA,iBAChC,MhEi8OR,MgE/7OU,YAAA,iBAEF,MhEk8OR,MgEh8OU,cAAA,iBAEF,MhEm8OR,MgEj8OU,eAAA,iBAEF,MhEo8OR,MgEl8OU,aAAA,iBAfF,KAAgC,QAAA,eAChC,MhEy9OR,MgEv9OU,YAAA,eAEF,MhE09OR,MgEx9OU,cAAA,eAEF,MhE29OR,MgEz9OU,eAAA,eAEF,MhE49OR,MgE19OU,aAAA,eAMN,QAAmB,OAAA,eACnB,ShE49OJ,SgE19OM,WAAA,eAEF,ShE69OJ,SgE39OM,aAAA,eAEF,ShE89OJ,SgE59OM,cAAA,eAEF,ShE+9OJ,SgE79OM,YAAA,erDaF,yBqDjDI,QAAgC,OAAA,YAChC,ShEygPN,SgEvgPQ,WAAA,YAEF,ShEygPN,SgEvgPQ,aAAA,YAEF,ShEygPN,SgEvgPQ,cAAA,YAEF,ShEygPN,SgEvgPQ,YAAA,YAfF,QAAgC,OAAA,iBAChC,ShE4hPN,SgE1hPQ,WAAA,iBAEF,ShE4hPN,SgE1hPQ,aAAA,iBAEF,ShE4hPN,SgE1hPQ,cAAA,iBAEF,ShE4hPN,SgE1hPQ,YAAA,iBAfF,QAAgC,OAAA,gBAChC,ShE+iPN,SgE7iPQ,WAAA,gBAEF,ShE+iPN,SgE7iPQ,aAAA,gBAEF,ShE+iPN,SgE7iPQ,cAAA,gBAEF,ShE+iPN,SgE7iPQ,YAAA,gBAfF,QAAgC,OAAA,eAChC,ShEkkPN,SgEhkPQ,WAAA,eAEF,ShEkkPN,SgEhkPQ,aAAA,eAEF,ShEkkPN,SgEhkPQ,cAAA,eAEF,ShEkkPN,SgEhkPQ,YAAA,eAfF,QAAgC,OAAA,iBAChC,ShEqlPN,SgEnlPQ,WAAA,iBAEF,ShEqlPN,SgEnlPQ,aAAA,iBAEF,ShEqlPN,SgEnlPQ,cAAA,iBAEF,ShEqlPN,SgEnlPQ,YAAA,iBAfF,QAAgC,OAAA,eAChC,ShEwmPN,SgEtmPQ,WAAA,eAEF,ShEwmPN,SgEtmPQ,aAAA,eAEF,ShEwmPN,SgEtmPQ,cAAA,eAEF,ShEwmPN,SgEtmPQ,YAAA,eAfF,QAAgC,QAAA,YAChC,ShE2nPN,SgEznPQ,YAAA,YAEF,ShE2nPN,SgEznPQ,cAAA,YAEF,ShE2nPN,SgEznPQ,eAAA,YAEF,ShE2nPN,SgEznPQ,aAAA,YAfF,QAAgC,QAAA,iBAChC,ShE8oPN,SgE5oPQ,YAAA,iBAEF,ShE8oPN,SgE5oPQ,cAAA,iBAEF,ShE8oPN,SgE5oPQ,eAAA,iBAEF,ShE8oPN,SgE5oPQ,aAAA,iBAfF,QAAgC,QAAA,gBAChC,ShEiqPN,SgE/pPQ,YAAA,gBAEF,ShEiqPN,SgE/pPQ,cAAA,gBAEF,ShEiqPN,SgE/pPQ,eAAA,gBAEF,ShEiqPN,SgE/pPQ,aAAA,gBAfF,QAAgC,QAAA,eAChC,ShEorPN,SgElrPQ,YAAA,eAEF,ShEorPN,SgElrPQ,cAAA,eAEF,ShEorPN,SgElrPQ,eAAA,eAEF,ShEorPN,SgElrPQ,aAAA,eAfF,QAAgC,QAAA,iBAChC,ShEusPN,SgErsPQ,YAAA,iBAEF,ShEusPN,SgErsPQ,cAAA,iBAEF,ShEusPN,SgErsPQ,eAAA,iBAEF,ShEusPN,SgErsPQ,aAAA,iBAfF,QAAgC,QAAA,eAChC,ShE0tPN,SgExtPQ,YAAA,eAEF,ShE0tPN,SgExtPQ,cAAA,eAEF,ShE0tPN,SgExtPQ,eAAA,eAEF,ShE0tPN,SgExtPQ,aAAA,eAMN,WAAmB,OAAA,eACnB,YhEwtPF,YgEttPI,WAAA,eAEF,YhEwtPF,YgEttPI,aAAA,eAEF,YhEwtPF,YgEttPI,cAAA,eAEF,YhEwtPF,YgEttPI,YAAA,gBrDaF,yBqDjDI,QAAgC,OAAA,YAChC,ShEmwPN,SgEjwPQ,WAAA,YAEF,ShEmwPN,SgEjwPQ,aAAA,YAEF,ShEmwPN,SgEjwPQ,cAAA,YAEF,ShEmwPN,SgEjwPQ,YAAA,YAfF,QAAgC,OAAA,iBAChC,ShEsxPN,SgEpxPQ,WAAA,iBAEF,ShEsxPN,SgEpxPQ,aAAA,iBAEF,ShEsxPN,SgEpxPQ,cAAA,iBAEF,ShEsxPN,SgEpxPQ,YAAA,iBAfF,QAAgC,OAAA,gBAChC,ShEyyPN,SgEvyPQ,WAAA,gBAEF,ShEyyPN,SgEvyPQ,aAAA,gBAEF,ShEyyPN,SgEvyPQ,cAAA,gBAEF,ShEyyPN,SgEvyPQ,YAAA,gBAfF,QAAgC,OAAA,eAChC,ShE4zPN,SgE1zPQ,WAAA,eAEF,ShE4zPN,SgE1zPQ,aAAA,eAEF,ShE4zPN,SgE1zPQ,cAAA,eAEF,ShE4zPN,SgE1zPQ,YAAA,eAfF,QAAgC,OAAA,iBAChC,ShE+0PN,SgE70PQ,WAAA,iBAEF,ShE+0PN,SgE70PQ,aAAA,iBAEF,ShE+0PN,SgE70PQ,cAAA,iBAEF,ShE+0PN,SgE70PQ,YAAA,iBAfF,QAAgC,OAAA,eAChC,ShEk2PN,SgEh2PQ,WAAA,eAEF,ShEk2PN,SgEh2PQ,aAAA,eAEF,ShEk2PN,SgEh2PQ,cAAA,eAEF,ShEk2PN,SgEh2PQ,YAAA,eAfF,QAAgC,QAAA,YAChC,ShEq3PN,SgEn3PQ,YAAA,YAEF,ShEq3PN,SgEn3PQ,cAAA,YAEF,ShEq3PN,SgEn3PQ,eAAA,YAEF,ShEq3PN,SgEn3PQ,aAAA,YAfF,QAAgC,QAAA,iBAChC,ShEw4PN,SgEt4PQ,YAAA,iBAEF,ShEw4PN,SgEt4PQ,cAAA,iBAEF,ShEw4PN,SgEt4PQ,eAAA,iBAEF,ShEw4PN,SgEt4PQ,aAAA,iBAfF,QAAgC,QAAA,gBAChC,ShE25PN,SgEz5PQ,YAAA,gBAEF,ShE25PN,SgEz5PQ,cAAA,gBAEF,ShE25PN,SgEz5PQ,eAAA,gBAEF,ShE25PN,SgEz5PQ,aAAA,gBAfF,QAAgC,QAAA,eAChC,ShE86PN,SgE56PQ,YAAA,eAEF,ShE86PN,SgE56PQ,cAAA,eAEF,ShE86PN,SgE56PQ,eAAA,eAEF,ShE86PN,SgE56PQ,aAAA,eAfF,QAAgC,QAAA,iBAChC,ShEi8PN,SgE/7PQ,YAAA,iBAEF,ShEi8PN,SgE/7PQ,cAAA,iBAEF,ShEi8PN,SgE/7PQ,eAAA,iBAEF,ShEi8PN,SgE/7PQ,aAAA,iBAfF,QAAgC,QAAA,eAChC,ShEo9PN,SgEl9PQ,YAAA,eAEF,ShEo9PN,SgEl9PQ,cAAA,eAEF,ShEo9PN,SgEl9PQ,eAAA,eAEF,ShEo9PN,SgEl9PQ,aAAA,eAMN,WAAmB,OAAA,eACnB,YhEk9PF,YgEh9PI,WAAA,eAEF,YhEk9PF,YgEh9PI,aAAA,eAEF,YhEk9PF,YgEh9PI,cAAA,eAEF,YhEk9PF,YgEh9PI,YAAA,gBrDaF,yBqDjDI,QAAgC,OAAA,YAChC,ShE6/PN,SgE3/PQ,WAAA,YAEF,ShE6/PN,SgE3/PQ,aAAA,YAEF,ShE6/PN,SgE3/PQ,cAAA,YAEF,ShE6/PN,SgE3/PQ,YAAA,YAfF,QAAgC,OAAA,iBAChC,ShEghQN,SgE9gQQ,WAAA,iBAEF,ShEghQN,SgE9gQQ,aAAA,iBAEF,ShEghQN,SgE9gQQ,cAAA,iBAEF,ShEghQN,SgE9gQQ,YAAA,iBAfF,QAAgC,OAAA,gBAChC,ShEmiQN,SgEjiQQ,WAAA,gBAEF,ShEmiQN,SgEjiQQ,aAAA,gBAEF,ShEmiQN,SgEjiQQ,cAAA,gBAEF,ShEmiQN,SgEjiQQ,YAAA,gBAfF,QAAgC,OAAA,eAChC,ShEsjQN,SgEpjQQ,WAAA,eAEF,ShEsjQN,SgEpjQQ,aAAA,eAEF,ShEsjQN,SgEpjQQ,cAAA,eAEF,ShEsjQN,SgEpjQQ,YAAA,eAfF,QAAgC,OAAA,iBAChC,ShEykQN,SgEvkQQ,WAAA,iBAEF,ShEykQN,SgEvkQQ,aAAA,iBAEF,ShEykQN,SgEvkQQ,cAAA,iBAEF,ShEykQN,SgEvkQQ,YAAA,iBAfF,QAAgC,OAAA,eAChC,ShE4lQN,SgE1lQQ,WAAA,eAEF,ShE4lQN,SgE1lQQ,aAAA,eAEF,ShE4lQN,SgE1lQQ,cAAA,eAEF,ShE4lQN,SgE1lQQ,YAAA,eAfF,QAAgC,QAAA,YAChC,ShE+mQN,SgE7mQQ,YAAA,YAEF,ShE+mQN,SgE7mQQ,cAAA,YAEF,ShE+mQN,SgE7mQQ,eAAA,YAEF,ShE+mQN,SgE7mQQ,aAAA,YAfF,QAAgC,QAAA,iBAChC,ShEkoQN,SgEhoQQ,YAAA,iBAEF,ShEkoQN,SgEhoQQ,cAAA,iBAEF,ShEkoQN,SgEhoQQ,eAAA,iBAEF,ShEkoQN,SgEhoQQ,aAAA,iBAfF,QAAgC,QAAA,gBAChC,ShEqpQN,SgEnpQQ,YAAA,gBAEF,ShEqpQN,SgEnpQQ,cAAA,gBAEF,ShEqpQN,SgEnpQQ,eAAA,gBAEF,ShEqpQN,SgEnpQQ,aAAA,gBAfF,QAAgC,QAAA,eAChC,ShEwqQN,SgEtqQQ,YAAA,eAEF,ShEwqQN,SgEtqQQ,cAAA,eAEF,ShEwqQN,SgEtqQQ,eAAA,eAEF,ShEwqQN,SgEtqQQ,aAAA,eAfF,QAAgC,QAAA,iBAChC,ShE2rQN,SgEzrQQ,YAAA,iBAEF,ShE2rQN,SgEzrQQ,cAAA,iBAEF,ShE2rQN,SgEzrQQ,eAAA,iBAEF,ShE2rQN,SgEzrQQ,aAAA,iBAfF,QAAgC,QAAA,eAChC,ShE8sQN,SgE5sQQ,YAAA,eAEF,ShE8sQN,SgE5sQQ,cAAA,eAEF,ShE8sQN,SgE5sQQ,eAAA,eAEF,ShE8sQN,SgE5sQQ,aAAA,eAMN,WAAmB,OAAA,eACnB,YhE4sQF,YgE1sQI,WAAA,eAEF,YhE4sQF,YgE1sQI,aAAA,eAEF,YhE4sQF,YgE1sQI,cAAA,eAEF,YhE4sQF,YgE1sQI,YAAA,gBrDaF,0BqDjDI,QAAgC,OAAA,YAChC,ShEuvQN,SgErvQQ,WAAA,YAEF,ShEuvQN,SgErvQQ,aAAA,YAEF,ShEuvQN,SgErvQQ,cAAA,YAEF,ShEuvQN,SgErvQQ,YAAA,YAfF,QAAgC,OAAA,iBAChC,ShE0wQN,SgExwQQ,WAAA,iBAEF,ShE0wQN,SgExwQQ,aAAA,iBAEF,ShE0wQN,SgExwQQ,cAAA,iBAEF,ShE0wQN,SgExwQQ,YAAA,iBAfF,QAAgC,OAAA,gBAChC,ShE6xQN,SgE3xQQ,WAAA,gBAEF,ShE6xQN,SgE3xQQ,aAAA,gBAEF,ShE6xQN,SgE3xQQ,cAAA,gBAEF,ShE6xQN,SgE3xQQ,YAAA,gBAfF,QAAgC,OAAA,eAChC,ShEgzQN,SgE9yQQ,WAAA,eAEF,ShEgzQN,SgE9yQQ,aAAA,eAEF,ShEgzQN,SgE9yQQ,cAAA,eAEF,ShEgzQN,SgE9yQQ,YAAA,eAfF,QAAgC,OAAA,iBAChC,ShEm0QN,SgEj0QQ,WAAA,iBAEF,ShEm0QN,SgEj0QQ,aAAA,iBAEF,ShEm0QN,SgEj0QQ,cAAA,iBAEF,ShEm0QN,SgEj0QQ,YAAA,iBAfF,QAAgC,OAAA,eAChC,ShEs1QN,SgEp1QQ,WAAA,eAEF,ShEs1QN,SgEp1QQ,aAAA,eAEF,ShEs1QN,SgEp1QQ,cAAA,eAEF,ShEs1QN,SgEp1QQ,YAAA,eAfF,QAAgC,QAAA,YAChC,ShEy2QN,SgEv2QQ,YAAA,YAEF,ShEy2QN,SgEv2QQ,cAAA,YAEF,ShEy2QN,SgEv2QQ,eAAA,YAEF,ShEy2QN,SgEv2QQ,aAAA,YAfF,QAAgC,QAAA,iBAChC,ShE43QN,SgE13QQ,YAAA,iBAEF,ShE43QN,SgE13QQ,cAAA,iBAEF,ShE43QN,SgE13QQ,eAAA,iBAEF,ShE43QN,SgE13QQ,aAAA,iBAfF,QAAgC,QAAA,gBAChC,ShE+4QN,SgE74QQ,YAAA,gBAEF,ShE+4QN,SgE74QQ,cAAA,gBAEF,ShE+4QN,SgE74QQ,eAAA,gBAEF,ShE+4QN,SgE74QQ,aAAA,gBAfF,QAAgC,QAAA,eAChC,ShEk6QN,SgEh6QQ,YAAA,eAEF,ShEk6QN,SgEh6QQ,cAAA,eAEF,ShEk6QN,SgEh6QQ,eAAA,eAEF,ShEk6QN,SgEh6QQ,aAAA,eAfF,QAAgC,QAAA,iBAChC,ShEq7QN,SgEn7QQ,YAAA,iBAEF,ShEq7QN,SgEn7QQ,cAAA,iBAEF,ShEq7QN,SgEn7QQ,eAAA,iBAEF,ShEq7QN,SgEn7QQ,aAAA,iBAfF,QAAgC,QAAA,eAChC,ShEw8QN,SgEt8QQ,YAAA,eAEF,ShEw8QN,SgEt8QQ,cAAA,eAEF,ShEw8QN,SgEt8QQ,eAAA,eAEF,ShEw8QN,SgEt8QQ,aAAA,eAMN,WAAmB,OAAA,eACnB,YhEs8QF,YgEp8QI,WAAA,eAEF,YhEs8QF,YgEp8QI,aAAA,eAEF,YhEs8QF,YgEp8QI,cAAA,eAEF,YhEs8QF,YgEp8QI,YAAA,gBCzCN,gBAAkB,YAAA,cAAA,CAAA,KAAA,CAAA,MAAA,CAAA,QAAA,CAAA,iBAAA,CAAA,aAAA,CAAA,UAIlB,cAAiB,WAAA,kBACjB,aAAiB,YAAA,iBACjB,eCRE,SAAA,OACA,cAAA,SACA,YAAA,ODcE,WAAwB,WAAA,eACxB,YAAwB,WAAA,gBACxB,aAAwB,WAAA,iBtDsCxB,yBsDxCA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBtDsCxB,yBsDxCA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBtDsCxB,yBsDxCA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBtDsCxB,0BsDxCA,cAAwB,WAAA,eACxB,eAAwB,WAAA,gBACxB,gBAAwB,WAAA,kBAM5B,gBAAmB,eAAA,oBACnB,gBAAmB,eAAA,oBACnB,iBAAmB,eAAA,qBAInB,mBAAsB,YAAA,cACtB,oBAAsB,YAAA,cACtB,kBAAsB,YAAA,cACtB,aAAsB,WAAA,iBAItB,YAAc,MAAA,eEpCZ,cACE,MAAA,kBjEUF,qBAAA,qBiENI,MAAA,kBALJ,gBACE,MAAA,kBjEUF,uBAAA,uBiENI,MAAA,kBALJ,cACE,MAAA,kBjEUF,qBAAA,qBiENI,MAAA,kBALJ,WACE,MAAA,kBjEUF,kBAAA,kBiENI,MAAA,kBALJ,cACE,MAAA,kBjEUF,qBAAA,qBiENI,MAAA,kBALJ,aACE,MAAA,kBjEUF,oBAAA,oBiENI,MAAA,kBALJ,YACE,MAAA,kBjEUF,mBAAA,mBiENI,MAAA,kBALJ,WACE,MAAA,kBjEUF,kBAAA,kBiENI,MAAA,kBFqCN,WAAa,MAAA,kBACb,YAAc,MAAA,kBAEd,eAAiB,MAAA,yBACjB,eAAiB,MAAA,+BAIjB,WGpDE,KAAA,CAAA,CAAA,EAAA,EACA,MAAA,YACA,YAAA,KACA,iBAAA,YACA,OAAA,ECHF,SCCE,WAAA,kBDGF,WCHE,WAAA,iBCMA,axESF,ECqrRE,QADA,SuEvrRI,YAAA,eAEA,WAAA,eAGF,YAEI,gBAAA,UASJ,mBACE,QAAA,KAAA,YAAA,IxEgNN,IwEjMM,YAAA,mBvEsqRJ,WuEpqRE,IAEE,OAAA,IAAA,MAAA,QACA,kBAAA,MAQF,MACE,QAAA,mBvEgqRJ,IuE7pRE,GAEE,kBAAA,MvE+pRJ,GACA,GuE7pRE,EAGE,QAAA,EACA,OAAA,EAGF,GvE2pRF,GuEzpRI,iBAAA,MAQF,MACE,KAAA,GxEjCN,KwEoCM,UAAA,gB9DvFJ,W8D0FI,UAAA,gB1C9EN,Q0CmFM,QAAA,KrC/FN,OqCkGM,OAAA,IAAA,MAAA,K1DnGN,O0DuGM,gBAAA,mBADF,UvEqpRF,UuEhpRM,iBAAA,evEopRN,mBantRF,mB0DsEQ,OAAA,IAAA,MAAA,kB1DcR,Y0DTM,MAAA,QvEipRJ,wBAFA,euEhpRE,evEipRF,qBuE1oRM,aAAA,Q1DfR,sB0DoBM,MAAA,QACA,aAAA","sourcesContent":["/*!\n * Bootstrap v4.1.1 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n\n@import \"functions\";\n@import \"variables\";\n@import \"mixins\";\n@import \"root\";\n@import \"reboot\";\n@import \"type\";\n@import \"images\";\n@import \"code\";\n@import \"grid\";\n@import \"tables\";\n@import \"forms\";\n@import \"buttons\";\n@import \"transitions\";\n@import \"dropdown\";\n@import \"button-group\";\n@import \"input-group\";\n@import \"custom-forms\";\n@import \"nav\";\n@import \"navbar\";\n@import \"card\";\n@import \"breadcrumb\";\n@import \"pagination\";\n@import \"badge\";\n@import \"jumbotron\";\n@import \"alert\";\n@import \"progress\";\n@import \"media\";\n@import \"list-group\";\n@import \"close\";\n@import \"modal\";\n@import \"tooltip\";\n@import \"popover\";\n@import \"carousel\";\n@import \"utilities\";\n@import \"print\";\n",":root {\n  // Custom variable values only support SassScript inside `#{}`.\n  @each $color, $value in $colors {\n    --#{$color}: #{$value};\n  }\n\n  @each $color, $value in $theme-colors {\n    --#{$color}: #{$value};\n  }\n\n  @each $bp, $value in $grid-breakpoints {\n    --breakpoint-#{$bp}: #{$value};\n  }\n\n  // Use `inspect` for lists so that quoted items keep the quotes.\n  // See https://github.com/sass/sass/issues/2383#issuecomment-336349172\n  --font-family-sans-serif: #{inspect($font-family-sans-serif)};\n  --font-family-monospace: #{inspect($font-family-monospace)};\n}\n","// stylelint-disable at-rule-no-vendor-prefix, declaration-no-important, selector-no-qualifying-type, property-no-vendor-prefix\n\n// Reboot\n//\n// Normalization of HTML elements, manually forked from Normalize.css to remove\n// styles targeting irrelevant browsers while applying new styles.\n//\n// Normalize is licensed MIT. https://github.com/necolas/normalize.css\n\n\n// Document\n//\n// 1. Change from `box-sizing: content-box` so that `width` is not affected by `padding` or `border`.\n// 2. Change the default font family in all browsers.\n// 3. Correct the line height in all browsers.\n// 4. Prevent adjustments of font size after orientation changes in IE on Windows Phone and in iOS.\n// 5. Setting @viewport causes scrollbars to overlap content in IE11 and Edge, so\n//    we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n// 6. Change the default tap highlight to be completely transparent in iOS.\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box; // 1\n}\n\nhtml {\n  font-family: sans-serif; // 2\n  line-height: 1.15; // 3\n  -webkit-text-size-adjust: 100%; // 4\n  -ms-text-size-adjust: 100%; // 4\n  -ms-overflow-style: scrollbar; // 5\n  -webkit-tap-highlight-color: rgba($black, 0); // 6\n}\n\n// IE10+ doesn't honor `<meta name=\"viewport\">` in some cases.\n@at-root {\n  @-ms-viewport {\n    width: device-width;\n  }\n}\n\n// stylelint-disable selector-list-comma-newline-after\n// Shim for \"new\" HTML5 structural elements to display correctly (IE10, older browsers)\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Body\n//\n// 1. Remove the margin in all browsers.\n// 2. As a best practice, apply a default `background-color`.\n// 3. Set an explicit initial text-align value so that we can later use the\n//    the `inherit` value on things like `<th>` elements.\n\nbody {\n  margin: 0; // 1\n  font-family: $font-family-base;\n  font-size: $font-size-base;\n  font-weight: $font-weight-base;\n  line-height: $line-height-base;\n  color: $body-color;\n  text-align: left; // 3\n  background-color: $body-bg; // 2\n}\n\n// Suppress the focus outline on elements that cannot be accessed via keyboard.\n// This prevents an unwanted focus outline from appearing around elements that\n// might still respond to pointer events.\n//\n// Credit: https://github.com/suitcss/base\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important;\n}\n\n\n// Content grouping\n//\n// 1. Add the correct box sizing in Firefox.\n// 2. Show the overflow in Edge and IE.\n\nhr {\n  box-sizing: content-box; // 1\n  height: 0; // 1\n  overflow: visible; // 2\n}\n\n\n//\n// Typography\n//\n\n// Remove top margins from headings\n//\n// By default, `<h1>`-`<h6>` all receive top and bottom margins. We nuke the top\n// margin for easier control within type scales as it avoids margin collapsing.\n// stylelint-disable selector-list-comma-newline-after\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: $headings-margin-bottom;\n}\n// stylelint-enable selector-list-comma-newline-after\n\n// Reset margins on paragraphs\n//\n// Similarly, the top margin on `<p>`s get reset. However, we also reset the\n// bottom margin to use `rem` units instead of `em`.\np {\n  margin-top: 0;\n  margin-bottom: $paragraph-margin-bottom;\n}\n\n// Abbreviations\n//\n// 1. Remove the bottom border in Firefox 39-.\n// 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n// 3. Add explicit cursor to indicate changed behavior.\n// 4. Duplicate behavior to the data-* attribute for our tooltip plugin\n\nabbr[title],\nabbr[data-original-title] { // 4\n  text-decoration: underline; // 2\n  text-decoration: underline dotted; // 2\n  cursor: help; // 3\n  border-bottom: 0; // 1\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: $dt-font-weight;\n}\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0; // Undo browser default\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\ndfn {\n  font-style: italic; // Add the correct font style in Android 4.3-\n}\n\n// stylelint-disable font-weight-notation\nb,\nstrong {\n  font-weight: bolder; // Add the correct font weight in Chrome, Edge, and Safari\n}\n// stylelint-enable font-weight-notation\n\nsmall {\n  font-size: 80%; // Add the correct font size in all browsers\n}\n\n//\n// Prevent `sub` and `sup` elements from affecting the line height in\n// all browsers.\n//\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub { bottom: -.25em; }\nsup { top: -.5em; }\n\n\n//\n// Links\n//\n\na {\n  color: $link-color;\n  text-decoration: $link-decoration;\n  background-color: transparent; // Remove the gray background on active links in IE 10.\n  -webkit-text-decoration-skip: objects; // Remove gaps in links underline in iOS 8+ and Safari 8+.\n\n  @include hover {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n  }\n}\n\n// And undo these styles for placeholder links/named anchors (without href)\n// which have not been made explicitly keyboard-focusable (without tabindex).\n// It would be more straightforward to just use a[href] in previous block, but that\n// causes specificity issues in many other styles that are too complex to fix.\n// See https://github.com/twbs/bootstrap/issues/19402\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none;\n\n  @include hover-focus {\n    color: inherit;\n    text-decoration: none;\n  }\n\n  &:focus {\n    outline: 0;\n  }\n}\n\n\n//\n// Code\n//\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: $font-family-monospace;\n  font-size: 1em; // Correct the odd `em` font sizing in all browsers.\n}\n\npre {\n  // Remove browser default top margin\n  margin-top: 0;\n  // Reset browser default of `1em` to use `rem`s\n  margin-bottom: 1rem;\n  // Don't allow content to break outside\n  overflow: auto;\n  // We have @viewport set which causes scrollbars to overlap content in IE11 and Edge, so\n  // we force a non-overlapping, non-auto-hiding scrollbar to counteract.\n  -ms-overflow-style: scrollbar;\n}\n\n\n//\n// Figures\n//\n\nfigure {\n  // Apply a consistent margin strategy (matches our type styles).\n  margin: 0 0 1rem;\n}\n\n\n//\n// Images and content\n//\n\nimg {\n  vertical-align: middle;\n  border-style: none; // Remove the border on images inside links in IE 10-.\n}\n\nsvg:not(:root) {\n  overflow: hidden; // Hide the overflow in IE\n}\n\n\n//\n// Tables\n//\n\ntable {\n  border-collapse: collapse; // Prevent double borders\n}\n\ncaption {\n  padding-top: $table-cell-padding;\n  padding-bottom: $table-cell-padding;\n  color: $table-caption-color;\n  text-align: left;\n  caption-side: bottom;\n}\n\nth {\n  // Matches default `<td>` alignment by inheriting from the `<body>`, or the\n  // closest parent with a set `text-align`.\n  text-align: inherit;\n}\n\n\n//\n// Forms\n//\n\nlabel {\n  // Allow labels to use `margin` for spacing.\n  display: inline-block;\n  margin-bottom: $label-margin-bottom;\n}\n\n// Remove the default `border-radius` that macOS Chrome adds.\n//\n// Details at https://github.com/twbs/bootstrap/issues/24093\nbutton {\n  border-radius: 0;\n}\n\n// Work around a Firefox/IE bug where the transparent `button` background\n// results in a loss of the default `button` focus styles.\n//\n// Credit: https://github.com/suitcss/base/\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0; // Remove the margin in Firefox and Safari\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\ninput {\n  overflow: visible; // Show the overflow in Edge\n}\n\nbutton,\nselect {\n  text-transform: none; // Remove the inheritance of text transform in Firefox\n}\n\n// 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`\n//    controls in Android 4.\n// 2. Correct the inability to style clickable types in iOS and Safari.\nbutton,\nhtml [type=\"button\"], // 1\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button; // 2\n}\n\n// Remove inner border and padding from Firefox, but don't restore the outline like Normalize.\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  box-sizing: border-box; // 1. Add the correct box sizing in IE 10-\n  padding: 0; // 2. Remove the padding in IE 10-\n}\n\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  // Remove the default appearance of temporal inputs to avoid a Mobile Safari\n  // bug where setting a custom line-height prevents text from being vertically\n  // centered within the input.\n  // See https://bugs.webkit.org/show_bug.cgi?id=139848\n  // and https://github.com/twbs/bootstrap/issues/11266\n  -webkit-appearance: listbox;\n}\n\ntextarea {\n  overflow: auto; // Remove the default vertical scrollbar in IE.\n  // Textareas should really only resize vertically so they don't break their (horizontal) containers.\n  resize: vertical;\n}\n\nfieldset {\n  // Browsers set a default `min-width: min-content;` on fieldsets,\n  // unlike e.g. `<div>`s, which have `min-width: 0;` by default.\n  // So we reset that to ensure fieldsets behave more like a standard block element.\n  // See https://github.com/twbs/bootstrap/issues/12359\n  // and https://html.spec.whatwg.org/multipage/#the-fieldset-and-legend-elements\n  min-width: 0;\n  // Reset the default outline behavior of fieldsets so they don't affect page layout.\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\n// 1. Correct the text wrapping in Edge and IE.\n// 2. Correct the color inheritance from `fieldset` elements in IE.\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%; // 1\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit; // 2\n  white-space: normal; // 1\n}\n\nprogress {\n  vertical-align: baseline; // Add the correct vertical alignment in Chrome, Firefox, and Opera.\n}\n\n// Correct the cursor style of increment and decrement buttons in Chrome.\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n[type=\"search\"] {\n  // This overrides the extra rounded corners on search inputs in iOS so that our\n  // `.form-control` class can properly style them. Note that this cannot simply\n  // be added to `.form-control` as it's not specific enough. For details, see\n  // https://github.com/twbs/bootstrap/issues/11586.\n  outline-offset: -2px; // 2. Correct the outline style in Safari.\n  -webkit-appearance: none;\n}\n\n//\n// Remove the inner padding and cancel buttons in Chrome and Safari on macOS.\n//\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n//\n// 1. Correct the inability to style clickable types in iOS and Safari.\n// 2. Change font properties to `inherit` in Safari.\n//\n\n::-webkit-file-upload-button {\n  font: inherit; // 2\n  -webkit-appearance: button; // 1\n}\n\n//\n// Correct element displays\n//\n\noutput {\n  display: inline-block;\n}\n\nsummary {\n  display: list-item; // Add the correct display in all browsers\n  cursor: pointer;\n}\n\ntemplate {\n  display: none; // Add the correct display in IE\n}\n\n// Always hide an element with the `hidden` HTML attribute (from PureCSS).\n// Needed for proper display in IE 10-.\n[hidden] {\n  display: none !important;\n}\n","/*!\n * Bootstrap v4.1.1 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n  --blue: #007bff;\n  --indigo: #6610f2;\n  --purple: #6f42c1;\n  --pink: #e83e8c;\n  --red: #dc3545;\n  --orange: #fd7e14;\n  --yellow: #ffc107;\n  --green: #28a745;\n  --teal: #20c997;\n  --cyan: #17a2b8;\n  --white: #fff;\n  --gray: #6c757d;\n  --gray-dark: #343a40;\n  --primary: #007bff;\n  --secondary: #6c757d;\n  --success: #28a745;\n  --info: #17a2b8;\n  --warning: #ffc107;\n  --danger: #dc3545;\n  --light: #f8f9fa;\n  --dark: #343a40;\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 992px;\n  --breakpoint-xl: 1200px;\n  --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n  -ms-overflow-style: scrollbar;\n  -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n  width: device-width;\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block;\n}\n\nbody {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: left;\n  background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important;\n}\n\nhr {\n  box-sizing: content-box;\n  height: 0;\n  overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n  text-decoration: underline dotted;\n  cursor: help;\n  border-bottom: 0;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\ndfn {\n  font-style: italic;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 80%;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -.25em;\n}\n\nsup {\n  top: -.5em;\n}\n\na {\n  color: #007bff;\n  text-decoration: none;\n  background-color: transparent;\n  -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n  color: #0056b3;\n  text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n  outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  font-size: 1em;\n}\n\npre {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  -ms-overflow-style: scrollbar;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg {\n  vertical-align: middle;\n  border-style: none;\n}\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\ntable {\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem;\n  color: #6c757d;\n  text-align: left;\n  caption-side: bottom;\n}\n\nth {\n  text-align: inherit;\n}\n\nlabel {\n  display: inline-block;\n  margin-bottom: 0.5rem;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\ninput {\n  overflow: visible;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  -webkit-appearance: listbox;\n}\n\ntextarea {\n  overflow: auto;\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit;\n  white-space: normal;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n[type=\"search\"] {\n  outline-offset: -2px;\n  -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\ntemplate {\n  display: none;\n}\n\n[hidden] {\n  display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  margin-bottom: 0.5rem;\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.2;\n  color: inherit;\n}\n\nh1, .h1 {\n  font-size: 2.5rem;\n}\n\nh2, .h2 {\n  font-size: 2rem;\n}\n\nh3, .h3 {\n  font-size: 1.75rem;\n}\n\nh4, .h4 {\n  font-size: 1.5rem;\n}\n\nh5, .h5 {\n  font-size: 1.25rem;\n}\n\nh6, .h6 {\n  font-size: 1rem;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: 6rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-2 {\n  font-size: 5.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-3 {\n  font-size: 4.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-4 {\n  font-size: 3.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\nhr {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n  border: 0;\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n  font-size: 80%;\n  font-weight: 400;\n}\n\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.25rem;\n}\n\n.blockquote-footer {\n  display: block;\n  font-size: 80%;\n  color: #6c757d;\n}\n\n.blockquote-footer::before {\n  content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 90%;\n  color: #6c757d;\n}\n\ncode {\n  font-size: 87.5%;\n  color: #e83e8c;\n  word-break: break-word;\n}\n\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 87.5%;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\n\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n}\n\npre {\n  display: block;\n  font-size: 87.5%;\n  color: #212529;\n}\n\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n\n.container {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container {\n    max-width: 540px;\n  }\n}\n\n@media (min-width: 768px) {\n  .container {\n    max-width: 720px;\n  }\n}\n\n@media (min-width: 992px) {\n  .container {\n    max-width: 960px;\n  }\n}\n\n@media (min-width: 1200px) {\n  .container {\n    max-width: 1140px;\n  }\n}\n\n.container-fluid {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n.row {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  margin-right: -15px;\n  margin-left: -15px;\n}\n\n.no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n  position: relative;\n  width: 100%;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n\n.col {\n  -ms-flex-preferred-size: 0;\n  flex-basis: 0;\n  -ms-flex-positive: 1;\n  flex-grow: 1;\n  max-width: 100%;\n}\n\n.col-auto {\n  -ms-flex: 0 0 auto;\n  flex: 0 0 auto;\n  width: auto;\n  max-width: none;\n}\n\n.col-1 {\n  -ms-flex: 0 0 8.333333%;\n  flex: 0 0 8.333333%;\n  max-width: 8.333333%;\n}\n\n.col-2 {\n  -ms-flex: 0 0 16.666667%;\n  flex: 0 0 16.666667%;\n  max-width: 16.666667%;\n}\n\n.col-3 {\n  -ms-flex: 0 0 25%;\n  flex: 0 0 25%;\n  max-width: 25%;\n}\n\n.col-4 {\n  -ms-flex: 0 0 33.333333%;\n  flex: 0 0 33.333333%;\n  max-width: 33.333333%;\n}\n\n.col-5 {\n  -ms-flex: 0 0 41.666667%;\n  flex: 0 0 41.666667%;\n  max-width: 41.666667%;\n}\n\n.col-6 {\n  -ms-flex: 0 0 50%;\n  flex: 0 0 50%;\n  max-width: 50%;\n}\n\n.col-7 {\n  -ms-flex: 0 0 58.333333%;\n  flex: 0 0 58.333333%;\n  max-width: 58.333333%;\n}\n\n.col-8 {\n  -ms-flex: 0 0 66.666667%;\n  flex: 0 0 66.666667%;\n  max-width: 66.666667%;\n}\n\n.col-9 {\n  -ms-flex: 0 0 75%;\n  flex: 0 0 75%;\n  max-width: 75%;\n}\n\n.col-10 {\n  -ms-flex: 0 0 83.333333%;\n  flex: 0 0 83.333333%;\n  max-width: 83.333333%;\n}\n\n.col-11 {\n  -ms-flex: 0 0 91.666667%;\n  flex: 0 0 91.666667%;\n  max-width: 91.666667%;\n}\n\n.col-12 {\n  -ms-flex: 0 0 100%;\n  flex: 0 0 100%;\n  max-width: 100%;\n}\n\n.order-first {\n  -ms-flex-order: -1;\n  order: -1;\n}\n\n.order-last {\n  -ms-flex-order: 13;\n  order: 13;\n}\n\n.order-0 {\n  -ms-flex-order: 0;\n  order: 0;\n}\n\n.order-1 {\n  -ms-flex-order: 1;\n  order: 1;\n}\n\n.order-2 {\n  -ms-flex-order: 2;\n  order: 2;\n}\n\n.order-3 {\n  -ms-flex-order: 3;\n  order: 3;\n}\n\n.order-4 {\n  -ms-flex-order: 4;\n  order: 4;\n}\n\n.order-5 {\n  -ms-flex-order: 5;\n  order: 5;\n}\n\n.order-6 {\n  -ms-flex-order: 6;\n  order: 6;\n}\n\n.order-7 {\n  -ms-flex-order: 7;\n  order: 7;\n}\n\n.order-8 {\n  -ms-flex-order: 8;\n  order: 8;\n}\n\n.order-9 {\n  -ms-flex-order: 9;\n  order: 9;\n}\n\n.order-10 {\n  -ms-flex-order: 10;\n  order: 10;\n}\n\n.order-11 {\n  -ms-flex-order: 11;\n  order: 11;\n}\n\n.order-12 {\n  -ms-flex-order: 12;\n  order: 12;\n}\n\n.offset-1 {\n  margin-left: 8.333333%;\n}\n\n.offset-2 {\n  margin-left: 16.666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.333333%;\n}\n\n.offset-5 {\n  margin-left: 41.666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.333333%;\n}\n\n.offset-8 {\n  margin-left: 66.666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.333333%;\n}\n\n.offset-11 {\n  margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-sm-auto {\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-sm-1 {\n    -ms-flex: 0 0 8.333333%;\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-sm-2 {\n    -ms-flex: 0 0 16.666667%;\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-sm-3 {\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-sm-4 {\n    -ms-flex: 0 0 33.333333%;\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-sm-5 {\n    -ms-flex: 0 0 41.666667%;\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-sm-6 {\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-sm-7 {\n    -ms-flex: 0 0 58.333333%;\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-sm-8 {\n    -ms-flex: 0 0 66.666667%;\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-sm-9 {\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-sm-10 {\n    -ms-flex: 0 0 83.333333%;\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-sm-11 {\n    -ms-flex: 0 0 91.666667%;\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-sm-12 {\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-sm-first {\n    -ms-flex-order: -1;\n    order: -1;\n  }\n  .order-sm-last {\n    -ms-flex-order: 13;\n    order: 13;\n  }\n  .order-sm-0 {\n    -ms-flex-order: 0;\n    order: 0;\n  }\n  .order-sm-1 {\n    -ms-flex-order: 1;\n    order: 1;\n  }\n  .order-sm-2 {\n    -ms-flex-order: 2;\n    order: 2;\n  }\n  .order-sm-3 {\n    -ms-flex-order: 3;\n    order: 3;\n  }\n  .order-sm-4 {\n    -ms-flex-order: 4;\n    order: 4;\n  }\n  .order-sm-5 {\n    -ms-flex-order: 5;\n    order: 5;\n  }\n  .order-sm-6 {\n    -ms-flex-order: 6;\n    order: 6;\n  }\n  .order-sm-7 {\n    -ms-flex-order: 7;\n    order: 7;\n  }\n  .order-sm-8 {\n    -ms-flex-order: 8;\n    order: 8;\n  }\n  .order-sm-9 {\n    -ms-flex-order: 9;\n    order: 9;\n  }\n  .order-sm-10 {\n    -ms-flex-order: 10;\n    order: 10;\n  }\n  .order-sm-11 {\n    -ms-flex-order: 11;\n    order: 11;\n  }\n  .order-sm-12 {\n    -ms-flex-order: 12;\n    order: 12;\n  }\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n  .offset-sm-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-sm-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n  .offset-sm-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-sm-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n  .offset-sm-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-sm-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n  .offset-sm-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-sm-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n@media (min-width: 768px) {\n  .col-md {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-md-auto {\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-md-1 {\n    -ms-flex: 0 0 8.333333%;\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-md-2 {\n    -ms-flex: 0 0 16.666667%;\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-md-3 {\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-md-4 {\n    -ms-flex: 0 0 33.333333%;\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-md-5 {\n    -ms-flex: 0 0 41.666667%;\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-md-6 {\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-md-7 {\n    -ms-flex: 0 0 58.333333%;\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-md-8 {\n    -ms-flex: 0 0 66.666667%;\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-md-9 {\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-md-10 {\n    -ms-flex: 0 0 83.333333%;\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-md-11 {\n    -ms-flex: 0 0 91.666667%;\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-md-12 {\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-md-first {\n    -ms-flex-order: -1;\n    order: -1;\n  }\n  .order-md-last {\n    -ms-flex-order: 13;\n    order: 13;\n  }\n  .order-md-0 {\n    -ms-flex-order: 0;\n    order: 0;\n  }\n  .order-md-1 {\n    -ms-flex-order: 1;\n    order: 1;\n  }\n  .order-md-2 {\n    -ms-flex-order: 2;\n    order: 2;\n  }\n  .order-md-3 {\n    -ms-flex-order: 3;\n    order: 3;\n  }\n  .order-md-4 {\n    -ms-flex-order: 4;\n    order: 4;\n  }\n  .order-md-5 {\n    -ms-flex-order: 5;\n    order: 5;\n  }\n  .order-md-6 {\n    -ms-flex-order: 6;\n    order: 6;\n  }\n  .order-md-7 {\n    -ms-flex-order: 7;\n    order: 7;\n  }\n  .order-md-8 {\n    -ms-flex-order: 8;\n    order: 8;\n  }\n  .order-md-9 {\n    -ms-flex-order: 9;\n    order: 9;\n  }\n  .order-md-10 {\n    -ms-flex-order: 10;\n    order: 10;\n  }\n  .order-md-11 {\n    -ms-flex-order: 11;\n    order: 11;\n  }\n  .order-md-12 {\n    -ms-flex-order: 12;\n    order: 12;\n  }\n  .offset-md-0 {\n    margin-left: 0;\n  }\n  .offset-md-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-md-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n  .offset-md-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-md-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n  .offset-md-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-md-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n  .offset-md-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-md-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n@media (min-width: 992px) {\n  .col-lg {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-lg-auto {\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-lg-1 {\n    -ms-flex: 0 0 8.333333%;\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-lg-2 {\n    -ms-flex: 0 0 16.666667%;\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-lg-3 {\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-lg-4 {\n    -ms-flex: 0 0 33.333333%;\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-lg-5 {\n    -ms-flex: 0 0 41.666667%;\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-lg-6 {\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-lg-7 {\n    -ms-flex: 0 0 58.333333%;\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-lg-8 {\n    -ms-flex: 0 0 66.666667%;\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-lg-9 {\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-lg-10 {\n    -ms-flex: 0 0 83.333333%;\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-lg-11 {\n    -ms-flex: 0 0 91.666667%;\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-lg-12 {\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-lg-first {\n    -ms-flex-order: -1;\n    order: -1;\n  }\n  .order-lg-last {\n    -ms-flex-order: 13;\n    order: 13;\n  }\n  .order-lg-0 {\n    -ms-flex-order: 0;\n    order: 0;\n  }\n  .order-lg-1 {\n    -ms-flex-order: 1;\n    order: 1;\n  }\n  .order-lg-2 {\n    -ms-flex-order: 2;\n    order: 2;\n  }\n  .order-lg-3 {\n    -ms-flex-order: 3;\n    order: 3;\n  }\n  .order-lg-4 {\n    -ms-flex-order: 4;\n    order: 4;\n  }\n  .order-lg-5 {\n    -ms-flex-order: 5;\n    order: 5;\n  }\n  .order-lg-6 {\n    -ms-flex-order: 6;\n    order: 6;\n  }\n  .order-lg-7 {\n    -ms-flex-order: 7;\n    order: 7;\n  }\n  .order-lg-8 {\n    -ms-flex-order: 8;\n    order: 8;\n  }\n  .order-lg-9 {\n    -ms-flex-order: 9;\n    order: 9;\n  }\n  .order-lg-10 {\n    -ms-flex-order: 10;\n    order: 10;\n  }\n  .order-lg-11 {\n    -ms-flex-order: 11;\n    order: 11;\n  }\n  .order-lg-12 {\n    -ms-flex-order: 12;\n    order: 12;\n  }\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n  .offset-lg-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-lg-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n  .offset-lg-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-lg-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n  .offset-lg-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-lg-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n  .offset-lg-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-lg-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n@media (min-width: 1200px) {\n  .col-xl {\n    -ms-flex-preferred-size: 0;\n    flex-basis: 0;\n    -ms-flex-positive: 1;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-xl-auto {\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-xl-1 {\n    -ms-flex: 0 0 8.333333%;\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-xl-2 {\n    -ms-flex: 0 0 16.666667%;\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-xl-3 {\n    -ms-flex: 0 0 25%;\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-xl-4 {\n    -ms-flex: 0 0 33.333333%;\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-xl-5 {\n    -ms-flex: 0 0 41.666667%;\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-xl-6 {\n    -ms-flex: 0 0 50%;\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-xl-7 {\n    -ms-flex: 0 0 58.333333%;\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-xl-8 {\n    -ms-flex: 0 0 66.666667%;\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-xl-9 {\n    -ms-flex: 0 0 75%;\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-xl-10 {\n    -ms-flex: 0 0 83.333333%;\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-xl-11 {\n    -ms-flex: 0 0 91.666667%;\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-xl-12 {\n    -ms-flex: 0 0 100%;\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-xl-first {\n    -ms-flex-order: -1;\n    order: -1;\n  }\n  .order-xl-last {\n    -ms-flex-order: 13;\n    order: 13;\n  }\n  .order-xl-0 {\n    -ms-flex-order: 0;\n    order: 0;\n  }\n  .order-xl-1 {\n    -ms-flex-order: 1;\n    order: 1;\n  }\n  .order-xl-2 {\n    -ms-flex-order: 2;\n    order: 2;\n  }\n  .order-xl-3 {\n    -ms-flex-order: 3;\n    order: 3;\n  }\n  .order-xl-4 {\n    -ms-flex-order: 4;\n    order: 4;\n  }\n  .order-xl-5 {\n    -ms-flex-order: 5;\n    order: 5;\n  }\n  .order-xl-6 {\n    -ms-flex-order: 6;\n    order: 6;\n  }\n  .order-xl-7 {\n    -ms-flex-order: 7;\n    order: 7;\n  }\n  .order-xl-8 {\n    -ms-flex-order: 8;\n    order: 8;\n  }\n  .order-xl-9 {\n    -ms-flex-order: 9;\n    order: 9;\n  }\n  .order-xl-10 {\n    -ms-flex-order: 10;\n    order: 10;\n  }\n  .order-xl-11 {\n    -ms-flex-order: 11;\n    order: 11;\n  }\n  .order-xl-12 {\n    -ms-flex-order: 12;\n    order: 12;\n  }\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n  .offset-xl-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-xl-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n  .offset-xl-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-xl-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n  .offset-xl-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-xl-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n  .offset-xl-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-xl-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 1rem;\n  background-color: transparent;\n}\n\n.table th,\n.table td {\n  padding: 0.75rem;\n  vertical-align: top;\n  border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n  border-top: 2px solid #dee2e6;\n}\n\n.table .table {\n  background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n  padding: 0.3rem;\n}\n\n.table-bordered {\n  border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n  border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n  border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n  border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n  background-color: #b8daff;\n}\n\n.table-hover .table-primary:hover {\n  background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n  background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n  background-color: #d6d8db;\n}\n\n.table-hover .table-secondary:hover {\n  background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n  background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n  background-color: #c3e6cb;\n}\n\n.table-hover .table-success:hover {\n  background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n  background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n  background-color: #bee5eb;\n}\n\n.table-hover .table-info:hover {\n  background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n  background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n  background-color: #ffeeba;\n}\n\n.table-hover .table-warning:hover {\n  background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n  background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n  background-color: #f5c6cb;\n}\n\n.table-hover .table-danger:hover {\n  background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n  background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n  background-color: #fdfdfe;\n}\n\n.table-hover .table-light:hover {\n  background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n  background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n  background-color: #c6c8ca;\n}\n\n.table-hover .table-dark:hover {\n  background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n  background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n  color: #fff;\n  background-color: #212529;\n  border-color: #32383e;\n}\n\n.table .thead-light th {\n  color: #495057;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n\n.table-dark {\n  color: #fff;\n  background-color: #212529;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n  border-color: #32383e;\n}\n\n.table-dark.table-bordered {\n  border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n  background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-sm > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-md > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-lg > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-xl > .table-bordered {\n    border: 0;\n  }\n}\n\n.table-responsive {\n  display: block;\n  width: 100%;\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive > .table-bordered {\n  border: 0;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  line-height: 1.5;\n  color: #495057;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .form-control {\n    transition: none;\n  }\n}\n\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n\n.form-control:focus {\n  color: #495057;\n  background-color: #fff;\n  border-color: #80bdff;\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::-webkit-input-placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n\n.form-control::-moz-placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n\n.form-control:-ms-input-placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n\n.form-control::-ms-input-placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n\n.form-control::placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n  background-color: #e9ecef;\n  opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n  height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n  color: #495057;\n  background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n  display: block;\n  width: 100%;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.25rem;\n  line-height: 1.5;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.875rem;\n  line-height: 1.5;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-lg > .input-group-append > .form-control-plaintext.btn {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(2.875rem + 2px);\n}\n\n.form-group {\n  margin-bottom: 1rem;\n}\n\n.form-text {\n  display: block;\n  margin-top: 0.25rem;\n}\n\n.form-row {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  margin-right: -5px;\n  margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n  padding-right: 5px;\n  padding-left: 5px;\n}\n\n.form-check {\n  position: relative;\n  display: block;\n  padding-left: 1.25rem;\n}\n\n.form-check-input {\n  position: absolute;\n  margin-top: 0.3rem;\n  margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n  color: #6c757d;\n}\n\n.form-check-label {\n  margin-bottom: 0;\n}\n\n.form-check-inline {\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  -ms-flex-align: center;\n  align-items: center;\n  padding-left: 0;\n  margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n  position: static;\n  margin-top: 0;\n  margin-right: 0.3125rem;\n  margin-left: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #28a745;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(40, 167, 69, 0.8);\n  border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n  border-color: #28a745;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n  border-color: #28a745;\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip, .was-validated\n.custom-select:valid ~ .valid-feedback,\n.was-validated\n.custom-select:valid ~ .valid-tooltip,\n.custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control-file:valid ~ .valid-feedback,\n.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,\n.form-control-file.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n  color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n  background-color: #71dd8a;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n  background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n  border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n  border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #dc3545;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(220, 53, 69, 0.8);\n  border-radius: .2rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n  border-color: #dc3545;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control-file:invalid ~ .invalid-feedback,\n.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,\n.form-control-file.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n  color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n  background-color: #efa2a9;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n  background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n  border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n  border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-flow: row wrap;\n  flex-flow: row wrap;\n  -ms-flex-align: center;\n  align-items: center;\n}\n\n.form-inline .form-check {\n  width: 100%;\n}\n\n@media (min-width: 576px) {\n  .form-inline label {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n    align-items: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-group {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex: 0 0 auto;\n    flex: 0 0 auto;\n    -ms-flex-flow: row wrap;\n    flex-flow: row wrap;\n    -ms-flex-align: center;\n    align-items: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-plaintext {\n    display: inline-block;\n  }\n  .form-inline .input-group,\n  .form-inline .custom-select {\n    width: auto;\n  }\n  .form-inline .form-check {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex-align: center;\n    align-items: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n    width: auto;\n    padding-left: 0;\n  }\n  .form-inline .form-check-input {\n    position: relative;\n    margin-top: 0;\n    margin-right: 0.25rem;\n    margin-left: 0;\n  }\n  .form-inline .custom-control {\n    -ms-flex-align: center;\n    align-items: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n  }\n  .form-inline .custom-control-label {\n    margin-bottom: 0;\n  }\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  line-height: 1.5;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .btn {\n    transition: none;\n  }\n}\n\n.btn:hover, .btn:focus {\n  text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n  opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n  background-image: none;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n  pointer-events: none;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-primary:hover {\n  color: #fff;\n  background-color: #0069d9;\n  border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #0062cc;\n  border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #5a6268;\n  border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #545b62;\n  border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-success:hover {\n  color: #fff;\n  background-color: #218838;\n  border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n  color: #fff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #1e7e34;\n  border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-info {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-info:hover {\n  color: #fff;\n  background-color: #138496;\n  border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n  color: #fff;\n  background-color: #117a8b;\n  border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-warning {\n  color: #212529;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-warning:hover {\n  color: #212529;\n  background-color: #e0a800;\n  border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n  color: #212529;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n  color: #212529;\n  background-color: #d39e00;\n  border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c82333;\n  border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #bd2130;\n  border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-light {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n  color: #212529;\n  background-color: #e2e6ea;\n  border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n  color: #212529;\n  background-color: #dae0e5;\n  border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-dark:hover {\n  color: #fff;\n  background-color: #23272b;\n  border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #1d2124;\n  border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-primary {\n  color: #007bff;\n  background-color: transparent;\n  background-image: none;\n  border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n  color: #007bff;\n  background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  background-color: transparent;\n  background-image: none;\n  border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n  color: #28a745;\n  background-color: transparent;\n  background-image: none;\n  border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n  color: #28a745;\n  background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n  color: #fff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n  color: #17a2b8;\n  background-color: transparent;\n  background-image: none;\n  border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n  color: #17a2b8;\n  background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n  color: #ffc107;\n  background-color: transparent;\n  background-image: none;\n  border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n  color: #212529;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n  color: #ffc107;\n  background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n  color: #212529;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n  color: #dc3545;\n  background-color: transparent;\n  background-image: none;\n  border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n  color: #dc3545;\n  background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n  color: #f8f9fa;\n  background-color: transparent;\n  background-image: none;\n  border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n  color: #f8f9fa;\n  background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n  color: #343a40;\n  background-color: transparent;\n  background-image: none;\n  border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n  color: #343a40;\n  background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #007bff;\n  background-color: transparent;\n}\n\n.btn-link:hover {\n  color: #0056b3;\n  text-decoration: underline;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n  text-decoration: underline;\n  border-color: transparent;\n  box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n.btn-block + .btn-block {\n  margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n\n.fade {\n  transition: opacity 0.15s linear;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n  position: relative;\n}\n\n.dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0.125rem 0 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n\n.dropup .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n  top: 0;\n  right: auto;\n  left: 100%;\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n  top: 0;\n  right: 100%;\n  left: auto;\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n  display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n  right: auto;\n  bottom: auto;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1.5rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #16181b;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1.5rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: #6c757d;\n  white-space: nowrap;\n}\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.25rem 1.5rem;\n  color: #212529;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  -ms-flex: 0 1 auto;\n  flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n  z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n  margin-left: -1px;\n}\n\n.btn-toolbar {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -ms-flex-pack: start;\n  justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n  margin-left: 0;\n}\n\n.dropleft .dropdown-toggle-split::before {\n  margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -ms-flex-align: start;\n  align-items: flex-start;\n  -ms-flex-pack: center;\n  justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n  width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n  margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n\n.input-group {\n  position: relative;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -ms-flex-align: stretch;\n  align-items: stretch;\n  width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .custom-select,\n.input-group > .custom-file {\n  position: relative;\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  width: 1%;\n  margin-bottom: 0;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file:focus {\n  z-index: 3;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n  margin-left: -1px;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n  display: -ms-flexbox;\n  display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n  position: relative;\n  z-index: 2;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n  margin-left: -1px;\n}\n\n.input-group-prepend {\n  margin-right: -1px;\n}\n\n.input-group-append {\n  margin-left: -1px;\n}\n\n.input-group-text {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.custom-control {\n  position: relative;\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n  display: -ms-inline-flexbox;\n  display: inline-flex;\n  margin-right: 1rem;\n}\n\n.custom-control-input {\n  position: absolute;\n  z-index: -1;\n  opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n  color: #fff;\n  background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:active ~ .custom-control-label::before {\n  color: #fff;\n  background-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n  color: #6c757d;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n  background-color: #e9ecef;\n}\n\n.custom-control-label {\n  position: relative;\n  margin-bottom: 0;\n}\n\n.custom-control-label::before {\n  position: absolute;\n  top: 0.25rem;\n  left: -1.5rem;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  pointer-events: none;\n  content: \"\";\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  background-color: #dee2e6;\n}\n\n.custom-control-label::after {\n  position: absolute;\n  top: 0.25rem;\n  left: -1.5rem;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  content: \"\";\n  background-repeat: no-repeat;\n  background-position: center center;\n  background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n  border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n  background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n  border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #007bff;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n  display: inline-block;\n  width: 100%;\n  height: calc(2.25rem + 2px);\n  padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #495057;\n  vertical-align: middle;\n  background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n  background-size: 8px 10px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n\n.custom-select:focus {\n  border-color: #80bdff;\n  outline: 0;\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(128, 189, 255, 0.5);\n}\n\n.custom-select:focus::-ms-value {\n  color: #495057;\n  background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n  height: auto;\n  padding-right: 0.75rem;\n  background-image: none;\n}\n\n.custom-select:disabled {\n  color: #6c757d;\n  background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n  opacity: 0;\n}\n\n.custom-select-sm {\n  height: calc(1.8125rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 75%;\n}\n\n.custom-select-lg {\n  height: calc(2.875rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 125%;\n}\n\n.custom-file {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  height: calc(2.25rem + 2px);\n  margin-bottom: 0;\n}\n\n.custom-file-input {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  height: calc(2.25rem + 2px);\n  margin: 0;\n  opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-label {\n  border-color: #80bdff;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input:focus ~ .custom-file-label::after {\n  border-color: #80bdff;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n  content: \"Browse\";\n}\n\n.custom-file-label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1;\n  height: calc(2.25rem + 2px);\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #495057;\n  background-color: #fff;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 3;\n  display: block;\n  height: 2.25rem;\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #495057;\n  content: \"Browse\";\n  background-color: #e9ecef;\n  border-left: 1px solid #ced4da;\n  border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n  width: 100%;\n  padding-left: 0;\n  background-color: transparent;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n  appearance: none;\n}\n\n.custom-range:focus {\n  outline: none;\n}\n\n.custom-range::-moz-focus-outer {\n  border: 0;\n}\n\n.custom-range::-webkit-slider-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: -0.25rem;\n  background-color: #007bff;\n  border: 0;\n  border-radius: 1rem;\n  -webkit-appearance: none;\n  appearance: none;\n}\n\n.custom-range::-webkit-slider-thumb:focus {\n  outline: none;\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-webkit-slider-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range::-webkit-slider-runnable-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n\n.custom-range::-moz-range-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #007bff;\n  border: 0;\n  border-radius: 1rem;\n  -moz-appearance: none;\n  appearance: none;\n}\n\n.custom-range::-moz-range-thumb:focus {\n  outline: none;\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-moz-range-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range::-moz-range-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n\n.custom-range::-ms-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #007bff;\n  border: 0;\n  border-radius: 1rem;\n  appearance: none;\n}\n\n.custom-range::-ms-thumb:focus {\n  outline: none;\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-ms-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range::-ms-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: transparent;\n  border-color: transparent;\n  border-width: 0.5rem;\n}\n\n.custom-range::-ms-fill-lower {\n  background-color: #dee2e6;\n  border-radius: 1rem;\n}\n\n.custom-range::-ms-fill-upper {\n  margin-right: 15px;\n  background-color: #dee2e6;\n  border-radius: 1rem;\n}\n\n.nav {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n  text-decoration: none;\n}\n\n.nav-link.disabled {\n  color: #6c757d;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n  margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n  color: #6c757d;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #495057;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified .nav-item {\n  -ms-flex-preferred-size: 0;\n  flex-basis: 0;\n  -ms-flex-positive: 1;\n  flex-grow: 1;\n  text-align: center;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -ms-flex-align: center;\n  align-items: center;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n  padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  -ms-flex-align: center;\n  align-items: center;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n}\n\n.navbar-brand {\n  display: inline-block;\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-right: 1rem;\n  font-size: 1.25rem;\n  line-height: inherit;\n  white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n  text-decoration: none;\n}\n\n.navbar-nav {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n  position: static;\n  float: none;\n}\n\n.navbar-text {\n  display: inline-block;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  -ms-flex-preferred-size: 100%;\n  flex-basis: 100%;\n  -ms-flex-positive: 1;\n  flex-grow: 1;\n  -ms-flex-align: center;\n  align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n  text-decoration: none;\n}\n\n.navbar-toggler:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  content: \"\";\n  background: no-repeat center center;\n  background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -ms-flex-pack: start;\n    justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n    flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -ms-flex-pack: start;\n    justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n    flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -ms-flex-pack: start;\n    justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n    flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    -ms-flex-flow: row nowrap;\n    flex-flow: row nowrap;\n    -ms-flex-pack: start;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    -ms-flex-direction: row;\n    flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    -ms-flex-wrap: nowrap;\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: -ms-flexbox !important;\n    display: flex !important;\n    -ms-flex-preferred-size: auto;\n    flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n}\n\n.navbar-expand {\n  -ms-flex-flow: row nowrap;\n  flex-flow: row nowrap;\n  -ms-flex-pack: start;\n  justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n  -ms-flex-direction: row;\n  flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  -ms-flex-wrap: nowrap;\n  flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n  display: -ms-flexbox !important;\n  display: flex !important;\n  -ms-flex-preferred-size: auto;\n  flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.5);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.5);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n  color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  padding: 1.25rem;\n}\n\n.card-title {\n  margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n  margin-top: -0.375rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link:hover {\n  text-decoration: none;\n}\n\n.card-link + .card-link {\n  margin-left: 1.25rem;\n}\n\n.card-header {\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n  border-top: 0;\n}\n\n.card-footer {\n  padding: 0.75rem 1.25rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.625rem;\n  margin-bottom: -0.75rem;\n  margin-left: -0.625rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.625rem;\n  margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1.25rem;\n}\n\n.card-img {\n  width: 100%;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n  width: 100%;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n  width: 100%;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n}\n\n.card-deck .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-deck {\n    -ms-flex-flow: row wrap;\n    flex-flow: row wrap;\n    margin-right: -15px;\n    margin-left: -15px;\n  }\n  .card-deck .card {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex: 1 0 0%;\n    flex: 1 0 0%;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    margin-right: 15px;\n    margin-bottom: 0;\n    margin-left: 15px;\n  }\n}\n\n.card-group {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n}\n\n.card-group > .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-group {\n    -ms-flex-flow: row wrap;\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    -ms-flex: 1 0 0%;\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:first-child {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-top,\n  .card-group > .card:first-child .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-bottom,\n  .card-group > .card:first-child .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:last-child {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-top,\n  .card-group > .card:last-child .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-bottom,\n  .card-group > .card:last-child .card-footer {\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:only-child {\n    border-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-top,\n  .card-group > .card:only-child .card-header {\n    border-top-left-radius: 0.25rem;\n    border-top-right-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-bottom,\n  .card-group > .card:only-child .card-footer {\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n    border-radius: 0;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n    border-radius: 0;\n  }\n}\n\n.card-columns .card {\n  margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n  .card-columns {\n    -webkit-column-count: 3;\n    -moz-column-count: 3;\n    column-count: 3;\n    -webkit-column-gap: 1.25rem;\n    -moz-column-gap: 1.25rem;\n    column-gap: 1.25rem;\n    orphans: 1;\n    widows: 1;\n  }\n  .card-columns .card {\n    display: inline-block;\n    width: 100%;\n  }\n}\n\n.accordion .card:not(:first-of-type):not(:last-of-type) {\n  border-bottom: 0;\n  border-radius: 0;\n}\n\n.accordion .card:not(:first-of-type) .card-header:first-child {\n  border-radius: 0;\n}\n\n.accordion .card:first-of-type {\n  border-bottom: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.accordion .card:last-of-type {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.breadcrumb {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-wrap: wrap;\n  flex-wrap: wrap;\n  padding: 0.75rem 1rem;\n  margin-bottom: 1rem;\n  list-style: none;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-left: 0.5rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n  display: inline-block;\n  padding-right: 0.5rem;\n  color: #6c757d;\n  content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: none;\n}\n\n.breadcrumb-item.active {\n  color: #6c757d;\n}\n\n.pagination {\n  display: -ms-flexbox;\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n  border-radius: 0.25rem;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  padding: 0.5rem 0.75rem;\n  margin-left: -1px;\n  line-height: 1.25;\n  color: #007bff;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n  z-index: 2;\n  color: #0056b3;\n  text-decoration: none;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n\n.page-link:focus {\n  z-index: 2;\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-link:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.page-item:first-child .page-link {\n  margin-left: 0;\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n  z-index: 1;\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: auto;\n  background-color: #fff;\n  border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.25em 0.4em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.badge-pill {\n  padding-right: 0.6em;\n  padding-left: 0.6em;\n  border-radius: 10rem;\n}\n\n.badge-primary {\n  color: #fff;\n  background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0062cc;\n}\n\n.badge-secondary {\n  color: #fff;\n  background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #545b62;\n}\n\n.badge-success {\n  color: #fff;\n  background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #1e7e34;\n}\n\n.badge-info {\n  color: #fff;\n  background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #117a8b;\n}\n\n.badge-warning {\n  color: #212529;\n  background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #d39e00;\n}\n\n.badge-danger {\n  color: #fff;\n  background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #bd2130;\n}\n\n.badge-light {\n  color: #212529;\n  background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #dae0e5;\n}\n\n.badge-dark {\n  color: #fff;\n  background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #1d2124;\n}\n\n.jumbotron {\n  padding: 2rem 1rem;\n  margin-bottom: 2rem;\n  background-color: #e9ecef;\n  border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n  .jumbotron {\n    padding: 4rem 2rem;\n  }\n}\n\n.jumbotron-fluid {\n  padding-right: 0;\n  padding-left: 0;\n  border-radius: 0;\n}\n\n.alert {\n  position: relative;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  padding: 0.75rem 1.25rem;\n  color: inherit;\n}\n\n.alert-primary {\n  color: #004085;\n  background-color: #cce5ff;\n  border-color: #b8daff;\n}\n\n.alert-primary hr {\n  border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n  color: #002752;\n}\n\n.alert-secondary {\n  color: #383d41;\n  background-color: #e2e3e5;\n  border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n  border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n  color: #202326;\n}\n\n.alert-success {\n  color: #155724;\n  background-color: #d4edda;\n  border-color: #c3e6cb;\n}\n\n.alert-success hr {\n  border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n  color: #0b2e13;\n}\n\n.alert-info {\n  color: #0c5460;\n  background-color: #d1ecf1;\n  border-color: #bee5eb;\n}\n\n.alert-info hr {\n  border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n  color: #062c33;\n}\n\n.alert-warning {\n  color: #856404;\n  background-color: #fff3cd;\n  border-color: #ffeeba;\n}\n\n.alert-warning hr {\n  border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n  color: #533f03;\n}\n\n.alert-danger {\n  color: #721c24;\n  background-color: #f8d7da;\n  border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n  border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n  color: #491217;\n}\n\n.alert-light {\n  color: #818182;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n\n.alert-light hr {\n  border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n  color: #686868;\n}\n\n.alert-dark {\n  color: #1b1e21;\n  background-color: #d6d8d9;\n  border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n  border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n  color: #040505;\n}\n\n@-webkit-keyframes progress-bar-stripes {\n  from {\n    background-position: 1rem 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 1rem 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n.progress {\n  display: -ms-flexbox;\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  -ms-flex-pack: center;\n  justify-content: center;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #007bff;\n  transition: width 0.6s ease;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .progress-bar {\n    transition: none;\n  }\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n  -webkit-animation: progress-bar-stripes 1s linear infinite;\n  animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: start;\n  align-items: flex-start;\n}\n\n.media-body {\n  -ms-flex: 1;\n  flex: 1;\n}\n\n.list-group {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n  color: #495057;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #e9ecef;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:hover, .list-group-item:focus {\n  z-index: 1;\n  text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #6c757d;\n  background-color: #fff;\n}\n\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.list-group-flush .list-group-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n  border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n  border-bottom: 0;\n}\n\n.list-group-item-primary {\n  color: #004085;\n  background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #004085;\n  background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #004085;\n  border-color: #004085;\n}\n\n.list-group-item-secondary {\n  color: #383d41;\n  background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #383d41;\n  background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #383d41;\n  border-color: #383d41;\n}\n\n.list-group-item-success {\n  color: #155724;\n  background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #155724;\n  background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #155724;\n  border-color: #155724;\n}\n\n.list-group-item-info {\n  color: #0c5460;\n  background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #0c5460;\n  background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #0c5460;\n  border-color: #0c5460;\n}\n\n.list-group-item-warning {\n  color: #856404;\n  background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #856404;\n  background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #856404;\n  border-color: #856404;\n}\n\n.list-group-item-danger {\n  color: #721c24;\n  background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #721c24;\n  background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #721c24;\n  border-color: #721c24;\n}\n\n.list-group-item-light {\n  color: #818182;\n  background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #818182;\n  background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #818182;\n  border-color: #818182;\n}\n\n.list-group-item-dark {\n  color: #1b1e21;\n  background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #1b1e21;\n  background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #1b1e21;\n  border-color: #1b1e21;\n}\n\n.close {\n  float: right;\n  font-size: 1.5rem;\n  font-weight: 700;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  opacity: .5;\n}\n\n.close:hover, .close:focus {\n  color: #000;\n  text-decoration: none;\n  opacity: .75;\n}\n\n.close:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\nbutton.close {\n  padding: 0;\n  background-color: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n\n.modal-open {\n  overflow: hidden;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  outline: 0;\n}\n\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n  transition: -webkit-transform 0.3s ease-out;\n  transition: transform 0.3s ease-out;\n  transition: transform 0.3s ease-out, -webkit-transform 0.3s ease-out;\n  -webkit-transform: translate(0, -25%);\n  transform: translate(0, -25%);\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .modal.fade .modal-dialog {\n    transition: none;\n  }\n}\n\n.modal.show .modal-dialog {\n  -webkit-transform: translate(0, 0);\n  transform: translate(0, 0);\n}\n\n.modal-dialog-centered {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n  min-height: calc(100% - (0.5rem * 2));\n}\n\n.modal-content {\n  position: relative;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n\n.modal-backdrop.fade {\n  opacity: 0;\n}\n\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: start;\n  align-items: flex-start;\n  -ms-flex-pack: justify;\n  justify-content: space-between;\n  padding: 1rem;\n  border-bottom: 1px solid #e9ecef;\n  border-top-left-radius: 0.3rem;\n  border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n  padding: 1rem;\n  margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n  -ms-flex-pack: end;\n  justify-content: flex-end;\n  padding: 1rem;\n  border-top: 1px solid #e9ecef;\n}\n\n.modal-footer > :not(:first-child) {\n  margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n  margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n  .modal-dialog-centered {\n    min-height: calc(100% - (1.75rem * 2));\n  }\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n\n@media (min-width: 992px) {\n  .modal-lg {\n    max-width: 800px;\n  }\n}\n\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n\n.tooltip.show {\n  opacity: 0.9;\n}\n\n.tooltip .arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n  bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n  top: 0;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n  right: 0;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n  top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n  bottom: 0;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n  left: 0;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: block;\n  max-width: 276px;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n\n.popover .arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n  margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n  margin-bottom: 0.5rem;\n}\n\n.bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n  bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.bs-popover-top .arrow::after,\n.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n  border-width: 0.5rem 0.5rem 0;\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n  bottom: 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-top .arrow::after,\n.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n  bottom: 1px;\n  border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n  margin-left: 0.5rem;\n}\n\n.bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n  left: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.bs-popover-right .arrow::after,\n.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n  left: 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-right .arrow::after,\n.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n  left: 1px;\n  border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n  margin-top: 0.5rem;\n}\n\n.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n  top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.bs-popover-bottom .arrow::after,\n.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n  top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-bottom .arrow::after,\n.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n  top: 1px;\n  border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n  margin-right: 0.5rem;\n}\n\n.bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n  right: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.bs-popover-left .arrow::after,\n.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n  right: 0;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-left .arrow::after,\n.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n  right: 1px;\n  border-left-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  color: inherit;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 0.5rem 0.75rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  -ms-flex-align: center;\n  align-items: center;\n  width: 100%;\n  transition: -webkit-transform 0.6s ease;\n  transition: transform 0.6s ease;\n  transition: transform 0.6s ease, -webkit-transform 0.6s ease;\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  -webkit-perspective: 1000px;\n  perspective: 1000px;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .carousel-item {\n    transition: none;\n  }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n  position: absolute;\n  top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n  -webkit-transform: translateX(0);\n  transform: translateX(0);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-next.carousel-item-left,\n  .carousel-item-prev.carousel-item-right {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n  -webkit-transform: translateX(100%);\n  transform: translateX(100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-next,\n  .active.carousel-item-right {\n    -webkit-transform: translate3d(100%, 0, 0);\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n  -webkit-transform: translateX(-100%);\n  transform: translateX(-100%);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-item-prev,\n  .active.carousel-item-left {\n    -webkit-transform: translate3d(-100%, 0, 0);\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-duration: .6s;\n  transition-property: opacity;\n}\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n  opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n  opacity: 0;\n}\n\n.carousel-fade .carousel-item-next,\n.carousel-fade .carousel-item-prev,\n.carousel-fade .carousel-item.active,\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-prev {\n  -webkit-transform: translateX(0);\n  transform: translateX(0);\n}\n\n@supports ((-webkit-transform-style: preserve-3d) or (transform-style: preserve-3d)) {\n  .carousel-fade .carousel-item-next,\n  .carousel-fade .carousel-item-prev,\n  .carousel-fade .carousel-item.active,\n  .carousel-fade .active.carousel-item-left,\n  .carousel-fade .active.carousel-item-prev {\n    -webkit-transform: translate3d(0, 0, 0);\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-align: center;\n  align-items: center;\n  -ms-flex-pack: center;\n  justify-content: center;\n  width: 15%;\n  color: #fff;\n  text-align: center;\n  opacity: 0.5;\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: .9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 20px;\n  height: 20px;\n  background: transparent no-repeat center center;\n  background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 10px;\n  left: 0;\n  z-index: 15;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-pack: center;\n  justify-content: center;\n  padding-left: 0;\n  margin-right: 15%;\n  margin-left: 15%;\n  list-style: none;\n}\n\n.carousel-indicators li {\n  position: relative;\n  -ms-flex: 0 1 auto;\n  flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n  position: absolute;\n  top: -10px;\n  left: 0;\n  display: inline-block;\n  width: 100%;\n  height: 10px;\n  content: \"\";\n}\n\n.carousel-indicators li::after {\n  position: absolute;\n  bottom: -10px;\n  left: 0;\n  display: inline-block;\n  width: 100%;\n  height: 10px;\n  content: \"\";\n}\n\n.carousel-indicators .active {\n  background-color: #fff;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.bg-primary {\n  background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n  background-color: #0062cc !important;\n}\n\n.bg-secondary {\n  background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n  background-color: #545b62 !important;\n}\n\n.bg-success {\n  background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n  background-color: #1e7e34 !important;\n}\n\n.bg-info {\n  background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n  background-color: #117a8b !important;\n}\n\n.bg-warning {\n  background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n  background-color: #d39e00 !important;\n}\n\n.bg-danger {\n  background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n  background-color: #bd2130 !important;\n}\n\n.bg-light {\n  background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n  background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n  background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n  background-color: #1d2124 !important;\n}\n\n.bg-white {\n  background-color: #fff !important;\n}\n\n.bg-transparent {\n  background-color: transparent !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-right-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-left-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #007bff !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #28a745 !important;\n}\n\n.border-info {\n  border-color: #17a2b8 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #343a40 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.d-none {\n  display: none !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: -ms-flexbox !important;\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: -ms-inline-flexbox !important;\n  display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-none {\n    display: none !important;\n  }\n  .d-sm-inline {\n    display: inline !important;\n  }\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n  .d-sm-block {\n    display: block !important;\n  }\n  .d-sm-table {\n    display: table !important;\n  }\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n  .d-sm-flex {\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-sm-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .d-md-none {\n    display: none !important;\n  }\n  .d-md-inline {\n    display: inline !important;\n  }\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n  .d-md-block {\n    display: block !important;\n  }\n  .d-md-table {\n    display: table !important;\n  }\n  .d-md-table-row {\n    display: table-row !important;\n  }\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n  .d-md-flex {\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-md-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .d-lg-none {\n    display: none !important;\n  }\n  .d-lg-inline {\n    display: inline !important;\n  }\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n  .d-lg-block {\n    display: block !important;\n  }\n  .d-lg-table {\n    display: table !important;\n  }\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n  .d-lg-flex {\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-lg-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .d-xl-none {\n    display: none !important;\n  }\n  .d-xl-inline {\n    display: inline !important;\n  }\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n  .d-xl-block {\n    display: block !important;\n  }\n  .d-xl-table {\n    display: table !important;\n  }\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n  .d-xl-flex {\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-xl-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n@media print {\n  .d-print-none {\n    display: none !important;\n  }\n  .d-print-inline {\n    display: inline !important;\n  }\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n  .d-print-block {\n    display: block !important;\n  }\n  .d-print-table {\n    display: table !important;\n  }\n  .d-print-table-row {\n    display: table-row !important;\n  }\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n  .d-print-flex {\n    display: -ms-flexbox !important;\n    display: flex !important;\n  }\n  .d-print-inline-flex {\n    display: -ms-inline-flexbox !important;\n    display: inline-flex !important;\n  }\n}\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  overflow: hidden;\n}\n\n.embed-responsive::before {\n  display: block;\n  content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n\n.embed-responsive-21by9::before {\n  padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n  padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n  padding-top: 100%;\n}\n\n.flex-row {\n  -ms-flex-direction: row !important;\n  flex-direction: row !important;\n}\n\n.flex-column {\n  -ms-flex-direction: column !important;\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  -ms-flex-direction: row-reverse !important;\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  -ms-flex-direction: column-reverse !important;\n  flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n  -ms-flex-wrap: wrap !important;\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  -ms-flex-wrap: nowrap !important;\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  -ms-flex-wrap: wrap-reverse !important;\n  flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n  -ms-flex: 1 1 auto !important;\n  flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n  -ms-flex-positive: 0 !important;\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  -ms-flex-positive: 1 !important;\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  -ms-flex-negative: 0 !important;\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  -ms-flex-negative: 1 !important;\n  flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n  -ms-flex-pack: start !important;\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  -ms-flex-pack: end !important;\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  -ms-flex-pack: center !important;\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  -ms-flex-pack: justify !important;\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  -ms-flex-pack: distribute !important;\n  justify-content: space-around !important;\n}\n\n.align-items-start {\n  -ms-flex-align: start !important;\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  -ms-flex-align: end !important;\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  -ms-flex-align: center !important;\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  -ms-flex-align: baseline !important;\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  -ms-flex-align: stretch !important;\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  -ms-flex-line-pack: start !important;\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  -ms-flex-line-pack: end !important;\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  -ms-flex-line-pack: center !important;\n  align-content: center !important;\n}\n\n.align-content-between {\n  -ms-flex-line-pack: justify !important;\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  -ms-flex-line-pack: distribute !important;\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  -ms-flex-line-pack: stretch !important;\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  -ms-flex-item-align: auto !important;\n  align-self: auto !important;\n}\n\n.align-self-start {\n  -ms-flex-item-align: start !important;\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  -ms-flex-item-align: end !important;\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  -ms-flex-item-align: center !important;\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  -ms-flex-item-align: baseline !important;\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  -ms-flex-item-align: stretch !important;\n  align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n  .flex-sm-row {\n    -ms-flex-direction: row !important;\n    flex-direction: row !important;\n  }\n  .flex-sm-column {\n    -ms-flex-direction: column !important;\n    flex-direction: column !important;\n  }\n  .flex-sm-row-reverse {\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important;\n  }\n  .flex-sm-column-reverse {\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important;\n  }\n  .flex-sm-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important;\n  }\n  .flex-sm-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important;\n  }\n  .flex-sm-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-sm-fill {\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important;\n  }\n  .flex-sm-grow-0 {\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important;\n  }\n  .flex-sm-grow-1 {\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important;\n  }\n  .flex-sm-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important;\n  }\n  .flex-sm-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important;\n  }\n  .justify-content-sm-start {\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important;\n  }\n  .justify-content-sm-end {\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important;\n  }\n  .justify-content-sm-center {\n    -ms-flex-pack: center !important;\n    justify-content: center !important;\n  }\n  .justify-content-sm-between {\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important;\n  }\n  .justify-content-sm-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important;\n  }\n  .align-items-sm-start {\n    -ms-flex-align: start !important;\n    align-items: flex-start !important;\n  }\n  .align-items-sm-end {\n    -ms-flex-align: end !important;\n    align-items: flex-end !important;\n  }\n  .align-items-sm-center {\n    -ms-flex-align: center !important;\n    align-items: center !important;\n  }\n  .align-items-sm-baseline {\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important;\n  }\n  .align-items-sm-stretch {\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important;\n  }\n  .align-content-sm-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important;\n  }\n  .align-content-sm-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important;\n  }\n  .align-content-sm-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important;\n  }\n  .align-content-sm-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important;\n  }\n  .align-content-sm-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important;\n  }\n  .align-content-sm-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important;\n  }\n  .align-self-sm-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important;\n  }\n  .align-self-sm-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important;\n  }\n  .align-self-sm-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important;\n  }\n  .align-self-sm-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important;\n  }\n  .align-self-sm-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important;\n  }\n  .align-self-sm-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .flex-md-row {\n    -ms-flex-direction: row !important;\n    flex-direction: row !important;\n  }\n  .flex-md-column {\n    -ms-flex-direction: column !important;\n    flex-direction: column !important;\n  }\n  .flex-md-row-reverse {\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important;\n  }\n  .flex-md-column-reverse {\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important;\n  }\n  .flex-md-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important;\n  }\n  .flex-md-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important;\n  }\n  .flex-md-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-md-fill {\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important;\n  }\n  .flex-md-grow-0 {\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important;\n  }\n  .flex-md-grow-1 {\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important;\n  }\n  .flex-md-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important;\n  }\n  .flex-md-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important;\n  }\n  .justify-content-md-start {\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important;\n  }\n  .justify-content-md-end {\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important;\n  }\n  .justify-content-md-center {\n    -ms-flex-pack: center !important;\n    justify-content: center !important;\n  }\n  .justify-content-md-between {\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important;\n  }\n  .justify-content-md-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important;\n  }\n  .align-items-md-start {\n    -ms-flex-align: start !important;\n    align-items: flex-start !important;\n  }\n  .align-items-md-end {\n    -ms-flex-align: end !important;\n    align-items: flex-end !important;\n  }\n  .align-items-md-center {\n    -ms-flex-align: center !important;\n    align-items: center !important;\n  }\n  .align-items-md-baseline {\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important;\n  }\n  .align-items-md-stretch {\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important;\n  }\n  .align-content-md-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important;\n  }\n  .align-content-md-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important;\n  }\n  .align-content-md-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important;\n  }\n  .align-content-md-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important;\n  }\n  .align-content-md-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important;\n  }\n  .align-content-md-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important;\n  }\n  .align-self-md-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important;\n  }\n  .align-self-md-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important;\n  }\n  .align-self-md-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important;\n  }\n  .align-self-md-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important;\n  }\n  .align-self-md-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important;\n  }\n  .align-self-md-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .flex-lg-row {\n    -ms-flex-direction: row !important;\n    flex-direction: row !important;\n  }\n  .flex-lg-column {\n    -ms-flex-direction: column !important;\n    flex-direction: column !important;\n  }\n  .flex-lg-row-reverse {\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important;\n  }\n  .flex-lg-column-reverse {\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important;\n  }\n  .flex-lg-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important;\n  }\n  .flex-lg-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important;\n  }\n  .flex-lg-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-lg-fill {\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important;\n  }\n  .flex-lg-grow-0 {\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important;\n  }\n  .flex-lg-grow-1 {\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important;\n  }\n  .flex-lg-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important;\n  }\n  .flex-lg-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important;\n  }\n  .justify-content-lg-start {\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important;\n  }\n  .justify-content-lg-end {\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important;\n  }\n  .justify-content-lg-center {\n    -ms-flex-pack: center !important;\n    justify-content: center !important;\n  }\n  .justify-content-lg-between {\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important;\n  }\n  .justify-content-lg-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important;\n  }\n  .align-items-lg-start {\n    -ms-flex-align: start !important;\n    align-items: flex-start !important;\n  }\n  .align-items-lg-end {\n    -ms-flex-align: end !important;\n    align-items: flex-end !important;\n  }\n  .align-items-lg-center {\n    -ms-flex-align: center !important;\n    align-items: center !important;\n  }\n  .align-items-lg-baseline {\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important;\n  }\n  .align-items-lg-stretch {\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important;\n  }\n  .align-content-lg-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important;\n  }\n  .align-content-lg-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important;\n  }\n  .align-content-lg-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important;\n  }\n  .align-content-lg-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important;\n  }\n  .align-content-lg-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important;\n  }\n  .align-content-lg-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important;\n  }\n  .align-self-lg-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important;\n  }\n  .align-self-lg-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important;\n  }\n  .align-self-lg-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important;\n  }\n  .align-self-lg-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important;\n  }\n  .align-self-lg-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important;\n  }\n  .align-self-lg-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .flex-xl-row {\n    -ms-flex-direction: row !important;\n    flex-direction: row !important;\n  }\n  .flex-xl-column {\n    -ms-flex-direction: column !important;\n    flex-direction: column !important;\n  }\n  .flex-xl-row-reverse {\n    -ms-flex-direction: row-reverse !important;\n    flex-direction: row-reverse !important;\n  }\n  .flex-xl-column-reverse {\n    -ms-flex-direction: column-reverse !important;\n    flex-direction: column-reverse !important;\n  }\n  .flex-xl-wrap {\n    -ms-flex-wrap: wrap !important;\n    flex-wrap: wrap !important;\n  }\n  .flex-xl-nowrap {\n    -ms-flex-wrap: nowrap !important;\n    flex-wrap: nowrap !important;\n  }\n  .flex-xl-wrap-reverse {\n    -ms-flex-wrap: wrap-reverse !important;\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-xl-fill {\n    -ms-flex: 1 1 auto !important;\n    flex: 1 1 auto !important;\n  }\n  .flex-xl-grow-0 {\n    -ms-flex-positive: 0 !important;\n    flex-grow: 0 !important;\n  }\n  .flex-xl-grow-1 {\n    -ms-flex-positive: 1 !important;\n    flex-grow: 1 !important;\n  }\n  .flex-xl-shrink-0 {\n    -ms-flex-negative: 0 !important;\n    flex-shrink: 0 !important;\n  }\n  .flex-xl-shrink-1 {\n    -ms-flex-negative: 1 !important;\n    flex-shrink: 1 !important;\n  }\n  .justify-content-xl-start {\n    -ms-flex-pack: start !important;\n    justify-content: flex-start !important;\n  }\n  .justify-content-xl-end {\n    -ms-flex-pack: end !important;\n    justify-content: flex-end !important;\n  }\n  .justify-content-xl-center {\n    -ms-flex-pack: center !important;\n    justify-content: center !important;\n  }\n  .justify-content-xl-between {\n    -ms-flex-pack: justify !important;\n    justify-content: space-between !important;\n  }\n  .justify-content-xl-around {\n    -ms-flex-pack: distribute !important;\n    justify-content: space-around !important;\n  }\n  .align-items-xl-start {\n    -ms-flex-align: start !important;\n    align-items: flex-start !important;\n  }\n  .align-items-xl-end {\n    -ms-flex-align: end !important;\n    align-items: flex-end !important;\n  }\n  .align-items-xl-center {\n    -ms-flex-align: center !important;\n    align-items: center !important;\n  }\n  .align-items-xl-baseline {\n    -ms-flex-align: baseline !important;\n    align-items: baseline !important;\n  }\n  .align-items-xl-stretch {\n    -ms-flex-align: stretch !important;\n    align-items: stretch !important;\n  }\n  .align-content-xl-start {\n    -ms-flex-line-pack: start !important;\n    align-content: flex-start !important;\n  }\n  .align-content-xl-end {\n    -ms-flex-line-pack: end !important;\n    align-content: flex-end !important;\n  }\n  .align-content-xl-center {\n    -ms-flex-line-pack: center !important;\n    align-content: center !important;\n  }\n  .align-content-xl-between {\n    -ms-flex-line-pack: justify !important;\n    align-content: space-between !important;\n  }\n  .align-content-xl-around {\n    -ms-flex-line-pack: distribute !important;\n    align-content: space-around !important;\n  }\n  .align-content-xl-stretch {\n    -ms-flex-line-pack: stretch !important;\n    align-content: stretch !important;\n  }\n  .align-self-xl-auto {\n    -ms-flex-item-align: auto !important;\n    align-self: auto !important;\n  }\n  .align-self-xl-start {\n    -ms-flex-item-align: start !important;\n    align-self: flex-start !important;\n  }\n  .align-self-xl-end {\n    -ms-flex-item-align: end !important;\n    align-self: flex-end !important;\n  }\n  .align-self-xl-center {\n    -ms-flex-item-align: center !important;\n    align-self: center !important;\n  }\n  .align-self-xl-baseline {\n    -ms-flex-item-align: baseline !important;\n    align-self: baseline !important;\n  }\n  .align-self-xl-stretch {\n    -ms-flex-item-align: stretch !important;\n    align-self: stretch !important;\n  }\n}\n\n.float-left {\n  float: left !important;\n}\n\n.float-right {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-left {\n    float: left !important;\n  }\n  .float-sm-right {\n    float: right !important;\n  }\n  .float-sm-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .float-md-left {\n    float: left !important;\n  }\n  .float-md-right {\n    float: right !important;\n  }\n  .float-md-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .float-lg-left {\n    float: left !important;\n  }\n  .float-lg-right {\n    float: right !important;\n  }\n  .float-lg-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .float-xl-left {\n    float: left !important;\n  }\n  .float-xl-right {\n    float: right !important;\n  }\n  .float-xl-none {\n    float: none !important;\n  }\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: -webkit-sticky !important;\n  position: sticky !important;\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n@supports ((position: -webkit-sticky) or (position: sticky)) {\n  .sticky-top {\n    position: -webkit-sticky;\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  overflow: visible;\n  clip: auto;\n  white-space: normal;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n  margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n  margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n  margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n  margin-left: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n  margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n  margin-left: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n  margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n  margin-left: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n  margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n  margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n  margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n  margin-left: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n  margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n  margin-left: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n  margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n  margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n  margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n  margin-left: 3rem !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n  padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n  padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n  padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n  padding-left: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n  padding-left: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n  padding-left: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n  padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n  padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n  padding-left: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n  padding-left: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n  padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n  padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n  padding-left: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n  margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n  margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n  margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n  margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n  .mt-sm-0,\n  .my-sm-0 {\n    margin-top: 0 !important;\n  }\n  .mr-sm-0,\n  .mx-sm-0 {\n    margin-right: 0 !important;\n  }\n  .mb-sm-0,\n  .my-sm-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-sm-0,\n  .mx-sm-0 {\n    margin-left: 0 !important;\n  }\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-sm-1,\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-sm-1,\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-sm-1,\n  .my-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-sm-1,\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-sm-2,\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-sm-2,\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-sm-2,\n  .my-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-sm-2,\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n  .mt-sm-3,\n  .my-sm-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-sm-3,\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-sm-3,\n  .my-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-sm-3,\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n  }\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-sm-4,\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-sm-4,\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-sm-4,\n  .my-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-sm-4,\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n  .mt-sm-5,\n  .my-sm-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-sm-5,\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-sm-5,\n  .my-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-sm-5,\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n  }\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n  .pt-sm-0,\n  .py-sm-0 {\n    padding-top: 0 !important;\n  }\n  .pr-sm-0,\n  .px-sm-0 {\n    padding-right: 0 !important;\n  }\n  .pb-sm-0,\n  .py-sm-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-sm-0,\n  .px-sm-0 {\n    padding-left: 0 !important;\n  }\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-sm-1,\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-sm-1,\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-sm-1,\n  .py-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-sm-1,\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-sm-2,\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-sm-2,\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-sm-2,\n  .py-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-sm-2,\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n  .pt-sm-3,\n  .py-sm-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-sm-3,\n  .px-sm-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-sm-3,\n  .py-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-sm-3,\n  .px-sm-3 {\n    padding-left: 1rem !important;\n  }\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-sm-4,\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-sm-4,\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-sm-4,\n  .py-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-sm-4,\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n  .pt-sm-5,\n  .py-sm-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-sm-5,\n  .px-sm-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-sm-5,\n  .py-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-sm-5,\n  .px-sm-5 {\n    padding-left: 3rem !important;\n  }\n  .m-sm-auto {\n    margin: auto !important;\n  }\n  .mt-sm-auto,\n  .my-sm-auto {\n    margin-top: auto !important;\n  }\n  .mr-sm-auto,\n  .mx-sm-auto {\n    margin-right: auto !important;\n  }\n  .mb-sm-auto,\n  .my-sm-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-sm-auto,\n  .mx-sm-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .m-md-0 {\n    margin: 0 !important;\n  }\n  .mt-md-0,\n  .my-md-0 {\n    margin-top: 0 !important;\n  }\n  .mr-md-0,\n  .mx-md-0 {\n    margin-right: 0 !important;\n  }\n  .mb-md-0,\n  .my-md-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-md-0,\n  .mx-md-0 {\n    margin-left: 0 !important;\n  }\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-md-1,\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-md-1,\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-md-1,\n  .my-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-md-1,\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-md-2,\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-md-2,\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-md-2,\n  .my-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-md-2,\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n  .mt-md-3,\n  .my-md-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-md-3,\n  .mx-md-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-md-3,\n  .my-md-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-md-3,\n  .mx-md-3 {\n    margin-left: 1rem !important;\n  }\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-md-4,\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-md-4,\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-md-4,\n  .my-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-md-4,\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n  .mt-md-5,\n  .my-md-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-md-5,\n  .mx-md-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-md-5,\n  .my-md-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-md-5,\n  .mx-md-5 {\n    margin-left: 3rem !important;\n  }\n  .p-md-0 {\n    padding: 0 !important;\n  }\n  .pt-md-0,\n  .py-md-0 {\n    padding-top: 0 !important;\n  }\n  .pr-md-0,\n  .px-md-0 {\n    padding-right: 0 !important;\n  }\n  .pb-md-0,\n  .py-md-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-md-0,\n  .px-md-0 {\n    padding-left: 0 !important;\n  }\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-md-1,\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-md-1,\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-md-1,\n  .py-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-md-1,\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-md-2,\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-md-2,\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-md-2,\n  .py-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-md-2,\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n  .pt-md-3,\n  .py-md-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-md-3,\n  .px-md-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-md-3,\n  .py-md-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-md-3,\n  .px-md-3 {\n    padding-left: 1rem !important;\n  }\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-md-4,\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-md-4,\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-md-4,\n  .py-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-md-4,\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n  .pt-md-5,\n  .py-md-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-md-5,\n  .px-md-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-md-5,\n  .py-md-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-md-5,\n  .px-md-5 {\n    padding-left: 3rem !important;\n  }\n  .m-md-auto {\n    margin: auto !important;\n  }\n  .mt-md-auto,\n  .my-md-auto {\n    margin-top: auto !important;\n  }\n  .mr-md-auto,\n  .mx-md-auto {\n    margin-right: auto !important;\n  }\n  .mb-md-auto,\n  .my-md-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-md-auto,\n  .mx-md-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n  .mt-lg-0,\n  .my-lg-0 {\n    margin-top: 0 !important;\n  }\n  .mr-lg-0,\n  .mx-lg-0 {\n    margin-right: 0 !important;\n  }\n  .mb-lg-0,\n  .my-lg-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-lg-0,\n  .mx-lg-0 {\n    margin-left: 0 !important;\n  }\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-lg-1,\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-lg-1,\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-lg-1,\n  .my-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-lg-1,\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-lg-2,\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-lg-2,\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-lg-2,\n  .my-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-lg-2,\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n  .mt-lg-3,\n  .my-lg-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-lg-3,\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-lg-3,\n  .my-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-lg-3,\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n  }\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-lg-4,\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-lg-4,\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-lg-4,\n  .my-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-lg-4,\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n  .mt-lg-5,\n  .my-lg-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-lg-5,\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-lg-5,\n  .my-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-lg-5,\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n  }\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n  .pt-lg-0,\n  .py-lg-0 {\n    padding-top: 0 !important;\n  }\n  .pr-lg-0,\n  .px-lg-0 {\n    padding-right: 0 !important;\n  }\n  .pb-lg-0,\n  .py-lg-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-lg-0,\n  .px-lg-0 {\n    padding-left: 0 !important;\n  }\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-lg-1,\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-lg-1,\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-lg-1,\n  .py-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-lg-1,\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-lg-2,\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-lg-2,\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-lg-2,\n  .py-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-lg-2,\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n  .pt-lg-3,\n  .py-lg-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-lg-3,\n  .px-lg-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-lg-3,\n  .py-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-lg-3,\n  .px-lg-3 {\n    padding-left: 1rem !important;\n  }\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-lg-4,\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-lg-4,\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-lg-4,\n  .py-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-lg-4,\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n  .pt-lg-5,\n  .py-lg-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-lg-5,\n  .px-lg-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-lg-5,\n  .py-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-lg-5,\n  .px-lg-5 {\n    padding-left: 3rem !important;\n  }\n  .m-lg-auto {\n    margin: auto !important;\n  }\n  .mt-lg-auto,\n  .my-lg-auto {\n    margin-top: auto !important;\n  }\n  .mr-lg-auto,\n  .mx-lg-auto {\n    margin-right: auto !important;\n  }\n  .mb-lg-auto,\n  .my-lg-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-lg-auto,\n  .mx-lg-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n  .mt-xl-0,\n  .my-xl-0 {\n    margin-top: 0 !important;\n  }\n  .mr-xl-0,\n  .mx-xl-0 {\n    margin-right: 0 !important;\n  }\n  .mb-xl-0,\n  .my-xl-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-xl-0,\n  .mx-xl-0 {\n    margin-left: 0 !important;\n  }\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-xl-1,\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-xl-1,\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-xl-1,\n  .my-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-xl-1,\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-xl-2,\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-xl-2,\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-xl-2,\n  .my-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-xl-2,\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n  .mt-xl-3,\n  .my-xl-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-xl-3,\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-xl-3,\n  .my-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-xl-3,\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n  }\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-xl-4,\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-xl-4,\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-xl-4,\n  .my-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-xl-4,\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n  .mt-xl-5,\n  .my-xl-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-xl-5,\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-xl-5,\n  .my-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-xl-5,\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n  }\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n  .pt-xl-0,\n  .py-xl-0 {\n    padding-top: 0 !important;\n  }\n  .pr-xl-0,\n  .px-xl-0 {\n    padding-right: 0 !important;\n  }\n  .pb-xl-0,\n  .py-xl-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-xl-0,\n  .px-xl-0 {\n    padding-left: 0 !important;\n  }\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-xl-1,\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-xl-1,\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-xl-1,\n  .py-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-xl-1,\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-xl-2,\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-xl-2,\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-xl-2,\n  .py-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-xl-2,\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n  .pt-xl-3,\n  .py-xl-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-xl-3,\n  .px-xl-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-xl-3,\n  .py-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-xl-3,\n  .px-xl-3 {\n    padding-left: 1rem !important;\n  }\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-xl-4,\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-xl-4,\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-xl-4,\n  .py-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-xl-4,\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n  .pt-xl-5,\n  .py-xl-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-xl-5,\n  .px-xl-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-xl-5,\n  .py-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-xl-5,\n  .px-xl-5 {\n    padding-left: 3rem !important;\n  }\n  .m-xl-auto {\n    margin: auto !important;\n  }\n  .mt-xl-auto,\n  .my-xl-auto {\n    margin-top: auto !important;\n  }\n  .mr-xl-auto,\n  .mx-xl-auto {\n    margin-right: auto !important;\n  }\n  .mb-xl-auto,\n  .my-xl-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-xl-auto,\n  .mx-xl-auto {\n    margin-left: auto !important;\n  }\n}\n\n.text-monospace {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n.text-justify {\n  text-align: justify !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.text-left {\n  text-align: left !important;\n}\n\n.text-right {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n@media (min-width: 576px) {\n  .text-sm-left {\n    text-align: left !important;\n  }\n  .text-sm-right {\n    text-align: right !important;\n  }\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .text-md-left {\n    text-align: left !important;\n  }\n  .text-md-right {\n    text-align: right !important;\n  }\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .text-lg-left {\n    text-align: left !important;\n  }\n  .text-lg-right {\n    text-align: right !important;\n  }\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .text-xl-left {\n    text-align: left !important;\n  }\n  .text-xl-right {\n    text-align: right !important;\n  }\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.font-weight-light {\n  font-weight: 300 !important;\n}\n\n.font-weight-normal {\n  font-weight: 400 !important;\n}\n\n.font-weight-bold {\n  font-weight: 700 !important;\n}\n\n.font-italic {\n  font-style: italic !important;\n}\n\n.text-white {\n  color: #fff !important;\n}\n\n.text-primary {\n  color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n  color: #0062cc !important;\n}\n\n.text-secondary {\n  color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n  color: #545b62 !important;\n}\n\n.text-success {\n  color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n  color: #1e7e34 !important;\n}\n\n.text-info {\n  color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n  color: #117a8b !important;\n}\n\n.text-warning {\n  color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n  color: #d39e00 !important;\n}\n\n.text-danger {\n  color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n  color: #bd2130 !important;\n}\n\n.text-light {\n  color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n  color: #dae0e5 !important;\n}\n\n.text-dark {\n  color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n  color: #1d2124 !important;\n}\n\n.text-body {\n  color: #212529 !important;\n}\n\n.text-muted {\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media print {\n  *,\n  *::before,\n  *::after {\n    text-shadow: none !important;\n    box-shadow: none !important;\n  }\n  a:not(.btn) {\n    text-decoration: underline;\n  }\n  abbr[title]::after {\n    content: \" (\" attr(title) \")\";\n  }\n  pre {\n    white-space: pre-wrap !important;\n  }\n  pre,\n  blockquote {\n    border: 1px solid #adb5bd;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  @page {\n    size: a3;\n  }\n  body {\n    min-width: 992px !important;\n  }\n  .container {\n    min-width: 992px !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .badge {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #dee2e6 !important;\n  }\n  .table-dark {\n    color: inherit;\n  }\n  .table-dark th,\n  .table-dark td,\n  .table-dark thead th,\n  .table-dark tbody + tbody {\n    border-color: #dee2e6;\n  }\n  .table .thead-dark th {\n    color: inherit;\n    border-color: #dee2e6;\n  }\n}\n/*# sourceMappingURL=bootstrap.css.map */","/*!\n * Bootstrap v4.1.1 (https://getbootstrap.com/)\n * Copyright 2011-2018 The Bootstrap Authors\n * Copyright 2011-2018 Twitter, Inc.\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n */\n:root {\n  --blue: #007bff;\n  --indigo: #6610f2;\n  --purple: #6f42c1;\n  --pink: #e83e8c;\n  --red: #dc3545;\n  --orange: #fd7e14;\n  --yellow: #ffc107;\n  --green: #28a745;\n  --teal: #20c997;\n  --cyan: #17a2b8;\n  --white: #fff;\n  --gray: #6c757d;\n  --gray-dark: #343a40;\n  --primary: #007bff;\n  --secondary: #6c757d;\n  --success: #28a745;\n  --info: #17a2b8;\n  --warning: #ffc107;\n  --danger: #dc3545;\n  --light: #f8f9fa;\n  --dark: #343a40;\n  --breakpoint-xs: 0;\n  --breakpoint-sm: 576px;\n  --breakpoint-md: 768px;\n  --breakpoint-lg: 992px;\n  --breakpoint-xl: 1200px;\n  --font-family-sans-serif: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  --font-family-monospace: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n*,\n*::before,\n*::after {\n  box-sizing: border-box;\n}\n\nhtml {\n  font-family: sans-serif;\n  line-height: 1.15;\n  -webkit-text-size-adjust: 100%;\n  -ms-text-size-adjust: 100%;\n  -ms-overflow-style: scrollbar;\n  -webkit-tap-highlight-color: transparent;\n}\n\n@-ms-viewport {\n  width: device-width;\n}\n\narticle, aside, figcaption, figure, footer, header, hgroup, main, nav, section {\n  display: block;\n}\n\nbody {\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #212529;\n  text-align: left;\n  background-color: #fff;\n}\n\n[tabindex=\"-1\"]:focus {\n  outline: 0 !important;\n}\n\nhr {\n  box-sizing: content-box;\n  height: 0;\n  overflow: visible;\n}\n\nh1, h2, h3, h4, h5, h6 {\n  margin-top: 0;\n  margin-bottom: 0.5rem;\n}\n\np {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nabbr[title],\nabbr[data-original-title] {\n  text-decoration: underline;\n  text-decoration: underline dotted;\n  cursor: help;\n  border-bottom: 0;\n}\n\naddress {\n  margin-bottom: 1rem;\n  font-style: normal;\n  line-height: inherit;\n}\n\nol,\nul,\ndl {\n  margin-top: 0;\n  margin-bottom: 1rem;\n}\n\nol ol,\nul ul,\nol ul,\nul ol {\n  margin-bottom: 0;\n}\n\ndt {\n  font-weight: 700;\n}\n\ndd {\n  margin-bottom: .5rem;\n  margin-left: 0;\n}\n\nblockquote {\n  margin: 0 0 1rem;\n}\n\ndfn {\n  font-style: italic;\n}\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\nsmall {\n  font-size: 80%;\n}\n\nsub,\nsup {\n  position: relative;\n  font-size: 75%;\n  line-height: 0;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -.25em;\n}\n\nsup {\n  top: -.5em;\n}\n\na {\n  color: #007bff;\n  text-decoration: none;\n  background-color: transparent;\n  -webkit-text-decoration-skip: objects;\n}\n\na:hover {\n  color: #0056b3;\n  text-decoration: underline;\n}\n\na:not([href]):not([tabindex]) {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):hover, a:not([href]):not([tabindex]):focus {\n  color: inherit;\n  text-decoration: none;\n}\n\na:not([href]):not([tabindex]):focus {\n  outline: 0;\n}\n\npre,\ncode,\nkbd,\nsamp {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n  font-size: 1em;\n}\n\npre {\n  margin-top: 0;\n  margin-bottom: 1rem;\n  overflow: auto;\n  -ms-overflow-style: scrollbar;\n}\n\nfigure {\n  margin: 0 0 1rem;\n}\n\nimg {\n  vertical-align: middle;\n  border-style: none;\n}\n\nsvg:not(:root) {\n  overflow: hidden;\n}\n\ntable {\n  border-collapse: collapse;\n}\n\ncaption {\n  padding-top: 0.75rem;\n  padding-bottom: 0.75rem;\n  color: #6c757d;\n  text-align: left;\n  caption-side: bottom;\n}\n\nth {\n  text-align: inherit;\n}\n\nlabel {\n  display: inline-block;\n  margin-bottom: 0.5rem;\n}\n\nbutton {\n  border-radius: 0;\n}\n\nbutton:focus {\n  outline: 1px dotted;\n  outline: 5px auto -webkit-focus-ring-color;\n}\n\ninput,\nbutton,\nselect,\noptgroup,\ntextarea {\n  margin: 0;\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n\nbutton,\ninput {\n  overflow: visible;\n}\n\nbutton,\nselect {\n  text-transform: none;\n}\n\nbutton,\nhtml [type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button;\n}\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  padding: 0;\n  border-style: none;\n}\n\ninput[type=\"radio\"],\ninput[type=\"checkbox\"] {\n  box-sizing: border-box;\n  padding: 0;\n}\n\ninput[type=\"date\"],\ninput[type=\"time\"],\ninput[type=\"datetime-local\"],\ninput[type=\"month\"] {\n  -webkit-appearance: listbox;\n}\n\ntextarea {\n  overflow: auto;\n  resize: vertical;\n}\n\nfieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n\nlegend {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  padding: 0;\n  margin-bottom: .5rem;\n  font-size: 1.5rem;\n  line-height: inherit;\n  color: inherit;\n  white-space: normal;\n}\n\nprogress {\n  vertical-align: baseline;\n}\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n[type=\"search\"] {\n  outline-offset: -2px;\n  -webkit-appearance: none;\n}\n\n[type=\"search\"]::-webkit-search-cancel-button,\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n::-webkit-file-upload-button {\n  font: inherit;\n  -webkit-appearance: button;\n}\n\noutput {\n  display: inline-block;\n}\n\nsummary {\n  display: list-item;\n  cursor: pointer;\n}\n\ntemplate {\n  display: none;\n}\n\n[hidden] {\n  display: none !important;\n}\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  margin-bottom: 0.5rem;\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.2;\n  color: inherit;\n}\n\nh1, .h1 {\n  font-size: 2.5rem;\n}\n\nh2, .h2 {\n  font-size: 2rem;\n}\n\nh3, .h3 {\n  font-size: 1.75rem;\n}\n\nh4, .h4 {\n  font-size: 1.5rem;\n}\n\nh5, .h5 {\n  font-size: 1.25rem;\n}\n\nh6, .h6 {\n  font-size: 1rem;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: 6rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-2 {\n  font-size: 5.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-3 {\n  font-size: 4.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-4 {\n  font-size: 3.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\nhr {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n  border: 0;\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\nsmall,\n.small {\n  font-size: 80%;\n  font-weight: 400;\n}\n\nmark,\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n\n.list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline {\n  padding-left: 0;\n  list-style: none;\n}\n\n.list-inline-item {\n  display: inline-block;\n}\n\n.list-inline-item:not(:last-child) {\n  margin-right: 0.5rem;\n}\n\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\n.blockquote {\n  margin-bottom: 1rem;\n  font-size: 1.25rem;\n}\n\n.blockquote-footer {\n  display: block;\n  font-size: 80%;\n  color: #6c757d;\n}\n\n.blockquote-footer::before {\n  content: \"\\2014 \\00A0\";\n}\n\n.img-fluid {\n  max-width: 100%;\n  height: auto;\n}\n\n.img-thumbnail {\n  padding: 0.25rem;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n  border-radius: 0.25rem;\n  max-width: 100%;\n  height: auto;\n}\n\n.figure {\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: 0.5rem;\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: 90%;\n  color: #6c757d;\n}\n\ncode {\n  font-size: 87.5%;\n  color: #e83e8c;\n  word-break: break-word;\n}\n\na > code {\n  color: inherit;\n}\n\nkbd {\n  padding: 0.2rem 0.4rem;\n  font-size: 87.5%;\n  color: #fff;\n  background-color: #212529;\n  border-radius: 0.2rem;\n}\n\nkbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n}\n\npre {\n  display: block;\n  font-size: 87.5%;\n  color: #212529;\n}\n\npre code {\n  font-size: inherit;\n  color: inherit;\n  word-break: normal;\n}\n\n.pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n\n.container {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n@media (min-width: 576px) {\n  .container {\n    max-width: 540px;\n  }\n}\n\n@media (min-width: 768px) {\n  .container {\n    max-width: 720px;\n  }\n}\n\n@media (min-width: 992px) {\n  .container {\n    max-width: 960px;\n  }\n}\n\n@media (min-width: 1200px) {\n  .container {\n    max-width: 1140px;\n  }\n}\n\n.container-fluid {\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n\n.row {\n  display: flex;\n  flex-wrap: wrap;\n  margin-right: -15px;\n  margin-left: -15px;\n}\n\n.no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.no-gutters > .col,\n.no-gutters > [class*=\"col-\"] {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.col-1, .col-2, .col-3, .col-4, .col-5, .col-6, .col-7, .col-8, .col-9, .col-10, .col-11, .col-12, .col,\n.col-auto, .col-sm-1, .col-sm-2, .col-sm-3, .col-sm-4, .col-sm-5, .col-sm-6, .col-sm-7, .col-sm-8, .col-sm-9, .col-sm-10, .col-sm-11, .col-sm-12, .col-sm,\n.col-sm-auto, .col-md-1, .col-md-2, .col-md-3, .col-md-4, .col-md-5, .col-md-6, .col-md-7, .col-md-8, .col-md-9, .col-md-10, .col-md-11, .col-md-12, .col-md,\n.col-md-auto, .col-lg-1, .col-lg-2, .col-lg-3, .col-lg-4, .col-lg-5, .col-lg-6, .col-lg-7, .col-lg-8, .col-lg-9, .col-lg-10, .col-lg-11, .col-lg-12, .col-lg,\n.col-lg-auto, .col-xl-1, .col-xl-2, .col-xl-3, .col-xl-4, .col-xl-5, .col-xl-6, .col-xl-7, .col-xl-8, .col-xl-9, .col-xl-10, .col-xl-11, .col-xl-12, .col-xl,\n.col-xl-auto {\n  position: relative;\n  width: 100%;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n\n.col {\n  flex-basis: 0;\n  flex-grow: 1;\n  max-width: 100%;\n}\n\n.col-auto {\n  flex: 0 0 auto;\n  width: auto;\n  max-width: none;\n}\n\n.col-1 {\n  flex: 0 0 8.333333%;\n  max-width: 8.333333%;\n}\n\n.col-2 {\n  flex: 0 0 16.666667%;\n  max-width: 16.666667%;\n}\n\n.col-3 {\n  flex: 0 0 25%;\n  max-width: 25%;\n}\n\n.col-4 {\n  flex: 0 0 33.333333%;\n  max-width: 33.333333%;\n}\n\n.col-5 {\n  flex: 0 0 41.666667%;\n  max-width: 41.666667%;\n}\n\n.col-6 {\n  flex: 0 0 50%;\n  max-width: 50%;\n}\n\n.col-7 {\n  flex: 0 0 58.333333%;\n  max-width: 58.333333%;\n}\n\n.col-8 {\n  flex: 0 0 66.666667%;\n  max-width: 66.666667%;\n}\n\n.col-9 {\n  flex: 0 0 75%;\n  max-width: 75%;\n}\n\n.col-10 {\n  flex: 0 0 83.333333%;\n  max-width: 83.333333%;\n}\n\n.col-11 {\n  flex: 0 0 91.666667%;\n  max-width: 91.666667%;\n}\n\n.col-12 {\n  flex: 0 0 100%;\n  max-width: 100%;\n}\n\n.order-first {\n  order: -1;\n}\n\n.order-last {\n  order: 13;\n}\n\n.order-0 {\n  order: 0;\n}\n\n.order-1 {\n  order: 1;\n}\n\n.order-2 {\n  order: 2;\n}\n\n.order-3 {\n  order: 3;\n}\n\n.order-4 {\n  order: 4;\n}\n\n.order-5 {\n  order: 5;\n}\n\n.order-6 {\n  order: 6;\n}\n\n.order-7 {\n  order: 7;\n}\n\n.order-8 {\n  order: 8;\n}\n\n.order-9 {\n  order: 9;\n}\n\n.order-10 {\n  order: 10;\n}\n\n.order-11 {\n  order: 11;\n}\n\n.order-12 {\n  order: 12;\n}\n\n.offset-1 {\n  margin-left: 8.333333%;\n}\n\n.offset-2 {\n  margin-left: 16.666667%;\n}\n\n.offset-3 {\n  margin-left: 25%;\n}\n\n.offset-4 {\n  margin-left: 33.333333%;\n}\n\n.offset-5 {\n  margin-left: 41.666667%;\n}\n\n.offset-6 {\n  margin-left: 50%;\n}\n\n.offset-7 {\n  margin-left: 58.333333%;\n}\n\n.offset-8 {\n  margin-left: 66.666667%;\n}\n\n.offset-9 {\n  margin-left: 75%;\n}\n\n.offset-10 {\n  margin-left: 83.333333%;\n}\n\n.offset-11 {\n  margin-left: 91.666667%;\n}\n\n@media (min-width: 576px) {\n  .col-sm {\n    flex-basis: 0;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-sm-auto {\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-sm-1 {\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-sm-2 {\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-sm-3 {\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-sm-4 {\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-sm-5 {\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-sm-6 {\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-sm-7 {\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-sm-8 {\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-sm-9 {\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-sm-10 {\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-sm-11 {\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-sm-12 {\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-sm-first {\n    order: -1;\n  }\n  .order-sm-last {\n    order: 13;\n  }\n  .order-sm-0 {\n    order: 0;\n  }\n  .order-sm-1 {\n    order: 1;\n  }\n  .order-sm-2 {\n    order: 2;\n  }\n  .order-sm-3 {\n    order: 3;\n  }\n  .order-sm-4 {\n    order: 4;\n  }\n  .order-sm-5 {\n    order: 5;\n  }\n  .order-sm-6 {\n    order: 6;\n  }\n  .order-sm-7 {\n    order: 7;\n  }\n  .order-sm-8 {\n    order: 8;\n  }\n  .order-sm-9 {\n    order: 9;\n  }\n  .order-sm-10 {\n    order: 10;\n  }\n  .order-sm-11 {\n    order: 11;\n  }\n  .order-sm-12 {\n    order: 12;\n  }\n  .offset-sm-0 {\n    margin-left: 0;\n  }\n  .offset-sm-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-sm-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-sm-3 {\n    margin-left: 25%;\n  }\n  .offset-sm-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-sm-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-sm-6 {\n    margin-left: 50%;\n  }\n  .offset-sm-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-sm-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-sm-9 {\n    margin-left: 75%;\n  }\n  .offset-sm-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-sm-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n@media (min-width: 768px) {\n  .col-md {\n    flex-basis: 0;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-md-auto {\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-md-1 {\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-md-2 {\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-md-3 {\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-md-4 {\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-md-5 {\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-md-6 {\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-md-7 {\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-md-8 {\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-md-9 {\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-md-10 {\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-md-11 {\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-md-12 {\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-md-first {\n    order: -1;\n  }\n  .order-md-last {\n    order: 13;\n  }\n  .order-md-0 {\n    order: 0;\n  }\n  .order-md-1 {\n    order: 1;\n  }\n  .order-md-2 {\n    order: 2;\n  }\n  .order-md-3 {\n    order: 3;\n  }\n  .order-md-4 {\n    order: 4;\n  }\n  .order-md-5 {\n    order: 5;\n  }\n  .order-md-6 {\n    order: 6;\n  }\n  .order-md-7 {\n    order: 7;\n  }\n  .order-md-8 {\n    order: 8;\n  }\n  .order-md-9 {\n    order: 9;\n  }\n  .order-md-10 {\n    order: 10;\n  }\n  .order-md-11 {\n    order: 11;\n  }\n  .order-md-12 {\n    order: 12;\n  }\n  .offset-md-0 {\n    margin-left: 0;\n  }\n  .offset-md-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-md-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-md-3 {\n    margin-left: 25%;\n  }\n  .offset-md-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-md-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-md-6 {\n    margin-left: 50%;\n  }\n  .offset-md-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-md-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-md-9 {\n    margin-left: 75%;\n  }\n  .offset-md-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-md-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n@media (min-width: 992px) {\n  .col-lg {\n    flex-basis: 0;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-lg-auto {\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-lg-1 {\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-lg-2 {\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-lg-3 {\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-lg-4 {\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-lg-5 {\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-lg-6 {\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-lg-7 {\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-lg-8 {\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-lg-9 {\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-lg-10 {\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-lg-11 {\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-lg-12 {\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-lg-first {\n    order: -1;\n  }\n  .order-lg-last {\n    order: 13;\n  }\n  .order-lg-0 {\n    order: 0;\n  }\n  .order-lg-1 {\n    order: 1;\n  }\n  .order-lg-2 {\n    order: 2;\n  }\n  .order-lg-3 {\n    order: 3;\n  }\n  .order-lg-4 {\n    order: 4;\n  }\n  .order-lg-5 {\n    order: 5;\n  }\n  .order-lg-6 {\n    order: 6;\n  }\n  .order-lg-7 {\n    order: 7;\n  }\n  .order-lg-8 {\n    order: 8;\n  }\n  .order-lg-9 {\n    order: 9;\n  }\n  .order-lg-10 {\n    order: 10;\n  }\n  .order-lg-11 {\n    order: 11;\n  }\n  .order-lg-12 {\n    order: 12;\n  }\n  .offset-lg-0 {\n    margin-left: 0;\n  }\n  .offset-lg-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-lg-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-lg-3 {\n    margin-left: 25%;\n  }\n  .offset-lg-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-lg-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-lg-6 {\n    margin-left: 50%;\n  }\n  .offset-lg-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-lg-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-lg-9 {\n    margin-left: 75%;\n  }\n  .offset-lg-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-lg-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n@media (min-width: 1200px) {\n  .col-xl {\n    flex-basis: 0;\n    flex-grow: 1;\n    max-width: 100%;\n  }\n  .col-xl-auto {\n    flex: 0 0 auto;\n    width: auto;\n    max-width: none;\n  }\n  .col-xl-1 {\n    flex: 0 0 8.333333%;\n    max-width: 8.333333%;\n  }\n  .col-xl-2 {\n    flex: 0 0 16.666667%;\n    max-width: 16.666667%;\n  }\n  .col-xl-3 {\n    flex: 0 0 25%;\n    max-width: 25%;\n  }\n  .col-xl-4 {\n    flex: 0 0 33.333333%;\n    max-width: 33.333333%;\n  }\n  .col-xl-5 {\n    flex: 0 0 41.666667%;\n    max-width: 41.666667%;\n  }\n  .col-xl-6 {\n    flex: 0 0 50%;\n    max-width: 50%;\n  }\n  .col-xl-7 {\n    flex: 0 0 58.333333%;\n    max-width: 58.333333%;\n  }\n  .col-xl-8 {\n    flex: 0 0 66.666667%;\n    max-width: 66.666667%;\n  }\n  .col-xl-9 {\n    flex: 0 0 75%;\n    max-width: 75%;\n  }\n  .col-xl-10 {\n    flex: 0 0 83.333333%;\n    max-width: 83.333333%;\n  }\n  .col-xl-11 {\n    flex: 0 0 91.666667%;\n    max-width: 91.666667%;\n  }\n  .col-xl-12 {\n    flex: 0 0 100%;\n    max-width: 100%;\n  }\n  .order-xl-first {\n    order: -1;\n  }\n  .order-xl-last {\n    order: 13;\n  }\n  .order-xl-0 {\n    order: 0;\n  }\n  .order-xl-1 {\n    order: 1;\n  }\n  .order-xl-2 {\n    order: 2;\n  }\n  .order-xl-3 {\n    order: 3;\n  }\n  .order-xl-4 {\n    order: 4;\n  }\n  .order-xl-5 {\n    order: 5;\n  }\n  .order-xl-6 {\n    order: 6;\n  }\n  .order-xl-7 {\n    order: 7;\n  }\n  .order-xl-8 {\n    order: 8;\n  }\n  .order-xl-9 {\n    order: 9;\n  }\n  .order-xl-10 {\n    order: 10;\n  }\n  .order-xl-11 {\n    order: 11;\n  }\n  .order-xl-12 {\n    order: 12;\n  }\n  .offset-xl-0 {\n    margin-left: 0;\n  }\n  .offset-xl-1 {\n    margin-left: 8.333333%;\n  }\n  .offset-xl-2 {\n    margin-left: 16.666667%;\n  }\n  .offset-xl-3 {\n    margin-left: 25%;\n  }\n  .offset-xl-4 {\n    margin-left: 33.333333%;\n  }\n  .offset-xl-5 {\n    margin-left: 41.666667%;\n  }\n  .offset-xl-6 {\n    margin-left: 50%;\n  }\n  .offset-xl-7 {\n    margin-left: 58.333333%;\n  }\n  .offset-xl-8 {\n    margin-left: 66.666667%;\n  }\n  .offset-xl-9 {\n    margin-left: 75%;\n  }\n  .offset-xl-10 {\n    margin-left: 83.333333%;\n  }\n  .offset-xl-11 {\n    margin-left: 91.666667%;\n  }\n}\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 1rem;\n  background-color: transparent;\n}\n\n.table th,\n.table td {\n  padding: 0.75rem;\n  vertical-align: top;\n  border-top: 1px solid #dee2e6;\n}\n\n.table thead th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #dee2e6;\n}\n\n.table tbody + tbody {\n  border-top: 2px solid #dee2e6;\n}\n\n.table .table {\n  background-color: #fff;\n}\n\n.table-sm th,\n.table-sm td {\n  padding: 0.3rem;\n}\n\n.table-bordered {\n  border: 1px solid #dee2e6;\n}\n\n.table-bordered th,\n.table-bordered td {\n  border: 1px solid #dee2e6;\n}\n\n.table-bordered thead th,\n.table-bordered thead td {\n  border-bottom-width: 2px;\n}\n\n.table-borderless th,\n.table-borderless td,\n.table-borderless thead th,\n.table-borderless tbody + tbody {\n  border: 0;\n}\n\n.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(0, 0, 0, 0.05);\n}\n\n.table-hover tbody tr:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-primary,\n.table-primary > th,\n.table-primary > td {\n  background-color: #b8daff;\n}\n\n.table-hover .table-primary:hover {\n  background-color: #9fcdff;\n}\n\n.table-hover .table-primary:hover > td,\n.table-hover .table-primary:hover > th {\n  background-color: #9fcdff;\n}\n\n.table-secondary,\n.table-secondary > th,\n.table-secondary > td {\n  background-color: #d6d8db;\n}\n\n.table-hover .table-secondary:hover {\n  background-color: #c8cbcf;\n}\n\n.table-hover .table-secondary:hover > td,\n.table-hover .table-secondary:hover > th {\n  background-color: #c8cbcf;\n}\n\n.table-success,\n.table-success > th,\n.table-success > td {\n  background-color: #c3e6cb;\n}\n\n.table-hover .table-success:hover {\n  background-color: #b1dfbb;\n}\n\n.table-hover .table-success:hover > td,\n.table-hover .table-success:hover > th {\n  background-color: #b1dfbb;\n}\n\n.table-info,\n.table-info > th,\n.table-info > td {\n  background-color: #bee5eb;\n}\n\n.table-hover .table-info:hover {\n  background-color: #abdde5;\n}\n\n.table-hover .table-info:hover > td,\n.table-hover .table-info:hover > th {\n  background-color: #abdde5;\n}\n\n.table-warning,\n.table-warning > th,\n.table-warning > td {\n  background-color: #ffeeba;\n}\n\n.table-hover .table-warning:hover {\n  background-color: #ffe8a1;\n}\n\n.table-hover .table-warning:hover > td,\n.table-hover .table-warning:hover > th {\n  background-color: #ffe8a1;\n}\n\n.table-danger,\n.table-danger > th,\n.table-danger > td {\n  background-color: #f5c6cb;\n}\n\n.table-hover .table-danger:hover {\n  background-color: #f1b0b7;\n}\n\n.table-hover .table-danger:hover > td,\n.table-hover .table-danger:hover > th {\n  background-color: #f1b0b7;\n}\n\n.table-light,\n.table-light > th,\n.table-light > td {\n  background-color: #fdfdfe;\n}\n\n.table-hover .table-light:hover {\n  background-color: #ececf6;\n}\n\n.table-hover .table-light:hover > td,\n.table-hover .table-light:hover > th {\n  background-color: #ececf6;\n}\n\n.table-dark,\n.table-dark > th,\n.table-dark > td {\n  background-color: #c6c8ca;\n}\n\n.table-hover .table-dark:hover {\n  background-color: #b9bbbe;\n}\n\n.table-hover .table-dark:hover > td,\n.table-hover .table-dark:hover > th {\n  background-color: #b9bbbe;\n}\n\n.table-active,\n.table-active > th,\n.table-active > td {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table-hover .table-active:hover > td,\n.table-hover .table-active:hover > th {\n  background-color: rgba(0, 0, 0, 0.075);\n}\n\n.table .thead-dark th {\n  color: #fff;\n  background-color: #212529;\n  border-color: #32383e;\n}\n\n.table .thead-light th {\n  color: #495057;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n\n.table-dark {\n  color: #fff;\n  background-color: #212529;\n}\n\n.table-dark th,\n.table-dark td,\n.table-dark thead th {\n  border-color: #32383e;\n}\n\n.table-dark.table-bordered {\n  border: 0;\n}\n\n.table-dark.table-striped tbody tr:nth-of-type(odd) {\n  background-color: rgba(255, 255, 255, 0.05);\n}\n\n.table-dark.table-hover tbody tr:hover {\n  background-color: rgba(255, 255, 255, 0.075);\n}\n\n@media (max-width: 575.98px) {\n  .table-responsive-sm {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-sm > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .table-responsive-md {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-md > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .table-responsive-lg {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-lg > .table-bordered {\n    border: 0;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .table-responsive-xl {\n    display: block;\n    width: 100%;\n    overflow-x: auto;\n    -webkit-overflow-scrolling: touch;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n  }\n  .table-responsive-xl > .table-bordered {\n    border: 0;\n  }\n}\n\n.table-responsive {\n  display: block;\n  width: 100%;\n  overflow-x: auto;\n  -webkit-overflow-scrolling: touch;\n  -ms-overflow-style: -ms-autohiding-scrollbar;\n}\n\n.table-responsive > .table-bordered {\n  border: 0;\n}\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  line-height: 1.5;\n  color: #495057;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .form-control {\n    transition: none;\n  }\n}\n\n.form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n\n.form-control:focus {\n  color: #495057;\n  background-color: #fff;\n  border-color: #80bdff;\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.form-control::placeholder {\n  color: #6c757d;\n  opacity: 1;\n}\n\n.form-control:disabled, .form-control[readonly] {\n  background-color: #e9ecef;\n  opacity: 1;\n}\n\nselect.form-control:not([size]):not([multiple]) {\n  height: calc(2.25rem + 2px);\n}\n\nselect.form-control:focus::-ms-value {\n  color: #495057;\n  background-color: #fff;\n}\n\n.form-control-file,\n.form-control-range {\n  display: block;\n  width: 100%;\n}\n\n.col-form-label {\n  padding-top: calc(0.375rem + 1px);\n  padding-bottom: calc(0.375rem + 1px);\n  margin-bottom: 0;\n  font-size: inherit;\n  line-height: 1.5;\n}\n\n.col-form-label-lg {\n  padding-top: calc(0.5rem + 1px);\n  padding-bottom: calc(0.5rem + 1px);\n  font-size: 1.25rem;\n  line-height: 1.5;\n}\n\n.col-form-label-sm {\n  padding-top: calc(0.25rem + 1px);\n  padding-bottom: calc(0.25rem + 1px);\n  font-size: 0.875rem;\n  line-height: 1.5;\n}\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  margin-bottom: 0;\n  line-height: 1.5;\n  color: #212529;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: 1px 0;\n}\n\n.form-control-plaintext.form-control-sm, .input-group-sm > .form-control-plaintext.form-control,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-sm > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-sm > .input-group-append > .form-control-plaintext.btn, .form-control-plaintext.form-control-lg, .input-group-lg > .form-control-plaintext.form-control,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-append > .form-control-plaintext.input-group-text,\n.input-group-lg > .input-group-prepend > .form-control-plaintext.btn,\n.input-group-lg > .input-group-append > .form-control-plaintext.btn {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.form-control-sm, .input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\nselect.form-control-sm:not([size]):not([multiple]), .input-group-sm > select.form-control:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-sm > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-sm > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(1.8125rem + 2px);\n}\n\n.form-control-lg, .input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\nselect.form-control-lg:not([size]):not([multiple]), .input-group-lg > select.form-control:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.input-group-text:not([size]):not([multiple]),\n.input-group-lg > .input-group-prepend > select.btn:not([size]):not([multiple]),\n.input-group-lg > .input-group-append > select.btn:not([size]):not([multiple]) {\n  height: calc(2.875rem + 2px);\n}\n\n.form-group {\n  margin-bottom: 1rem;\n}\n\n.form-text {\n  display: block;\n  margin-top: 0.25rem;\n}\n\n.form-row {\n  display: flex;\n  flex-wrap: wrap;\n  margin-right: -5px;\n  margin-left: -5px;\n}\n\n.form-row > .col,\n.form-row > [class*=\"col-\"] {\n  padding-right: 5px;\n  padding-left: 5px;\n}\n\n.form-check {\n  position: relative;\n  display: block;\n  padding-left: 1.25rem;\n}\n\n.form-check-input {\n  position: absolute;\n  margin-top: 0.3rem;\n  margin-left: -1.25rem;\n}\n\n.form-check-input:disabled ~ .form-check-label {\n  color: #6c757d;\n}\n\n.form-check-label {\n  margin-bottom: 0;\n}\n\n.form-check-inline {\n  display: inline-flex;\n  align-items: center;\n  padding-left: 0;\n  margin-right: 0.75rem;\n}\n\n.form-check-inline .form-check-input {\n  position: static;\n  margin-top: 0;\n  margin-right: 0.3125rem;\n  margin-left: 0;\n}\n\n.valid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #28a745;\n}\n\n.valid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(40, 167, 69, 0.8);\n  border-radius: .2rem;\n}\n\n.was-validated .form-control:valid, .form-control.is-valid, .was-validated\n.custom-select:valid,\n.custom-select.is-valid {\n  border-color: #28a745;\n}\n\n.was-validated .form-control:valid:focus, .form-control.is-valid:focus, .was-validated\n.custom-select:valid:focus,\n.custom-select.is-valid:focus {\n  border-color: #28a745;\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .form-control:valid ~ .valid-feedback,\n.was-validated .form-control:valid ~ .valid-tooltip, .form-control.is-valid ~ .valid-feedback,\n.form-control.is-valid ~ .valid-tooltip, .was-validated\n.custom-select:valid ~ .valid-feedback,\n.was-validated\n.custom-select:valid ~ .valid-tooltip,\n.custom-select.is-valid ~ .valid-feedback,\n.custom-select.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control-file:valid ~ .valid-feedback,\n.was-validated .form-control-file:valid ~ .valid-tooltip, .form-control-file.is-valid ~ .valid-feedback,\n.form-control-file.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label {\n  color: #28a745;\n}\n\n.was-validated .form-check-input:valid ~ .valid-feedback,\n.was-validated .form-check-input:valid ~ .valid-tooltip, .form-check-input.is-valid ~ .valid-feedback,\n.form-check-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label, .custom-control-input.is-valid ~ .custom-control-label {\n  color: #28a745;\n}\n\n.was-validated .custom-control-input:valid ~ .custom-control-label::before, .custom-control-input.is-valid ~ .custom-control-label::before {\n  background-color: #71dd8a;\n}\n\n.was-validated .custom-control-input:valid ~ .valid-feedback,\n.was-validated .custom-control-input:valid ~ .valid-tooltip, .custom-control-input.is-valid ~ .valid-feedback,\n.custom-control-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:valid:checked ~ .custom-control-label::before, .custom-control-input.is-valid:checked ~ .custom-control-label::before {\n  background-color: #34ce57;\n}\n\n.was-validated .custom-control-input:valid:focus ~ .custom-control-label::before, .custom-control-input.is-valid:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label, .custom-file-input.is-valid ~ .custom-file-label {\n  border-color: #28a745;\n}\n\n.was-validated .custom-file-input:valid ~ .custom-file-label::before, .custom-file-input.is-valid ~ .custom-file-label::before {\n  border-color: inherit;\n}\n\n.was-validated .custom-file-input:valid ~ .valid-feedback,\n.was-validated .custom-file-input:valid ~ .valid-tooltip, .custom-file-input.is-valid ~ .valid-feedback,\n.custom-file-input.is-valid ~ .valid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:valid:focus ~ .custom-file-label, .custom-file-input.is-valid:focus ~ .custom-file-label {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.25);\n}\n\n.invalid-feedback {\n  display: none;\n  width: 100%;\n  margin-top: 0.25rem;\n  font-size: 80%;\n  color: #dc3545;\n}\n\n.invalid-tooltip {\n  position: absolute;\n  top: 100%;\n  z-index: 5;\n  display: none;\n  max-width: 100%;\n  padding: .5rem;\n  margin-top: .1rem;\n  font-size: .875rem;\n  line-height: 1;\n  color: #fff;\n  background-color: rgba(220, 53, 69, 0.8);\n  border-radius: .2rem;\n}\n\n.was-validated .form-control:invalid, .form-control.is-invalid, .was-validated\n.custom-select:invalid,\n.custom-select.is-invalid {\n  border-color: #dc3545;\n}\n\n.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus, .was-validated\n.custom-select:invalid:focus,\n.custom-select.is-invalid:focus {\n  border-color: #dc3545;\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .form-control:invalid ~ .invalid-feedback,\n.was-validated .form-control:invalid ~ .invalid-tooltip, .form-control.is-invalid ~ .invalid-feedback,\n.form-control.is-invalid ~ .invalid-tooltip, .was-validated\n.custom-select:invalid ~ .invalid-feedback,\n.was-validated\n.custom-select:invalid ~ .invalid-tooltip,\n.custom-select.is-invalid ~ .invalid-feedback,\n.custom-select.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-control-file:invalid ~ .invalid-feedback,\n.was-validated .form-control-file:invalid ~ .invalid-tooltip, .form-control-file.is-invalid ~ .invalid-feedback,\n.form-control-file.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label {\n  color: #dc3545;\n}\n\n.was-validated .form-check-input:invalid ~ .invalid-feedback,\n.was-validated .form-check-input:invalid ~ .invalid-tooltip, .form-check-input.is-invalid ~ .invalid-feedback,\n.form-check-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label, .custom-control-input.is-invalid ~ .custom-control-label {\n  color: #dc3545;\n}\n\n.was-validated .custom-control-input:invalid ~ .custom-control-label::before, .custom-control-input.is-invalid ~ .custom-control-label::before {\n  background-color: #efa2a9;\n}\n\n.was-validated .custom-control-input:invalid ~ .invalid-feedback,\n.was-validated .custom-control-input:invalid ~ .invalid-tooltip, .custom-control-input.is-invalid ~ .invalid-feedback,\n.custom-control-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-control-input:invalid:checked ~ .custom-control-label::before, .custom-control-input.is-invalid:checked ~ .custom-control-label::before {\n  background-color: #e4606d;\n}\n\n.was-validated .custom-control-input:invalid:focus ~ .custom-control-label::before, .custom-control-input.is-invalid:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label, .custom-file-input.is-invalid ~ .custom-file-label {\n  border-color: #dc3545;\n}\n\n.was-validated .custom-file-input:invalid ~ .custom-file-label::before, .custom-file-input.is-invalid ~ .custom-file-label::before {\n  border-color: inherit;\n}\n\n.was-validated .custom-file-input:invalid ~ .invalid-feedback,\n.was-validated .custom-file-input:invalid ~ .invalid-tooltip, .custom-file-input.is-invalid ~ .invalid-feedback,\n.custom-file-input.is-invalid ~ .invalid-tooltip {\n  display: block;\n}\n\n.was-validated .custom-file-input:invalid:focus ~ .custom-file-label, .custom-file-input.is-invalid:focus ~ .custom-file-label {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.25);\n}\n\n.form-inline {\n  display: flex;\n  flex-flow: row wrap;\n  align-items: center;\n}\n\n.form-inline .form-check {\n  width: 100%;\n}\n\n@media (min-width: 576px) {\n  .form-inline label {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-group {\n    display: flex;\n    flex: 0 0 auto;\n    flex-flow: row wrap;\n    align-items: center;\n    margin-bottom: 0;\n  }\n  .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .form-inline .form-control-plaintext {\n    display: inline-block;\n  }\n  .form-inline .input-group,\n  .form-inline .custom-select {\n    width: auto;\n  }\n  .form-inline .form-check {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    width: auto;\n    padding-left: 0;\n  }\n  .form-inline .form-check-input {\n    position: relative;\n    margin-top: 0;\n    margin-right: 0.25rem;\n    margin-left: 0;\n  }\n  .form-inline .custom-control {\n    align-items: center;\n    justify-content: center;\n  }\n  .form-inline .custom-control-label {\n    margin-bottom: 0;\n  }\n}\n\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  user-select: none;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  line-height: 1.5;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .btn {\n    transition: none;\n  }\n}\n\n.btn:hover, .btn:focus {\n  text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n  opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.btn:not(:disabled):not(.disabled):active, .btn:not(:disabled):not(.disabled).active {\n  background-image: none;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n  pointer-events: none;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-primary:hover {\n  color: #fff;\n  background-color: #0069d9;\n  border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active, .btn-primary:not(:disabled):not(.disabled).active,\n.show > .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #0062cc;\n  border-color: #005cbf;\n}\n\n.btn-primary:not(:disabled):not(.disabled):active:focus, .btn-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #5a6268;\n  border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active, .btn-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #545b62;\n  border-color: #4e555b;\n}\n\n.btn-secondary:not(:disabled):not(.disabled):active:focus, .btn-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-success:hover {\n  color: #fff;\n  background-color: #218838;\n  border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n  color: #fff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-success:not(:disabled):not(.disabled):active, .btn-success:not(:disabled):not(.disabled).active,\n.show > .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: #1e7e34;\n  border-color: #1c7430;\n}\n\n.btn-success:not(:disabled):not(.disabled):active:focus, .btn-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-info {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-info:hover {\n  color: #fff;\n  background-color: #138496;\n  border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-info:not(:disabled):not(.disabled):active, .btn-info:not(:disabled):not(.disabled).active,\n.show > .btn-info.dropdown-toggle {\n  color: #fff;\n  background-color: #117a8b;\n  border-color: #10707f;\n}\n\n.btn-info:not(:disabled):not(.disabled):active:focus, .btn-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-warning {\n  color: #212529;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-warning:hover {\n  color: #212529;\n  background-color: #e0a800;\n  border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n  color: #212529;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active, .btn-warning:not(:disabled):not(.disabled).active,\n.show > .btn-warning.dropdown-toggle {\n  color: #212529;\n  background-color: #d39e00;\n  border-color: #c69500;\n}\n\n.btn-warning:not(:disabled):not(.disabled):active:focus, .btn-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c82333;\n  border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active, .btn-danger:not(:disabled):not(.disabled).active,\n.show > .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #bd2130;\n  border-color: #b21f2d;\n}\n\n.btn-danger:not(:disabled):not(.disabled):active:focus, .btn-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-light {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n  color: #212529;\n  background-color: #e2e6ea;\n  border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-light:not(:disabled):not(.disabled):active, .btn-light:not(:disabled):not(.disabled).active,\n.show > .btn-light.dropdown-toggle {\n  color: #212529;\n  background-color: #dae0e5;\n  border-color: #d3d9df;\n}\n\n.btn-light:not(:disabled):not(.disabled):active:focus, .btn-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-dark:hover {\n  color: #fff;\n  background-color: #23272b;\n  border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active, .btn-dark:not(:disabled):not(.disabled).active,\n.show > .btn-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #1d2124;\n  border-color: #171a1d;\n}\n\n.btn-dark:not(:disabled):not(.disabled):active:focus, .btn-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-primary {\n  color: #007bff;\n  background-color: transparent;\n  background-image: none;\n  border-color: #007bff;\n}\n\n.btn-outline-primary:hover {\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-outline-primary:focus, .btn-outline-primary.focus {\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-primary.disabled, .btn-outline-primary:disabled {\n  color: #007bff;\n  background-color: transparent;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active, .btn-outline-primary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-primary.dropdown-toggle {\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-outline-primary:not(:disabled):not(.disabled):active:focus, .btn-outline-primary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-primary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-outline-secondary {\n  color: #6c757d;\n  background-color: transparent;\n  background-image: none;\n  border-color: #6c757d;\n}\n\n.btn-outline-secondary:hover {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-outline-secondary:focus, .btn-outline-secondary.focus {\n  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-secondary.disabled, .btn-outline-secondary:disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active, .btn-outline-secondary:not(:disabled):not(.disabled).active,\n.show > .btn-outline-secondary.dropdown-toggle {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-outline-secondary:not(:disabled):not(.disabled):active:focus, .btn-outline-secondary:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-secondary.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-outline-success {\n  color: #28a745;\n  background-color: transparent;\n  background-image: none;\n  border-color: #28a745;\n}\n\n.btn-outline-success:hover {\n  color: #fff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-outline-success:focus, .btn-outline-success.focus {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-success.disabled, .btn-outline-success:disabled {\n  color: #28a745;\n  background-color: transparent;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active, .btn-outline-success:not(:disabled):not(.disabled).active,\n.show > .btn-outline-success.dropdown-toggle {\n  color: #fff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-outline-success:not(:disabled):not(.disabled):active:focus, .btn-outline-success:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-success.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-outline-info {\n  color: #17a2b8;\n  background-color: transparent;\n  background-image: none;\n  border-color: #17a2b8;\n}\n\n.btn-outline-info:hover {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-outline-info:focus, .btn-outline-info.focus {\n  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-info.disabled, .btn-outline-info:disabled {\n  color: #17a2b8;\n  background-color: transparent;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active, .btn-outline-info:not(:disabled):not(.disabled).active,\n.show > .btn-outline-info.dropdown-toggle {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-outline-info:not(:disabled):not(.disabled):active:focus, .btn-outline-info:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-info.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-outline-warning {\n  color: #ffc107;\n  background-color: transparent;\n  background-image: none;\n  border-color: #ffc107;\n}\n\n.btn-outline-warning:hover {\n  color: #212529;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-outline-warning:focus, .btn-outline-warning.focus {\n  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-warning.disabled, .btn-outline-warning:disabled {\n  color: #ffc107;\n  background-color: transparent;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active, .btn-outline-warning:not(:disabled):not(.disabled).active,\n.show > .btn-outline-warning.dropdown-toggle {\n  color: #212529;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-outline-warning:not(:disabled):not(.disabled):active:focus, .btn-outline-warning:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-warning.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-outline-danger {\n  color: #dc3545;\n  background-color: transparent;\n  background-image: none;\n  border-color: #dc3545;\n}\n\n.btn-outline-danger:hover {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-outline-danger:focus, .btn-outline-danger.focus {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-danger.disabled, .btn-outline-danger:disabled {\n  color: #dc3545;\n  background-color: transparent;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active, .btn-outline-danger:not(:disabled):not(.disabled).active,\n.show > .btn-outline-danger.dropdown-toggle {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-outline-danger:not(:disabled):not(.disabled):active:focus, .btn-outline-danger:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-danger.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-outline-light {\n  color: #f8f9fa;\n  background-color: transparent;\n  background-image: none;\n  border-color: #f8f9fa;\n}\n\n.btn-outline-light:hover {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-outline-light:focus, .btn-outline-light.focus {\n  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-light.disabled, .btn-outline-light:disabled {\n  color: #f8f9fa;\n  background-color: transparent;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active, .btn-outline-light:not(:disabled):not(.disabled).active,\n.show > .btn-outline-light.dropdown-toggle {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-outline-light:not(:disabled):not(.disabled):active:focus, .btn-outline-light:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-light.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-outline-dark {\n  color: #343a40;\n  background-color: transparent;\n  background-image: none;\n  border-color: #343a40;\n}\n\n.btn-outline-dark:hover {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-outline-dark:focus, .btn-outline-dark.focus {\n  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-outline-dark.disabled, .btn-outline-dark:disabled {\n  color: #343a40;\n  background-color: transparent;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active, .btn-outline-dark:not(:disabled):not(.disabled).active,\n.show > .btn-outline-dark.dropdown-toggle {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-outline-dark:not(:disabled):not(.disabled):active:focus, .btn-outline-dark:not(:disabled):not(.disabled).active:focus,\n.show > .btn-outline-dark.dropdown-toggle:focus {\n  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #007bff;\n  background-color: transparent;\n}\n\n.btn-link:hover {\n  color: #0056b3;\n  text-decoration: underline;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n  text-decoration: underline;\n  border-color: transparent;\n  box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n}\n\n.btn-lg, .btn-group-lg > .btn {\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\n.btn-sm, .btn-group-sm > .btn {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}\n\n.btn-block {\n  display: block;\n  width: 100%;\n}\n\n.btn-block + .btn-block {\n  margin-top: 0.5rem;\n}\n\ninput[type=\"submit\"].btn-block,\ninput[type=\"reset\"].btn-block,\ninput[type=\"button\"].btn-block {\n  width: 100%;\n}\n\n.fade {\n  transition: opacity 0.15s linear;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .fade {\n    transition: none;\n  }\n}\n\n.fade:not(.show) {\n  opacity: 0;\n}\n\n.collapse:not(.show) {\n  display: none;\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  transition: height 0.35s ease;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .collapsing {\n    transition: none;\n  }\n}\n\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n  position: relative;\n}\n\n.dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0;\n  border-left: 0.3em solid transparent;\n}\n\n.dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 10rem;\n  padding: 0.5rem 0;\n  margin: 0.125rem 0 0;\n  font-size: 1rem;\n  color: #212529;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 0.25rem;\n}\n\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n\n.dropup .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-top: 0;\n  margin-bottom: 0.125rem;\n}\n\n.dropup .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0;\n  border-right: 0.3em solid transparent;\n  border-bottom: 0.3em solid;\n  border-left: 0.3em solid transparent;\n}\n\n.dropup .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-menu {\n  top: 0;\n  right: auto;\n  left: 100%;\n  margin-top: 0;\n  margin-left: 0.125rem;\n}\n\n.dropright .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0;\n  border-bottom: 0.3em solid transparent;\n  border-left: 0.3em solid;\n}\n\n.dropright .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropright .dropdown-toggle::after {\n  vertical-align: 0;\n}\n\n.dropleft .dropdown-menu {\n  top: 0;\n  right: 100%;\n  left: auto;\n  margin-top: 0;\n  margin-right: 0.125rem;\n}\n\n.dropleft .dropdown-toggle::after {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n}\n\n.dropleft .dropdown-toggle::after {\n  display: none;\n}\n\n.dropleft .dropdown-toggle::before {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-right: 0.255em;\n  vertical-align: 0.255em;\n  content: \"\";\n  border-top: 0.3em solid transparent;\n  border-right: 0.3em solid;\n  border-bottom: 0.3em solid transparent;\n}\n\n.dropleft .dropdown-toggle:empty::after {\n  margin-left: 0;\n}\n\n.dropleft .dropdown-toggle::before {\n  vertical-align: 0;\n}\n\n.dropdown-menu[x-placement^=\"top\"], .dropdown-menu[x-placement^=\"right\"], .dropdown-menu[x-placement^=\"bottom\"], .dropdown-menu[x-placement^=\"left\"] {\n  right: auto;\n  bottom: auto;\n}\n\n.dropdown-divider {\n  height: 0;\n  margin: 0.5rem 0;\n  overflow: hidden;\n  border-top: 1px solid #e9ecef;\n}\n\n.dropdown-item {\n  display: block;\n  width: 100%;\n  padding: 0.25rem 1.5rem;\n  clear: both;\n  font-weight: 400;\n  color: #212529;\n  text-align: inherit;\n  white-space: nowrap;\n  background-color: transparent;\n  border: 0;\n}\n\n.dropdown-item:hover, .dropdown-item:focus {\n  color: #16181b;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n\n.dropdown-item.active, .dropdown-item:active {\n  color: #fff;\n  text-decoration: none;\n  background-color: #007bff;\n}\n\n.dropdown-item.disabled, .dropdown-item:disabled {\n  color: #6c757d;\n  background-color: transparent;\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n.dropdown-header {\n  display: block;\n  padding: 0.5rem 1.5rem;\n  margin-bottom: 0;\n  font-size: 0.875rem;\n  color: #6c757d;\n  white-space: nowrap;\n}\n\n.dropdown-item-text {\n  display: block;\n  padding: 0.25rem 1.5rem;\n  color: #212529;\n}\n\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle;\n}\n\n.btn-group > .btn,\n.btn-group-vertical > .btn {\n  position: relative;\n  flex: 0 1 auto;\n}\n\n.btn-group > .btn:hover,\n.btn-group-vertical > .btn:hover {\n  z-index: 1;\n}\n\n.btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active,\n.btn-group-vertical > .btn:focus,\n.btn-group-vertical > .btn:active,\n.btn-group-vertical > .btn.active {\n  z-index: 1;\n}\n\n.btn-group .btn + .btn,\n.btn-group .btn + .btn-group,\n.btn-group .btn-group + .btn,\n.btn-group .btn-group + .btn-group,\n.btn-group-vertical .btn + .btn,\n.btn-group-vertical .btn + .btn-group,\n.btn-group-vertical .btn-group + .btn,\n.btn-group-vertical .btn-group + .btn-group {\n  margin-left: -1px;\n}\n\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n}\n\n.btn-toolbar .input-group {\n  width: auto;\n}\n\n.btn-group > .btn:first-child {\n  margin-left: 0;\n}\n\n.btn-group > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.btn-group > .btn:not(:first-child),\n.btn-group > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.dropdown-toggle-split {\n  padding-right: 0.5625rem;\n  padding-left: 0.5625rem;\n}\n\n.dropdown-toggle-split::after,\n.dropup .dropdown-toggle-split::after,\n.dropright .dropdown-toggle-split::after {\n  margin-left: 0;\n}\n\n.dropleft .dropdown-toggle-split::before {\n  margin-right: 0;\n}\n\n.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split {\n  padding-right: 0.375rem;\n  padding-left: 0.375rem;\n}\n\n.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split {\n  padding-right: 0.75rem;\n  padding-left: 0.75rem;\n}\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n}\n\n.btn-group-vertical .btn,\n.btn-group-vertical .btn-group {\n  width: 100%;\n}\n\n.btn-group-vertical > .btn + .btn,\n.btn-group-vertical > .btn + .btn-group,\n.btn-group-vertical > .btn-group + .btn,\n.btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n\n.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle),\n.btn-group-vertical > .btn-group:not(:last-child) > .btn {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.btn-group-vertical > .btn:not(:first-child),\n.btn-group-vertical > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.btn-group-toggle > .btn,\n.btn-group-toggle > .btn-group > .btn {\n  margin-bottom: 0;\n}\n\n.btn-group-toggle > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn input[type=\"checkbox\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"radio\"],\n.btn-group-toggle > .btn-group > .btn input[type=\"checkbox\"] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: stretch;\n  width: 100%;\n}\n\n.input-group > .form-control,\n.input-group > .custom-select,\n.input-group > .custom-file {\n  position: relative;\n  flex: 1 1 auto;\n  width: 1%;\n  margin-bottom: 0;\n}\n\n.input-group > .form-control:focus,\n.input-group > .custom-select:focus,\n.input-group > .custom-file:focus {\n  z-index: 3;\n}\n\n.input-group > .form-control + .form-control,\n.input-group > .form-control + .custom-select,\n.input-group > .form-control + .custom-file,\n.input-group > .custom-select + .form-control,\n.input-group > .custom-select + .custom-select,\n.input-group > .custom-select + .custom-file,\n.input-group > .custom-file + .form-control,\n.input-group > .custom-file + .custom-select,\n.input-group > .custom-file + .custom-file {\n  margin-left: -1px;\n}\n\n.input-group > .form-control:not(:last-child),\n.input-group > .custom-select:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .form-control:not(:first-child),\n.input-group > .custom-select:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group > .custom-file {\n  display: flex;\n  align-items: center;\n}\n\n.input-group > .custom-file:not(:last-child) .custom-file-label,\n.input-group > .custom-file:not(:last-child) .custom-file-label::after {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .custom-file:not(:first-child) .custom-file-label {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.input-group-prepend,\n.input-group-append {\n  display: flex;\n}\n\n.input-group-prepend .btn,\n.input-group-append .btn {\n  position: relative;\n  z-index: 2;\n}\n\n.input-group-prepend .btn + .btn,\n.input-group-prepend .btn + .input-group-text,\n.input-group-prepend .input-group-text + .input-group-text,\n.input-group-prepend .input-group-text + .btn,\n.input-group-append .btn + .btn,\n.input-group-append .btn + .input-group-text,\n.input-group-append .input-group-text + .input-group-text,\n.input-group-append .input-group-text + .btn {\n  margin-left: -1px;\n}\n\n.input-group-prepend {\n  margin-right: -1px;\n}\n\n.input-group-append {\n  margin-left: -1px;\n}\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: 0.375rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  font-weight: 400;\n  line-height: 1.5;\n  color: #495057;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #e9ecef;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.input-group-text input[type=\"radio\"],\n.input-group-text input[type=\"checkbox\"] {\n  margin-top: 0;\n}\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.custom-control {\n  position: relative;\n  display: block;\n  min-height: 1.5rem;\n  padding-left: 1.5rem;\n}\n\n.custom-control-inline {\n  display: inline-flex;\n  margin-right: 1rem;\n}\n\n.custom-control-input {\n  position: absolute;\n  z-index: -1;\n  opacity: 0;\n}\n\n.custom-control-input:checked ~ .custom-control-label::before {\n  color: #fff;\n  background-color: #007bff;\n}\n\n.custom-control-input:focus ~ .custom-control-label::before {\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-control-input:active ~ .custom-control-label::before {\n  color: #fff;\n  background-color: #b3d7ff;\n}\n\n.custom-control-input:disabled ~ .custom-control-label {\n  color: #6c757d;\n}\n\n.custom-control-input:disabled ~ .custom-control-label::before {\n  background-color: #e9ecef;\n}\n\n.custom-control-label {\n  position: relative;\n  margin-bottom: 0;\n}\n\n.custom-control-label::before {\n  position: absolute;\n  top: 0.25rem;\n  left: -1.5rem;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  pointer-events: none;\n  content: \"\";\n  user-select: none;\n  background-color: #dee2e6;\n}\n\n.custom-control-label::after {\n  position: absolute;\n  top: 0.25rem;\n  left: -1.5rem;\n  display: block;\n  width: 1rem;\n  height: 1rem;\n  content: \"\";\n  background-repeat: no-repeat;\n  background-position: center center;\n  background-size: 50% 50%;\n}\n\n.custom-checkbox .custom-control-label::before {\n  border-radius: 0.25rem;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3E%3Cpath fill='%23fff' d='M6.564.75l-3.59 3.612-1.538-1.55L0 4.26 2.974 7.25 8 2.193z'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::before {\n  background-color: #007bff;\n}\n\n.custom-checkbox .custom-control-input:indeterminate ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 4'%3E%3Cpath stroke='%23fff' d='M0 2h4'/%3E%3C/svg%3E\");\n}\n\n.custom-checkbox .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-checkbox .custom-control-input:disabled:indeterminate ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-radio .custom-control-label::before {\n  border-radius: 50%;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::before {\n  background-color: #007bff;\n}\n\n.custom-radio .custom-control-input:checked ~ .custom-control-label::after {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3E%3Ccircle r='3' fill='%23fff'/%3E%3C/svg%3E\");\n}\n\n.custom-radio .custom-control-input:disabled:checked ~ .custom-control-label::before {\n  background-color: rgba(0, 123, 255, 0.5);\n}\n\n.custom-select {\n  display: inline-block;\n  width: 100%;\n  height: calc(2.25rem + 2px);\n  padding: 0.375rem 1.75rem 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #495057;\n  vertical-align: middle;\n  background: #fff url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 5'%3E%3Cpath fill='%23343a40' d='M2 0L0 2h4zm0 5L0 3h4z'/%3E%3C/svg%3E\") no-repeat right 0.75rem center;\n  background-size: 8px 10px;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n  appearance: none;\n}\n\n.custom-select:focus {\n  border-color: #80bdff;\n  outline: 0;\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.075), 0 0 5px rgba(128, 189, 255, 0.5);\n}\n\n.custom-select:focus::-ms-value {\n  color: #495057;\n  background-color: #fff;\n}\n\n.custom-select[multiple], .custom-select[size]:not([size=\"1\"]) {\n  height: auto;\n  padding-right: 0.75rem;\n  background-image: none;\n}\n\n.custom-select:disabled {\n  color: #6c757d;\n  background-color: #e9ecef;\n}\n\n.custom-select::-ms-expand {\n  opacity: 0;\n}\n\n.custom-select-sm {\n  height: calc(1.8125rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 75%;\n}\n\n.custom-select-lg {\n  height: calc(2.875rem + 2px);\n  padding-top: 0.375rem;\n  padding-bottom: 0.375rem;\n  font-size: 125%;\n}\n\n.custom-file {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  height: calc(2.25rem + 2px);\n  margin-bottom: 0;\n}\n\n.custom-file-input {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  height: calc(2.25rem + 2px);\n  margin: 0;\n  opacity: 0;\n}\n\n.custom-file-input:focus ~ .custom-file-label {\n  border-color: #80bdff;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-file-input:focus ~ .custom-file-label::after {\n  border-color: #80bdff;\n}\n\n.custom-file-input:lang(en) ~ .custom-file-label::after {\n  content: \"Browse\";\n}\n\n.custom-file-label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1;\n  height: calc(2.25rem + 2px);\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #495057;\n  background-color: #fff;\n  border: 1px solid #ced4da;\n  border-radius: 0.25rem;\n}\n\n.custom-file-label::after {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  z-index: 3;\n  display: block;\n  height: 2.25rem;\n  padding: 0.375rem 0.75rem;\n  line-height: 1.5;\n  color: #495057;\n  content: \"Browse\";\n  background-color: #e9ecef;\n  border-left: 1px solid #ced4da;\n  border-radius: 0 0.25rem 0.25rem 0;\n}\n\n.custom-range {\n  width: 100%;\n  padding-left: 0;\n  background-color: transparent;\n  appearance: none;\n}\n\n.custom-range:focus {\n  outline: none;\n}\n\n.custom-range::-moz-focus-outer {\n  border: 0;\n}\n\n.custom-range::-webkit-slider-thumb {\n  width: 1rem;\n  height: 1rem;\n  margin-top: -0.25rem;\n  background-color: #007bff;\n  border: 0;\n  border-radius: 1rem;\n  appearance: none;\n}\n\n.custom-range::-webkit-slider-thumb:focus {\n  outline: none;\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-webkit-slider-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range::-webkit-slider-runnable-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n\n.custom-range::-moz-range-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #007bff;\n  border: 0;\n  border-radius: 1rem;\n  appearance: none;\n}\n\n.custom-range::-moz-range-thumb:focus {\n  outline: none;\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-moz-range-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range::-moz-range-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: #dee2e6;\n  border-color: transparent;\n  border-radius: 1rem;\n}\n\n.custom-range::-ms-thumb {\n  width: 1rem;\n  height: 1rem;\n  background-color: #007bff;\n  border: 0;\n  border-radius: 1rem;\n  appearance: none;\n}\n\n.custom-range::-ms-thumb:focus {\n  outline: none;\n  box-shadow: 0 0 0 1px #fff, 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.custom-range::-ms-thumb:active {\n  background-color: #b3d7ff;\n}\n\n.custom-range::-ms-track {\n  width: 100%;\n  height: 0.5rem;\n  color: transparent;\n  cursor: pointer;\n  background-color: transparent;\n  border-color: transparent;\n  border-width: 0.5rem;\n}\n\n.custom-range::-ms-fill-lower {\n  background-color: #dee2e6;\n  border-radius: 1rem;\n}\n\n.custom-range::-ms-fill-upper {\n  margin-right: 15px;\n  background-color: #dee2e6;\n  border-radius: 1rem;\n}\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: 0.5rem 1rem;\n}\n\n.nav-link:hover, .nav-link:focus {\n  text-decoration: none;\n}\n\n.nav-link.disabled {\n  color: #6c757d;\n}\n\n.nav-tabs {\n  border-bottom: 1px solid #dee2e6;\n}\n\n.nav-tabs .nav-item {\n  margin-bottom: -1px;\n}\n\n.nav-tabs .nav-link {\n  border: 1px solid transparent;\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus {\n  border-color: #e9ecef #e9ecef #dee2e6;\n}\n\n.nav-tabs .nav-link.disabled {\n  color: #6c757d;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.nav-tabs .nav-link.active,\n.nav-tabs .nav-item.show .nav-link {\n  color: #495057;\n  background-color: #fff;\n  border-color: #dee2e6 #dee2e6 #fff;\n}\n\n.nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.nav-pills .nav-link {\n  border-radius: 0.25rem;\n}\n\n.nav-pills .nav-link.active,\n.nav-pills .show > .nav-link {\n  color: #fff;\n  background-color: #007bff;\n}\n\n.nav-fill .nav-item {\n  flex: 1 1 auto;\n  text-align: center;\n}\n\n.nav-justified .nav-item {\n  flex-basis: 0;\n  flex-grow: 1;\n  text-align: center;\n}\n\n.tab-content > .tab-pane {\n  display: none;\n}\n\n.tab-content > .active {\n  display: block;\n}\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n  padding: 0.5rem 1rem;\n}\n\n.navbar > .container,\n.navbar > .container-fluid {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: space-between;\n}\n\n.navbar-brand {\n  display: inline-block;\n  padding-top: 0.3125rem;\n  padding-bottom: 0.3125rem;\n  margin-right: 1rem;\n  font-size: 1.25rem;\n  line-height: inherit;\n  white-space: nowrap;\n}\n\n.navbar-brand:hover, .navbar-brand:focus {\n  text-decoration: none;\n}\n\n.navbar-nav {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.navbar-nav .nav-link {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-nav .dropdown-menu {\n  position: static;\n  float: none;\n}\n\n.navbar-text {\n  display: inline-block;\n  padding-top: 0.5rem;\n  padding-bottom: 0.5rem;\n}\n\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  align-items: center;\n}\n\n.navbar-toggler {\n  padding: 0.25rem 0.75rem;\n  font-size: 1.25rem;\n  line-height: 1;\n  background-color: transparent;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.navbar-toggler:hover, .navbar-toggler:focus {\n  text-decoration: none;\n}\n\n.navbar-toggler:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  content: \"\";\n  background: no-repeat center center;\n  background-size: 100% 100%;\n}\n\n@media (max-width: 575.98px) {\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 576px) {\n  .navbar-expand-sm {\n    flex-flow: row nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-sm .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-sm .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-sm .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-sm > .container,\n  .navbar-expand-sm > .container-fluid {\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-sm .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-sm .navbar-toggler {\n    display: none;\n  }\n}\n\n@media (max-width: 767.98px) {\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 768px) {\n  .navbar-expand-md {\n    flex-flow: row nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-md .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-md .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-md .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-md > .container,\n  .navbar-expand-md > .container-fluid {\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-md .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-md .navbar-toggler {\n    display: none;\n  }\n}\n\n@media (max-width: 991.98px) {\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 992px) {\n  .navbar-expand-lg {\n    flex-flow: row nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-lg .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-lg .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-lg .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-lg > .container,\n  .navbar-expand-lg > .container-fluid {\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-lg .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-lg .navbar-toggler {\n    display: none;\n  }\n}\n\n@media (max-width: 1199.98px) {\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n@media (min-width: 1200px) {\n  .navbar-expand-xl {\n    flex-flow: row nowrap;\n    justify-content: flex-start;\n  }\n  .navbar-expand-xl .navbar-nav {\n    flex-direction: row;\n  }\n  .navbar-expand-xl .navbar-nav .dropdown-menu {\n    position: absolute;\n  }\n  .navbar-expand-xl .navbar-nav .nav-link {\n    padding-right: 0.5rem;\n    padding-left: 0.5rem;\n  }\n  .navbar-expand-xl > .container,\n  .navbar-expand-xl > .container-fluid {\n    flex-wrap: nowrap;\n  }\n  .navbar-expand-xl .navbar-collapse {\n    display: flex !important;\n    flex-basis: auto;\n  }\n  .navbar-expand-xl .navbar-toggler {\n    display: none;\n  }\n}\n\n.navbar-expand {\n  flex-flow: row nowrap;\n  justify-content: flex-start;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  padding-right: 0;\n  padding-left: 0;\n}\n\n.navbar-expand .navbar-nav {\n  flex-direction: row;\n}\n\n.navbar-expand .navbar-nav .dropdown-menu {\n  position: absolute;\n}\n\n.navbar-expand .navbar-nav .nav-link {\n  padding-right: 0.5rem;\n  padding-left: 0.5rem;\n}\n\n.navbar-expand > .container,\n.navbar-expand > .container-fluid {\n  flex-wrap: nowrap;\n}\n\n.navbar-expand .navbar-collapse {\n  display: flex !important;\n  flex-basis: auto;\n}\n\n.navbar-expand .navbar-toggler {\n  display: none;\n}\n\n.navbar-light .navbar-brand {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-nav .nav-link {\n  color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus {\n  color: rgba(0, 0, 0, 0.7);\n}\n\n.navbar-light .navbar-nav .nav-link.disabled {\n  color: rgba(0, 0, 0, 0.3);\n}\n\n.navbar-light .navbar-nav .show > .nav-link,\n.navbar-light .navbar-nav .active > .nav-link,\n.navbar-light .navbar-nav .nav-link.show,\n.navbar-light .navbar-nav .nav-link.active {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-toggler {\n  color: rgba(0, 0, 0, 0.5);\n  border-color: rgba(0, 0, 0, 0.1);\n}\n\n.navbar-light .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(0, 0, 0, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-light .navbar-text {\n  color: rgba(0, 0, 0, 0.5);\n}\n\n.navbar-light .navbar-text a {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-light .navbar-text a:hover, .navbar-light .navbar-text a:focus {\n  color: rgba(0, 0, 0, 0.9);\n}\n\n.navbar-dark .navbar-brand {\n  color: #fff;\n}\n\n.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus {\n  color: #fff;\n}\n\n.navbar-dark .navbar-nav .nav-link {\n  color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus {\n  color: rgba(255, 255, 255, 0.75);\n}\n\n.navbar-dark .navbar-nav .nav-link.disabled {\n  color: rgba(255, 255, 255, 0.25);\n}\n\n.navbar-dark .navbar-nav .show > .nav-link,\n.navbar-dark .navbar-nav .active > .nav-link,\n.navbar-dark .navbar-nav .nav-link.show,\n.navbar-dark .navbar-nav .nav-link.active {\n  color: #fff;\n}\n\n.navbar-dark .navbar-toggler {\n  color: rgba(255, 255, 255, 0.5);\n  border-color: rgba(255, 255, 255, 0.1);\n}\n\n.navbar-dark .navbar-toggler-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg viewBox='0 0 30 30' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath stroke='rgba(255, 255, 255, 0.5)' stroke-width='2' stroke-linecap='round' stroke-miterlimit='10' d='M4 7h22M4 15h22M4 23h22'/%3E%3C/svg%3E\");\n}\n\n.navbar-dark .navbar-text {\n  color: rgba(255, 255, 255, 0.5);\n}\n\n.navbar-dark .navbar-text a {\n  color: #fff;\n}\n\n.navbar-dark .navbar-text a:hover, .navbar-dark .navbar-text a:focus {\n  color: #fff;\n}\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n  flex: 1 1 auto;\n  padding: 1.25rem;\n}\n\n.card-title {\n  margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n  margin-top: -0.375rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link:hover {\n  text-decoration: none;\n}\n\n.card-link + .card-link {\n  margin-left: 1.25rem;\n}\n\n.card-header {\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n  border-top: 0;\n}\n\n.card-footer {\n  padding: 0.75rem 1.25rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.625rem;\n  margin-bottom: -0.75rem;\n  margin-left: -0.625rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.625rem;\n  margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1.25rem;\n}\n\n.card-img {\n  width: 100%;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n  width: 100%;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n  width: 100%;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n\n.card-deck {\n  display: flex;\n  flex-direction: column;\n}\n\n.card-deck .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-deck {\n    flex-flow: row wrap;\n    margin-right: -15px;\n    margin-left: -15px;\n  }\n  .card-deck .card {\n    display: flex;\n    flex: 1 0 0%;\n    flex-direction: column;\n    margin-right: 15px;\n    margin-bottom: 0;\n    margin-left: 15px;\n  }\n}\n\n.card-group {\n  display: flex;\n  flex-direction: column;\n}\n\n.card-group > .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-group {\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:first-child {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-top,\n  .card-group > .card:first-child .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-bottom,\n  .card-group > .card:first-child .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:last-child {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-top,\n  .card-group > .card:last-child .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-bottom,\n  .card-group > .card:last-child .card-footer {\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:only-child {\n    border-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-top,\n  .card-group > .card:only-child .card-header {\n    border-top-left-radius: 0.25rem;\n    border-top-right-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-bottom,\n  .card-group > .card:only-child .card-footer {\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n    border-radius: 0;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n    border-radius: 0;\n  }\n}\n\n.card-columns .card {\n  margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n  .card-columns {\n    column-count: 3;\n    column-gap: 1.25rem;\n    orphans: 1;\n    widows: 1;\n  }\n  .card-columns .card {\n    display: inline-block;\n    width: 100%;\n  }\n}\n\n.accordion .card:not(:first-of-type):not(:last-of-type) {\n  border-bottom: 0;\n  border-radius: 0;\n}\n\n.accordion .card:not(:first-of-type) .card-header:first-child {\n  border-radius: 0;\n}\n\n.accordion .card:first-of-type {\n  border-bottom: 0;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n\n.accordion .card:last-of-type {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n\n.breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: 0.75rem 1rem;\n  margin-bottom: 1rem;\n  list-style: none;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.breadcrumb-item + .breadcrumb-item {\n  padding-left: 0.5rem;\n}\n\n.breadcrumb-item + .breadcrumb-item::before {\n  display: inline-block;\n  padding-right: 0.5rem;\n  color: #6c757d;\n  content: \"/\";\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: underline;\n}\n\n.breadcrumb-item + .breadcrumb-item:hover::before {\n  text-decoration: none;\n}\n\n.breadcrumb-item.active {\n  color: #6c757d;\n}\n\n.pagination {\n  display: flex;\n  padding-left: 0;\n  list-style: none;\n  border-radius: 0.25rem;\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  padding: 0.5rem 0.75rem;\n  margin-left: -1px;\n  line-height: 1.25;\n  color: #007bff;\n  background-color: #fff;\n  border: 1px solid #dee2e6;\n}\n\n.page-link:hover {\n  z-index: 2;\n  color: #0056b3;\n  text-decoration: none;\n  background-color: #e9ecef;\n  border-color: #dee2e6;\n}\n\n.page-link:focus {\n  z-index: 2;\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.page-link:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\n.page-item:first-child .page-link {\n  margin-left: 0;\n  border-top-left-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.page-item:last-child .page-link {\n  border-top-right-radius: 0.25rem;\n  border-bottom-right-radius: 0.25rem;\n}\n\n.page-item.active .page-link {\n  z-index: 1;\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.page-item.disabled .page-link {\n  color: #6c757d;\n  pointer-events: none;\n  cursor: auto;\n  background-color: #fff;\n  border-color: #dee2e6;\n}\n\n.pagination-lg .page-link {\n  padding: 0.75rem 1.5rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n}\n\n.pagination-lg .page-item:first-child .page-link {\n  border-top-left-radius: 0.3rem;\n  border-bottom-left-radius: 0.3rem;\n}\n\n.pagination-lg .page-item:last-child .page-link {\n  border-top-right-radius: 0.3rem;\n  border-bottom-right-radius: 0.3rem;\n}\n\n.pagination-sm .page-link {\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n}\n\n.pagination-sm .page-item:first-child .page-link {\n  border-top-left-radius: 0.2rem;\n  border-bottom-left-radius: 0.2rem;\n}\n\n.pagination-sm .page-item:last-child .page-link {\n  border-top-right-radius: 0.2rem;\n  border-bottom-right-radius: 0.2rem;\n}\n\n.badge {\n  display: inline-block;\n  padding: 0.25em 0.4em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.badge-pill {\n  padding-right: 0.6em;\n  padding-left: 0.6em;\n  border-radius: 10rem;\n}\n\n.badge-primary {\n  color: #fff;\n  background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0062cc;\n}\n\n.badge-secondary {\n  color: #fff;\n  background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #545b62;\n}\n\n.badge-success {\n  color: #fff;\n  background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #1e7e34;\n}\n\n.badge-info {\n  color: #fff;\n  background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #117a8b;\n}\n\n.badge-warning {\n  color: #212529;\n  background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #d39e00;\n}\n\n.badge-danger {\n  color: #fff;\n  background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #bd2130;\n}\n\n.badge-light {\n  color: #212529;\n  background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #dae0e5;\n}\n\n.badge-dark {\n  color: #fff;\n  background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #1d2124;\n}\n\n.jumbotron {\n  padding: 2rem 1rem;\n  margin-bottom: 2rem;\n  background-color: #e9ecef;\n  border-radius: 0.3rem;\n}\n\n@media (min-width: 576px) {\n  .jumbotron {\n    padding: 4rem 2rem;\n  }\n}\n\n.jumbotron-fluid {\n  padding-right: 0;\n  padding-left: 0;\n  border-radius: 0;\n}\n\n.alert {\n  position: relative;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n\n.alert-heading {\n  color: inherit;\n}\n\n.alert-link {\n  font-weight: 700;\n}\n\n.alert-dismissible {\n  padding-right: 4rem;\n}\n\n.alert-dismissible .close {\n  position: absolute;\n  top: 0;\n  right: 0;\n  padding: 0.75rem 1.25rem;\n  color: inherit;\n}\n\n.alert-primary {\n  color: #004085;\n  background-color: #cce5ff;\n  border-color: #b8daff;\n}\n\n.alert-primary hr {\n  border-top-color: #9fcdff;\n}\n\n.alert-primary .alert-link {\n  color: #002752;\n}\n\n.alert-secondary {\n  color: #383d41;\n  background-color: #e2e3e5;\n  border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n  border-top-color: #c8cbcf;\n}\n\n.alert-secondary .alert-link {\n  color: #202326;\n}\n\n.alert-success {\n  color: #155724;\n  background-color: #d4edda;\n  border-color: #c3e6cb;\n}\n\n.alert-success hr {\n  border-top-color: #b1dfbb;\n}\n\n.alert-success .alert-link {\n  color: #0b2e13;\n}\n\n.alert-info {\n  color: #0c5460;\n  background-color: #d1ecf1;\n  border-color: #bee5eb;\n}\n\n.alert-info hr {\n  border-top-color: #abdde5;\n}\n\n.alert-info .alert-link {\n  color: #062c33;\n}\n\n.alert-warning {\n  color: #856404;\n  background-color: #fff3cd;\n  border-color: #ffeeba;\n}\n\n.alert-warning hr {\n  border-top-color: #ffe8a1;\n}\n\n.alert-warning .alert-link {\n  color: #533f03;\n}\n\n.alert-danger {\n  color: #721c24;\n  background-color: #f8d7da;\n  border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n  border-top-color: #f1b0b7;\n}\n\n.alert-danger .alert-link {\n  color: #491217;\n}\n\n.alert-light {\n  color: #818182;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n\n.alert-light hr {\n  border-top-color: #ececf6;\n}\n\n.alert-light .alert-link {\n  color: #686868;\n}\n\n.alert-dark {\n  color: #1b1e21;\n  background-color: #d6d8d9;\n  border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n  border-top-color: #b9bbbe;\n}\n\n.alert-dark .alert-link {\n  color: #040505;\n}\n\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 1rem 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n\n.progress {\n  display: flex;\n  height: 1rem;\n  overflow: hidden;\n  font-size: 0.75rem;\n  background-color: #e9ecef;\n  border-radius: 0.25rem;\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  background-color: #007bff;\n  transition: width 0.6s ease;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .progress-bar {\n    transition: none;\n  }\n}\n\n.progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 1rem 1rem;\n}\n\n.progress-bar-animated {\n  animation: progress-bar-stripes 1s linear infinite;\n}\n\n.media {\n  display: flex;\n  align-items: flex-start;\n}\n\n.media-body {\n  flex: 1;\n}\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n  padding-left: 0;\n  margin-bottom: 0;\n}\n\n.list-group-item-action {\n  width: 100%;\n  color: #495057;\n  text-align: inherit;\n}\n\n.list-group-item-action:hover, .list-group-item-action:focus {\n  color: #495057;\n  text-decoration: none;\n  background-color: #f8f9fa;\n}\n\n.list-group-item-action:active {\n  color: #212529;\n  background-color: #e9ecef;\n}\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.list-group-item:hover, .list-group-item:focus {\n  z-index: 1;\n  text-decoration: none;\n}\n\n.list-group-item.disabled, .list-group-item:disabled {\n  color: #6c757d;\n  background-color: #fff;\n}\n\n.list-group-item.active {\n  z-index: 2;\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.list-group-flush .list-group-item {\n  border-right: 0;\n  border-left: 0;\n  border-radius: 0;\n}\n\n.list-group-flush:first-child .list-group-item:first-child {\n  border-top: 0;\n}\n\n.list-group-flush:last-child .list-group-item:last-child {\n  border-bottom: 0;\n}\n\n.list-group-item-primary {\n  color: #004085;\n  background-color: #b8daff;\n}\n\n.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus {\n  color: #004085;\n  background-color: #9fcdff;\n}\n\n.list-group-item-primary.list-group-item-action.active {\n  color: #fff;\n  background-color: #004085;\n  border-color: #004085;\n}\n\n.list-group-item-secondary {\n  color: #383d41;\n  background-color: #d6d8db;\n}\n\n.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus {\n  color: #383d41;\n  background-color: #c8cbcf;\n}\n\n.list-group-item-secondary.list-group-item-action.active {\n  color: #fff;\n  background-color: #383d41;\n  border-color: #383d41;\n}\n\n.list-group-item-success {\n  color: #155724;\n  background-color: #c3e6cb;\n}\n\n.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus {\n  color: #155724;\n  background-color: #b1dfbb;\n}\n\n.list-group-item-success.list-group-item-action.active {\n  color: #fff;\n  background-color: #155724;\n  border-color: #155724;\n}\n\n.list-group-item-info {\n  color: #0c5460;\n  background-color: #bee5eb;\n}\n\n.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus {\n  color: #0c5460;\n  background-color: #abdde5;\n}\n\n.list-group-item-info.list-group-item-action.active {\n  color: #fff;\n  background-color: #0c5460;\n  border-color: #0c5460;\n}\n\n.list-group-item-warning {\n  color: #856404;\n  background-color: #ffeeba;\n}\n\n.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus {\n  color: #856404;\n  background-color: #ffe8a1;\n}\n\n.list-group-item-warning.list-group-item-action.active {\n  color: #fff;\n  background-color: #856404;\n  border-color: #856404;\n}\n\n.list-group-item-danger {\n  color: #721c24;\n  background-color: #f5c6cb;\n}\n\n.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus {\n  color: #721c24;\n  background-color: #f1b0b7;\n}\n\n.list-group-item-danger.list-group-item-action.active {\n  color: #fff;\n  background-color: #721c24;\n  border-color: #721c24;\n}\n\n.list-group-item-light {\n  color: #818182;\n  background-color: #fdfdfe;\n}\n\n.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus {\n  color: #818182;\n  background-color: #ececf6;\n}\n\n.list-group-item-light.list-group-item-action.active {\n  color: #fff;\n  background-color: #818182;\n  border-color: #818182;\n}\n\n.list-group-item-dark {\n  color: #1b1e21;\n  background-color: #c6c8ca;\n}\n\n.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus {\n  color: #1b1e21;\n  background-color: #b9bbbe;\n}\n\n.list-group-item-dark.list-group-item-action.active {\n  color: #fff;\n  background-color: #1b1e21;\n  border-color: #1b1e21;\n}\n\n.close {\n  float: right;\n  font-size: 1.5rem;\n  font-weight: 700;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  opacity: .5;\n}\n\n.close:hover, .close:focus {\n  color: #000;\n  text-decoration: none;\n  opacity: .75;\n}\n\n.close:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\nbutton.close {\n  padding: 0;\n  background-color: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n\n.modal-open {\n  overflow: hidden;\n}\n\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  outline: 0;\n}\n\n.modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 0.5rem;\n  pointer-events: none;\n}\n\n.modal.fade .modal-dialog {\n  transition: transform 0.3s ease-out;\n  transform: translate(0, -25%);\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .modal.fade .modal-dialog {\n    transition: none;\n  }\n}\n\n.modal.show .modal-dialog {\n  transform: translate(0, 0);\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: calc(100% - (0.5rem * 2));\n}\n\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%;\n  pointer-events: auto;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n  outline: 0;\n}\n\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n\n.modal-backdrop.fade {\n  opacity: 0;\n}\n\n.modal-backdrop.show {\n  opacity: 0.5;\n}\n\n.modal-header {\n  display: flex;\n  align-items: flex-start;\n  justify-content: space-between;\n  padding: 1rem;\n  border-bottom: 1px solid #e9ecef;\n  border-top-left-radius: 0.3rem;\n  border-top-right-radius: 0.3rem;\n}\n\n.modal-header .close {\n  padding: 1rem;\n  margin: -1rem -1rem -1rem auto;\n}\n\n.modal-title {\n  margin-bottom: 0;\n  line-height: 1.5;\n}\n\n.modal-body {\n  position: relative;\n  flex: 1 1 auto;\n  padding: 1rem;\n}\n\n.modal-footer {\n  display: flex;\n  align-items: center;\n  justify-content: flex-end;\n  padding: 1rem;\n  border-top: 1px solid #e9ecef;\n}\n\n.modal-footer > :not(:first-child) {\n  margin-left: .25rem;\n}\n\n.modal-footer > :not(:last-child) {\n  margin-right: .25rem;\n}\n\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n@media (min-width: 576px) {\n  .modal-dialog {\n    max-width: 500px;\n    margin: 1.75rem auto;\n  }\n  .modal-dialog-centered {\n    min-height: calc(100% - (1.75rem * 2));\n  }\n  .modal-sm {\n    max-width: 300px;\n  }\n}\n\n@media (min-width: 992px) {\n  .modal-lg {\n    max-width: 800px;\n  }\n}\n\n.tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  margin: 0;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  opacity: 0;\n}\n\n.tooltip.show {\n  opacity: 0.9;\n}\n\n.tooltip .arrow {\n  position: absolute;\n  display: block;\n  width: 0.8rem;\n  height: 0.4rem;\n}\n\n.tooltip .arrow::before {\n  position: absolute;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-tooltip-top, .bs-tooltip-auto[x-placement^=\"top\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-top .arrow, .bs-tooltip-auto[x-placement^=\"top\"] .arrow {\n  bottom: 0;\n}\n\n.bs-tooltip-top .arrow::before, .bs-tooltip-auto[x-placement^=\"top\"] .arrow::before {\n  top: 0;\n  border-width: 0.4rem 0.4rem 0;\n  border-top-color: #000;\n}\n\n.bs-tooltip-right, .bs-tooltip-auto[x-placement^=\"right\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-right .arrow, .bs-tooltip-auto[x-placement^=\"right\"] .arrow {\n  left: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-right .arrow::before, .bs-tooltip-auto[x-placement^=\"right\"] .arrow::before {\n  right: 0;\n  border-width: 0.4rem 0.4rem 0.4rem 0;\n  border-right-color: #000;\n}\n\n.bs-tooltip-bottom, .bs-tooltip-auto[x-placement^=\"bottom\"] {\n  padding: 0.4rem 0;\n}\n\n.bs-tooltip-bottom .arrow, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow {\n  top: 0;\n}\n\n.bs-tooltip-bottom .arrow::before, .bs-tooltip-auto[x-placement^=\"bottom\"] .arrow::before {\n  bottom: 0;\n  border-width: 0 0.4rem 0.4rem;\n  border-bottom-color: #000;\n}\n\n.bs-tooltip-left, .bs-tooltip-auto[x-placement^=\"left\"] {\n  padding: 0 0.4rem;\n}\n\n.bs-tooltip-left .arrow, .bs-tooltip-auto[x-placement^=\"left\"] .arrow {\n  right: 0;\n  width: 0.4rem;\n  height: 0.8rem;\n}\n\n.bs-tooltip-left .arrow::before, .bs-tooltip-auto[x-placement^=\"left\"] .arrow::before {\n  left: 0;\n  border-width: 0.4rem 0 0.4rem 0.4rem;\n  border-left-color: #000;\n}\n\n.tooltip-inner {\n  max-width: 200px;\n  padding: 0.25rem 0.5rem;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 0.25rem;\n}\n\n.popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: block;\n  max-width: 276px;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.5;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n  font-size: 0.875rem;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 0.3rem;\n}\n\n.popover .arrow {\n  position: absolute;\n  display: block;\n  width: 1rem;\n  height: 0.5rem;\n  margin: 0 0.3rem;\n}\n\n.popover .arrow::before, .popover .arrow::after {\n  position: absolute;\n  display: block;\n  content: \"\";\n  border-color: transparent;\n  border-style: solid;\n}\n\n.bs-popover-top, .bs-popover-auto[x-placement^=\"top\"] {\n  margin-bottom: 0.5rem;\n}\n\n.bs-popover-top .arrow, .bs-popover-auto[x-placement^=\"top\"] .arrow {\n  bottom: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before,\n.bs-popover-top .arrow::after,\n.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n  border-width: 0.5rem 0.5rem 0;\n}\n\n.bs-popover-top .arrow::before, .bs-popover-auto[x-placement^=\"top\"] .arrow::before {\n  bottom: 0;\n  border-top-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-top .arrow::after,\n.bs-popover-auto[x-placement^=\"top\"] .arrow::after {\n  bottom: 1px;\n  border-top-color: #fff;\n}\n\n.bs-popover-right, .bs-popover-auto[x-placement^=\"right\"] {\n  margin-left: 0.5rem;\n}\n\n.bs-popover-right .arrow, .bs-popover-auto[x-placement^=\"right\"] .arrow {\n  left: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before,\n.bs-popover-right .arrow::after,\n.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n  border-width: 0.5rem 0.5rem 0.5rem 0;\n}\n\n.bs-popover-right .arrow::before, .bs-popover-auto[x-placement^=\"right\"] .arrow::before {\n  left: 0;\n  border-right-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-right .arrow::after,\n.bs-popover-auto[x-placement^=\"right\"] .arrow::after {\n  left: 1px;\n  border-right-color: #fff;\n}\n\n.bs-popover-bottom, .bs-popover-auto[x-placement^=\"bottom\"] {\n  margin-top: 0.5rem;\n}\n\n.bs-popover-bottom .arrow, .bs-popover-auto[x-placement^=\"bottom\"] .arrow {\n  top: calc((0.5rem + 1px) * -1);\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before,\n.bs-popover-bottom .arrow::after,\n.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n  border-width: 0 0.5rem 0.5rem 0.5rem;\n}\n\n.bs-popover-bottom .arrow::before, .bs-popover-auto[x-placement^=\"bottom\"] .arrow::before {\n  top: 0;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-bottom .arrow::after,\n.bs-popover-auto[x-placement^=\"bottom\"] .arrow::after {\n  top: 1px;\n  border-bottom-color: #fff;\n}\n\n.bs-popover-bottom .popover-header::before, .bs-popover-auto[x-placement^=\"bottom\"] .popover-header::before {\n  position: absolute;\n  top: 0;\n  left: 50%;\n  display: block;\n  width: 1rem;\n  margin-left: -0.5rem;\n  content: \"\";\n  border-bottom: 1px solid #f7f7f7;\n}\n\n.bs-popover-left, .bs-popover-auto[x-placement^=\"left\"] {\n  margin-right: 0.5rem;\n}\n\n.bs-popover-left .arrow, .bs-popover-auto[x-placement^=\"left\"] .arrow {\n  right: calc((0.5rem + 1px) * -1);\n  width: 0.5rem;\n  height: 1rem;\n  margin: 0.3rem 0;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before,\n.bs-popover-left .arrow::after,\n.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n  border-width: 0.5rem 0 0.5rem 0.5rem;\n}\n\n.bs-popover-left .arrow::before, .bs-popover-auto[x-placement^=\"left\"] .arrow::before {\n  right: 0;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n\n\n.bs-popover-left .arrow::after,\n.bs-popover-auto[x-placement^=\"left\"] .arrow::after {\n  right: 1px;\n  border-left-color: #fff;\n}\n\n.popover-header {\n  padding: 0.5rem 0.75rem;\n  margin-bottom: 0;\n  font-size: 1rem;\n  color: inherit;\n  background-color: #f7f7f7;\n  border-bottom: 1px solid #ebebeb;\n  border-top-left-radius: calc(0.3rem - 1px);\n  border-top-right-radius: calc(0.3rem - 1px);\n}\n\n.popover-header:empty {\n  display: none;\n}\n\n.popover-body {\n  padding: 0.5rem 0.75rem;\n  color: #212529;\n}\n\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  align-items: center;\n  width: 100%;\n  transition: transform 0.6s ease;\n  backface-visibility: hidden;\n  perspective: 1000px;\n}\n\n@media screen and (prefers-reduced-motion: reduce) {\n  .carousel-item {\n    transition: none;\n  }\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n  position: absolute;\n  top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n  transform: translateX(0);\n}\n\n@supports (transform-style: preserve-3d) {\n  .carousel-item-next.carousel-item-left,\n  .carousel-item-prev.carousel-item-right {\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n  transform: translateX(100%);\n}\n\n@supports (transform-style: preserve-3d) {\n  .carousel-item-next,\n  .active.carousel-item-right {\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n  transform: translateX(-100%);\n}\n\n@supports (transform-style: preserve-3d) {\n  .carousel-item-prev,\n  .active.carousel-item-left {\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n.carousel-fade .carousel-item {\n  opacity: 0;\n  transition-duration: .6s;\n  transition-property: opacity;\n}\n\n.carousel-fade .carousel-item.active,\n.carousel-fade .carousel-item-next.carousel-item-left,\n.carousel-fade .carousel-item-prev.carousel-item-right {\n  opacity: 1;\n}\n\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-right {\n  opacity: 0;\n}\n\n.carousel-fade .carousel-item-next,\n.carousel-fade .carousel-item-prev,\n.carousel-fade .carousel-item.active,\n.carousel-fade .active.carousel-item-left,\n.carousel-fade .active.carousel-item-prev {\n  transform: translateX(0);\n}\n\n@supports (transform-style: preserve-3d) {\n  .carousel-fade .carousel-item-next,\n  .carousel-fade .carousel-item-prev,\n  .carousel-fade .carousel-item.active,\n  .carousel-fade .active.carousel-item-left,\n  .carousel-fade .active.carousel-item-prev {\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 15%;\n  color: #fff;\n  text-align: center;\n  opacity: 0.5;\n}\n\n.carousel-control-prev:hover, .carousel-control-prev:focus,\n.carousel-control-next:hover,\n.carousel-control-next:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  opacity: .9;\n}\n\n.carousel-control-prev {\n  left: 0;\n}\n\n.carousel-control-next {\n  right: 0;\n}\n\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: 20px;\n  height: 20px;\n  background: transparent no-repeat center center;\n  background-size: 100% 100%;\n}\n\n.carousel-control-prev-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M5.25 0l-4 4 4 4 1.5-1.5-2.5-2.5 2.5-2.5-1.5-1.5z'/%3E%3C/svg%3E\");\n}\n\n.carousel-control-next-icon {\n  background-image: url(\"data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' fill='%23fff' viewBox='0 0 8 8'%3E%3Cpath d='M2.75 0l-1.5 1.5 2.5 2.5-2.5 2.5 1.5 1.5 4-4-4-4z'/%3E%3C/svg%3E\");\n}\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 10px;\n  left: 0;\n  z-index: 15;\n  display: flex;\n  justify-content: center;\n  padding-left: 0;\n  margin-right: 15%;\n  margin-left: 15%;\n  list-style: none;\n}\n\n.carousel-indicators li {\n  position: relative;\n  flex: 0 1 auto;\n  width: 30px;\n  height: 3px;\n  margin-right: 3px;\n  margin-left: 3px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: rgba(255, 255, 255, 0.5);\n}\n\n.carousel-indicators li::before {\n  position: absolute;\n  top: -10px;\n  left: 0;\n  display: inline-block;\n  width: 100%;\n  height: 10px;\n  content: \"\";\n}\n\n.carousel-indicators li::after {\n  position: absolute;\n  bottom: -10px;\n  left: 0;\n  display: inline-block;\n  width: 100%;\n  height: 10px;\n  content: \"\";\n}\n\n.carousel-indicators .active {\n  background-color: #fff;\n}\n\n.carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n}\n\n.align-baseline {\n  vertical-align: baseline !important;\n}\n\n.align-top {\n  vertical-align: top !important;\n}\n\n.align-middle {\n  vertical-align: middle !important;\n}\n\n.align-bottom {\n  vertical-align: bottom !important;\n}\n\n.align-text-bottom {\n  vertical-align: text-bottom !important;\n}\n\n.align-text-top {\n  vertical-align: text-top !important;\n}\n\n.bg-primary {\n  background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n  background-color: #0062cc !important;\n}\n\n.bg-secondary {\n  background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n  background-color: #545b62 !important;\n}\n\n.bg-success {\n  background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n  background-color: #1e7e34 !important;\n}\n\n.bg-info {\n  background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n  background-color: #117a8b !important;\n}\n\n.bg-warning {\n  background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n  background-color: #d39e00 !important;\n}\n\n.bg-danger {\n  background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n  background-color: #bd2130 !important;\n}\n\n.bg-light {\n  background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n  background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n  background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n  background-color: #1d2124 !important;\n}\n\n.bg-white {\n  background-color: #fff !important;\n}\n\n.bg-transparent {\n  background-color: transparent !important;\n}\n\n.border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-right-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-left-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #007bff !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #28a745 !important;\n}\n\n.border-info {\n  border-color: #17a2b8 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #343a40 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n\n.clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}\n\n.d-none {\n  display: none !important;\n}\n\n.d-inline {\n  display: inline !important;\n}\n\n.d-inline-block {\n  display: inline-block !important;\n}\n\n.d-block {\n  display: block !important;\n}\n\n.d-table {\n  display: table !important;\n}\n\n.d-table-row {\n  display: table-row !important;\n}\n\n.d-table-cell {\n  display: table-cell !important;\n}\n\n.d-flex {\n  display: flex !important;\n}\n\n.d-inline-flex {\n  display: inline-flex !important;\n}\n\n@media (min-width: 576px) {\n  .d-sm-none {\n    display: none !important;\n  }\n  .d-sm-inline {\n    display: inline !important;\n  }\n  .d-sm-inline-block {\n    display: inline-block !important;\n  }\n  .d-sm-block {\n    display: block !important;\n  }\n  .d-sm-table {\n    display: table !important;\n  }\n  .d-sm-table-row {\n    display: table-row !important;\n  }\n  .d-sm-table-cell {\n    display: table-cell !important;\n  }\n  .d-sm-flex {\n    display: flex !important;\n  }\n  .d-sm-inline-flex {\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .d-md-none {\n    display: none !important;\n  }\n  .d-md-inline {\n    display: inline !important;\n  }\n  .d-md-inline-block {\n    display: inline-block !important;\n  }\n  .d-md-block {\n    display: block !important;\n  }\n  .d-md-table {\n    display: table !important;\n  }\n  .d-md-table-row {\n    display: table-row !important;\n  }\n  .d-md-table-cell {\n    display: table-cell !important;\n  }\n  .d-md-flex {\n    display: flex !important;\n  }\n  .d-md-inline-flex {\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .d-lg-none {\n    display: none !important;\n  }\n  .d-lg-inline {\n    display: inline !important;\n  }\n  .d-lg-inline-block {\n    display: inline-block !important;\n  }\n  .d-lg-block {\n    display: block !important;\n  }\n  .d-lg-table {\n    display: table !important;\n  }\n  .d-lg-table-row {\n    display: table-row !important;\n  }\n  .d-lg-table-cell {\n    display: table-cell !important;\n  }\n  .d-lg-flex {\n    display: flex !important;\n  }\n  .d-lg-inline-flex {\n    display: inline-flex !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .d-xl-none {\n    display: none !important;\n  }\n  .d-xl-inline {\n    display: inline !important;\n  }\n  .d-xl-inline-block {\n    display: inline-block !important;\n  }\n  .d-xl-block {\n    display: block !important;\n  }\n  .d-xl-table {\n    display: table !important;\n  }\n  .d-xl-table-row {\n    display: table-row !important;\n  }\n  .d-xl-table-cell {\n    display: table-cell !important;\n  }\n  .d-xl-flex {\n    display: flex !important;\n  }\n  .d-xl-inline-flex {\n    display: inline-flex !important;\n  }\n}\n\n@media print {\n  .d-print-none {\n    display: none !important;\n  }\n  .d-print-inline {\n    display: inline !important;\n  }\n  .d-print-inline-block {\n    display: inline-block !important;\n  }\n  .d-print-block {\n    display: block !important;\n  }\n  .d-print-table {\n    display: table !important;\n  }\n  .d-print-table-row {\n    display: table-row !important;\n  }\n  .d-print-table-cell {\n    display: table-cell !important;\n  }\n  .d-print-flex {\n    display: flex !important;\n  }\n  .d-print-inline-flex {\n    display: inline-flex !important;\n  }\n}\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  overflow: hidden;\n}\n\n.embed-responsive::before {\n  display: block;\n  content: \"\";\n}\n\n.embed-responsive .embed-responsive-item,\n.embed-responsive iframe,\n.embed-responsive embed,\n.embed-responsive object,\n.embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n\n.embed-responsive-21by9::before {\n  padding-top: 42.857143%;\n}\n\n.embed-responsive-16by9::before {\n  padding-top: 56.25%;\n}\n\n.embed-responsive-4by3::before {\n  padding-top: 75%;\n}\n\n.embed-responsive-1by1::before {\n  padding-top: 100%;\n}\n\n.flex-row {\n  flex-direction: row !important;\n}\n\n.flex-column {\n  flex-direction: column !important;\n}\n\n.flex-row-reverse {\n  flex-direction: row-reverse !important;\n}\n\n.flex-column-reverse {\n  flex-direction: column-reverse !important;\n}\n\n.flex-wrap {\n  flex-wrap: wrap !important;\n}\n\n.flex-nowrap {\n  flex-wrap: nowrap !important;\n}\n\n.flex-wrap-reverse {\n  flex-wrap: wrap-reverse !important;\n}\n\n.flex-fill {\n  flex: 1 1 auto !important;\n}\n\n.flex-grow-0 {\n  flex-grow: 0 !important;\n}\n\n.flex-grow-1 {\n  flex-grow: 1 !important;\n}\n\n.flex-shrink-0 {\n  flex-shrink: 0 !important;\n}\n\n.flex-shrink-1 {\n  flex-shrink: 1 !important;\n}\n\n.justify-content-start {\n  justify-content: flex-start !important;\n}\n\n.justify-content-end {\n  justify-content: flex-end !important;\n}\n\n.justify-content-center {\n  justify-content: center !important;\n}\n\n.justify-content-between {\n  justify-content: space-between !important;\n}\n\n.justify-content-around {\n  justify-content: space-around !important;\n}\n\n.align-items-start {\n  align-items: flex-start !important;\n}\n\n.align-items-end {\n  align-items: flex-end !important;\n}\n\n.align-items-center {\n  align-items: center !important;\n}\n\n.align-items-baseline {\n  align-items: baseline !important;\n}\n\n.align-items-stretch {\n  align-items: stretch !important;\n}\n\n.align-content-start {\n  align-content: flex-start !important;\n}\n\n.align-content-end {\n  align-content: flex-end !important;\n}\n\n.align-content-center {\n  align-content: center !important;\n}\n\n.align-content-between {\n  align-content: space-between !important;\n}\n\n.align-content-around {\n  align-content: space-around !important;\n}\n\n.align-content-stretch {\n  align-content: stretch !important;\n}\n\n.align-self-auto {\n  align-self: auto !important;\n}\n\n.align-self-start {\n  align-self: flex-start !important;\n}\n\n.align-self-end {\n  align-self: flex-end !important;\n}\n\n.align-self-center {\n  align-self: center !important;\n}\n\n.align-self-baseline {\n  align-self: baseline !important;\n}\n\n.align-self-stretch {\n  align-self: stretch !important;\n}\n\n@media (min-width: 576px) {\n  .flex-sm-row {\n    flex-direction: row !important;\n  }\n  .flex-sm-column {\n    flex-direction: column !important;\n  }\n  .flex-sm-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n  .flex-sm-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n  .flex-sm-wrap {\n    flex-wrap: wrap !important;\n  }\n  .flex-sm-nowrap {\n    flex-wrap: nowrap !important;\n  }\n  .flex-sm-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-sm-fill {\n    flex: 1 1 auto !important;\n  }\n  .flex-sm-grow-0 {\n    flex-grow: 0 !important;\n  }\n  .flex-sm-grow-1 {\n    flex-grow: 1 !important;\n  }\n  .flex-sm-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n  .flex-sm-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n  .justify-content-sm-start {\n    justify-content: flex-start !important;\n  }\n  .justify-content-sm-end {\n    justify-content: flex-end !important;\n  }\n  .justify-content-sm-center {\n    justify-content: center !important;\n  }\n  .justify-content-sm-between {\n    justify-content: space-between !important;\n  }\n  .justify-content-sm-around {\n    justify-content: space-around !important;\n  }\n  .align-items-sm-start {\n    align-items: flex-start !important;\n  }\n  .align-items-sm-end {\n    align-items: flex-end !important;\n  }\n  .align-items-sm-center {\n    align-items: center !important;\n  }\n  .align-items-sm-baseline {\n    align-items: baseline !important;\n  }\n  .align-items-sm-stretch {\n    align-items: stretch !important;\n  }\n  .align-content-sm-start {\n    align-content: flex-start !important;\n  }\n  .align-content-sm-end {\n    align-content: flex-end !important;\n  }\n  .align-content-sm-center {\n    align-content: center !important;\n  }\n  .align-content-sm-between {\n    align-content: space-between !important;\n  }\n  .align-content-sm-around {\n    align-content: space-around !important;\n  }\n  .align-content-sm-stretch {\n    align-content: stretch !important;\n  }\n  .align-self-sm-auto {\n    align-self: auto !important;\n  }\n  .align-self-sm-start {\n    align-self: flex-start !important;\n  }\n  .align-self-sm-end {\n    align-self: flex-end !important;\n  }\n  .align-self-sm-center {\n    align-self: center !important;\n  }\n  .align-self-sm-baseline {\n    align-self: baseline !important;\n  }\n  .align-self-sm-stretch {\n    align-self: stretch !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .flex-md-row {\n    flex-direction: row !important;\n  }\n  .flex-md-column {\n    flex-direction: column !important;\n  }\n  .flex-md-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n  .flex-md-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n  .flex-md-wrap {\n    flex-wrap: wrap !important;\n  }\n  .flex-md-nowrap {\n    flex-wrap: nowrap !important;\n  }\n  .flex-md-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-md-fill {\n    flex: 1 1 auto !important;\n  }\n  .flex-md-grow-0 {\n    flex-grow: 0 !important;\n  }\n  .flex-md-grow-1 {\n    flex-grow: 1 !important;\n  }\n  .flex-md-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n  .flex-md-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n  .justify-content-md-start {\n    justify-content: flex-start !important;\n  }\n  .justify-content-md-end {\n    justify-content: flex-end !important;\n  }\n  .justify-content-md-center {\n    justify-content: center !important;\n  }\n  .justify-content-md-between {\n    justify-content: space-between !important;\n  }\n  .justify-content-md-around {\n    justify-content: space-around !important;\n  }\n  .align-items-md-start {\n    align-items: flex-start !important;\n  }\n  .align-items-md-end {\n    align-items: flex-end !important;\n  }\n  .align-items-md-center {\n    align-items: center !important;\n  }\n  .align-items-md-baseline {\n    align-items: baseline !important;\n  }\n  .align-items-md-stretch {\n    align-items: stretch !important;\n  }\n  .align-content-md-start {\n    align-content: flex-start !important;\n  }\n  .align-content-md-end {\n    align-content: flex-end !important;\n  }\n  .align-content-md-center {\n    align-content: center !important;\n  }\n  .align-content-md-between {\n    align-content: space-between !important;\n  }\n  .align-content-md-around {\n    align-content: space-around !important;\n  }\n  .align-content-md-stretch {\n    align-content: stretch !important;\n  }\n  .align-self-md-auto {\n    align-self: auto !important;\n  }\n  .align-self-md-start {\n    align-self: flex-start !important;\n  }\n  .align-self-md-end {\n    align-self: flex-end !important;\n  }\n  .align-self-md-center {\n    align-self: center !important;\n  }\n  .align-self-md-baseline {\n    align-self: baseline !important;\n  }\n  .align-self-md-stretch {\n    align-self: stretch !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .flex-lg-row {\n    flex-direction: row !important;\n  }\n  .flex-lg-column {\n    flex-direction: column !important;\n  }\n  .flex-lg-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n  .flex-lg-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n  .flex-lg-wrap {\n    flex-wrap: wrap !important;\n  }\n  .flex-lg-nowrap {\n    flex-wrap: nowrap !important;\n  }\n  .flex-lg-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-lg-fill {\n    flex: 1 1 auto !important;\n  }\n  .flex-lg-grow-0 {\n    flex-grow: 0 !important;\n  }\n  .flex-lg-grow-1 {\n    flex-grow: 1 !important;\n  }\n  .flex-lg-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n  .flex-lg-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n  .justify-content-lg-start {\n    justify-content: flex-start !important;\n  }\n  .justify-content-lg-end {\n    justify-content: flex-end !important;\n  }\n  .justify-content-lg-center {\n    justify-content: center !important;\n  }\n  .justify-content-lg-between {\n    justify-content: space-between !important;\n  }\n  .justify-content-lg-around {\n    justify-content: space-around !important;\n  }\n  .align-items-lg-start {\n    align-items: flex-start !important;\n  }\n  .align-items-lg-end {\n    align-items: flex-end !important;\n  }\n  .align-items-lg-center {\n    align-items: center !important;\n  }\n  .align-items-lg-baseline {\n    align-items: baseline !important;\n  }\n  .align-items-lg-stretch {\n    align-items: stretch !important;\n  }\n  .align-content-lg-start {\n    align-content: flex-start !important;\n  }\n  .align-content-lg-end {\n    align-content: flex-end !important;\n  }\n  .align-content-lg-center {\n    align-content: center !important;\n  }\n  .align-content-lg-between {\n    align-content: space-between !important;\n  }\n  .align-content-lg-around {\n    align-content: space-around !important;\n  }\n  .align-content-lg-stretch {\n    align-content: stretch !important;\n  }\n  .align-self-lg-auto {\n    align-self: auto !important;\n  }\n  .align-self-lg-start {\n    align-self: flex-start !important;\n  }\n  .align-self-lg-end {\n    align-self: flex-end !important;\n  }\n  .align-self-lg-center {\n    align-self: center !important;\n  }\n  .align-self-lg-baseline {\n    align-self: baseline !important;\n  }\n  .align-self-lg-stretch {\n    align-self: stretch !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .flex-xl-row {\n    flex-direction: row !important;\n  }\n  .flex-xl-column {\n    flex-direction: column !important;\n  }\n  .flex-xl-row-reverse {\n    flex-direction: row-reverse !important;\n  }\n  .flex-xl-column-reverse {\n    flex-direction: column-reverse !important;\n  }\n  .flex-xl-wrap {\n    flex-wrap: wrap !important;\n  }\n  .flex-xl-nowrap {\n    flex-wrap: nowrap !important;\n  }\n  .flex-xl-wrap-reverse {\n    flex-wrap: wrap-reverse !important;\n  }\n  .flex-xl-fill {\n    flex: 1 1 auto !important;\n  }\n  .flex-xl-grow-0 {\n    flex-grow: 0 !important;\n  }\n  .flex-xl-grow-1 {\n    flex-grow: 1 !important;\n  }\n  .flex-xl-shrink-0 {\n    flex-shrink: 0 !important;\n  }\n  .flex-xl-shrink-1 {\n    flex-shrink: 1 !important;\n  }\n  .justify-content-xl-start {\n    justify-content: flex-start !important;\n  }\n  .justify-content-xl-end {\n    justify-content: flex-end !important;\n  }\n  .justify-content-xl-center {\n    justify-content: center !important;\n  }\n  .justify-content-xl-between {\n    justify-content: space-between !important;\n  }\n  .justify-content-xl-around {\n    justify-content: space-around !important;\n  }\n  .align-items-xl-start {\n    align-items: flex-start !important;\n  }\n  .align-items-xl-end {\n    align-items: flex-end !important;\n  }\n  .align-items-xl-center {\n    align-items: center !important;\n  }\n  .align-items-xl-baseline {\n    align-items: baseline !important;\n  }\n  .align-items-xl-stretch {\n    align-items: stretch !important;\n  }\n  .align-content-xl-start {\n    align-content: flex-start !important;\n  }\n  .align-content-xl-end {\n    align-content: flex-end !important;\n  }\n  .align-content-xl-center {\n    align-content: center !important;\n  }\n  .align-content-xl-between {\n    align-content: space-between !important;\n  }\n  .align-content-xl-around {\n    align-content: space-around !important;\n  }\n  .align-content-xl-stretch {\n    align-content: stretch !important;\n  }\n  .align-self-xl-auto {\n    align-self: auto !important;\n  }\n  .align-self-xl-start {\n    align-self: flex-start !important;\n  }\n  .align-self-xl-end {\n    align-self: flex-end !important;\n  }\n  .align-self-xl-center {\n    align-self: center !important;\n  }\n  .align-self-xl-baseline {\n    align-self: baseline !important;\n  }\n  .align-self-xl-stretch {\n    align-self: stretch !important;\n  }\n}\n\n.float-left {\n  float: left !important;\n}\n\n.float-right {\n  float: right !important;\n}\n\n.float-none {\n  float: none !important;\n}\n\n@media (min-width: 576px) {\n  .float-sm-left {\n    float: left !important;\n  }\n  .float-sm-right {\n    float: right !important;\n  }\n  .float-sm-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .float-md-left {\n    float: left !important;\n  }\n  .float-md-right {\n    float: right !important;\n  }\n  .float-md-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .float-lg-left {\n    float: left !important;\n  }\n  .float-lg-right {\n    float: right !important;\n  }\n  .float-lg-none {\n    float: none !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .float-xl-left {\n    float: left !important;\n  }\n  .float-xl-right {\n    float: right !important;\n  }\n  .float-xl-none {\n    float: none !important;\n  }\n}\n\n.position-static {\n  position: static !important;\n}\n\n.position-relative {\n  position: relative !important;\n}\n\n.position-absolute {\n  position: absolute !important;\n}\n\n.position-fixed {\n  position: fixed !important;\n}\n\n.position-sticky {\n  position: sticky !important;\n}\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1030;\n}\n\n@supports (position: sticky) {\n  .sticky-top {\n    position: sticky;\n    top: 0;\n    z-index: 1020;\n  }\n}\n\n.sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border: 0;\n}\n\n.sr-only-focusable:active, .sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  overflow: visible;\n  clip: auto;\n  white-space: normal;\n}\n\n.shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}\n\n.w-25 {\n  width: 25% !important;\n}\n\n.w-50 {\n  width: 50% !important;\n}\n\n.w-75 {\n  width: 75% !important;\n}\n\n.w-100 {\n  width: 100% !important;\n}\n\n.w-auto {\n  width: auto !important;\n}\n\n.h-25 {\n  height: 25% !important;\n}\n\n.h-50 {\n  height: 50% !important;\n}\n\n.h-75 {\n  height: 75% !important;\n}\n\n.h-100 {\n  height: 100% !important;\n}\n\n.h-auto {\n  height: auto !important;\n}\n\n.mw-100 {\n  max-width: 100% !important;\n}\n\n.mh-100 {\n  max-height: 100% !important;\n}\n\n.m-0 {\n  margin: 0 !important;\n}\n\n.mt-0,\n.my-0 {\n  margin-top: 0 !important;\n}\n\n.mr-0,\n.mx-0 {\n  margin-right: 0 !important;\n}\n\n.mb-0,\n.my-0 {\n  margin-bottom: 0 !important;\n}\n\n.ml-0,\n.mx-0 {\n  margin-left: 0 !important;\n}\n\n.m-1 {\n  margin: 0.25rem !important;\n}\n\n.mt-1,\n.my-1 {\n  margin-top: 0.25rem !important;\n}\n\n.mr-1,\n.mx-1 {\n  margin-right: 0.25rem !important;\n}\n\n.mb-1,\n.my-1 {\n  margin-bottom: 0.25rem !important;\n}\n\n.ml-1,\n.mx-1 {\n  margin-left: 0.25rem !important;\n}\n\n.m-2 {\n  margin: 0.5rem !important;\n}\n\n.mt-2,\n.my-2 {\n  margin-top: 0.5rem !important;\n}\n\n.mr-2,\n.mx-2 {\n  margin-right: 0.5rem !important;\n}\n\n.mb-2,\n.my-2 {\n  margin-bottom: 0.5rem !important;\n}\n\n.ml-2,\n.mx-2 {\n  margin-left: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n  margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n  margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n  margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n  margin-left: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n  margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n  margin-left: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n  margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n  margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n  margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n  margin-left: 3rem !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n  padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n  padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n  padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n  padding-left: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n  padding-left: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n  padding-left: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n  padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n  padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n  padding-left: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n  padding-left: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n  padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n  padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n  padding-left: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n  margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n  margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n  margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n  margin-left: auto !important;\n}\n\n@media (min-width: 576px) {\n  .m-sm-0 {\n    margin: 0 !important;\n  }\n  .mt-sm-0,\n  .my-sm-0 {\n    margin-top: 0 !important;\n  }\n  .mr-sm-0,\n  .mx-sm-0 {\n    margin-right: 0 !important;\n  }\n  .mb-sm-0,\n  .my-sm-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-sm-0,\n  .mx-sm-0 {\n    margin-left: 0 !important;\n  }\n  .m-sm-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-sm-1,\n  .my-sm-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-sm-1,\n  .mx-sm-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-sm-1,\n  .my-sm-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-sm-1,\n  .mx-sm-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-sm-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-sm-2,\n  .my-sm-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-sm-2,\n  .mx-sm-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-sm-2,\n  .my-sm-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-sm-2,\n  .mx-sm-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-sm-3 {\n    margin: 1rem !important;\n  }\n  .mt-sm-3,\n  .my-sm-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-sm-3,\n  .mx-sm-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-sm-3,\n  .my-sm-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-sm-3,\n  .mx-sm-3 {\n    margin-left: 1rem !important;\n  }\n  .m-sm-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-sm-4,\n  .my-sm-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-sm-4,\n  .mx-sm-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-sm-4,\n  .my-sm-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-sm-4,\n  .mx-sm-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-sm-5 {\n    margin: 3rem !important;\n  }\n  .mt-sm-5,\n  .my-sm-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-sm-5,\n  .mx-sm-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-sm-5,\n  .my-sm-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-sm-5,\n  .mx-sm-5 {\n    margin-left: 3rem !important;\n  }\n  .p-sm-0 {\n    padding: 0 !important;\n  }\n  .pt-sm-0,\n  .py-sm-0 {\n    padding-top: 0 !important;\n  }\n  .pr-sm-0,\n  .px-sm-0 {\n    padding-right: 0 !important;\n  }\n  .pb-sm-0,\n  .py-sm-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-sm-0,\n  .px-sm-0 {\n    padding-left: 0 !important;\n  }\n  .p-sm-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-sm-1,\n  .py-sm-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-sm-1,\n  .px-sm-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-sm-1,\n  .py-sm-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-sm-1,\n  .px-sm-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-sm-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-sm-2,\n  .py-sm-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-sm-2,\n  .px-sm-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-sm-2,\n  .py-sm-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-sm-2,\n  .px-sm-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-sm-3 {\n    padding: 1rem !important;\n  }\n  .pt-sm-3,\n  .py-sm-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-sm-3,\n  .px-sm-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-sm-3,\n  .py-sm-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-sm-3,\n  .px-sm-3 {\n    padding-left: 1rem !important;\n  }\n  .p-sm-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-sm-4,\n  .py-sm-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-sm-4,\n  .px-sm-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-sm-4,\n  .py-sm-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-sm-4,\n  .px-sm-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-sm-5 {\n    padding: 3rem !important;\n  }\n  .pt-sm-5,\n  .py-sm-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-sm-5,\n  .px-sm-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-sm-5,\n  .py-sm-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-sm-5,\n  .px-sm-5 {\n    padding-left: 3rem !important;\n  }\n  .m-sm-auto {\n    margin: auto !important;\n  }\n  .mt-sm-auto,\n  .my-sm-auto {\n    margin-top: auto !important;\n  }\n  .mr-sm-auto,\n  .mx-sm-auto {\n    margin-right: auto !important;\n  }\n  .mb-sm-auto,\n  .my-sm-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-sm-auto,\n  .mx-sm-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .m-md-0 {\n    margin: 0 !important;\n  }\n  .mt-md-0,\n  .my-md-0 {\n    margin-top: 0 !important;\n  }\n  .mr-md-0,\n  .mx-md-0 {\n    margin-right: 0 !important;\n  }\n  .mb-md-0,\n  .my-md-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-md-0,\n  .mx-md-0 {\n    margin-left: 0 !important;\n  }\n  .m-md-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-md-1,\n  .my-md-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-md-1,\n  .mx-md-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-md-1,\n  .my-md-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-md-1,\n  .mx-md-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-md-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-md-2,\n  .my-md-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-md-2,\n  .mx-md-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-md-2,\n  .my-md-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-md-2,\n  .mx-md-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-md-3 {\n    margin: 1rem !important;\n  }\n  .mt-md-3,\n  .my-md-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-md-3,\n  .mx-md-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-md-3,\n  .my-md-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-md-3,\n  .mx-md-3 {\n    margin-left: 1rem !important;\n  }\n  .m-md-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-md-4,\n  .my-md-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-md-4,\n  .mx-md-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-md-4,\n  .my-md-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-md-4,\n  .mx-md-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-md-5 {\n    margin: 3rem !important;\n  }\n  .mt-md-5,\n  .my-md-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-md-5,\n  .mx-md-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-md-5,\n  .my-md-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-md-5,\n  .mx-md-5 {\n    margin-left: 3rem !important;\n  }\n  .p-md-0 {\n    padding: 0 !important;\n  }\n  .pt-md-0,\n  .py-md-0 {\n    padding-top: 0 !important;\n  }\n  .pr-md-0,\n  .px-md-0 {\n    padding-right: 0 !important;\n  }\n  .pb-md-0,\n  .py-md-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-md-0,\n  .px-md-0 {\n    padding-left: 0 !important;\n  }\n  .p-md-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-md-1,\n  .py-md-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-md-1,\n  .px-md-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-md-1,\n  .py-md-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-md-1,\n  .px-md-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-md-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-md-2,\n  .py-md-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-md-2,\n  .px-md-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-md-2,\n  .py-md-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-md-2,\n  .px-md-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-md-3 {\n    padding: 1rem !important;\n  }\n  .pt-md-3,\n  .py-md-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-md-3,\n  .px-md-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-md-3,\n  .py-md-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-md-3,\n  .px-md-3 {\n    padding-left: 1rem !important;\n  }\n  .p-md-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-md-4,\n  .py-md-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-md-4,\n  .px-md-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-md-4,\n  .py-md-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-md-4,\n  .px-md-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-md-5 {\n    padding: 3rem !important;\n  }\n  .pt-md-5,\n  .py-md-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-md-5,\n  .px-md-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-md-5,\n  .py-md-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-md-5,\n  .px-md-5 {\n    padding-left: 3rem !important;\n  }\n  .m-md-auto {\n    margin: auto !important;\n  }\n  .mt-md-auto,\n  .my-md-auto {\n    margin-top: auto !important;\n  }\n  .mr-md-auto,\n  .mx-md-auto {\n    margin-right: auto !important;\n  }\n  .mb-md-auto,\n  .my-md-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-md-auto,\n  .mx-md-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .m-lg-0 {\n    margin: 0 !important;\n  }\n  .mt-lg-0,\n  .my-lg-0 {\n    margin-top: 0 !important;\n  }\n  .mr-lg-0,\n  .mx-lg-0 {\n    margin-right: 0 !important;\n  }\n  .mb-lg-0,\n  .my-lg-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-lg-0,\n  .mx-lg-0 {\n    margin-left: 0 !important;\n  }\n  .m-lg-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-lg-1,\n  .my-lg-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-lg-1,\n  .mx-lg-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-lg-1,\n  .my-lg-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-lg-1,\n  .mx-lg-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-lg-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-lg-2,\n  .my-lg-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-lg-2,\n  .mx-lg-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-lg-2,\n  .my-lg-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-lg-2,\n  .mx-lg-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-lg-3 {\n    margin: 1rem !important;\n  }\n  .mt-lg-3,\n  .my-lg-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-lg-3,\n  .mx-lg-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-lg-3,\n  .my-lg-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-lg-3,\n  .mx-lg-3 {\n    margin-left: 1rem !important;\n  }\n  .m-lg-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-lg-4,\n  .my-lg-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-lg-4,\n  .mx-lg-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-lg-4,\n  .my-lg-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-lg-4,\n  .mx-lg-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-lg-5 {\n    margin: 3rem !important;\n  }\n  .mt-lg-5,\n  .my-lg-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-lg-5,\n  .mx-lg-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-lg-5,\n  .my-lg-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-lg-5,\n  .mx-lg-5 {\n    margin-left: 3rem !important;\n  }\n  .p-lg-0 {\n    padding: 0 !important;\n  }\n  .pt-lg-0,\n  .py-lg-0 {\n    padding-top: 0 !important;\n  }\n  .pr-lg-0,\n  .px-lg-0 {\n    padding-right: 0 !important;\n  }\n  .pb-lg-0,\n  .py-lg-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-lg-0,\n  .px-lg-0 {\n    padding-left: 0 !important;\n  }\n  .p-lg-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-lg-1,\n  .py-lg-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-lg-1,\n  .px-lg-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-lg-1,\n  .py-lg-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-lg-1,\n  .px-lg-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-lg-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-lg-2,\n  .py-lg-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-lg-2,\n  .px-lg-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-lg-2,\n  .py-lg-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-lg-2,\n  .px-lg-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-lg-3 {\n    padding: 1rem !important;\n  }\n  .pt-lg-3,\n  .py-lg-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-lg-3,\n  .px-lg-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-lg-3,\n  .py-lg-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-lg-3,\n  .px-lg-3 {\n    padding-left: 1rem !important;\n  }\n  .p-lg-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-lg-4,\n  .py-lg-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-lg-4,\n  .px-lg-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-lg-4,\n  .py-lg-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-lg-4,\n  .px-lg-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-lg-5 {\n    padding: 3rem !important;\n  }\n  .pt-lg-5,\n  .py-lg-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-lg-5,\n  .px-lg-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-lg-5,\n  .py-lg-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-lg-5,\n  .px-lg-5 {\n    padding-left: 3rem !important;\n  }\n  .m-lg-auto {\n    margin: auto !important;\n  }\n  .mt-lg-auto,\n  .my-lg-auto {\n    margin-top: auto !important;\n  }\n  .mr-lg-auto,\n  .mx-lg-auto {\n    margin-right: auto !important;\n  }\n  .mb-lg-auto,\n  .my-lg-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-lg-auto,\n  .mx-lg-auto {\n    margin-left: auto !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .m-xl-0 {\n    margin: 0 !important;\n  }\n  .mt-xl-0,\n  .my-xl-0 {\n    margin-top: 0 !important;\n  }\n  .mr-xl-0,\n  .mx-xl-0 {\n    margin-right: 0 !important;\n  }\n  .mb-xl-0,\n  .my-xl-0 {\n    margin-bottom: 0 !important;\n  }\n  .ml-xl-0,\n  .mx-xl-0 {\n    margin-left: 0 !important;\n  }\n  .m-xl-1 {\n    margin: 0.25rem !important;\n  }\n  .mt-xl-1,\n  .my-xl-1 {\n    margin-top: 0.25rem !important;\n  }\n  .mr-xl-1,\n  .mx-xl-1 {\n    margin-right: 0.25rem !important;\n  }\n  .mb-xl-1,\n  .my-xl-1 {\n    margin-bottom: 0.25rem !important;\n  }\n  .ml-xl-1,\n  .mx-xl-1 {\n    margin-left: 0.25rem !important;\n  }\n  .m-xl-2 {\n    margin: 0.5rem !important;\n  }\n  .mt-xl-2,\n  .my-xl-2 {\n    margin-top: 0.5rem !important;\n  }\n  .mr-xl-2,\n  .mx-xl-2 {\n    margin-right: 0.5rem !important;\n  }\n  .mb-xl-2,\n  .my-xl-2 {\n    margin-bottom: 0.5rem !important;\n  }\n  .ml-xl-2,\n  .mx-xl-2 {\n    margin-left: 0.5rem !important;\n  }\n  .m-xl-3 {\n    margin: 1rem !important;\n  }\n  .mt-xl-3,\n  .my-xl-3 {\n    margin-top: 1rem !important;\n  }\n  .mr-xl-3,\n  .mx-xl-3 {\n    margin-right: 1rem !important;\n  }\n  .mb-xl-3,\n  .my-xl-3 {\n    margin-bottom: 1rem !important;\n  }\n  .ml-xl-3,\n  .mx-xl-3 {\n    margin-left: 1rem !important;\n  }\n  .m-xl-4 {\n    margin: 1.5rem !important;\n  }\n  .mt-xl-4,\n  .my-xl-4 {\n    margin-top: 1.5rem !important;\n  }\n  .mr-xl-4,\n  .mx-xl-4 {\n    margin-right: 1.5rem !important;\n  }\n  .mb-xl-4,\n  .my-xl-4 {\n    margin-bottom: 1.5rem !important;\n  }\n  .ml-xl-4,\n  .mx-xl-4 {\n    margin-left: 1.5rem !important;\n  }\n  .m-xl-5 {\n    margin: 3rem !important;\n  }\n  .mt-xl-5,\n  .my-xl-5 {\n    margin-top: 3rem !important;\n  }\n  .mr-xl-5,\n  .mx-xl-5 {\n    margin-right: 3rem !important;\n  }\n  .mb-xl-5,\n  .my-xl-5 {\n    margin-bottom: 3rem !important;\n  }\n  .ml-xl-5,\n  .mx-xl-5 {\n    margin-left: 3rem !important;\n  }\n  .p-xl-0 {\n    padding: 0 !important;\n  }\n  .pt-xl-0,\n  .py-xl-0 {\n    padding-top: 0 !important;\n  }\n  .pr-xl-0,\n  .px-xl-0 {\n    padding-right: 0 !important;\n  }\n  .pb-xl-0,\n  .py-xl-0 {\n    padding-bottom: 0 !important;\n  }\n  .pl-xl-0,\n  .px-xl-0 {\n    padding-left: 0 !important;\n  }\n  .p-xl-1 {\n    padding: 0.25rem !important;\n  }\n  .pt-xl-1,\n  .py-xl-1 {\n    padding-top: 0.25rem !important;\n  }\n  .pr-xl-1,\n  .px-xl-1 {\n    padding-right: 0.25rem !important;\n  }\n  .pb-xl-1,\n  .py-xl-1 {\n    padding-bottom: 0.25rem !important;\n  }\n  .pl-xl-1,\n  .px-xl-1 {\n    padding-left: 0.25rem !important;\n  }\n  .p-xl-2 {\n    padding: 0.5rem !important;\n  }\n  .pt-xl-2,\n  .py-xl-2 {\n    padding-top: 0.5rem !important;\n  }\n  .pr-xl-2,\n  .px-xl-2 {\n    padding-right: 0.5rem !important;\n  }\n  .pb-xl-2,\n  .py-xl-2 {\n    padding-bottom: 0.5rem !important;\n  }\n  .pl-xl-2,\n  .px-xl-2 {\n    padding-left: 0.5rem !important;\n  }\n  .p-xl-3 {\n    padding: 1rem !important;\n  }\n  .pt-xl-3,\n  .py-xl-3 {\n    padding-top: 1rem !important;\n  }\n  .pr-xl-3,\n  .px-xl-3 {\n    padding-right: 1rem !important;\n  }\n  .pb-xl-3,\n  .py-xl-3 {\n    padding-bottom: 1rem !important;\n  }\n  .pl-xl-3,\n  .px-xl-3 {\n    padding-left: 1rem !important;\n  }\n  .p-xl-4 {\n    padding: 1.5rem !important;\n  }\n  .pt-xl-4,\n  .py-xl-4 {\n    padding-top: 1.5rem !important;\n  }\n  .pr-xl-4,\n  .px-xl-4 {\n    padding-right: 1.5rem !important;\n  }\n  .pb-xl-4,\n  .py-xl-4 {\n    padding-bottom: 1.5rem !important;\n  }\n  .pl-xl-4,\n  .px-xl-4 {\n    padding-left: 1.5rem !important;\n  }\n  .p-xl-5 {\n    padding: 3rem !important;\n  }\n  .pt-xl-5,\n  .py-xl-5 {\n    padding-top: 3rem !important;\n  }\n  .pr-xl-5,\n  .px-xl-5 {\n    padding-right: 3rem !important;\n  }\n  .pb-xl-5,\n  .py-xl-5 {\n    padding-bottom: 3rem !important;\n  }\n  .pl-xl-5,\n  .px-xl-5 {\n    padding-left: 3rem !important;\n  }\n  .m-xl-auto {\n    margin: auto !important;\n  }\n  .mt-xl-auto,\n  .my-xl-auto {\n    margin-top: auto !important;\n  }\n  .mr-xl-auto,\n  .mx-xl-auto {\n    margin-right: auto !important;\n  }\n  .mb-xl-auto,\n  .my-xl-auto {\n    margin-bottom: auto !important;\n  }\n  .ml-xl-auto,\n  .mx-xl-auto {\n    margin-left: auto !important;\n  }\n}\n\n.text-monospace {\n  font-family: SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace;\n}\n\n.text-justify {\n  text-align: justify !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.text-left {\n  text-align: left !important;\n}\n\n.text-right {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}\n\n@media (min-width: 576px) {\n  .text-sm-left {\n    text-align: left !important;\n  }\n  .text-sm-right {\n    text-align: right !important;\n  }\n  .text-sm-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 768px) {\n  .text-md-left {\n    text-align: left !important;\n  }\n  .text-md-right {\n    text-align: right !important;\n  }\n  .text-md-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 992px) {\n  .text-lg-left {\n    text-align: left !important;\n  }\n  .text-lg-right {\n    text-align: right !important;\n  }\n  .text-lg-center {\n    text-align: center !important;\n  }\n}\n\n@media (min-width: 1200px) {\n  .text-xl-left {\n    text-align: left !important;\n  }\n  .text-xl-right {\n    text-align: right !important;\n  }\n  .text-xl-center {\n    text-align: center !important;\n  }\n}\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.font-weight-light {\n  font-weight: 300 !important;\n}\n\n.font-weight-normal {\n  font-weight: 400 !important;\n}\n\n.font-weight-bold {\n  font-weight: 700 !important;\n}\n\n.font-italic {\n  font-style: italic !important;\n}\n\n.text-white {\n  color: #fff !important;\n}\n\n.text-primary {\n  color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n  color: #0062cc !important;\n}\n\n.text-secondary {\n  color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n  color: #545b62 !important;\n}\n\n.text-success {\n  color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n  color: #1e7e34 !important;\n}\n\n.text-info {\n  color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n  color: #117a8b !important;\n}\n\n.text-warning {\n  color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n  color: #d39e00 !important;\n}\n\n.text-danger {\n  color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n  color: #bd2130 !important;\n}\n\n.text-light {\n  color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n  color: #dae0e5 !important;\n}\n\n.text-dark {\n  color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n  color: #1d2124 !important;\n}\n\n.text-body {\n  color: #212529 !important;\n}\n\n.text-muted {\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n\n.visible {\n  visibility: visible !important;\n}\n\n.invisible {\n  visibility: hidden !important;\n}\n\n@media print {\n  *,\n  *::before,\n  *::after {\n    text-shadow: none !important;\n    box-shadow: none !important;\n  }\n  a:not(.btn) {\n    text-decoration: underline;\n  }\n  abbr[title]::after {\n    content: \" (\" attr(title) \")\";\n  }\n  pre {\n    white-space: pre-wrap !important;\n  }\n  pre,\n  blockquote {\n    border: 1px solid #adb5bd;\n    page-break-inside: avoid;\n  }\n  thead {\n    display: table-header-group;\n  }\n  tr,\n  img {\n    page-break-inside: avoid;\n  }\n  p,\n  h2,\n  h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  h2,\n  h3 {\n    page-break-after: avoid;\n  }\n  @page {\n    size: a3;\n  }\n  body {\n    min-width: 992px !important;\n  }\n  .container {\n    min-width: 992px !important;\n  }\n  .navbar {\n    display: none;\n  }\n  .badge {\n    border: 1px solid #000;\n  }\n  .table {\n    border-collapse: collapse !important;\n  }\n  .table td,\n  .table th {\n    background-color: #fff !important;\n  }\n  .table-bordered th,\n  .table-bordered td {\n    border: 1px solid #dee2e6 !important;\n  }\n  .table-dark {\n    color: inherit;\n  }\n  .table-dark th,\n  .table-dark td,\n  .table-dark thead th,\n  .table-dark tbody + tbody {\n    border-color: #dee2e6;\n  }\n  .table .thead-dark th {\n    color: inherit;\n    border-color: #dee2e6;\n  }\n}\n\n/*# sourceMappingURL=bootstrap.css.map */","// Hover mixin and `$enable-hover-media-query` are deprecated.\n//\n// Origally added during our alphas and maintained during betas, this mixin was\n// designed to prevent `:hover` stickiness on iOS-an issue where hover styles\n// would persist after initial touch.\n//\n// For backward compatibility, we've kept these mixins and updated them to\n// always return their regular pseudo-classes instead of a shimmed media query.\n//\n// Issue: https://github.com/twbs/bootstrap/issues/25195\n\n@mixin hover {\n  &:hover { @content; }\n}\n\n@mixin hover-focus {\n  &:hover,\n  &:focus {\n    @content;\n  }\n}\n\n@mixin plain-hover-focus {\n  &,\n  &:hover,\n  &:focus {\n    @content;\n  }\n}\n\n@mixin hover-focus-active {\n  &:hover,\n  &:focus,\n  &:active {\n    @content;\n  }\n}\n","// stylelint-disable declaration-no-important, selector-list-comma-newline-after\n\n//\n// Headings\n//\n\nh1, h2, h3, h4, h5, h6,\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  margin-bottom: $headings-margin-bottom;\n  font-family: $headings-font-family;\n  font-weight: $headings-font-weight;\n  line-height: $headings-line-height;\n  color: $headings-color;\n}\n\nh1, .h1 { font-size: $h1-font-size; }\nh2, .h2 { font-size: $h2-font-size; }\nh3, .h3 { font-size: $h3-font-size; }\nh4, .h4 { font-size: $h4-font-size; }\nh5, .h5 { font-size: $h5-font-size; }\nh6, .h6 { font-size: $h6-font-size; }\n\n.lead {\n  font-size: $lead-font-size;\n  font-weight: $lead-font-weight;\n}\n\n// Type display classes\n.display-1 {\n  font-size: $display1-size;\n  font-weight: $display1-weight;\n  line-height: $display-line-height;\n}\n.display-2 {\n  font-size: $display2-size;\n  font-weight: $display2-weight;\n  line-height: $display-line-height;\n}\n.display-3 {\n  font-size: $display3-size;\n  font-weight: $display3-weight;\n  line-height: $display-line-height;\n}\n.display-4 {\n  font-size: $display4-size;\n  font-weight: $display4-weight;\n  line-height: $display-line-height;\n}\n\n\n//\n// Horizontal rules\n//\n\nhr {\n  margin-top: $hr-margin-y;\n  margin-bottom: $hr-margin-y;\n  border: 0;\n  border-top: $hr-border-width solid $hr-border-color;\n}\n\n\n//\n// Emphasis\n//\n\nsmall,\n.small {\n  font-size: $small-font-size;\n  font-weight: $font-weight-normal;\n}\n\nmark,\n.mark {\n  padding: $mark-padding;\n  background-color: $mark-bg;\n}\n\n\n//\n// Lists\n//\n\n.list-unstyled {\n  @include list-unstyled;\n}\n\n// Inline turns list items into inline-block\n.list-inline {\n  @include list-unstyled;\n}\n.list-inline-item {\n  display: inline-block;\n\n  &:not(:last-child) {\n    margin-right: $list-inline-padding;\n  }\n}\n\n\n//\n// Misc\n//\n\n// Builds on `abbr`\n.initialism {\n  font-size: 90%;\n  text-transform: uppercase;\n}\n\n// Blockquotes\n.blockquote {\n  margin-bottom: $spacer;\n  font-size: $blockquote-font-size;\n}\n\n.blockquote-footer {\n  display: block;\n  font-size: 80%; // back to default font-size\n  color: $blockquote-small-color;\n\n  &::before {\n    content: \"\\2014 \\00A0\"; // em dash, nbsp\n  }\n}\n","// Lists\n\n// Unstyled keeps list items block level, just removes default browser padding and list-style\n@mixin list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n","// Responsive images (ensure images don't scale beyond their parents)\n//\n// This is purposefully opt-in via an explicit class rather than being the default for all `<img>`s.\n// We previously tried the \"images are responsive by default\" approach in Bootstrap v2,\n// and abandoned it in Bootstrap v3 because it breaks lots of third-party widgets (including Google Maps)\n// which weren't expecting the images within themselves to be involuntarily resized.\n// See also https://github.com/twbs/bootstrap/issues/18178\n.img-fluid {\n  @include img-fluid;\n}\n\n\n// Image thumbnails\n.img-thumbnail {\n  padding: $thumbnail-padding;\n  background-color: $thumbnail-bg;\n  border: $thumbnail-border-width solid $thumbnail-border-color;\n  @include border-radius($thumbnail-border-radius);\n  @include box-shadow($thumbnail-box-shadow);\n\n  // Keep them at most 100% wide\n  @include img-fluid;\n}\n\n//\n// Figures\n//\n\n.figure {\n  // Ensures the caption's text aligns with the image.\n  display: inline-block;\n}\n\n.figure-img {\n  margin-bottom: ($spacer / 2);\n  line-height: 1;\n}\n\n.figure-caption {\n  font-size: $figure-caption-font-size;\n  color: $figure-caption-color;\n}\n","// Image Mixins\n// - Responsive image\n// - Retina image\n\n\n// Responsive image\n//\n// Keep images from scaling beyond the width of their parents.\n\n@mixin img-fluid {\n  // Part 1: Set a maximum relative to the parent\n  max-width: 100%;\n  // Part 2: Override the height to auto, otherwise images will be stretched\n  // when setting a width and height attribute on the img element.\n  height: auto;\n}\n\n\n// Retina image\n//\n// Short retina mixin for setting background-image and -size.\n\n// stylelint-disable indentation, media-query-list-comma-newline-after\n@mixin img-retina($file-1x, $file-2x, $width-1x, $height-1x) {\n  background-image: url($file-1x);\n\n  // Autoprefixer takes care of adding -webkit-min-device-pixel-ratio and -o-min-device-pixel-ratio,\n  // but doesn't convert dppx=>dpi.\n  // There's no such thing as unprefixed min-device-pixel-ratio since it's nonstandard.\n  // Compatibility info: https://caniuse.com/#feat=css-media-resolution\n  @media only screen and (min-resolution: 192dpi), // IE9-11 don't support dppx\n  only screen and (min-resolution: 2dppx) { // Standardized\n    background-image: url($file-2x);\n    background-size: $width-1x $height-1x;\n  }\n}\n","// Single side border-radius\n\n@mixin border-radius($radius: $border-radius) {\n  @if $enable-rounded {\n    border-radius: $radius;\n  }\n}\n\n@mixin border-top-radius($radius) {\n  @if $enable-rounded {\n    border-top-left-radius: $radius;\n    border-top-right-radius: $radius;\n  }\n}\n\n@mixin border-right-radius($radius) {\n  @if $enable-rounded {\n    border-top-right-radius: $radius;\n    border-bottom-right-radius: $radius;\n  }\n}\n\n@mixin border-bottom-radius($radius) {\n  @if $enable-rounded {\n    border-bottom-right-radius: $radius;\n    border-bottom-left-radius: $radius;\n  }\n}\n\n@mixin border-left-radius($radius) {\n  @if $enable-rounded {\n    border-top-left-radius: $radius;\n    border-bottom-left-radius: $radius;\n  }\n}\n","// Inline code\ncode {\n  font-size: $code-font-size;\n  color: $code-color;\n  word-break: break-word;\n\n  // Streamline the style when inside anchors to avoid broken underline and more\n  a > & {\n    color: inherit;\n  }\n}\n\n// User input typically entered via keyboard\nkbd {\n  padding: $kbd-padding-y $kbd-padding-x;\n  font-size: $kbd-font-size;\n  color: $kbd-color;\n  background-color: $kbd-bg;\n  @include border-radius($border-radius-sm);\n  @include box-shadow($kbd-box-shadow);\n\n  kbd {\n    padding: 0;\n    font-size: 100%;\n    font-weight: $nested-kbd-font-weight;\n    @include box-shadow(none);\n  }\n}\n\n// Blocks of code\npre {\n  display: block;\n  font-size: $code-font-size;\n  color: $pre-color;\n\n  // Account for some code outputs that place code tags in pre tags\n  code {\n    font-size: inherit;\n    color: inherit;\n    word-break: normal;\n  }\n}\n\n// Enable scrollable blocks of code\n.pre-scrollable {\n  max-height: $pre-scrollable-max-height;\n  overflow-y: scroll;\n}\n","// Container widths\n//\n// Set the container width, and override it for fixed navbars in media queries.\n\n@if $enable-grid-classes {\n  .container {\n    @include make-container();\n    @include make-container-max-widths();\n  }\n}\n\n// Fluid container\n//\n// Utilizes the mixin meant for fixed width containers, but with 100% width for\n// fluid, full width layouts.\n\n@if $enable-grid-classes {\n  .container-fluid {\n    @include make-container();\n  }\n}\n\n// Row\n//\n// Rows contain and clear the floats of your columns.\n\n@if $enable-grid-classes {\n  .row {\n    @include make-row();\n  }\n\n  // Remove the negative margin from default .row, then the horizontal padding\n  // from all immediate children columns (to prevent runaway style inheritance).\n  .no-gutters {\n    margin-right: 0;\n    margin-left: 0;\n\n    > .col,\n    > [class*=\"col-\"] {\n      padding-right: 0;\n      padding-left: 0;\n    }\n  }\n}\n\n// Columns\n//\n// Common styles for small and large grid columns\n\n@if $enable-grid-classes {\n  @include make-grid-columns();\n}\n","/// Grid system\n//\n// Generate semantic grid columns with these mixins.\n\n@mixin make-container() {\n  width: 100%;\n  padding-right: ($grid-gutter-width / 2);\n  padding-left: ($grid-gutter-width / 2);\n  margin-right: auto;\n  margin-left: auto;\n}\n\n\n// For each breakpoint, define the maximum width of the container in a media query\n@mixin make-container-max-widths($max-widths: $container-max-widths, $breakpoints: $grid-breakpoints) {\n  @each $breakpoint, $container-max-width in $max-widths {\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      max-width: $container-max-width;\n    }\n  }\n}\n\n@mixin make-row() {\n  display: flex;\n  flex-wrap: wrap;\n  margin-right: ($grid-gutter-width / -2);\n  margin-left: ($grid-gutter-width / -2);\n}\n\n@mixin make-col-ready() {\n  position: relative;\n  // Prevent columns from becoming too narrow when at smaller grid tiers by\n  // always setting `width: 100%;`. This works because we use `flex` values\n  // later on to override this initial width.\n  width: 100%;\n  min-height: 1px; // Prevent collapsing\n  padding-right: ($grid-gutter-width / 2);\n  padding-left: ($grid-gutter-width / 2);\n}\n\n@mixin make-col($size, $columns: $grid-columns) {\n  flex: 0 0 percentage($size / $columns);\n  // Add a `max-width` to ensure content within each column does not blow out\n  // the width of the column. Applies to IE10+ and Firefox. Chrome and Safari\n  // do not appear to require this.\n  max-width: percentage($size / $columns);\n}\n\n@mixin make-col-offset($size, $columns: $grid-columns) {\n  $num: $size / $columns;\n  margin-left: if($num == 0, 0, percentage($num));\n}\n","// Breakpoint viewport sizes and media queries.\n//\n// Breakpoints are defined as a map of (name: minimum width), order from small to large:\n//\n//    (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px)\n//\n// The map defined in the `$grid-breakpoints` global variable is used as the `$breakpoints` argument by default.\n\n// Name of the next breakpoint, or null for the last breakpoint.\n//\n//    >> breakpoint-next(sm)\n//    md\n//    >> breakpoint-next(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    md\n//    >> breakpoint-next(sm, $breakpoint-names: (xs sm md lg xl))\n//    md\n@function breakpoint-next($name, $breakpoints: $grid-breakpoints, $breakpoint-names: map-keys($breakpoints)) {\n  $n: index($breakpoint-names, $name);\n  @return if($n < length($breakpoint-names), nth($breakpoint-names, $n + 1), null);\n}\n\n// Minimum breakpoint width. Null for the smallest (first) breakpoint.\n//\n//    >> breakpoint-min(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    576px\n@function breakpoint-min($name, $breakpoints: $grid-breakpoints) {\n  $min: map-get($breakpoints, $name);\n  @return if($min != 0, $min, null);\n}\n\n// Maximum breakpoint width. Null for the largest (last) breakpoint.\n// The maximum value is calculated as the minimum of the next one less 0.02px\n// to work around the limitations of `min-` and `max-` prefixes and viewports with fractional widths.\n// See https://www.w3.org/TR/mediaqueries-4/#mq-min-max\n// Uses 0.02px rather than 0.01px to work around a current rounding bug in Safari.\n// See https://bugs.webkit.org/show_bug.cgi?id=178261\n//\n//    >> breakpoint-max(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    767.98px\n@function breakpoint-max($name, $breakpoints: $grid-breakpoints) {\n  $next: breakpoint-next($name, $breakpoints);\n  @return if($next, breakpoint-min($next, $breakpoints) - .02px, null);\n}\n\n// Returns a blank string if smallest breakpoint, otherwise returns the name with a dash infront.\n// Useful for making responsive utilities.\n//\n//    >> breakpoint-infix(xs, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"\"  (Returns a blank string)\n//    >> breakpoint-infix(sm, (xs: 0, sm: 576px, md: 768px, lg: 992px, xl: 1200px))\n//    \"-sm\"\n@function breakpoint-infix($name, $breakpoints: $grid-breakpoints) {\n  @return if(breakpoint-min($name, $breakpoints) == null, \"\", \"-#{$name}\");\n}\n\n// Media of at least the minimum breakpoint width. No query for the smallest breakpoint.\n// Makes the @content apply to the given breakpoint and wider.\n@mixin media-breakpoint-up($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  @if $min {\n    @media (min-width: $min) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media of at most the maximum breakpoint width. No query for the largest breakpoint.\n// Makes the @content apply to the given breakpoint and narrower.\n@mixin media-breakpoint-down($name, $breakpoints: $grid-breakpoints) {\n  $max: breakpoint-max($name, $breakpoints);\n  @if $max {\n    @media (max-width: $max) {\n      @content;\n    }\n  } @else {\n    @content;\n  }\n}\n\n// Media that spans multiple breakpoint widths.\n// Makes the @content apply between the min and max breakpoints\n@mixin media-breakpoint-between($lower, $upper, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($lower, $breakpoints);\n  $max: breakpoint-max($upper, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($lower, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($upper, $breakpoints) {\n      @content;\n    }\n  }\n}\n\n// Media between the breakpoint's minimum and maximum widths.\n// No minimum for the smallest breakpoint, and no maximum for the largest one.\n// Makes the @content apply only to the given breakpoint, not viewports any wider or narrower.\n@mixin media-breakpoint-only($name, $breakpoints: $grid-breakpoints) {\n  $min: breakpoint-min($name, $breakpoints);\n  $max: breakpoint-max($name, $breakpoints);\n\n  @if $min != null and $max != null {\n    @media (min-width: $min) and (max-width: $max) {\n      @content;\n    }\n  } @else if $max == null {\n    @include media-breakpoint-up($name, $breakpoints) {\n      @content;\n    }\n  } @else if $min == null {\n    @include media-breakpoint-down($name, $breakpoints) {\n      @content;\n    }\n  }\n}\n","// Framework grid generation\n//\n// Used only by Bootstrap to generate the correct number of grid classes given\n// any value of `$grid-columns`.\n\n@mixin make-grid-columns($columns: $grid-columns, $gutter: $grid-gutter-width, $breakpoints: $grid-breakpoints) {\n  // Common properties for all breakpoints\n  %grid-column {\n    position: relative;\n    width: 100%;\n    min-height: 1px; // Prevent columns from collapsing when empty\n    padding-right: ($gutter / 2);\n    padding-left: ($gutter / 2);\n  }\n\n  @each $breakpoint in map-keys($breakpoints) {\n    $infix: breakpoint-infix($breakpoint, $breakpoints);\n\n    // Allow columns to stretch full width below their breakpoints\n    @for $i from 1 through $columns {\n      .col#{$infix}-#{$i} {\n        @extend %grid-column;\n      }\n    }\n    .col#{$infix},\n    .col#{$infix}-auto {\n      @extend %grid-column;\n    }\n\n    @include media-breakpoint-up($breakpoint, $breakpoints) {\n      // Provide basic `.col-{bp}` classes for equal-width flexbox columns\n      .col#{$infix} {\n        flex-basis: 0;\n        flex-grow: 1;\n        max-width: 100%;\n      }\n      .col#{$infix}-auto {\n        flex: 0 0 auto;\n        width: auto;\n        max-width: none; // Reset earlier grid tiers\n      }\n\n      @for $i from 1 through $columns {\n        .col#{$infix}-#{$i} {\n          @include make-col($i, $columns);\n        }\n      }\n\n      .order#{$infix}-first { order: -1; }\n\n      .order#{$infix}-last { order: $columns + 1; }\n\n      @for $i from 0 through $columns {\n        .order#{$infix}-#{$i} { order: $i; }\n      }\n\n      // `$columns - 1` because offsetting by the width of an entire row isn't possible\n      @for $i from 0 through ($columns - 1) {\n        @if not ($infix == \"\" and $i == 0) { // Avoid emitting useless .offset-0\n          .offset#{$infix}-#{$i} {\n            @include make-col-offset($i, $columns);\n          }\n        }\n      }\n    }\n  }\n}\n","//\n// Basic Bootstrap table\n//\n\n.table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: $spacer;\n  background-color: $table-bg; // Reset for nesting within parents with `background-color`.\n\n  th,\n  td {\n    padding: $table-cell-padding;\n    vertical-align: top;\n    border-top: $table-border-width solid $table-border-color;\n  }\n\n  thead th {\n    vertical-align: bottom;\n    border-bottom: (2 * $table-border-width) solid $table-border-color;\n  }\n\n  tbody + tbody {\n    border-top: (2 * $table-border-width) solid $table-border-color;\n  }\n\n  .table {\n    background-color: $body-bg;\n  }\n}\n\n\n//\n// Condensed table w/ half padding\n//\n\n.table-sm {\n  th,\n  td {\n    padding: $table-cell-padding-sm;\n  }\n}\n\n\n// Border versions\n//\n// Add or remove borders all around the table and between all the columns.\n\n.table-bordered {\n  border: $table-border-width solid $table-border-color;\n\n  th,\n  td {\n    border: $table-border-width solid $table-border-color;\n  }\n\n  thead {\n    th,\n    td {\n      border-bottom-width: (2 * $table-border-width);\n    }\n  }\n}\n\n.table-borderless {\n  th,\n  td,\n  thead th,\n  tbody + tbody {\n    border: 0;\n  }\n}\n\n// Zebra-striping\n//\n// Default zebra-stripe styles (alternating gray and transparent backgrounds)\n\n.table-striped {\n  tbody tr:nth-of-type(#{$table-striped-order}) {\n    background-color: $table-accent-bg;\n  }\n}\n\n\n// Hover effect\n//\n// Placed here since it has to come after the potential zebra striping\n\n.table-hover {\n  tbody tr {\n    @include hover {\n      background-color: $table-hover-bg;\n    }\n  }\n}\n\n\n// Table backgrounds\n//\n// Exact selectors below required to override `.table-striped` and prevent\n// inheritance to nested tables.\n\n@each $color, $value in $theme-colors {\n  @include table-row-variant($color, theme-color-level($color, -9));\n}\n\n@include table-row-variant(active, $table-active-bg);\n\n\n// Dark styles\n//\n// Same table markup, but inverted color scheme: dark background and light text.\n\n// stylelint-disable-next-line no-duplicate-selectors\n.table {\n  .thead-dark {\n    th {\n      color: $table-dark-color;\n      background-color: $table-dark-bg;\n      border-color: $table-dark-border-color;\n    }\n  }\n\n  .thead-light {\n    th {\n      color: $table-head-color;\n      background-color: $table-head-bg;\n      border-color: $table-border-color;\n    }\n  }\n}\n\n.table-dark {\n  color: $table-dark-color;\n  background-color: $table-dark-bg;\n\n  th,\n  td,\n  thead th {\n    border-color: $table-dark-border-color;\n  }\n\n  &.table-bordered {\n    border: 0;\n  }\n\n  &.table-striped {\n    tbody tr:nth-of-type(odd) {\n      background-color: $table-dark-accent-bg;\n    }\n  }\n\n  &.table-hover {\n    tbody tr {\n      @include hover {\n        background-color: $table-dark-hover-bg;\n      }\n    }\n  }\n}\n\n\n// Responsive tables\n//\n// Generate series of `.table-responsive-*` classes for configuring the screen\n// size of where your table will overflow.\n\n.table-responsive {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $next: breakpoint-next($breakpoint, $grid-breakpoints);\n    $infix: breakpoint-infix($next, $grid-breakpoints);\n\n    &#{$infix} {\n      @include media-breakpoint-down($breakpoint) {\n        display: block;\n        width: 100%;\n        overflow-x: auto;\n        -webkit-overflow-scrolling: touch;\n        -ms-overflow-style: -ms-autohiding-scrollbar; // See https://github.com/twbs/bootstrap/pull/10057\n\n        // Prevent double border on horizontal scroll due to use of `display: block;`\n        > .table-bordered {\n          border: 0;\n        }\n      }\n    }\n  }\n}\n","// Tables\n\n@mixin table-row-variant($state, $background) {\n  // Exact selectors below required to override `.table-striped` and prevent\n  // inheritance to nested tables.\n  .table-#{$state} {\n    &,\n    > th,\n    > td {\n      background-color: $background;\n    }\n  }\n\n  // Hover states for `.table-hover`\n  // Note: this is not available for cells or rows within `thead` or `tfoot`.\n  .table-hover {\n    $hover-background: darken($background, 5%);\n\n    .table-#{$state} {\n      @include hover {\n        background-color: $hover-background;\n\n        > td,\n        > th {\n          background-color: $hover-background;\n        }\n      }\n    }\n  }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Textual form controls\n//\n\n.form-control {\n  display: block;\n  width: 100%;\n  padding: $input-padding-y $input-padding-x;\n  font-size: $font-size-base;\n  line-height: $input-line-height;\n  color: $input-color;\n  background-color: $input-bg;\n  background-clip: padding-box;\n  border: $input-border-width solid $input-border-color;\n\n  // Note: This has no effect on <select>s in some browsers, due to the limited stylability of `<select>`s in CSS.\n  @if $enable-rounded {\n    // Manually use the if/else instead of the mixin to account for iOS override\n    border-radius: $input-border-radius;\n  } @else {\n    // Otherwise undo the iOS default\n    border-radius: 0;\n  }\n\n  @include box-shadow($input-box-shadow);\n  @include transition($input-transition);\n\n  // Unstyle the caret on `<select>`s in IE10+.\n  &::-ms-expand {\n    background-color: transparent;\n    border: 0;\n  }\n\n  // Customize the `:focus` state to imitate native WebKit styles.\n  @include form-control-focus();\n\n  // Placeholder\n  &::placeholder {\n    color: $input-placeholder-color;\n    // Override Firefox's unusual default opacity; see https://github.com/twbs/bootstrap/pull/11526.\n    opacity: 1;\n  }\n\n  // Disabled and read-only inputs\n  //\n  // HTML5 says that controls under a fieldset > legend:first-child won't be\n  // disabled if the fieldset is disabled. Due to implementation difficulty, we\n  // don't honor that edge case; we style them as disabled anyway.\n  &:disabled,\n  &[readonly] {\n    background-color: $input-disabled-bg;\n    // iOS fix for unreadable disabled content; see https://github.com/twbs/bootstrap/issues/11655.\n    opacity: 1;\n  }\n}\n\nselect.form-control {\n  &:not([size]):not([multiple]) {\n    height: $input-height;\n  }\n\n  &:focus::-ms-value {\n    // Suppress the nested default white text on blue background highlight given to\n    // the selected option text when the (still closed) <select> receives focus\n    // in IE and (under certain conditions) Edge, as it looks bad and cannot be made to\n    // match the appearance of the native widget.\n    // See https://github.com/twbs/bootstrap/issues/19398.\n    color: $input-color;\n    background-color: $input-bg;\n  }\n}\n\n// Make file inputs better match text inputs by forcing them to new lines.\n.form-control-file,\n.form-control-range {\n  display: block;\n  width: 100%;\n}\n\n\n//\n// Labels\n//\n\n// For use with horizontal and inline forms, when you need the label (or legend)\n// text to align with the form controls.\n.col-form-label {\n  padding-top: calc(#{$input-padding-y} + #{$input-border-width});\n  padding-bottom: calc(#{$input-padding-y} + #{$input-border-width});\n  margin-bottom: 0; // Override the `<label>/<legend>` default\n  font-size: inherit; // Override the `<legend>` default\n  line-height: $input-line-height;\n}\n\n.col-form-label-lg {\n  padding-top: calc(#{$input-padding-y-lg} + #{$input-border-width});\n  padding-bottom: calc(#{$input-padding-y-lg} + #{$input-border-width});\n  font-size: $font-size-lg;\n  line-height: $input-line-height-lg;\n}\n\n.col-form-label-sm {\n  padding-top: calc(#{$input-padding-y-sm} + #{$input-border-width});\n  padding-bottom: calc(#{$input-padding-y-sm} + #{$input-border-width});\n  font-size: $font-size-sm;\n  line-height: $input-line-height-sm;\n}\n\n\n// Readonly controls as plain text\n//\n// Apply class to a readonly input to make it appear like regular plain\n// text (without any border, background color, focus indicator)\n\n.form-control-plaintext {\n  display: block;\n  width: 100%;\n  padding-top: $input-padding-y;\n  padding-bottom: $input-padding-y;\n  margin-bottom: 0; // match inputs if this class comes on inputs with default margins\n  line-height: $input-line-height;\n  color: $input-plaintext-color;\n  background-color: transparent;\n  border: solid transparent;\n  border-width: $input-border-width 0;\n\n  &.form-control-sm,\n  &.form-control-lg {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n\n\n// Form control sizing\n//\n// Build on `.form-control` with modifier classes to decrease or increase the\n// height and font-size of form controls.\n//\n// The `.form-group-* form-control` variations are sadly duplicated to avoid the\n// issue documented in https://github.com/twbs/bootstrap/issues/15074.\n\n.form-control-sm {\n  padding: $input-padding-y-sm $input-padding-x-sm;\n  font-size: $font-size-sm;\n  line-height: $input-line-height-sm;\n  @include border-radius($input-border-radius-sm);\n}\n\nselect.form-control-sm {\n  &:not([size]):not([multiple]) {\n    height: $input-height-sm;\n  }\n}\n\n.form-control-lg {\n  padding: $input-padding-y-lg $input-padding-x-lg;\n  font-size: $font-size-lg;\n  line-height: $input-line-height-lg;\n  @include border-radius($input-border-radius-lg);\n}\n\nselect.form-control-lg {\n  &:not([size]):not([multiple]) {\n    height: $input-height-lg;\n  }\n}\n\n\n// Form groups\n//\n// Designed to help with the organization and spacing of vertical forms. For\n// horizontal forms, use the predefined grid classes.\n\n.form-group {\n  margin-bottom: $form-group-margin-bottom;\n}\n\n.form-text {\n  display: block;\n  margin-top: $form-text-margin-top;\n}\n\n\n// Form grid\n//\n// Special replacement for our grid system's `.row` for tighter form layouts.\n\n.form-row {\n  display: flex;\n  flex-wrap: wrap;\n  margin-right: -5px;\n  margin-left: -5px;\n\n  > .col,\n  > [class*=\"col-\"] {\n    padding-right: 5px;\n    padding-left: 5px;\n  }\n}\n\n\n// Checkboxes and radios\n//\n// Indent the labels to position radios/checkboxes as hanging controls.\n\n.form-check {\n  position: relative;\n  display: block;\n  padding-left: $form-check-input-gutter;\n}\n\n.form-check-input {\n  position: absolute;\n  margin-top: $form-check-input-margin-y;\n  margin-left: -$form-check-input-gutter;\n\n  &:disabled ~ .form-check-label {\n    color: $text-muted;\n  }\n}\n\n.form-check-label {\n  margin-bottom: 0; // Override default `<label>` bottom margin\n}\n\n.form-check-inline {\n  display: inline-flex;\n  align-items: center;\n  padding-left: 0; // Override base .form-check\n  margin-right: $form-check-inline-margin-x;\n\n  // Undo .form-check-input defaults and add some `margin-right`.\n  .form-check-input {\n    position: static;\n    margin-top: 0;\n    margin-right: $form-check-inline-input-margin-x;\n    margin-left: 0;\n  }\n}\n\n\n// Form validation\n//\n// Provide feedback to users when form field values are valid or invalid. Works\n// primarily for client-side validation via scoped `:invalid` and `:valid`\n// pseudo-classes but also includes `.is-invalid` and `.is-valid` classes for\n// server side validation.\n\n@include form-validation-state(\"valid\", $form-feedback-valid-color);\n@include form-validation-state(\"invalid\", $form-feedback-invalid-color);\n\n// Inline forms\n//\n// Make forms appear inline(-block) by adding the `.form-inline` class. Inline\n// forms begin stacked on extra small (mobile) devices and then go inline when\n// viewports reach <768px.\n//\n// Requires wrapping inputs and labels with `.form-group` for proper display of\n// default HTML form controls and our custom form controls (e.g., input groups).\n\n.form-inline {\n  display: flex;\n  flex-flow: row wrap;\n  align-items: center; // Prevent shorter elements from growing to same height as others (e.g., small buttons growing to normal sized button height)\n\n  // Because we use flex, the initial sizing of checkboxes is collapsed and\n  // doesn't occupy the full-width (which is what we want for xs grid tier),\n  // so we force that here.\n  .form-check {\n    width: 100%;\n  }\n\n  // Kick in the inline\n  @include media-breakpoint-up(sm) {\n    label {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      margin-bottom: 0;\n    }\n\n    // Inline-block all the things for \"inline\"\n    .form-group {\n      display: flex;\n      flex: 0 0 auto;\n      flex-flow: row wrap;\n      align-items: center;\n      margin-bottom: 0;\n    }\n\n    // Allow folks to *not* use `.form-group`\n    .form-control {\n      display: inline-block;\n      width: auto; // Prevent labels from stacking above inputs in `.form-group`\n      vertical-align: middle;\n    }\n\n    // Make static controls behave like regular ones\n    .form-control-plaintext {\n      display: inline-block;\n    }\n\n    .input-group,\n    .custom-select {\n      width: auto;\n    }\n\n    // Remove default margin on radios/checkboxes that were used for stacking, and\n    // then undo the floating of radios and checkboxes to match.\n    .form-check {\n      display: flex;\n      align-items: center;\n      justify-content: center;\n      width: auto;\n      padding-left: 0;\n    }\n    .form-check-input {\n      position: relative;\n      margin-top: 0;\n      margin-right: $form-check-input-margin-x;\n      margin-left: 0;\n    }\n\n    .custom-control {\n      align-items: center;\n      justify-content: center;\n    }\n    .custom-control-label {\n      margin-bottom: 0;\n    }\n  }\n}\n","@mixin transition($transition...) {\n  @if $enable-transitions {\n    @if length($transition) == 0 {\n      transition: $transition-base;\n    } @else {\n      transition: $transition;\n    }\n  }\n\n  @media screen and (prefers-reduced-motion: reduce) {\n    transition: none;\n  }\n}\n","// Form control focus state\n//\n// Generate a customized focus state and for any input with the specified color,\n// which defaults to the `$input-focus-border-color` variable.\n//\n// We highly encourage you to not customize the default value, but instead use\n// this to tweak colors on an as-needed basis. This aesthetic change is based on\n// WebKit's default styles, but applicable to a wider range of browsers. Its\n// usability and accessibility should be taken into account with any change.\n//\n// Example usage: change the default blue border and shadow to white for better\n// contrast against a dark gray background.\n@mixin form-control-focus() {\n  &:focus {\n    color: $input-focus-color;\n    background-color: $input-focus-bg;\n    border-color: $input-focus-border-color;\n    outline: 0;\n    // Avoid using mixin so we can pass custom focus shadow properly\n    @if $enable-shadows {\n      box-shadow: $input-box-shadow, $input-focus-box-shadow;\n    } @else {\n      box-shadow: $input-focus-box-shadow;\n    }\n  }\n}\n\n\n@mixin form-validation-state($state, $color) {\n  .#{$state}-feedback {\n    display: none;\n    width: 100%;\n    margin-top: $form-feedback-margin-top;\n    font-size: $form-feedback-font-size;\n    color: $color;\n  }\n\n  .#{$state}-tooltip {\n    position: absolute;\n    top: 100%;\n    z-index: 5;\n    display: none;\n    max-width: 100%; // Contain to parent when possible\n    padding: .5rem;\n    margin-top: .1rem;\n    font-size: .875rem;\n    line-height: 1;\n    color: $white;\n    background-color: rgba($color, .8);\n    border-radius: .2rem;\n  }\n\n  .form-control,\n  .custom-select {\n    .was-validated &:#{$state},\n    &.is-#{$state} {\n      border-color: $color;\n\n      &:focus {\n        border-color: $color;\n        box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n      }\n\n      ~ .#{$state}-feedback,\n      ~ .#{$state}-tooltip {\n        display: block;\n      }\n    }\n  }\n\n  .form-control-file {\n    .was-validated &:#{$state},\n    &.is-#{$state} {\n      ~ .#{$state}-feedback,\n      ~ .#{$state}-tooltip {\n        display: block;\n      }\n    }\n  }\n\n  .form-check-input {\n    .was-validated &:#{$state},\n    &.is-#{$state} {\n      ~ .form-check-label {\n        color: $color;\n      }\n\n      ~ .#{$state}-feedback,\n      ~ .#{$state}-tooltip {\n        display: block;\n      }\n    }\n  }\n\n  .custom-control-input {\n    .was-validated &:#{$state},\n    &.is-#{$state} {\n      ~ .custom-control-label {\n        color: $color;\n\n        &::before {\n          background-color: lighten($color, 25%);\n        }\n      }\n\n      ~ .#{$state}-feedback,\n      ~ .#{$state}-tooltip {\n        display: block;\n      }\n\n      &:checked {\n        ~ .custom-control-label::before {\n          @include gradient-bg(lighten($color, 10%));\n        }\n      }\n\n      &:focus {\n        ~ .custom-control-label::before {\n          box-shadow: 0 0 0 1px $body-bg, 0 0 0 $input-focus-width rgba($color, .25);\n        }\n      }\n    }\n  }\n\n  // custom file\n  .custom-file-input {\n    .was-validated &:#{$state},\n    &.is-#{$state} {\n      ~ .custom-file-label {\n        border-color: $color;\n\n        &::before { border-color: inherit; }\n      }\n\n      ~ .#{$state}-feedback,\n      ~ .#{$state}-tooltip {\n        display: block;\n      }\n\n      &:focus {\n        ~ .custom-file-label {\n          box-shadow: 0 0 0 $input-focus-width rgba($color, .25);\n        }\n      }\n    }\n  }\n}\n","// Gradients\n\n@mixin gradient-bg($color) {\n  @if $enable-gradients {\n    background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x;\n  } @else {\n    background-color: $color;\n  }\n}\n\n// Horizontal gradient, from left to right\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-x($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to right, $start-color $start-percent, $end-color $end-percent);\n  background-repeat: repeat-x;\n}\n\n// Vertical gradient, from top to bottom\n//\n// Creates two color stops, start and end, by specifying a color and position for each color stop.\n@mixin gradient-y($start-color: $gray-700, $end-color: $gray-800, $start-percent: 0%, $end-percent: 100%) {\n  background-image: linear-gradient(to bottom, $start-color $start-percent, $end-color $end-percent);\n  background-repeat: repeat-x;\n}\n\n@mixin gradient-directional($start-color: $gray-700, $end-color: $gray-800, $deg: 45deg) {\n  background-image: linear-gradient($deg, $start-color, $end-color);\n  background-repeat: repeat-x;\n}\n@mixin gradient-x-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient(to right, $start-color, $mid-color $color-stop, $end-color);\n  background-repeat: no-repeat;\n}\n@mixin gradient-y-three-colors($start-color: $blue, $mid-color: $purple, $color-stop: 50%, $end-color: $red) {\n  background-image: linear-gradient($start-color, $mid-color $color-stop, $end-color);\n  background-repeat: no-repeat;\n}\n@mixin gradient-radial($inner-color: $gray-700, $outer-color: $gray-800) {\n  background-image: radial-gradient(circle, $inner-color, $outer-color);\n  background-repeat: no-repeat;\n}\n@mixin gradient-striped($color: rgba($white, .15), $angle: 45deg) {\n  background-image: linear-gradient($angle, $color 25%, transparent 25%, transparent 50%, $color 50%, $color 75%, transparent 75%, transparent);\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Base styles\n//\n\n.btn {\n  display: inline-block;\n  font-weight: $btn-font-weight;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  user-select: none;\n  border: $btn-border-width solid transparent;\n  @include button-size($btn-padding-y, $btn-padding-x, $font-size-base, $btn-line-height, $btn-border-radius);\n  @include transition($btn-transition);\n\n  // Share hover and focus styles\n  @include hover-focus {\n    text-decoration: none;\n  }\n\n  &:focus,\n  &.focus {\n    outline: 0;\n    box-shadow: $btn-focus-box-shadow;\n  }\n\n  // Disabled comes first so active can properly restyle\n  &.disabled,\n  &:disabled {\n    opacity: $btn-disabled-opacity;\n    @include box-shadow(none);\n  }\n\n  // Opinionated: add \"hand\" cursor to non-disabled .btn elements\n  &:not(:disabled):not(.disabled) {\n    cursor: pointer;\n  }\n\n  &:not(:disabled):not(.disabled):active,\n  &:not(:disabled):not(.disabled).active {\n    background-image: none;\n    @include box-shadow($btn-active-box-shadow);\n\n    &:focus {\n      @include box-shadow($btn-focus-box-shadow, $btn-active-box-shadow);\n    }\n  }\n}\n\n// Future-proof disabling of clicks on `<a>` elements\na.btn.disabled,\nfieldset:disabled a.btn {\n  pointer-events: none;\n}\n\n\n//\n// Alternate buttons\n//\n\n@each $color, $value in $theme-colors {\n  .btn-#{$color} {\n    @include button-variant($value, $value);\n  }\n}\n\n@each $color, $value in $theme-colors {\n  .btn-outline-#{$color} {\n    @include button-outline-variant($value);\n  }\n}\n\n\n//\n// Link buttons\n//\n\n// Make a button look and behave like a link\n.btn-link {\n  font-weight: $font-weight-normal;\n  color: $link-color;\n  background-color: transparent;\n\n  @include hover {\n    color: $link-hover-color;\n    text-decoration: $link-hover-decoration;\n    background-color: transparent;\n    border-color: transparent;\n  }\n\n  &:focus,\n  &.focus {\n    text-decoration: $link-hover-decoration;\n    border-color: transparent;\n    box-shadow: none;\n  }\n\n  &:disabled,\n  &.disabled {\n    color: $btn-link-disabled-color;\n    pointer-events: none;\n  }\n\n  // No need for an active state here\n}\n\n\n//\n// Button Sizes\n//\n\n.btn-lg {\n  @include button-size($btn-padding-y-lg, $btn-padding-x-lg, $font-size-lg, $btn-line-height-lg, $btn-border-radius-lg);\n}\n\n.btn-sm {\n  @include button-size($btn-padding-y-sm, $btn-padding-x-sm, $font-size-sm, $btn-line-height-sm, $btn-border-radius-sm);\n}\n\n\n//\n// Block button\n//\n\n.btn-block {\n  display: block;\n  width: 100%;\n\n  // Vertically space out multiple block buttons\n  + .btn-block {\n    margin-top: $btn-block-spacing-y;\n  }\n}\n\n// Specificity overrides\ninput[type=\"submit\"],\ninput[type=\"reset\"],\ninput[type=\"button\"] {\n  &.btn-block {\n    width: 100%;\n  }\n}\n","// Button variants\n//\n// Easily pump out default styles, as well as :hover, :focus, :active,\n// and disabled options for all buttons\n\n@mixin button-variant($background, $border, $hover-background: darken($background, 7.5%), $hover-border: darken($border, 10%), $active-background: darken($background, 10%), $active-border: darken($border, 12.5%)) {\n  color: color-yiq($background);\n  @include gradient-bg($background);\n  border-color: $border;\n  @include box-shadow($btn-box-shadow);\n\n  @include hover {\n    color: color-yiq($hover-background);\n    @include gradient-bg($hover-background);\n    border-color: $hover-border;\n  }\n\n  &:focus,\n  &.focus {\n    // Avoid using mixin so we can pass custom focus shadow properly\n    @if $enable-shadows {\n      box-shadow: $btn-box-shadow, 0 0 0 $btn-focus-width rgba($border, .5);\n    } @else {\n      box-shadow: 0 0 0 $btn-focus-width rgba($border, .5);\n    }\n  }\n\n  // Disabled comes first so active can properly restyle\n  &.disabled,\n  &:disabled {\n    color: color-yiq($background);\n    background-color: $background;\n    border-color: $border;\n  }\n\n  &:not(:disabled):not(.disabled):active,\n  &:not(:disabled):not(.disabled).active,\n  .show > &.dropdown-toggle {\n    color: color-yiq($active-background);\n    background-color: $active-background;\n    @if $enable-gradients {\n      background-image: none; // Remove the gradient for the pressed/active state\n    }\n    border-color: $active-border;\n\n    &:focus {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      @if $enable-shadows {\n        box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($border, .5);\n      } @else {\n        box-shadow: 0 0 0 $btn-focus-width rgba($border, .5);\n      }\n    }\n  }\n}\n\n@mixin button-outline-variant($color, $color-hover: color-yiq($color), $active-background: $color, $active-border: $color) {\n  color: $color;\n  background-color: transparent;\n  background-image: none;\n  border-color: $color;\n\n  &:hover {\n    color: $color-hover;\n    background-color: $active-background;\n    border-color: $active-border;\n  }\n\n  &:focus,\n  &.focus {\n    box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $color;\n    background-color: transparent;\n  }\n\n  &:not(:disabled):not(.disabled):active,\n  &:not(:disabled):not(.disabled).active,\n  .show > &.dropdown-toggle {\n    color: color-yiq($active-background);\n    background-color: $active-background;\n    border-color: $active-border;\n\n    &:focus {\n      // Avoid using mixin so we can pass custom focus shadow properly\n      @if $enable-shadows and $btn-active-box-shadow != none {\n        box-shadow: $btn-active-box-shadow, 0 0 0 $btn-focus-width rgba($color, .5);\n      } @else {\n        box-shadow: 0 0 0 $btn-focus-width rgba($color, .5);\n      }\n    }\n  }\n}\n\n// Button sizes\n@mixin button-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n  padding: $padding-y $padding-x;\n  font-size: $font-size;\n  line-height: $line-height;\n  // Manually declare to provide an override to the browser default\n  @if $enable-rounded {\n    border-radius: $border-radius;\n  } @else {\n    border-radius: 0;\n  }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n.fade {\n  @include transition($transition-fade);\n\n  &:not(.show) {\n    opacity: 0;\n  }\n}\n\n.collapse {\n  &:not(.show) {\n    display: none;\n  }\n}\n\n.collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  @include transition($transition-collapse);\n}\n","// The dropdown wrapper (`<div>`)\n.dropup,\n.dropright,\n.dropdown,\n.dropleft {\n  position: relative;\n}\n\n.dropdown-toggle {\n  // Generate the caret automatically\n  @include caret;\n}\n\n// The dropdown menu\n.dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: $zindex-dropdown;\n  display: none; // none by default, but block on \"open\" of the menu\n  float: left;\n  min-width: $dropdown-min-width;\n  padding: $dropdown-padding-y 0;\n  margin: $dropdown-spacer 0 0; // override default ul\n  font-size: $font-size-base; // Redeclare because nesting can cause inheritance issues\n  color: $body-color;\n  text-align: left; // Ensures proper alignment if parent has it changed (e.g., modal footer)\n  list-style: none;\n  background-color: $dropdown-bg;\n  background-clip: padding-box;\n  border: $dropdown-border-width solid $dropdown-border-color;\n  @include border-radius($dropdown-border-radius);\n  @include box-shadow($dropdown-box-shadow);\n}\n\n.dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n\n// Allow for dropdowns to go bottom up (aka, dropup-menu)\n// Just add .dropup after the standard .dropdown class and you're set.\n.dropup {\n  .dropdown-menu {\n    top: auto;\n    bottom: 100%;\n    margin-top: 0;\n    margin-bottom: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(up);\n  }\n}\n\n.dropright {\n  .dropdown-menu {\n    top: 0;\n    right: auto;\n    left: 100%;\n    margin-top: 0;\n    margin-left: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(right);\n    &::after {\n      vertical-align: 0;\n    }\n  }\n}\n\n.dropleft {\n  .dropdown-menu {\n    top: 0;\n    right: 100%;\n    left: auto;\n    margin-top: 0;\n    margin-right: $dropdown-spacer;\n  }\n\n  .dropdown-toggle {\n    @include caret(left);\n    &::before {\n      vertical-align: 0;\n    }\n  }\n}\n\n// When enabled Popper.js, reset basic dropdown position\n// stylelint-disable no-duplicate-selectors\n.dropdown-menu {\n  &[x-placement^=\"top\"],\n  &[x-placement^=\"right\"],\n  &[x-placement^=\"bottom\"],\n  &[x-placement^=\"left\"] {\n    right: auto;\n    bottom: auto;\n  }\n}\n// stylelint-enable no-duplicate-selectors\n\n// Dividers (basically an `<hr>`) within the dropdown\n.dropdown-divider {\n  @include nav-divider($dropdown-divider-bg);\n}\n\n// Links, buttons, and more within the dropdown menu\n//\n// `<button>`-specific styles are denoted with `// For <button>s`\n.dropdown-item {\n  display: block;\n  width: 100%; // For `<button>`s\n  padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n  clear: both;\n  font-weight: $font-weight-normal;\n  color: $dropdown-link-color;\n  text-align: inherit; // For `<button>`s\n  white-space: nowrap; // prevent links from randomly breaking onto new lines\n  background-color: transparent; // For `<button>`s\n  border: 0; // For `<button>`s\n\n  @include hover-focus {\n    color: $dropdown-link-hover-color;\n    text-decoration: none;\n    @include gradient-bg($dropdown-link-hover-bg);\n  }\n\n  &.active,\n  &:active {\n    color: $dropdown-link-active-color;\n    text-decoration: none;\n    @include gradient-bg($dropdown-link-active-bg);\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $dropdown-link-disabled-color;\n    background-color: transparent;\n    // Remove CSS gradients if they're enabled\n    @if $enable-gradients {\n      background-image: none;\n    }\n  }\n}\n\n.dropdown-menu.show {\n  display: block;\n}\n\n// Dropdown section headers\n.dropdown-header {\n  display: block;\n  padding: $dropdown-padding-y $dropdown-item-padding-x;\n  margin-bottom: 0; // for use with heading elements\n  font-size: $font-size-sm;\n  color: $dropdown-header-color;\n  white-space: nowrap; // as with > li > a\n}\n\n// Dropdown text\n.dropdown-item-text {\n  display: block;\n  padding: $dropdown-item-padding-y $dropdown-item-padding-x;\n  color: $dropdown-link-color;\n}\n","@mixin caret-down {\n  border-top: $caret-width solid;\n  border-right: $caret-width solid transparent;\n  border-bottom: 0;\n  border-left: $caret-width solid transparent;\n}\n\n@mixin caret-up {\n  border-top: 0;\n  border-right: $caret-width solid transparent;\n  border-bottom: $caret-width solid;\n  border-left: $caret-width solid transparent;\n}\n\n@mixin caret-right {\n  border-top: $caret-width solid transparent;\n  border-right: 0;\n  border-bottom: $caret-width solid transparent;\n  border-left: $caret-width solid;\n}\n\n@mixin caret-left {\n  border-top: $caret-width solid transparent;\n  border-right: $caret-width solid;\n  border-bottom: $caret-width solid transparent;\n}\n\n@mixin caret($direction: down) {\n  @if $enable-caret {\n    &::after {\n      display: inline-block;\n      width: 0;\n      height: 0;\n      margin-left: $caret-width * .85;\n      vertical-align: $caret-width * .85;\n      content: \"\";\n      @if $direction == down {\n        @include caret-down;\n      } @else if $direction == up {\n        @include caret-up;\n      } @else if $direction == right {\n        @include caret-right;\n      }\n    }\n\n    @if $direction == left {\n      &::after {\n        display: none;\n      }\n\n      &::before {\n        display: inline-block;\n        width: 0;\n        height: 0;\n        margin-right: $caret-width * .85;\n        vertical-align: $caret-width * .85;\n        content: \"\";\n        @include caret-left;\n      }\n    }\n\n    &:empty::after {\n      margin-left: 0;\n    }\n  }\n}\n","// Horizontal dividers\n//\n// Dividers (basically an hr) within dropdowns and nav lists\n\n@mixin nav-divider($color: $nav-divider-color, $margin-y: $nav-divider-margin-y) {\n  height: 0;\n  margin: $margin-y 0;\n  overflow: hidden;\n  border-top: 1px solid $color;\n}\n","// stylelint-disable selector-no-qualifying-type\n\n// Make the div behave like a button\n.btn-group,\n.btn-group-vertical {\n  position: relative;\n  display: inline-flex;\n  vertical-align: middle; // match .btn alignment given font-size hack above\n\n  > .btn {\n    position: relative;\n    flex: 0 1 auto;\n\n    // Bring the hover, focused, and \"active\" buttons to the front to overlay\n    // the borders properly\n    @include hover {\n      z-index: 1;\n    }\n    &:focus,\n    &:active,\n    &.active {\n      z-index: 1;\n    }\n  }\n\n  // Prevent double borders when buttons are next to each other\n  .btn + .btn,\n  .btn + .btn-group,\n  .btn-group + .btn,\n  .btn-group + .btn-group {\n    margin-left: -$btn-border-width;\n  }\n}\n\n// Optional: Group multiple button groups together for a toolbar\n.btn-toolbar {\n  display: flex;\n  flex-wrap: wrap;\n  justify-content: flex-start;\n\n  .input-group {\n    width: auto;\n  }\n}\n\n.btn-group {\n  > .btn:first-child {\n    margin-left: 0;\n  }\n\n  // Reset rounded corners\n  > .btn:not(:last-child):not(.dropdown-toggle),\n  > .btn-group:not(:last-child) > .btn {\n    @include border-right-radius(0);\n  }\n\n  > .btn:not(:first-child),\n  > .btn-group:not(:first-child) > .btn {\n    @include border-left-radius(0);\n  }\n}\n\n// Sizing\n//\n// Remix the default button sizing classes into new ones for easier manipulation.\n\n.btn-group-sm > .btn { @extend .btn-sm; }\n.btn-group-lg > .btn { @extend .btn-lg; }\n\n\n//\n// Split button dropdowns\n//\n\n.dropdown-toggle-split {\n  padding-right: $btn-padding-x * .75;\n  padding-left: $btn-padding-x * .75;\n\n  &::after,\n  .dropup &::after,\n  .dropright &::after {\n    margin-left: 0;\n  }\n\n  .dropleft &::before {\n    margin-right: 0;\n  }\n}\n\n.btn-sm + .dropdown-toggle-split {\n  padding-right: $btn-padding-x-sm * .75;\n  padding-left: $btn-padding-x-sm * .75;\n}\n\n.btn-lg + .dropdown-toggle-split {\n  padding-right: $btn-padding-x-lg * .75;\n  padding-left: $btn-padding-x-lg * .75;\n}\n\n\n// The clickable button for toggling the menu\n// Set the same inset shadow as the :active state\n.btn-group.show .dropdown-toggle {\n  @include box-shadow($btn-active-box-shadow);\n\n  // Show no shadow for `.btn-link` since it has no other button styles.\n  &.btn-link {\n    @include box-shadow(none);\n  }\n}\n\n\n//\n// Vertical button groups\n//\n\n.btn-group-vertical {\n  flex-direction: column;\n  align-items: flex-start;\n  justify-content: center;\n\n  .btn,\n  .btn-group {\n    width: 100%;\n  }\n\n  > .btn + .btn,\n  > .btn + .btn-group,\n  > .btn-group + .btn,\n  > .btn-group + .btn-group {\n    margin-top: -$btn-border-width;\n    margin-left: 0;\n  }\n\n  // Reset rounded corners\n  > .btn:not(:last-child):not(.dropdown-toggle),\n  > .btn-group:not(:last-child) > .btn {\n    @include border-bottom-radius(0);\n  }\n\n  > .btn:not(:first-child),\n  > .btn-group:not(:first-child) > .btn {\n    @include border-top-radius(0);\n  }\n}\n\n\n// Checkbox and radio options\n//\n// In order to support the browser's form validation feedback, powered by the\n// `required` attribute, we have to \"hide\" the inputs via `clip`. We cannot use\n// `display: none;` or `visibility: hidden;` as that also hides the popover.\n// Simply visually hiding the inputs via `opacity` would leave them clickable in\n// certain cases which is prevented by using `clip` and `pointer-events`.\n// This way, we ensure a DOM element is visible to position the popover from.\n//\n// See https://github.com/twbs/bootstrap/pull/12794 and\n// https://github.com/twbs/bootstrap/pull/14559 for more information.\n\n.btn-group-toggle {\n  > .btn,\n  > .btn-group > .btn {\n    margin-bottom: 0; // Override default `<label>` value\n\n    input[type=\"radio\"],\n    input[type=\"checkbox\"] {\n      position: absolute;\n      clip: rect(0, 0, 0, 0);\n      pointer-events: none;\n    }\n  }\n}\n","// stylelint-disable selector-no-qualifying-type\n\n//\n// Base styles\n//\n\n.input-group {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // For form validation feedback\n  align-items: stretch;\n  width: 100%;\n\n  > .form-control,\n  > .custom-select,\n  > .custom-file {\n    position: relative; // For focus state's z-index\n    flex: 1 1 auto;\n    // Add width 1% and flex-basis auto to ensure that button will not wrap out\n    // the column. Applies to IE Edge+ and Firefox. Chrome does not require this.\n    width: 1%;\n    margin-bottom: 0;\n\n    // Bring the \"active\" form control to the top of surrounding elements\n    &:focus {\n      z-index: 3;\n    }\n\n    + .form-control,\n    + .custom-select,\n    + .custom-file {\n      margin-left: -$input-border-width;\n    }\n  }\n\n  > .form-control,\n  > .custom-select {\n    &:not(:last-child) { @include border-right-radius(0); }\n    &:not(:first-child) { @include border-left-radius(0); }\n  }\n\n  // Custom file inputs have more complex markup, thus requiring different\n  // border-radius overrides.\n  > .custom-file {\n    display: flex;\n    align-items: center;\n\n    &:not(:last-child) .custom-file-label,\n    &:not(:last-child) .custom-file-label::after { @include border-right-radius(0); }\n    &:not(:first-child) .custom-file-label { @include border-left-radius(0); }\n  }\n}\n\n\n// Prepend and append\n//\n// While it requires one extra layer of HTML for each, dedicated prepend and\n// append elements allow us to 1) be less clever, 2) simplify our selectors, and\n// 3) support HTML5 form validation.\n\n.input-group-prepend,\n.input-group-append {\n  display: flex;\n\n  // Ensure buttons are always above inputs for more visually pleasing borders.\n  // This isn't needed for `.input-group-text` since it shares the same border-color\n  // as our inputs.\n  .btn {\n    position: relative;\n    z-index: 2;\n  }\n\n  .btn + .btn,\n  .btn + .input-group-text,\n  .input-group-text + .input-group-text,\n  .input-group-text + .btn {\n    margin-left: -$input-border-width;\n  }\n}\n\n.input-group-prepend { margin-right: -$input-border-width; }\n.input-group-append { margin-left: -$input-border-width; }\n\n\n// Textual addons\n//\n// Serves as a catch-all element for any text or radio/checkbox input you wish\n// to prepend or append to an input.\n\n.input-group-text {\n  display: flex;\n  align-items: center;\n  padding: $input-padding-y $input-padding-x;\n  margin-bottom: 0; // Allow use of <label> elements by overriding our default margin-bottom\n  font-size: $font-size-base; // Match inputs\n  font-weight: $font-weight-normal;\n  line-height: $input-line-height;\n  color: $input-group-addon-color;\n  text-align: center;\n  white-space: nowrap;\n  background-color: $input-group-addon-bg;\n  border: $input-border-width solid $input-group-addon-border-color;\n  @include border-radius($input-border-radius);\n\n  // Nuke default margins from checkboxes and radios to vertically center within.\n  input[type=\"radio\"],\n  input[type=\"checkbox\"] {\n    margin-top: 0;\n  }\n}\n\n\n// Sizing\n//\n// Remix the default form control sizing classes into new ones for easier\n// manipulation.\n\n.input-group-lg > .form-control,\n.input-group-lg > .input-group-prepend > .input-group-text,\n.input-group-lg > .input-group-append > .input-group-text,\n.input-group-lg > .input-group-prepend > .btn,\n.input-group-lg > .input-group-append > .btn {\n  @extend .form-control-lg;\n}\n\n.input-group-sm > .form-control,\n.input-group-sm > .input-group-prepend > .input-group-text,\n.input-group-sm > .input-group-append > .input-group-text,\n.input-group-sm > .input-group-prepend > .btn,\n.input-group-sm > .input-group-append > .btn {\n  @extend .form-control-sm;\n}\n\n\n// Prepend and append rounded corners\n//\n// These rulesets must come after the sizing ones to properly override sm and lg\n// border-radius values when extending. They're more specific than we'd like\n// with the `.input-group >` part, but without it, we cannot override the sizing.\n\n\n.input-group > .input-group-prepend > .btn,\n.input-group > .input-group-prepend > .input-group-text,\n.input-group > .input-group-append:not(:last-child) > .btn,\n.input-group > .input-group-append:not(:last-child) > .input-group-text,\n.input-group > .input-group-append:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.input-group > .input-group-append:last-child > .input-group-text:not(:last-child) {\n  @include border-right-radius(0);\n}\n\n.input-group > .input-group-append > .btn,\n.input-group > .input-group-append > .input-group-text,\n.input-group > .input-group-prepend:not(:first-child) > .btn,\n.input-group > .input-group-prepend:not(:first-child) > .input-group-text,\n.input-group > .input-group-prepend:first-child > .btn:not(:first-child),\n.input-group > .input-group-prepend:first-child > .input-group-text:not(:first-child) {\n  @include border-left-radius(0);\n}\n","// Embedded icons from Open Iconic.\n// Released under MIT and copyright 2014 Waybury.\n// https://useiconic.com/open\n\n\n// Checkboxes and radios\n//\n// Base class takes care of all the key behavioral aspects.\n\n.custom-control {\n  position: relative;\n  display: block;\n  min-height: (1rem * $line-height-base);\n  padding-left: $custom-control-gutter;\n}\n\n.custom-control-inline {\n  display: inline-flex;\n  margin-right: $custom-control-spacer-x;\n}\n\n.custom-control-input {\n  position: absolute;\n  z-index: -1; // Put the input behind the label so it doesn't overlay text\n  opacity: 0;\n\n  &:checked ~ .custom-control-label::before {\n    color: $custom-control-indicator-checked-color;\n    @include gradient-bg($custom-control-indicator-checked-bg);\n    @include box-shadow($custom-control-indicator-checked-box-shadow);\n  }\n\n  &:focus ~ .custom-control-label::before {\n    // the mixin is not used here to make sure there is feedback\n    box-shadow: $custom-control-indicator-focus-box-shadow;\n  }\n\n  &:active ~ .custom-control-label::before {\n    color: $custom-control-indicator-active-color;\n    background-color: $custom-control-indicator-active-bg;\n    @include box-shadow($custom-control-indicator-active-box-shadow);\n  }\n\n  &:disabled {\n    ~ .custom-control-label {\n      color: $custom-control-label-disabled-color;\n\n      &::before {\n        background-color: $custom-control-indicator-disabled-bg;\n      }\n    }\n  }\n}\n\n// Custom control indicators\n//\n// Build the custom controls out of pseudo-elements.\n\n.custom-control-label {\n  position: relative;\n  margin-bottom: 0;\n\n  // Background-color and (when enabled) gradient\n  &::before {\n    position: absolute;\n    top: (($line-height-base - $custom-control-indicator-size) / 2);\n    left: -$custom-control-gutter;\n    display: block;\n    width: $custom-control-indicator-size;\n    height: $custom-control-indicator-size;\n    pointer-events: none;\n    content: \"\";\n    user-select: none;\n    background-color: $custom-control-indicator-bg;\n    @include box-shadow($custom-control-indicator-box-shadow);\n  }\n\n  // Foreground (icon)\n  &::after {\n    position: absolute;\n    top: (($line-height-base - $custom-control-indicator-size) / 2);\n    left: -$custom-control-gutter;\n    display: block;\n    width: $custom-control-indicator-size;\n    height: $custom-control-indicator-size;\n    content: \"\";\n    background-repeat: no-repeat;\n    background-position: center center;\n    background-size: $custom-control-indicator-bg-size;\n  }\n}\n\n\n// Checkboxes\n//\n// Tweak just a few things for checkboxes.\n\n.custom-checkbox {\n  .custom-control-label::before {\n    @include border-radius($custom-checkbox-indicator-border-radius);\n  }\n\n  .custom-control-input:checked ~ .custom-control-label {\n    &::before {\n      @include gradient-bg($custom-control-indicator-checked-bg);\n    }\n    &::after {\n      background-image: $custom-checkbox-indicator-icon-checked;\n    }\n  }\n\n  .custom-control-input:indeterminate ~ .custom-control-label {\n    &::before {\n      @include gradient-bg($custom-checkbox-indicator-indeterminate-bg);\n      @include box-shadow($custom-checkbox-indicator-indeterminate-box-shadow);\n    }\n    &::after {\n      background-image: $custom-checkbox-indicator-icon-indeterminate;\n    }\n  }\n\n  .custom-control-input:disabled {\n    &:checked ~ .custom-control-label::before {\n      background-color: $custom-control-indicator-checked-disabled-bg;\n    }\n    &:indeterminate ~ .custom-control-label::before {\n      background-color: $custom-control-indicator-checked-disabled-bg;\n    }\n  }\n}\n\n// Radios\n//\n// Tweak just a few things for radios.\n\n.custom-radio {\n  .custom-control-label::before {\n    border-radius: $custom-radio-indicator-border-radius;\n  }\n\n  .custom-control-input:checked ~ .custom-control-label {\n    &::before {\n      @include gradient-bg($custom-control-indicator-checked-bg);\n    }\n    &::after {\n      background-image: $custom-radio-indicator-icon-checked;\n    }\n  }\n\n  .custom-control-input:disabled {\n    &:checked ~ .custom-control-label::before {\n      background-color: $custom-control-indicator-checked-disabled-bg;\n    }\n  }\n}\n\n\n// Select\n//\n// Replaces the browser default select with a custom one, mostly pulled from\n// https://primer.github.io/.\n//\n\n.custom-select {\n  display: inline-block;\n  width: 100%;\n  height: $custom-select-height;\n  padding: $custom-select-padding-y ($custom-select-padding-x + $custom-select-indicator-padding) $custom-select-padding-y $custom-select-padding-x;\n  line-height: $custom-select-line-height;\n  color: $custom-select-color;\n  vertical-align: middle;\n  background: $custom-select-bg $custom-select-indicator no-repeat right $custom-select-padding-x center;\n  background-size: $custom-select-bg-size;\n  border: $custom-select-border-width solid $custom-select-border-color;\n  @if $enable-rounded {\n    border-radius: $custom-select-border-radius;\n  } @else {\n    border-radius: 0;\n  }\n  appearance: none;\n\n  &:focus {\n    border-color: $custom-select-focus-border-color;\n    outline: 0;\n    box-shadow: $custom-select-focus-box-shadow;\n\n    &::-ms-value {\n      // For visual consistency with other platforms/browsers,\n      // suppress the default white text on blue background highlight given to\n      // the selected option text when the (still closed) <select> receives focus\n      // in IE and (under certain conditions) Edge.\n      // See https://github.com/twbs/bootstrap/issues/19398.\n      color: $input-color;\n      background-color: $input-bg;\n    }\n  }\n\n  &[multiple],\n  &[size]:not([size=\"1\"]) {\n    height: auto;\n    padding-right: $custom-select-padding-x;\n    background-image: none;\n  }\n\n  &:disabled {\n    color: $custom-select-disabled-color;\n    background-color: $custom-select-disabled-bg;\n  }\n\n  // Hides the default caret in IE11\n  &::-ms-expand {\n    opacity: 0;\n  }\n}\n\n.custom-select-sm {\n  height: $custom-select-height-sm;\n  padding-top: $custom-select-padding-y;\n  padding-bottom: $custom-select-padding-y;\n  font-size: $custom-select-font-size-sm;\n}\n\n.custom-select-lg {\n  height: $custom-select-height-lg;\n  padding-top: $custom-select-padding-y;\n  padding-bottom: $custom-select-padding-y;\n  font-size: $custom-select-font-size-lg;\n}\n\n\n// File\n//\n// Custom file input.\n\n.custom-file {\n  position: relative;\n  display: inline-block;\n  width: 100%;\n  height: $custom-file-height;\n  margin-bottom: 0;\n}\n\n.custom-file-input {\n  position: relative;\n  z-index: 2;\n  width: 100%;\n  height: $custom-file-height;\n  margin: 0;\n  opacity: 0;\n\n  &:focus ~ .custom-file-label {\n    border-color: $custom-file-focus-border-color;\n    box-shadow: $custom-file-focus-box-shadow;\n\n    &::after {\n      border-color: $custom-file-focus-border-color;\n    }\n  }\n\n  @each $lang, $value in $custom-file-text {\n    &:lang(#{$lang}) ~ .custom-file-label::after {\n      content: $value;\n    }\n  }\n}\n\n.custom-file-label {\n  position: absolute;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: 1;\n  height: $custom-file-height;\n  padding: $custom-file-padding-y $custom-file-padding-x;\n  line-height: $custom-file-line-height;\n  color: $custom-file-color;\n  background-color: $custom-file-bg;\n  border: $custom-file-border-width solid $custom-file-border-color;\n  @include border-radius($custom-file-border-radius);\n  @include box-shadow($custom-file-box-shadow);\n\n  &::after {\n    position: absolute;\n    top: 0;\n    right: 0;\n    bottom: 0;\n    z-index: 3;\n    display: block;\n    height: $custom-file-height-inner;\n    padding: $custom-file-padding-y $custom-file-padding-x;\n    line-height: $custom-file-line-height;\n    color: $custom-file-button-color;\n    content: \"Browse\";\n    @include gradient-bg($custom-file-button-bg);\n    border-left: $custom-file-border-width solid $custom-file-border-color;\n    @include border-radius(0 $custom-file-border-radius $custom-file-border-radius 0);\n  }\n}\n\n// Range\n//\n// Style range inputs the same across browsers. Vendor-specific rules for pseudo\n// elements cannot be mixed. As such, there are no shared styles for focus or\n// active states on prefixed selectors.\n\n.custom-range {\n  width: 100%;\n  padding-left: 0; // Firefox specific\n  background-color: transparent;\n  appearance: none;\n\n  &:focus {\n    outline: none;\n  }\n\n  &::-moz-focus-outer {\n    border: 0;\n  }\n\n  &::-webkit-slider-thumb {\n    width: $custom-range-thumb-width;\n    height: $custom-range-thumb-height;\n    margin-top: -($custom-range-thumb-width * .25); // Webkit specific?\n    @include gradient-bg($custom-range-thumb-bg);\n    border: $custom-range-thumb-border;\n    @include border-radius($custom-range-thumb-border-radius);\n    @include box-shadow($custom-range-thumb-box-shadow);\n    appearance: none;\n\n    &:focus {\n      outline: none;\n      box-shadow: $custom-range-thumb-focus-box-shadow; // No mixin for focus accessibility\n    }\n\n    &:active {\n      @include gradient-bg($custom-range-thumb-active-bg);\n    }\n  }\n\n  &::-webkit-slider-runnable-track {\n    width: $custom-range-track-width;\n    height: $custom-range-track-height;\n    color: transparent; // Why?\n    cursor: $custom-range-track-cursor;\n    background-color: $custom-range-track-bg;\n    border-color: transparent;\n    @include border-radius($custom-range-track-border-radius);\n    @include box-shadow($custom-range-track-box-shadow);\n  }\n\n  &::-moz-range-thumb {\n    width: $custom-range-thumb-width;\n    height: $custom-range-thumb-height;\n    @include gradient-bg($custom-range-thumb-bg);\n    border: $custom-range-thumb-border;\n    @include border-radius($custom-range-thumb-border-radius);\n    @include box-shadow($custom-range-thumb-box-shadow);\n    appearance: none;\n\n    &:focus {\n      outline: none;\n      box-shadow: $custom-range-thumb-focus-box-shadow; // No mixin for focus accessibility\n    }\n\n    &:active {\n      @include gradient-bg($custom-range-thumb-active-bg);\n    }\n  }\n\n  &::-moz-range-track {\n    width: $custom-range-track-width;\n    height: $custom-range-track-height;\n    color: transparent;\n    cursor: $custom-range-track-cursor;\n    background-color: $custom-range-track-bg;\n    border-color: transparent; // Firefox specific?\n    @include border-radius($custom-range-track-border-radius);\n    @include box-shadow($custom-range-track-box-shadow);\n  }\n\n  &::-ms-thumb {\n    width: $custom-range-thumb-width;\n    height: $custom-range-thumb-height;\n    @include gradient-bg($custom-range-thumb-bg);\n    border: $custom-range-thumb-border;\n    @include border-radius($custom-range-thumb-border-radius);\n    @include box-shadow($custom-range-thumb-box-shadow);\n    appearance: none;\n\n    &:focus {\n      outline: none;\n      box-shadow: $custom-range-thumb-focus-box-shadow; // No mixin for focus accessibility\n    }\n\n    &:active {\n      @include gradient-bg($custom-range-thumb-active-bg);\n    }\n  }\n\n  &::-ms-track {\n    width: $custom-range-track-width;\n    height: $custom-range-track-height;\n    color: transparent;\n    cursor: $custom-range-track-cursor;\n    background-color: transparent;\n    border-color: transparent;\n    border-width: ($custom-range-thumb-height * .5);\n    @include box-shadow($custom-range-track-box-shadow);\n  }\n\n  &::-ms-fill-lower {\n    background-color: $custom-range-track-bg;\n    @include border-radius($custom-range-track-border-radius);\n  }\n\n  &::-ms-fill-upper {\n    margin-right: 15px; // arbitrary?\n    background-color: $custom-range-track-bg;\n    @include border-radius($custom-range-track-border-radius);\n  }\n}\n","// Base class\n//\n// Kickstart any navigation component with a set of style resets. Works with\n// `<nav>`s or `<ul>`s.\n\n.nav {\n  display: flex;\n  flex-wrap: wrap;\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n\n.nav-link {\n  display: block;\n  padding: $nav-link-padding-y $nav-link-padding-x;\n\n  @include hover-focus {\n    text-decoration: none;\n  }\n\n  // Disabled state lightens text\n  &.disabled {\n    color: $nav-link-disabled-color;\n  }\n}\n\n//\n// Tabs\n//\n\n.nav-tabs {\n  border-bottom: $nav-tabs-border-width solid $nav-tabs-border-color;\n\n  .nav-item {\n    margin-bottom: -$nav-tabs-border-width;\n  }\n\n  .nav-link {\n    border: $nav-tabs-border-width solid transparent;\n    @include border-top-radius($nav-tabs-border-radius);\n\n    @include hover-focus {\n      border-color: $nav-tabs-link-hover-border-color;\n    }\n\n    &.disabled {\n      color: $nav-link-disabled-color;\n      background-color: transparent;\n      border-color: transparent;\n    }\n  }\n\n  .nav-link.active,\n  .nav-item.show .nav-link {\n    color: $nav-tabs-link-active-color;\n    background-color: $nav-tabs-link-active-bg;\n    border-color: $nav-tabs-link-active-border-color;\n  }\n\n  .dropdown-menu {\n    // Make dropdown border overlap tab border\n    margin-top: -$nav-tabs-border-width;\n    // Remove the top rounded corners here since there is a hard edge above the menu\n    @include border-top-radius(0);\n  }\n}\n\n\n//\n// Pills\n//\n\n.nav-pills {\n  .nav-link {\n    @include border-radius($nav-pills-border-radius);\n  }\n\n  .nav-link.active,\n  .show > .nav-link {\n    color: $nav-pills-link-active-color;\n    background-color: $nav-pills-link-active-bg;\n  }\n}\n\n\n//\n// Justified variants\n//\n\n.nav-fill {\n  .nav-item {\n    flex: 1 1 auto;\n    text-align: center;\n  }\n}\n\n.nav-justified {\n  .nav-item {\n    flex-basis: 0;\n    flex-grow: 1;\n    text-align: center;\n  }\n}\n\n\n// Tabbable tabs\n//\n// Hide tabbable panes to start, show them when `.active`\n\n.tab-content {\n  > .tab-pane {\n    display: none;\n  }\n  > .active {\n    display: block;\n  }\n}\n","// Contents\n//\n// Navbar\n// Navbar brand\n// Navbar nav\n// Navbar text\n// Navbar divider\n// Responsive navbar\n// Navbar position\n// Navbar themes\n\n\n// Navbar\n//\n// Provide a static navbar from which we expand to create full-width, fixed, and\n// other navbar variations.\n\n.navbar {\n  position: relative;\n  display: flex;\n  flex-wrap: wrap; // allow us to do the line break for collapsing content\n  align-items: center;\n  justify-content: space-between; // space out brand from logo\n  padding: $navbar-padding-y $navbar-padding-x;\n\n  // Because flex properties aren't inherited, we need to redeclare these first\n  // few properities so that content nested within behave properly.\n  > .container,\n  > .container-fluid {\n    display: flex;\n    flex-wrap: wrap;\n    align-items: center;\n    justify-content: space-between;\n  }\n}\n\n\n// Navbar brand\n//\n// Used for brand, project, or site names.\n\n.navbar-brand {\n  display: inline-block;\n  padding-top: $navbar-brand-padding-y;\n  padding-bottom: $navbar-brand-padding-y;\n  margin-right: $navbar-padding-x;\n  font-size: $navbar-brand-font-size;\n  line-height: inherit;\n  white-space: nowrap;\n\n  @include hover-focus {\n    text-decoration: none;\n  }\n}\n\n\n// Navbar nav\n//\n// Custom navbar navigation (doesn't require `.nav`, but does make use of `.nav-link`).\n\n.navbar-nav {\n  display: flex;\n  flex-direction: column; // cannot use `inherit` to get the `.navbar`s value\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n\n  .nav-link {\n    padding-right: 0;\n    padding-left: 0;\n  }\n\n  .dropdown-menu {\n    position: static;\n    float: none;\n  }\n}\n\n\n// Navbar text\n//\n//\n\n.navbar-text {\n  display: inline-block;\n  padding-top: $nav-link-padding-y;\n  padding-bottom: $nav-link-padding-y;\n}\n\n\n// Responsive navbar\n//\n// Custom styles for responsive collapsing and toggling of navbar contents.\n// Powered by the collapse Bootstrap JavaScript plugin.\n\n// When collapsed, prevent the toggleable navbar contents from appearing in\n// the default flexbox row orienation. Requires the use of `flex-wrap: wrap`\n// on the `.navbar` parent.\n.navbar-collapse {\n  flex-basis: 100%;\n  flex-grow: 1;\n  // For always expanded or extra full navbars, ensure content aligns itself\n  // properly vertically. Can be easily overridden with flex utilities.\n  align-items: center;\n}\n\n// Button for toggling the navbar when in its collapsed state\n.navbar-toggler {\n  padding: $navbar-toggler-padding-y $navbar-toggler-padding-x;\n  font-size: $navbar-toggler-font-size;\n  line-height: 1;\n  background-color: transparent; // remove default button style\n  border: $border-width solid transparent; // remove default button style\n  @include border-radius($navbar-toggler-border-radius);\n\n  @include hover-focus {\n    text-decoration: none;\n  }\n\n  // Opinionated: add \"hand\" cursor to non-disabled .navbar-toggler elements\n  &:not(:disabled):not(.disabled) {\n    cursor: pointer;\n  }\n}\n\n// Keep as a separate element so folks can easily override it with another icon\n// or image file as needed.\n.navbar-toggler-icon {\n  display: inline-block;\n  width: 1.5em;\n  height: 1.5em;\n  vertical-align: middle;\n  content: \"\";\n  background: no-repeat center center;\n  background-size: 100% 100%;\n}\n\n// Generate series of `.navbar-expand-*` responsive classes for configuring\n// where your navbar collapses.\n.navbar-expand {\n  @each $breakpoint in map-keys($grid-breakpoints) {\n    $next: breakpoint-next($breakpoint, $grid-breakpoints);\n    $infix: breakpoint-infix($next, $grid-breakpoints);\n\n    &#{$infix} {\n      @include media-breakpoint-down($breakpoint) {\n        > .container,\n        > .container-fluid {\n          padding-right: 0;\n          padding-left: 0;\n        }\n      }\n\n      @include media-breakpoint-up($next) {\n        flex-flow: row nowrap;\n        justify-content: flex-start;\n\n        .navbar-nav {\n          flex-direction: row;\n\n          .dropdown-menu {\n            position: absolute;\n          }\n\n          .nav-link {\n            padding-right: $navbar-nav-link-padding-x;\n            padding-left: $navbar-nav-link-padding-x;\n          }\n        }\n\n        // For nesting containers, have to redeclare for alignment purposes\n        > .container,\n        > .container-fluid {\n          flex-wrap: nowrap;\n        }\n\n        .navbar-collapse {\n          display: flex !important;  // stylelint-disable-line declaration-no-important\n\n          // Changes flex-bases to auto because of an IE10 bug\n          flex-basis: auto;\n        }\n\n        .navbar-toggler {\n          display: none;\n        }\n      }\n    }\n  }\n}\n\n\n// Navbar themes\n//\n// Styles for switching between navbars with light or dark background.\n\n// Dark links against a light background\n.navbar-light {\n  .navbar-brand {\n    color: $navbar-light-active-color;\n\n    @include hover-focus {\n      color: $navbar-light-active-color;\n    }\n  }\n\n  .navbar-nav {\n    .nav-link {\n      color: $navbar-light-color;\n\n      @include hover-focus {\n        color: $navbar-light-hover-color;\n      }\n\n      &.disabled {\n        color: $navbar-light-disabled-color;\n      }\n    }\n\n    .show > .nav-link,\n    .active > .nav-link,\n    .nav-link.show,\n    .nav-link.active {\n      color: $navbar-light-active-color;\n    }\n  }\n\n  .navbar-toggler {\n    color: $navbar-light-color;\n    border-color: $navbar-light-toggler-border-color;\n  }\n\n  .navbar-toggler-icon {\n    background-image: $navbar-light-toggler-icon-bg;\n  }\n\n  .navbar-text {\n    color: $navbar-light-color;\n    a {\n      color: $navbar-light-active-color;\n\n      @include hover-focus {\n        color: $navbar-light-active-color;\n      }\n    }\n  }\n}\n\n// White links against a dark background\n.navbar-dark {\n  .navbar-brand {\n    color: $navbar-dark-active-color;\n\n    @include hover-focus {\n      color: $navbar-dark-active-color;\n    }\n  }\n\n  .navbar-nav {\n    .nav-link {\n      color: $navbar-dark-color;\n\n      @include hover-focus {\n        color: $navbar-dark-hover-color;\n      }\n\n      &.disabled {\n        color: $navbar-dark-disabled-color;\n      }\n    }\n\n    .show > .nav-link,\n    .active > .nav-link,\n    .nav-link.show,\n    .nav-link.active {\n      color: $navbar-dark-active-color;\n    }\n  }\n\n  .navbar-toggler {\n    color: $navbar-dark-color;\n    border-color: $navbar-dark-toggler-border-color;\n  }\n\n  .navbar-toggler-icon {\n    background-image: $navbar-dark-toggler-icon-bg;\n  }\n\n  .navbar-text {\n    color: $navbar-dark-color;\n    a {\n      color: $navbar-dark-active-color;\n\n      @include hover-focus {\n        color: $navbar-dark-active-color;\n      }\n    }\n  }\n}\n","//\n// Base styles\n//\n\n.card {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: $card-bg;\n  background-clip: border-box;\n  border: $card-border-width solid $card-border-color;\n  @include border-radius($card-border-radius);\n\n  > hr {\n    margin-right: 0;\n    margin-left: 0;\n  }\n\n  > .list-group:first-child {\n    .list-group-item:first-child {\n      @include border-top-radius($card-border-radius);\n    }\n  }\n\n  > .list-group:last-child {\n    .list-group-item:last-child {\n      @include border-bottom-radius($card-border-radius);\n    }\n  }\n}\n\n.card-body {\n  // Enable `flex-grow: 1` for decks and groups so that card blocks take up\n  // as much space as possible, ensuring footers are aligned to the bottom.\n  flex: 1 1 auto;\n  padding: $card-spacer-x;\n}\n\n.card-title {\n  margin-bottom: $card-spacer-y;\n}\n\n.card-subtitle {\n  margin-top: -($card-spacer-y / 2);\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link {\n  @include hover {\n    text-decoration: none;\n  }\n\n  + .card-link {\n    margin-left: $card-spacer-x;\n  }\n}\n\n//\n// Optional textual caps\n//\n\n.card-header {\n  padding: $card-spacer-y $card-spacer-x;\n  margin-bottom: 0; // Removes the default margin-bottom of <hN>\n  background-color: $card-cap-bg;\n  border-bottom: $card-border-width solid $card-border-color;\n\n  &:first-child {\n    @include border-radius($card-inner-border-radius $card-inner-border-radius 0 0);\n  }\n\n  + .list-group {\n    .list-group-item:first-child {\n      border-top: 0;\n    }\n  }\n}\n\n.card-footer {\n  padding: $card-spacer-y $card-spacer-x;\n  background-color: $card-cap-bg;\n  border-top: $card-border-width solid $card-border-color;\n\n  &:last-child {\n    @include border-radius(0 0 $card-inner-border-radius $card-inner-border-radius);\n  }\n}\n\n\n//\n// Header navs\n//\n\n.card-header-tabs {\n  margin-right: -($card-spacer-x / 2);\n  margin-bottom: -$card-spacer-y;\n  margin-left: -($card-spacer-x / 2);\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -($card-spacer-x / 2);\n  margin-left: -($card-spacer-x / 2);\n}\n\n// Card image\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: $card-img-overlay-padding;\n}\n\n.card-img {\n  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n  @include border-radius($card-inner-border-radius);\n}\n\n// Card image caps\n.card-img-top {\n  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n  @include border-top-radius($card-inner-border-radius);\n}\n\n.card-img-bottom {\n  width: 100%; // Required because we use flexbox and this inherently applies align-self: stretch\n  @include border-bottom-radius($card-inner-border-radius);\n}\n\n\n// Card deck\n\n.card-deck {\n  display: flex;\n  flex-direction: column;\n\n  .card {\n    margin-bottom: $card-deck-margin;\n  }\n\n  @include media-breakpoint-up(sm) {\n    flex-flow: row wrap;\n    margin-right: -$card-deck-margin;\n    margin-left: -$card-deck-margin;\n\n    .card {\n      display: flex;\n      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      flex: 1 0 0%;\n      flex-direction: column;\n      margin-right: $card-deck-margin;\n      margin-bottom: 0; // Override the default\n      margin-left: $card-deck-margin;\n    }\n  }\n}\n\n\n//\n// Card groups\n//\n\n.card-group {\n  display: flex;\n  flex-direction: column;\n\n  // The child selector allows nested `.card` within `.card-group`\n  // to display properly.\n  > .card {\n    margin-bottom: $card-group-margin;\n  }\n\n  @include media-breakpoint-up(sm) {\n    flex-flow: row wrap;\n    // The child selector allows nested `.card` within `.card-group`\n    // to display properly.\n    > .card {\n      // Flexbugs #4: https://github.com/philipwalton/flexbugs#flexbug-4\n      flex: 1 0 0%;\n      margin-bottom: 0;\n\n      + .card {\n        margin-left: 0;\n        border-left: 0;\n      }\n\n      // Handle rounded corners\n      @if $enable-rounded {\n        &:first-child {\n          @include border-right-radius(0);\n\n          .card-img-top,\n          .card-header {\n            border-top-right-radius: 0;\n          }\n          .card-img-bottom,\n          .card-footer {\n            border-bottom-right-radius: 0;\n          }\n        }\n\n        &:last-child {\n          @include border-left-radius(0);\n\n          .card-img-top,\n          .card-header {\n            border-top-left-radius: 0;\n          }\n          .card-img-bottom,\n          .card-footer {\n            border-bottom-left-radius: 0;\n          }\n        }\n\n        &:only-child {\n          @include border-radius($card-border-radius);\n\n          .card-img-top,\n          .card-header {\n            @include border-top-radius($card-border-radius);\n          }\n          .card-img-bottom,\n          .card-footer {\n            @include border-bottom-radius($card-border-radius);\n          }\n        }\n\n        &:not(:first-child):not(:last-child):not(:only-child) {\n          @include border-radius(0);\n\n          .card-img-top,\n          .card-img-bottom,\n          .card-header,\n          .card-footer {\n            @include border-radius(0);\n          }\n        }\n      }\n    }\n  }\n}\n\n\n//\n// Columns\n//\n\n.card-columns {\n  .card {\n    margin-bottom: $card-columns-margin;\n  }\n\n  @include media-breakpoint-up(sm) {\n    column-count: $card-columns-count;\n    column-gap: $card-columns-gap;\n    orphans: 1;\n    widows: 1;\n\n    .card {\n      display: inline-block; // Don't let them vertically span multiple columns\n      width: 100%; // Don't let their width change\n    }\n  }\n}\n\n\n//\n// Accordion\n//\n\n.accordion {\n  .card:not(:first-of-type):not(:last-of-type) {\n    border-bottom: 0;\n    border-radius: 0;\n  }\n\n  .card:not(:first-of-type) {\n    .card-header:first-child {\n      border-radius: 0;\n    }\n  }\n\n  .card:first-of-type {\n    border-bottom: 0;\n    border-bottom-right-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n\n  .card:last-of-type {\n    border-top-left-radius: 0;\n    border-top-right-radius: 0;\n  }\n}\n",".breadcrumb {\n  display: flex;\n  flex-wrap: wrap;\n  padding: $breadcrumb-padding-y $breadcrumb-padding-x;\n  margin-bottom: $breadcrumb-margin-bottom;\n  list-style: none;\n  background-color: $breadcrumb-bg;\n  @include border-radius($breadcrumb-border-radius);\n}\n\n.breadcrumb-item {\n  // The separator between breadcrumbs (by default, a forward-slash: \"/\")\n  + .breadcrumb-item {\n    padding-left: $breadcrumb-item-padding;\n\n    &::before {\n      display: inline-block; // Suppress underlining of the separator in modern browsers\n      padding-right: $breadcrumb-item-padding;\n      color: $breadcrumb-divider-color;\n      content: $breadcrumb-divider;\n    }\n  }\n\n  // IE9-11 hack to properly handle hyperlink underlines for breadcrumbs built\n  // without `<ul>`s. The `::before` pseudo-element generates an element\n  // *within* the .breadcrumb-item and thereby inherits the `text-decoration`.\n  //\n  // To trick IE into suppressing the underline, we give the pseudo-element an\n  // underline and then immediately remove it.\n  + .breadcrumb-item:hover::before {\n    text-decoration: underline;\n  }\n  // stylelint-disable-next-line no-duplicate-selectors\n  + .breadcrumb-item:hover::before {\n    text-decoration: none;\n  }\n\n  &.active {\n    color: $breadcrumb-active-color;\n  }\n}\n",".pagination {\n  display: flex;\n  @include list-unstyled();\n  @include border-radius();\n}\n\n.page-link {\n  position: relative;\n  display: block;\n  padding: $pagination-padding-y $pagination-padding-x;\n  margin-left: -$pagination-border-width;\n  line-height: $pagination-line-height;\n  color: $pagination-color;\n  background-color: $pagination-bg;\n  border: $pagination-border-width solid $pagination-border-color;\n\n  &:hover {\n    z-index: 2;\n    color: $pagination-hover-color;\n    text-decoration: none;\n    background-color: $pagination-hover-bg;\n    border-color: $pagination-hover-border-color;\n  }\n\n  &:focus {\n    z-index: 2;\n    outline: $pagination-focus-outline;\n    box-shadow: $pagination-focus-box-shadow;\n  }\n\n  // Opinionated: add \"hand\" cursor to non-disabled .page-link elements\n  &:not(:disabled):not(.disabled) {\n    cursor: pointer;\n  }\n}\n\n.page-item {\n  &:first-child {\n    .page-link {\n      margin-left: 0;\n      @include border-left-radius($border-radius);\n    }\n  }\n  &:last-child {\n    .page-link {\n      @include border-right-radius($border-radius);\n    }\n  }\n\n  &.active .page-link {\n    z-index: 1;\n    color: $pagination-active-color;\n    background-color: $pagination-active-bg;\n    border-color: $pagination-active-border-color;\n  }\n\n  &.disabled .page-link {\n    color: $pagination-disabled-color;\n    pointer-events: none;\n    // Opinionated: remove the \"hand\" cursor set previously for .page-link\n    cursor: auto;\n    background-color: $pagination-disabled-bg;\n    border-color: $pagination-disabled-border-color;\n  }\n}\n\n\n//\n// Sizing\n//\n\n.pagination-lg {\n  @include pagination-size($pagination-padding-y-lg, $pagination-padding-x-lg, $font-size-lg, $line-height-lg, $border-radius-lg);\n}\n\n.pagination-sm {\n  @include pagination-size($pagination-padding-y-sm, $pagination-padding-x-sm, $font-size-sm, $line-height-sm, $border-radius-sm);\n}\n","// Pagination\n\n@mixin pagination-size($padding-y, $padding-x, $font-size, $line-height, $border-radius) {\n  .page-link {\n    padding: $padding-y $padding-x;\n    font-size: $font-size;\n    line-height: $line-height;\n  }\n\n  .page-item {\n    &:first-child {\n      .page-link {\n        @include border-left-radius($border-radius);\n      }\n    }\n    &:last-child {\n      .page-link {\n        @include border-right-radius($border-radius);\n      }\n    }\n  }\n}\n","// Base class\n//\n// Requires one of the contextual, color modifier classes for `color` and\n// `background-color`.\n\n.badge {\n  display: inline-block;\n  padding: $badge-padding-y $badge-padding-x;\n  font-size: $badge-font-size;\n  font-weight: $badge-font-weight;\n  line-height: 1;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  @include border-radius($badge-border-radius);\n\n  // Empty badges collapse automatically\n  &:empty {\n    display: none;\n  }\n}\n\n// Quick fix for badges in buttons\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n// Pill badges\n//\n// Make them extra rounded with a modifier to replace v3's badges.\n\n.badge-pill {\n  padding-right: $badge-pill-padding-x;\n  padding-left: $badge-pill-padding-x;\n  @include border-radius($badge-pill-border-radius);\n}\n\n// Colors\n//\n// Contextual variations (linked badges get darker on :hover).\n\n@each $color, $value in $theme-colors {\n  .badge-#{$color} {\n    @include badge-variant($value);\n  }\n}\n","@mixin badge-variant($bg) {\n  color: color-yiq($bg);\n  background-color: $bg;\n\n  &[href] {\n    @include hover-focus {\n      color: color-yiq($bg);\n      text-decoration: none;\n      background-color: darken($bg, 10%);\n    }\n  }\n}\n",".jumbotron {\n  padding: $jumbotron-padding ($jumbotron-padding / 2);\n  margin-bottom: $jumbotron-padding;\n  background-color: $jumbotron-bg;\n  @include border-radius($border-radius-lg);\n\n  @include media-breakpoint-up(sm) {\n    padding: ($jumbotron-padding * 2) $jumbotron-padding;\n  }\n}\n\n.jumbotron-fluid {\n  padding-right: 0;\n  padding-left: 0;\n  @include border-radius(0);\n}\n","//\n// Base styles\n//\n\n.alert {\n  position: relative;\n  padding: $alert-padding-y $alert-padding-x;\n  margin-bottom: $alert-margin-bottom;\n  border: $alert-border-width solid transparent;\n  @include border-radius($alert-border-radius);\n}\n\n// Headings for larger alerts\n.alert-heading {\n  // Specified to prevent conflicts of changing $headings-color\n  color: inherit;\n}\n\n// Provide class for links that match alerts\n.alert-link {\n  font-weight: $alert-link-font-weight;\n}\n\n\n// Dismissible alerts\n//\n// Expand the right padding and account for the close button's positioning.\n\n.alert-dismissible {\n  padding-right: ($close-font-size + $alert-padding-x * 2);\n\n  // Adjust close link position\n  .close {\n    position: absolute;\n    top: 0;\n    right: 0;\n    padding: $alert-padding-y $alert-padding-x;\n    color: inherit;\n  }\n}\n\n\n// Alternate styles\n//\n// Generate contextual modifier classes for colorizing the alert.\n\n@each $color, $value in $theme-colors {\n  .alert-#{$color} {\n    @include alert-variant(theme-color-level($color, $alert-bg-level), theme-color-level($color, $alert-border-level), theme-color-level($color, $alert-color-level));\n  }\n}\n","@mixin alert-variant($background, $border, $color) {\n  color: $color;\n  @include gradient-bg($background);\n  border-color: $border;\n\n  hr {\n    border-top-color: darken($border, 5%);\n  }\n\n  .alert-link {\n    color: darken($color, 10%);\n  }\n}\n","@keyframes progress-bar-stripes {\n  from { background-position: $progress-height 0; }\n  to { background-position: 0 0; }\n}\n\n.progress {\n  display: flex;\n  height: $progress-height;\n  overflow: hidden; // force rounded corners by cropping it\n  font-size: $progress-font-size;\n  background-color: $progress-bg;\n  @include border-radius($progress-border-radius);\n  @include box-shadow($progress-box-shadow);\n}\n\n.progress-bar {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  color: $progress-bar-color;\n  text-align: center;\n  white-space: nowrap;\n  background-color: $progress-bar-bg;\n  @include transition($progress-bar-transition);\n}\n\n.progress-bar-striped {\n  @include gradient-striped();\n  background-size: $progress-height $progress-height;\n}\n\n.progress-bar-animated {\n  animation: progress-bar-stripes $progress-bar-animation-timing;\n}\n",".media {\n  display: flex;\n  align-items: flex-start;\n}\n\n.media-body {\n  flex: 1;\n}\n","// Base class\n//\n// Easily usable on <ul>, <ol>, or <div>.\n\n.list-group {\n  display: flex;\n  flex-direction: column;\n\n  // No need to set list-style: none; since .list-group-item is block level\n  padding-left: 0; // reset padding because ul and ol\n  margin-bottom: 0;\n}\n\n\n// Interactive list items\n//\n// Use anchor or button elements instead of `li`s or `div`s to create interactive\n// list items. Includes an extra `.active` modifier class for selected items.\n\n.list-group-item-action {\n  width: 100%; // For `<button>`s (anchors become 100% by default though)\n  color: $list-group-action-color;\n  text-align: inherit; // For `<button>`s (anchors inherit)\n\n  // Hover state\n  @include hover-focus {\n    color: $list-group-action-hover-color;\n    text-decoration: none;\n    background-color: $list-group-hover-bg;\n  }\n\n  &:active {\n    color: $list-group-action-active-color;\n    background-color: $list-group-action-active-bg;\n  }\n}\n\n\n// Individual list items\n//\n// Use on `li`s or `div`s within the `.list-group` parent.\n\n.list-group-item {\n  position: relative;\n  display: block;\n  padding: $list-group-item-padding-y $list-group-item-padding-x;\n  // Place the border on the list items and negative margin up for better styling\n  margin-bottom: -$list-group-border-width;\n  background-color: $list-group-bg;\n  border: $list-group-border-width solid $list-group-border-color;\n\n  &:first-child {\n    @include border-top-radius($list-group-border-radius);\n  }\n\n  &:last-child {\n    margin-bottom: 0;\n    @include border-bottom-radius($list-group-border-radius);\n  }\n\n  @include hover-focus {\n    z-index: 1; // Place hover/active items above their siblings for proper border styling\n    text-decoration: none;\n  }\n\n  &.disabled,\n  &:disabled {\n    color: $list-group-disabled-color;\n    background-color: $list-group-disabled-bg;\n  }\n\n  // Include both here for `<a>`s and `<button>`s\n  &.active {\n    z-index: 2; // Place active items above their siblings for proper border styling\n    color: $list-group-active-color;\n    background-color: $list-group-active-bg;\n    border-color: $list-group-active-border-color;\n  }\n}\n\n\n// Flush list items\n//\n// Remove borders and border-radius to keep list group items edge-to-edge. Most\n// useful within other components (e.g., cards).\n\n.list-group-flush {\n  .list-group-item {\n    border-right: 0;\n    border-left: 0;\n    @include border-radius(0);\n  }\n\n  &:first-child {\n    .list-group-item:first-child {\n      border-top: 0;\n    }\n  }\n\n  &:last-child {\n    .list-group-item:last-child {\n      border-bottom: 0;\n    }\n  }\n}\n\n\n// Contextual variants\n//\n// Add modifier classes to change text and background color on individual items.\n// Organizationally, this must come after the `:hover` states.\n\n@each $color, $value in $theme-colors {\n  @include list-group-item-variant($color, theme-color-level($color, -9), theme-color-level($color, 6));\n}\n","// List Groups\n\n@mixin list-group-item-variant($state, $background, $color) {\n  .list-group-item-#{$state} {\n    color: $color;\n    background-color: $background;\n\n    &.list-group-item-action {\n      @include hover-focus {\n        color: $color;\n        background-color: darken($background, 5%);\n      }\n\n      &.active {\n        color: $white;\n        background-color: $color;\n        border-color: $color;\n      }\n    }\n  }\n}\n",".close {\n  float: right;\n  font-size: $close-font-size;\n  font-weight: $close-font-weight;\n  line-height: 1;\n  color: $close-color;\n  text-shadow: $close-text-shadow;\n  opacity: .5;\n\n  @include hover-focus {\n    color: $close-color;\n    text-decoration: none;\n    opacity: .75;\n  }\n\n  // Opinionated: add \"hand\" cursor to non-disabled .close elements\n  &:not(:disabled):not(.disabled) {\n    cursor: pointer;\n  }\n}\n\n// Additional properties for button version\n// iOS requires the button element instead of an anchor tag.\n// If you want the anchor version, it requires `href=\"#\"`.\n// See https://developer.mozilla.org/en-US/docs/Web/Events/click#Safari_Mobile\n\n// stylelint-disable property-no-vendor-prefix, selector-no-qualifying-type\nbutton.close {\n  padding: 0;\n  background-color: transparent;\n  border: 0;\n  -webkit-appearance: none;\n}\n// stylelint-enable\n","// .modal-open      - body class for killing the scroll\n// .modal           - container to scroll within\n// .modal-dialog    - positioning shell for the actual modal\n// .modal-content   - actual modal w/ bg and corners and stuff\n\n\n// Kill the scroll on the body\n.modal-open {\n  overflow: hidden;\n}\n\n// Container that the modal scrolls within\n.modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-modal;\n  display: none;\n  overflow: hidden;\n  // Prevent Chrome on Windows from adding a focus outline. For details, see\n  // https://github.com/twbs/bootstrap/pull/10951.\n  outline: 0;\n  // We deliberately don't use `-webkit-overflow-scrolling: touch;` due to a\n  // gnarly iOS Safari bug: https://bugs.webkit.org/show_bug.cgi?id=158342\n  // See also https://github.com/twbs/bootstrap/issues/17695\n\n  .modal-open & {\n    overflow-x: hidden;\n    overflow-y: auto;\n  }\n}\n\n// Shell div to position the modal with bottom padding\n.modal-dialog {\n  position: relative;\n  width: auto;\n  margin: $modal-dialog-margin;\n  // allow clicks to pass through for custom click handling to close modal\n  pointer-events: none;\n\n  // When fading in the modal, animate it to slide down\n  .modal.fade & {\n    @include transition($modal-transition);\n    transform: translate(0, -25%);\n  }\n  .modal.show & {\n    transform: translate(0, 0);\n  }\n}\n\n.modal-dialog-centered {\n  display: flex;\n  align-items: center;\n  min-height: calc(100% - (#{$modal-dialog-margin} * 2));\n}\n\n// Actual modal\n.modal-content {\n  position: relative;\n  display: flex;\n  flex-direction: column;\n  width: 100%; // Ensure `.modal-content` extends the full width of the parent `.modal-dialog`\n  // counteract the pointer-events: none; in the .modal-dialog\n  pointer-events: auto;\n  background-color: $modal-content-bg;\n  background-clip: padding-box;\n  border: $modal-content-border-width solid $modal-content-border-color;\n  @include border-radius($modal-content-border-radius);\n  @include box-shadow($modal-content-box-shadow-xs);\n  // Remove focus outline from opened modal\n  outline: 0;\n}\n\n// Modal background\n.modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-modal-backdrop;\n  background-color: $modal-backdrop-bg;\n\n  // Fade for backdrop\n  &.fade { opacity: 0; }\n  &.show { opacity: $modal-backdrop-opacity; }\n}\n\n// Modal header\n// Top section of the modal w/ title and dismiss\n.modal-header {\n  display: flex;\n  align-items: flex-start; // so the close btn always stays on the upper right corner\n  justify-content: space-between; // Put modal header elements (title and dismiss) on opposite ends\n  padding: $modal-header-padding;\n  border-bottom: $modal-header-border-width solid $modal-header-border-color;\n  @include border-top-radius($modal-content-border-radius);\n\n  .close {\n    padding: $modal-header-padding;\n    // auto on the left force icon to the right even when there is no .modal-title\n    margin: (-$modal-header-padding) (-$modal-header-padding) (-$modal-header-padding) auto;\n  }\n}\n\n// Title text within header\n.modal-title {\n  margin-bottom: 0;\n  line-height: $modal-title-line-height;\n}\n\n// Modal body\n// Where all modal content resides (sibling of .modal-header and .modal-footer)\n.modal-body {\n  position: relative;\n  // Enable `flex-grow: 1` so that the body take up as much space as possible\n  // when should there be a fixed height on `.modal-dialog`.\n  flex: 1 1 auto;\n  padding: $modal-inner-padding;\n}\n\n// Footer (for actions)\n.modal-footer {\n  display: flex;\n  align-items: center; // vertically center\n  justify-content: flex-end; // Right align buttons with flex property because text-align doesn't work on flex items\n  padding: $modal-inner-padding;\n  border-top: $modal-footer-border-width solid $modal-footer-border-color;\n\n  // Easily place margin between footer elements\n  > :not(:first-child) { margin-left: .25rem; }\n  > :not(:last-child) { margin-right: .25rem; }\n}\n\n// Measure scrollbar width for padding body during modal show/hide\n.modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n\n// Scale up the modal\n@include media-breakpoint-up(sm) {\n  // Automatically set modal's width for larger viewports\n  .modal-dialog {\n    max-width: $modal-md;\n    margin: $modal-dialog-margin-y-sm-up auto;\n  }\n\n  .modal-dialog-centered {\n    min-height: calc(100% - (#{$modal-dialog-margin-y-sm-up} * 2));\n  }\n\n  .modal-content {\n    @include box-shadow($modal-content-box-shadow-sm-up);\n  }\n\n  .modal-sm { max-width: $modal-sm; }\n\n}\n\n@include media-breakpoint-up(lg) {\n  .modal-lg { max-width: $modal-lg; }\n}\n","// Base class\n.tooltip {\n  position: absolute;\n  z-index: $zindex-tooltip;\n  display: block;\n  margin: $tooltip-margin;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  @include reset-text();\n  font-size: $tooltip-font-size;\n  // Allow breaking very long words so they don't overflow the tooltip's bounds\n  word-wrap: break-word;\n  opacity: 0;\n\n  &.show { opacity: $tooltip-opacity; }\n\n  .arrow {\n    position: absolute;\n    display: block;\n    width: $tooltip-arrow-width;\n    height: $tooltip-arrow-height;\n\n    &::before {\n      position: absolute;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid;\n    }\n  }\n}\n\n.bs-tooltip-top {\n  padding: $tooltip-arrow-height 0;\n\n  .arrow {\n    bottom: 0;\n\n    &::before {\n      top: 0;\n      border-width: $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;\n      border-top-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-right {\n  padding: 0 $tooltip-arrow-height;\n\n  .arrow {\n    left: 0;\n    width: $tooltip-arrow-height;\n    height: $tooltip-arrow-width;\n\n    &::before {\n      right: 0;\n      border-width: ($tooltip-arrow-width / 2) $tooltip-arrow-height ($tooltip-arrow-width / 2) 0;\n      border-right-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-bottom {\n  padding: $tooltip-arrow-height 0;\n\n  .arrow {\n    top: 0;\n\n    &::before {\n      bottom: 0;\n      border-width: 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;\n      border-bottom-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-left {\n  padding: 0 $tooltip-arrow-height;\n\n  .arrow {\n    right: 0;\n    width: $tooltip-arrow-height;\n    height: $tooltip-arrow-width;\n\n    &::before {\n      left: 0;\n      border-width: ($tooltip-arrow-width / 2) 0 ($tooltip-arrow-width / 2) $tooltip-arrow-height;\n      border-left-color: $tooltip-arrow-color;\n    }\n  }\n}\n\n.bs-tooltip-auto {\n  &[x-placement^=\"top\"] {\n    @extend .bs-tooltip-top;\n  }\n  &[x-placement^=\"right\"] {\n    @extend .bs-tooltip-right;\n  }\n  &[x-placement^=\"bottom\"] {\n    @extend .bs-tooltip-bottom;\n  }\n  &[x-placement^=\"left\"] {\n    @extend .bs-tooltip-left;\n  }\n}\n\n// Wrapper for the tooltip content\n.tooltip-inner {\n  max-width: $tooltip-max-width;\n  padding: $tooltip-padding-y $tooltip-padding-x;\n  color: $tooltip-color;\n  text-align: center;\n  background-color: $tooltip-bg;\n  @include border-radius($tooltip-border-radius);\n}\n","@mixin reset-text {\n  font-family: $font-family-base;\n  // We deliberately do NOT reset font-size or word-wrap.\n  font-style: normal;\n  font-weight: $font-weight-normal;\n  line-height: $line-height-base;\n  text-align: left; // Fallback for where `start` is not supported\n  text-align: start; // stylelint-disable-line declaration-block-no-duplicate-properties\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  white-space: normal;\n  line-break: auto;\n}\n",".popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: $zindex-popover;\n  display: block;\n  max-width: $popover-max-width;\n  // Our parent element can be arbitrary since tooltips are by default inserted as a sibling of their target element.\n  // So reset our font and text properties to avoid inheriting weird values.\n  @include reset-text();\n  font-size: $popover-font-size;\n  // Allow breaking very long words so they don't overflow the popover's bounds\n  word-wrap: break-word;\n  background-color: $popover-bg;\n  background-clip: padding-box;\n  border: $popover-border-width solid $popover-border-color;\n  @include border-radius($popover-border-radius);\n  @include box-shadow($popover-box-shadow);\n\n  .arrow {\n    position: absolute;\n    display: block;\n    width: $popover-arrow-width;\n    height: $popover-arrow-height;\n    margin: 0 $border-radius-lg;\n\n    &::before,\n    &::after {\n      position: absolute;\n      display: block;\n      content: \"\";\n      border-color: transparent;\n      border-style: solid;\n    }\n  }\n}\n\n.bs-popover-top {\n  margin-bottom: $popover-arrow-height;\n\n  .arrow {\n    bottom: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n  }\n\n  .arrow::before,\n  .arrow::after {\n    border-width: $popover-arrow-height ($popover-arrow-width / 2) 0;\n  }\n\n  .arrow::before {\n    bottom: 0;\n    border-top-color: $popover-arrow-outer-color;\n  }\n\n  .arrow::after {\n    bottom: $popover-border-width;\n    border-top-color: $popover-arrow-color;\n  }\n}\n\n.bs-popover-right {\n  margin-left: $popover-arrow-height;\n\n  .arrow {\n    left: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n    width: $popover-arrow-height;\n    height: $popover-arrow-width;\n    margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners\n  }\n\n  .arrow::before,\n  .arrow::after {\n    border-width: ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2) 0;\n  }\n\n  .arrow::before {\n    left: 0;\n    border-right-color: $popover-arrow-outer-color;\n  }\n\n  .arrow::after {\n    left: $popover-border-width;\n    border-right-color: $popover-arrow-color;\n  }\n}\n\n.bs-popover-bottom {\n  margin-top: $popover-arrow-height;\n\n  .arrow {\n    top: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n  }\n\n  .arrow::before,\n  .arrow::after {\n    border-width: 0 ($popover-arrow-width / 2) $popover-arrow-height ($popover-arrow-width / 2);\n  }\n\n  .arrow::before {\n    top: 0;\n    border-bottom-color: $popover-arrow-outer-color;\n  }\n\n  .arrow::after {\n    top: $popover-border-width;\n    border-bottom-color: $popover-arrow-color;\n  }\n\n  // This will remove the popover-header's border just below the arrow\n  .popover-header::before {\n    position: absolute;\n    top: 0;\n    left: 50%;\n    display: block;\n    width: $popover-arrow-width;\n    margin-left: ($popover-arrow-width / -2);\n    content: \"\";\n    border-bottom: $popover-border-width solid $popover-header-bg;\n  }\n}\n\n.bs-popover-left {\n  margin-right: $popover-arrow-height;\n\n  .arrow {\n    right: calc((#{$popover-arrow-height} + #{$popover-border-width}) * -1);\n    width: $popover-arrow-height;\n    height: $popover-arrow-width;\n    margin: $border-radius-lg 0; // make sure the arrow does not touch the popover's rounded corners\n  }\n\n  .arrow::before,\n  .arrow::after {\n    border-width: ($popover-arrow-width / 2) 0 ($popover-arrow-width / 2) $popover-arrow-height;\n  }\n\n  .arrow::before {\n    right: 0;\n    border-left-color: $popover-arrow-outer-color;\n  }\n\n  .arrow::after {\n    right: $popover-border-width;\n    border-left-color: $popover-arrow-color;\n  }\n}\n\n.bs-popover-auto {\n  &[x-placement^=\"top\"] {\n    @extend .bs-popover-top;\n  }\n  &[x-placement^=\"right\"] {\n    @extend .bs-popover-right;\n  }\n  &[x-placement^=\"bottom\"] {\n    @extend .bs-popover-bottom;\n  }\n  &[x-placement^=\"left\"] {\n    @extend .bs-popover-left;\n  }\n}\n\n\n// Offset the popover to account for the popover arrow\n.popover-header {\n  padding: $popover-header-padding-y $popover-header-padding-x;\n  margin-bottom: 0; // Reset the default from Reboot\n  font-size: $font-size-base;\n  color: $popover-header-color;\n  background-color: $popover-header-bg;\n  border-bottom: $popover-border-width solid darken($popover-header-bg, 5%);\n  $offset-border-width: calc(#{$border-radius-lg} - #{$popover-border-width});\n  @include border-top-radius($offset-border-width);\n\n  &:empty {\n    display: none;\n  }\n}\n\n.popover-body {\n  padding: $popover-body-padding-y $popover-body-padding-x;\n  color: $popover-body-color;\n}\n","// Notes on the classes:\n//\n// 1. The .carousel-item-left and .carousel-item-right is used to indicate where\n//    the active slide is heading.\n// 2. .active.carousel-item is the current slide.\n// 3. .active.carousel-item-left and .active.carousel-item-right is the current\n//    slide in its in-transition state. Only one of these occurs at a time.\n// 4. .carousel-item-next.carousel-item-left and .carousel-item-prev.carousel-item-right\n//    is the upcoming slide in transition.\n\n.carousel {\n  position: relative;\n}\n\n.carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n\n.carousel-item {\n  position: relative;\n  display: none;\n  align-items: center;\n  width: 100%;\n  @include transition($carousel-transition);\n  backface-visibility: hidden;\n  perspective: 1000px;\n}\n\n.carousel-item.active,\n.carousel-item-next,\n.carousel-item-prev {\n  display: block;\n}\n\n.carousel-item-next,\n.carousel-item-prev {\n  position: absolute;\n  top: 0;\n}\n\n.carousel-item-next.carousel-item-left,\n.carousel-item-prev.carousel-item-right {\n  transform: translateX(0);\n\n  @supports (transform-style: preserve-3d) {\n    transform: translate3d(0, 0, 0);\n  }\n}\n\n.carousel-item-next,\n.active.carousel-item-right {\n  transform: translateX(100%);\n\n  @supports (transform-style: preserve-3d) {\n    transform: translate3d(100%, 0, 0);\n  }\n}\n\n.carousel-item-prev,\n.active.carousel-item-left {\n  transform: translateX(-100%);\n\n  @supports (transform-style: preserve-3d) {\n    transform: translate3d(-100%, 0, 0);\n  }\n}\n\n\n//\n// Alternate transitions\n//\n\n.carousel-fade {\n  .carousel-item {\n    opacity: 0;\n    transition-duration: .6s;\n    transition-property: opacity;\n  }\n\n  .carousel-item.active,\n  .carousel-item-next.carousel-item-left,\n  .carousel-item-prev.carousel-item-right {\n    opacity: 1;\n  }\n\n  .active.carousel-item-left,\n  .active.carousel-item-right {\n    opacity: 0;\n  }\n\n  .carousel-item-next,\n  .carousel-item-prev,\n  .carousel-item.active,\n  .active.carousel-item-left,\n  .active.carousel-item-prev {\n    transform: translateX(0);\n\n    @supports (transform-style: preserve-3d) {\n      transform: translate3d(0, 0, 0);\n    }\n  }\n}\n\n\n//\n// Left/right controls for nav\n//\n\n.carousel-control-prev,\n.carousel-control-next {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  // Use flex for alignment (1-3)\n  display: flex; // 1. allow flex styles\n  align-items: center; // 2. vertically center contents\n  justify-content: center; // 3. horizontally center contents\n  width: $carousel-control-width;\n  color: $carousel-control-color;\n  text-align: center;\n  opacity: $carousel-control-opacity;\n  // We can't have a transition here because WebKit cancels the carousel\n  // animation if you trip this while in the middle of another animation.\n\n  // Hover/focus state\n  @include hover-focus {\n    color: $carousel-control-color;\n    text-decoration: none;\n    outline: 0;\n    opacity: .9;\n  }\n}\n.carousel-control-prev {\n  left: 0;\n  @if $enable-gradients {\n    background: linear-gradient(90deg, rgba($black, .25), rgba($black, .001));\n  }\n}\n.carousel-control-next {\n  right: 0;\n  @if $enable-gradients {\n    background: linear-gradient(270deg, rgba($black, .25), rgba($black, .001));\n  }\n}\n\n// Icons for within\n.carousel-control-prev-icon,\n.carousel-control-next-icon {\n  display: inline-block;\n  width: $carousel-control-icon-width;\n  height: $carousel-control-icon-width;\n  background: transparent no-repeat center center;\n  background-size: 100% 100%;\n}\n.carousel-control-prev-icon {\n  background-image: $carousel-control-prev-icon-bg;\n}\n.carousel-control-next-icon {\n  background-image: $carousel-control-next-icon-bg;\n}\n\n\n// Optional indicator pips\n//\n// Add an ordered list with the following class and add a list item for each\n// slide your carousel holds.\n\n.carousel-indicators {\n  position: absolute;\n  right: 0;\n  bottom: 10px;\n  left: 0;\n  z-index: 15;\n  display: flex;\n  justify-content: center;\n  padding-left: 0; // override <ol> default\n  // Use the .carousel-control's width as margin so we don't overlay those\n  margin-right: $carousel-control-width;\n  margin-left: $carousel-control-width;\n  list-style: none;\n\n  li {\n    position: relative;\n    flex: 0 1 auto;\n    width: $carousel-indicator-width;\n    height: $carousel-indicator-height;\n    margin-right: $carousel-indicator-spacer;\n    margin-left: $carousel-indicator-spacer;\n    text-indent: -999px;\n    cursor: pointer;\n    background-color: rgba($carousel-indicator-active-bg, .5);\n\n    // Use pseudo classes to increase the hit area by 10px on top and bottom.\n    &::before {\n      position: absolute;\n      top: -10px;\n      left: 0;\n      display: inline-block;\n      width: 100%;\n      height: 10px;\n      content: \"\";\n    }\n    &::after {\n      position: absolute;\n      bottom: -10px;\n      left: 0;\n      display: inline-block;\n      width: 100%;\n      height: 10px;\n      content: \"\";\n    }\n  }\n\n  .active {\n    background-color: $carousel-indicator-active-bg;\n  }\n}\n\n\n// Optional captions\n//\n//\n\n.carousel-caption {\n  position: absolute;\n  right: ((100% - $carousel-caption-width) / 2);\n  bottom: 20px;\n  left: ((100% - $carousel-caption-width) / 2);\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: $carousel-caption-color;\n  text-align: center;\n}\n","// stylelint-disable declaration-no-important\n\n.align-baseline    { vertical-align: baseline !important; } // Browser default\n.align-top         { vertical-align: top !important; }\n.align-middle      { vertical-align: middle !important; }\n.align-bottom      { vertical-align: bottom !important; }\n.align-text-bottom { vertical-align: text-bottom !important; }\n.align-text-top    { vertical-align: text-top !important; }\n","// stylelint-disable declaration-no-important\n\n// Contextual backgrounds\n\n@mixin bg-variant($parent, $color) {\n  #{$parent} {\n    background-color: $color !important;\n  }\n  a#{$parent},\n  button#{$parent} {\n    @include hover-focus {\n      background-color: darken($color, 10%) !important;\n    }\n  }\n}\n\n@mixin bg-gradient-variant($parent, $color) {\n  #{$parent} {\n    background: $color linear-gradient(180deg, mix($body-bg, $color, 15%), $color) repeat-x !important;\n  }\n}\n","// stylelint-disable declaration-no-important\n\n@each $color, $value in $theme-colors {\n  @include bg-variant(\".bg-#{$color}\", $value);\n}\n\n@if $enable-gradients {\n  @each $color, $value in $theme-colors {\n    @include bg-gradient-variant(\".bg-gradient-#{$color}\", $value);\n  }\n}\n\n.bg-white {\n  background-color: $white !important;\n}\n\n.bg-transparent {\n  background-color: transparent !important;\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Border\n//\n\n.border         { border: $border-width solid $border-color !important; }\n.border-top     { border-top: $border-width solid $border-color !important; }\n.border-right   { border-right: $border-width solid $border-color !important; }\n.border-bottom  { border-bottom: $border-width solid $border-color !important; }\n.border-left    { border-left: $border-width solid $border-color !important; }\n\n.border-0        { border: 0 !important; }\n.border-top-0    { border-top: 0 !important; }\n.border-right-0  { border-right: 0 !important; }\n.border-bottom-0 { border-bottom: 0 !important; }\n.border-left-0   { border-left: 0 !important; }\n\n@each $color, $value in $theme-colors {\n  .border-#{$color} {\n    border-color: $value !important;\n  }\n}\n\n.border-white {\n  border-color: $white !important;\n}\n\n//\n// Border-radius\n//\n\n.rounded {\n  border-radius: $border-radius !important;\n}\n.rounded-top {\n  border-top-left-radius: $border-radius !important;\n  border-top-right-radius: $border-radius !important;\n}\n.rounded-right {\n  border-top-right-radius: $border-radius !important;\n  border-bottom-right-radius: $border-radius !important;\n}\n.rounded-bottom {\n  border-bottom-right-radius: $border-radius !important;\n  border-bottom-left-radius: $border-radius !important;\n}\n.rounded-left {\n  border-top-left-radius: $border-radius !important;\n  border-bottom-left-radius: $border-radius !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n","@mixin clearfix() {\n  &::after {\n    display: block;\n    clear: both;\n    content: \"\";\n  }\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Utilities for common `display` values\n//\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .d#{$infix}-none         { display: none !important; }\n    .d#{$infix}-inline       { display: inline !important; }\n    .d#{$infix}-inline-block { display: inline-block !important; }\n    .d#{$infix}-block        { display: block !important; }\n    .d#{$infix}-table        { display: table !important; }\n    .d#{$infix}-table-row    { display: table-row !important; }\n    .d#{$infix}-table-cell   { display: table-cell !important; }\n    .d#{$infix}-flex         { display: flex !important; }\n    .d#{$infix}-inline-flex  { display: inline-flex !important; }\n  }\n}\n\n\n//\n// Utilities for toggling `display` in print\n//\n\n@media print {\n  .d-print-none         { display: none !important; }\n  .d-print-inline       { display: inline !important; }\n  .d-print-inline-block { display: inline-block !important; }\n  .d-print-block        { display: block !important; }\n  .d-print-table        { display: table !important; }\n  .d-print-table-row    { display: table-row !important; }\n  .d-print-table-cell   { display: table-cell !important; }\n  .d-print-flex         { display: flex !important; }\n  .d-print-inline-flex  { display: inline-flex !important; }\n}\n","// Credit: Nicolas Gallagher and SUIT CSS.\n\n.embed-responsive {\n  position: relative;\n  display: block;\n  width: 100%;\n  padding: 0;\n  overflow: hidden;\n\n  &::before {\n    display: block;\n    content: \"\";\n  }\n\n  .embed-responsive-item,\n  iframe,\n  embed,\n  object,\n  video {\n    position: absolute;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    width: 100%;\n    height: 100%;\n    border: 0;\n  }\n}\n\n.embed-responsive-21by9 {\n  &::before {\n    padding-top: percentage(9 / 21);\n  }\n}\n\n.embed-responsive-16by9 {\n  &::before {\n    padding-top: percentage(9 / 16);\n  }\n}\n\n.embed-responsive-4by3 {\n  &::before {\n    padding-top: percentage(3 / 4);\n  }\n}\n\n.embed-responsive-1by1 {\n  &::before {\n    padding-top: percentage(1 / 1);\n  }\n}\n","// stylelint-disable declaration-no-important\n\n// Flex variation\n//\n// Custom styles for additional flex alignment options.\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .flex#{$infix}-row            { flex-direction: row !important; }\n    .flex#{$infix}-column         { flex-direction: column !important; }\n    .flex#{$infix}-row-reverse    { flex-direction: row-reverse !important; }\n    .flex#{$infix}-column-reverse { flex-direction: column-reverse !important; }\n\n    .flex#{$infix}-wrap         { flex-wrap: wrap !important; }\n    .flex#{$infix}-nowrap       { flex-wrap: nowrap !important; }\n    .flex#{$infix}-wrap-reverse { flex-wrap: wrap-reverse !important; }\n    .flex#{$infix}-fill         { flex: 1 1 auto !important; }\n    .flex#{$infix}-grow-0       { flex-grow: 0 !important; }\n    .flex#{$infix}-grow-1       { flex-grow: 1 !important; }\n    .flex#{$infix}-shrink-0     { flex-shrink: 0 !important; }\n    .flex#{$infix}-shrink-1     { flex-shrink: 1 !important; }\n\n    .justify-content#{$infix}-start   { justify-content: flex-start !important; }\n    .justify-content#{$infix}-end     { justify-content: flex-end !important; }\n    .justify-content#{$infix}-center  { justify-content: center !important; }\n    .justify-content#{$infix}-between { justify-content: space-between !important; }\n    .justify-content#{$infix}-around  { justify-content: space-around !important; }\n\n    .align-items#{$infix}-start    { align-items: flex-start !important; }\n    .align-items#{$infix}-end      { align-items: flex-end !important; }\n    .align-items#{$infix}-center   { align-items: center !important; }\n    .align-items#{$infix}-baseline { align-items: baseline !important; }\n    .align-items#{$infix}-stretch  { align-items: stretch !important; }\n\n    .align-content#{$infix}-start   { align-content: flex-start !important; }\n    .align-content#{$infix}-end     { align-content: flex-end !important; }\n    .align-content#{$infix}-center  { align-content: center !important; }\n    .align-content#{$infix}-between { align-content: space-between !important; }\n    .align-content#{$infix}-around  { align-content: space-around !important; }\n    .align-content#{$infix}-stretch { align-content: stretch !important; }\n\n    .align-self#{$infix}-auto     { align-self: auto !important; }\n    .align-self#{$infix}-start    { align-self: flex-start !important; }\n    .align-self#{$infix}-end      { align-self: flex-end !important; }\n    .align-self#{$infix}-center   { align-self: center !important; }\n    .align-self#{$infix}-baseline { align-self: baseline !important; }\n    .align-self#{$infix}-stretch  { align-self: stretch !important; }\n  }\n}\n","@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .float#{$infix}-left  { @include float-left; }\n    .float#{$infix}-right { @include float-right; }\n    .float#{$infix}-none  { @include float-none; }\n  }\n}\n","// stylelint-disable declaration-no-important\n\n@mixin float-left {\n  float: left !important;\n}\n@mixin float-right {\n  float: right !important;\n}\n@mixin float-none {\n  float: none !important;\n}\n","// stylelint-disable declaration-no-important\n\n// Common values\n\n// Sass list not in variables since it's not intended for customization.\n// stylelint-disable-next-line scss/dollar-variable-default\n$positions: static, relative, absolute, fixed, sticky;\n\n@each $position in $positions {\n  .position-#{$position} { position: $position !important; }\n}\n\n// Shorthand\n\n.fixed-top {\n  position: fixed;\n  top: 0;\n  right: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.fixed-bottom {\n  position: fixed;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: $zindex-fixed;\n}\n\n.sticky-top {\n  @supports (position: sticky) {\n    position: sticky;\n    top: 0;\n    z-index: $zindex-sticky;\n  }\n}\n","//\n// Screenreaders\n//\n\n.sr-only {\n  @include sr-only();\n}\n\n.sr-only-focusable {\n  @include sr-only-focusable();\n}\n","// Only display content to screen readers\n//\n// See: https://a11yproject.com/posts/how-to-hide-content/\n// See: https://hugogiraudel.com/2016/10/13/css-hide-and-seek/\n\n@mixin sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  white-space: nowrap;\n  border: 0;\n}\n\n// Use in conjunction with .sr-only to only display content when it's focused.\n//\n// Useful for \"Skip to main content\" links; see https://www.w3.org/TR/2013/NOTE-WCAG20-TECHS-20130905/G1\n//\n// Credit: HTML5 Boilerplate\n\n@mixin sr-only-focusable {\n  &:active,\n  &:focus {\n    position: static;\n    width: auto;\n    height: auto;\n    overflow: visible;\n    clip: auto;\n    white-space: normal;\n  }\n}\n","// stylelint-disable declaration-no-important\n\n.shadow-sm { box-shadow: $box-shadow-sm !important; }\n.shadow { box-shadow: $box-shadow !important; }\n.shadow-lg { box-shadow: $box-shadow-lg !important; }\n.shadow-none { box-shadow: none !important; }\n","// stylelint-disable declaration-no-important\n\n// Width and height\n\n@each $prop, $abbrev in (width: w, height: h) {\n  @each $size, $length in $sizes {\n    .#{$abbrev}-#{$size} { #{$prop}: $length !important; }\n  }\n}\n\n.mw-100 { max-width: 100% !important; }\n.mh-100 { max-height: 100% !important; }\n","// stylelint-disable declaration-no-important\n\n// Margin and Padding\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    @each $prop, $abbrev in (margin: m, padding: p) {\n      @each $size, $length in $spacers {\n\n        .#{$abbrev}#{$infix}-#{$size} { #{$prop}: $length !important; }\n        .#{$abbrev}t#{$infix}-#{$size},\n        .#{$abbrev}y#{$infix}-#{$size} {\n          #{$prop}-top: $length !important;\n        }\n        .#{$abbrev}r#{$infix}-#{$size},\n        .#{$abbrev}x#{$infix}-#{$size} {\n          #{$prop}-right: $length !important;\n        }\n        .#{$abbrev}b#{$infix}-#{$size},\n        .#{$abbrev}y#{$infix}-#{$size} {\n          #{$prop}-bottom: $length !important;\n        }\n        .#{$abbrev}l#{$infix}-#{$size},\n        .#{$abbrev}x#{$infix}-#{$size} {\n          #{$prop}-left: $length !important;\n        }\n      }\n    }\n\n    // Some special margin utils\n    .m#{$infix}-auto { margin: auto !important; }\n    .mt#{$infix}-auto,\n    .my#{$infix}-auto {\n      margin-top: auto !important;\n    }\n    .mr#{$infix}-auto,\n    .mx#{$infix}-auto {\n      margin-right: auto !important;\n    }\n    .mb#{$infix}-auto,\n    .my#{$infix}-auto {\n      margin-bottom: auto !important;\n    }\n    .ml#{$infix}-auto,\n    .mx#{$infix}-auto {\n      margin-left: auto !important;\n    }\n  }\n}\n","// stylelint-disable declaration-no-important\n\n//\n// Text\n//\n\n.text-monospace { font-family: $font-family-monospace; }\n\n// Alignment\n\n.text-justify  { text-align: justify !important; }\n.text-nowrap   { white-space: nowrap !important; }\n.text-truncate { @include text-truncate; }\n\n// Responsive alignment\n\n@each $breakpoint in map-keys($grid-breakpoints) {\n  @include media-breakpoint-up($breakpoint) {\n    $infix: breakpoint-infix($breakpoint, $grid-breakpoints);\n\n    .text#{$infix}-left   { text-align: left !important; }\n    .text#{$infix}-right  { text-align: right !important; }\n    .text#{$infix}-center { text-align: center !important; }\n  }\n}\n\n// Transformation\n\n.text-lowercase  { text-transform: lowercase !important; }\n.text-uppercase  { text-transform: uppercase !important; }\n.text-capitalize { text-transform: capitalize !important; }\n\n// Weight and italics\n\n.font-weight-light  { font-weight: $font-weight-light !important; }\n.font-weight-normal { font-weight: $font-weight-normal !important; }\n.font-weight-bold   { font-weight: $font-weight-bold !important; }\n.font-italic        { font-style: italic !important; }\n\n// Contextual colors\n\n.text-white { color: $white !important; }\n\n@each $color, $value in $theme-colors {\n  @include text-emphasis-variant(\".text-#{$color}\", $value);\n}\n\n.text-body { color: $body-color !important; }\n.text-muted { color: $text-muted !important; }\n\n.text-black-50 { color: rgba($black, .5) !important; }\n.text-white-50 { color: rgba($white, .5) !important; }\n\n// Misc\n\n.text-hide {\n  @include text-hide($ignore-warning: true);\n}\n","// Text truncate\n// Requires inline-block or block for proper styling\n\n@mixin text-truncate() {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n","// stylelint-disable declaration-no-important\n\n// Typography\n\n@mixin text-emphasis-variant($parent, $color) {\n  #{$parent} {\n    color: $color !important;\n  }\n  a#{$parent} {\n    @include hover-focus {\n      color: darken($color, 10%) !important;\n    }\n  }\n}\n","// CSS image replacement\n@mixin text-hide($ignore-warning: false) {\n  // stylelint-disable-next-line font-family-no-missing-generic-family-keyword\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n\n  @if ($ignore-warning != true) {\n    @warn \"The `text-hide()` mixin has been deprecated as of v4.1.1. It will be removed entirely in v5.\";\n  }\n}\n","//\n// Visibility utilities\n//\n\n.visible {\n  @include invisible(visible);\n}\n\n.invisible {\n  @include invisible(hidden);\n}\n","// stylelint-disable declaration-no-important\n\n// Visibility\n\n@mixin invisible($visibility) {\n  visibility: $visibility !important;\n}\n","// stylelint-disable declaration-no-important, selector-no-qualifying-type\n\n// Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css\n\n// ==========================================================================\n// Print styles.\n// Inlined to avoid the additional HTTP request:\n// https://www.phpied.com/delay-loading-your-print-css/\n// ==========================================================================\n\n@if $enable-print-styles {\n  @media print {\n    *,\n    *::before,\n    *::after {\n      // Bootstrap specific; comment out `color` and `background`\n      //color: $black !important; // Black prints faster\n      text-shadow: none !important;\n      //background: transparent !important;\n      box-shadow: none !important;\n    }\n\n    a {\n      &:not(.btn) {\n        text-decoration: underline;\n      }\n    }\n\n    // Bootstrap specific; comment the following selector out\n    //a[href]::after {\n    //  content: \" (\" attr(href) \")\";\n    //}\n\n    abbr[title]::after {\n      content: \" (\" attr(title) \")\";\n    }\n\n    // Bootstrap specific; comment the following selector out\n    //\n    // Don't show links that are fragment identifiers,\n    // or use the `javascript:` pseudo protocol\n    //\n\n    //a[href^=\"#\"]::after,\n    //a[href^=\"javascript:\"]::after {\n    // content: \"\";\n    //}\n\n    pre {\n      white-space: pre-wrap !important;\n    }\n    pre,\n    blockquote {\n      border: $border-width solid $gray-500;   // Bootstrap custom code; using `$border-width` instead of 1px\n      page-break-inside: avoid;\n    }\n\n    //\n    // Printing Tables:\n    // http://css-discuss.incutio.com/wiki/Printing_Tables\n    //\n\n    thead {\n      display: table-header-group;\n    }\n\n    tr,\n    img {\n      page-break-inside: avoid;\n    }\n\n    p,\n    h2,\n    h3 {\n      orphans: 3;\n      widows: 3;\n    }\n\n    h2,\n    h3 {\n      page-break-after: avoid;\n    }\n\n    // Bootstrap specific changes start\n\n    // Specify a size and min-width to make printing closer across browsers.\n    // We don't set margin here because it breaks `size` in Chrome. We also\n    // don't use `!important` on `size` as it breaks in Chrome.\n    @page {\n      size: $print-page-size;\n    }\n    body {\n      min-width: $print-body-min-width !important;\n    }\n    .container {\n      min-width: $print-body-min-width !important;\n    }\n\n    // Bootstrap components\n    .navbar {\n      display: none;\n    }\n    .badge {\n      border: $border-width solid $black;\n    }\n\n    .table {\n      border-collapse: collapse !important;\n\n      td,\n      th {\n        background-color: $white !important;\n      }\n    }\n\n    .table-bordered {\n      th,\n      td {\n        border: 1px solid $gray-300 !important;\n      }\n    }\n\n    .table-dark {\n      color: inherit;\n\n      th,\n      td,\n      thead th,\n      tbody + tbody {\n        border-color: $table-border-color;\n      }\n    }\n\n    .table .thead-dark th {\n      color: inherit;\n      border-color: $table-border-color;\n    }\n\n    // Bootstrap specific changes end\n  }\n}\n"]}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/index.html b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/index.html
deleted file mode 100644 (file)
index d9dc554..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-       <meta charset="UTF-8" />
-       <script src="js/jquery-3.3.1.min.js"></script>
-       <script src="js/popper.min.js"></script>
-       <script src="js/bootstrap.min.js"></script>
-       <script src="js/app.js"></script>
-       <link rel="stylesheet" href="css/bootstrap.min.css" />
-</head>
-<body>
-<div class="container">
-       <div class="row">
-               <div class="col-12">
-                       <h1>Information</h1>
-               </div>
-       </div>
-       <div class="row">
-               <div class="col-6">
-                       <table style="width:100%;">
-                               <tr>
-                                       <td>akka.conf</td>
-                                       <td><button type="button" class="btn btn-primary" onClick="app.loadAkkaConf('#result');">Show</button></td>
-                               </tr>
-                               <tr>
-                                       <td>geo.conf</td>
-                                       <td><button type="button" class="btn btn-primary" onClick="app.loadGeoConf('#result');">Show</button></td>
-                               </tr>
-                               <tr>
-                                       <td>devicemanager.properties</td>
-                                       <td><button type="button" class="btn btn-primary" onClick="app.loadDevMgrProp('#result');">Show</button></td>
-                               </tr>
-                               <tr>
-                                       <td>elasticsearch.yml</td>
-                                       <td><button type="button" class="btn btn-primary" onClick="app.loadEsYml('#result');">Show</button></td>
-                               </tr>
-                               <tr>
-                                       <td>log.properties</td>
-                                       <td><button type="button" class="btn btn-primary" onClick="app.loadLogProp('#result');">Show</button></td>
-                               </tr>
-                               <tr>
-                                       <td>bundle.list</td>
-                                       <td><button type="button" class="btn btn-primary" onClick="app.loadBundleList('#result');">Show</button></td>
-                               </tr>
-                               <tr>
-                                       <td>download log</td>
-                                       <td>
-                                               <button type="button" class="btn btn-primary" onClick="app.createLogDL();">Var1</button>
-                                               <button type="button" class="btn btn-primary" onClick="app.createLogDLGet();">Var2</button>
-                                       </td>
-                               </tr>
-                               <tr>
-                                       <td>DB Backup: Create</td>
-                                       <td><button type="button" class="btn btn-primary" onClick="app.createDBBackup('#result');">Run</button></td>
-                               </tr>
-                               <tr>
-                                       <td>DB Backup: Restore</td>
-                                       <td><button type="button" class="btn btn-primary" onClick="app.restoreDBBackup('#result');">Run</button></td>
-                               </tr>
-
-                       </table>
-               </div>
-               <div class="col-6">
-                       <textarea id="result" style="width:90%;height:500px;"></textarea>
-               </div>
-       </div>
-</div>
-</body>
-<script>
-var app;
-app=new Application();
-</script>
-</html>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/app.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/app.js
deleted file mode 100644 (file)
index 5842e87..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-Application = function(){
-
-       this._baseUrl="/info";
-}
-Application.prototype._get = function(uri,cb,cbError){
-       var _self = this;
-       $.get({
-               url:this._baseUrl+uri,
-               method:'GET',
-               success:function(r){
-                       try {
-                               if (typeof (r) === "string")
-                                       r = JSON.parse(r);
-                               cb(r);
-                       } catch (e) {
-                               _self.log(e);
-                               if(cbError!==undefined)
-                                       cbError(e);
-                       }
-               }
-       }).fail(function(){
-               if(cbError!==undefined)
-                       cbError("error");
-
-       });
-}
-Application.prototype._post = function(uri,data,cb,cbError){
-       var _self = this;
-       $.get({
-               url:this._baseUrl+uri,
-               method:'POST',
-               data:data,
-               success:function(r){
-                       try {
-                               if(r===undefined)
-                                       r="";
-                               if(cb!==undefined){
-                                       //if (typeof (r) === "string")
-                                       //      r = JSON.parse(r);
-                                       cb(r);
-                               }
-                       } catch (e) {
-                               _self.log(e);
-                               if(cbError!==undefined)
-                                       cbError(e);
-                       }
-               }
-       }).fail(function(){
-               if(cbError!==undefined)
-                       cbError("error");
-
-       });
-}
-
-Application.prototype.loadBundleList = function(outputSelector){
-       this._post("/api/data/bundle.list","",function(r){
-               $(outputSelector).html(JSON.stringify(r));
-       },function(e){
-               $(outputSelector).html(e);
-       });
-}
-Application.prototype.loadAkkaConf = function(outputSelector){
-       this._post("/api/data/akka.conf","",function(r){
-               $(outputSelector).html(r);
-       },function(e){
-               $(outputSelector).html(e);
-       });
-}
-Application.prototype.loadGeoConf = function(outputSelector){
-       this._post("/api/data/geo.conf","",function(r){
-               $(outputSelector).html(r);
-       },function(e){
-               $(outputSelector).html(e);
-       });
-}
-Application.prototype.loadDevMgrProp = function(outputSelector){
-       this._post("/api/data/devmgr.prop","",function(r){
-               $(outputSelector).html(r);
-       },function(e){
-               $(outputSelector).html(e);
-       });
-}
-Application.prototype.loadEsYml = function(outputSelector){
-       this._post("/api/data/es.yml","",function(r){
-               $(outputSelector).html(r);
-       },function(e){
-               $(outputSelector).html(e);
-       });
-}
-Application.prototype.loadLogProp = function(outputSelector){
-       this._post("/api/data/log.prop","",function(r){
-               $(outputSelector).html(r);
-       },function(e){
-               $(outputSelector).html(e);
-       });
-}
-Application.prototype.createLogDL = function(){
-       this._post("/api/data/log.download","",function(r){
-               $(outputSelector).html(r);
-       },function(e){
-               $(outputSelector).html(e);
-       });
-}
-Application.prototype.createLogDLGet = function(){
-       window.open(this._baseUrl+"/api/data/log.download");
-}
-Application.prototype.createDBBackup = function(outputSelector){
-       this._post("/api/api/task/dbbackup.create","",function(r){
-               $(outputSelector).html(r);
-       },function(e){
-               $(outputSelector).html(e);
-       });
-}
-Application.prototype.restoreDBBackup = function(outputSelector){
-       this._post("/api/task/dbbackup.restore","",function(r){
-               $(outputSelector).html(r);
-       },function(e){
-               $(outputSelector).html(e);
-       });
-}
-
-Application.prototype.log = function(msg){
-       console.log(msg);
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/bootstrap.min.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/bootstrap.min.js
deleted file mode 100644 (file)
index 0e846b7..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
-  * Bootstrap v4.1.1 (https://getbootstrap.com/)
-  * Copyright 2011-2018 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
-  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
-  */
-!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("jquery"),require("popper.js")):"function"==typeof define&&define.amd?define(["exports","jquery","popper.js"],e):e(t.bootstrap={},t.jQuery,t.Popper)}(this,function(t,e,c){"use strict";function i(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function o(t,e,n){return e&&i(t.prototype,e),n&&i(t,n),t}function h(r){for(var t=1;t<arguments.length;t++){var s=null!=arguments[t]?arguments[t]:{},e=Object.keys(s);"function"==typeof Object.getOwnPropertySymbols&&(e=e.concat(Object.getOwnPropertySymbols(s).filter(function(t){return Object.getOwnPropertyDescriptor(s,t).enumerable}))),e.forEach(function(t){var e,n,i;e=r,i=s[n=t],n in e?Object.defineProperty(e,n,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[n]=i})}return r}e=e&&e.hasOwnProperty("default")?e.default:e,c=c&&c.hasOwnProperty("default")?c.default:c;var r,n,s,a,l,u,f,d,_,g,m,p,v,E,y,T,C,I,A,D,b,S,w,N,O,k,P,L,j,R,H,W,M,x,U,K,F,V,Q,B,Y,G,q,z,X,J,Z,$,tt,et,nt,it,rt,st,ot,at,lt,ht,ct,ut,ft,dt,_t,gt,mt,pt,vt,Et,yt,Tt,Ct,It,At,Dt,bt,St,wt,Nt,Ot,kt,Pt,Lt,jt,Rt,Ht,Wt,Mt,xt,Ut,Kt,Ft,Vt,Qt,Bt,Yt,Gt,qt,zt,Xt,Jt,Zt,$t,te,ee,ne,ie,re,se,oe,ae,le,he,ce,ue,fe,de,_e,ge,me,pe,ve,Ee,ye,Te,Ce,Ie,Ae,De,be,Se,we,Ne,Oe,ke,Pe,Le,je,Re,He,We,Me,xe,Ue,Ke,Fe,Ve,Qe,Be,Ye,Ge,qe,ze,Xe,Je,Ze,$e,tn,en,nn,rn,sn,on,an,ln,hn,cn,un,fn,dn,_n,gn,mn,pn,vn,En,yn,Tn,Cn=function(i){var e="transitionend";function t(t){var e=this,n=!1;return i(this).one(l.TRANSITION_END,function(){n=!0}),setTimeout(function(){n||l.triggerTransitionEnd(e)},t),this}var l={TRANSITION_END:"bsTransitionEnd",getUID:function(t){for(;t+=~~(1e6*Math.random()),document.getElementById(t););return t},getSelectorFromElement:function(t){var e=t.getAttribute("data-target");e&&"#"!==e||(e=t.getAttribute("href")||"");try{return 0<i(document).find(e).length?e:null}catch(t){return null}},getTransitionDurationFromElement:function(t){if(!t)return 0;var e=i(t).css("transition-duration");return parseFloat(e)?(e=e.split(",")[0],1e3*parseFloat(e)):0},reflow:function(t){return t.offsetHeight},triggerTransitionEnd:function(t){i(t).trigger(e)},supportsTransitionEnd:function(){return Boolean(e)},isElement:function(t){return(t[0]||t).nodeType},typeCheckConfig:function(t,e,n){for(var i in n)if(Object.prototype.hasOwnProperty.call(n,i)){var r=n[i],s=e[i],o=s&&l.isElement(s)?"element":(a=s,{}.toString.call(a).match(/\s([a-z]+)/i)[1].toLowerCase());if(!new RegExp(r).test(o))throw new Error(t.toUpperCase()+': Option "'+i+'" provided type "'+o+'" but expected type "'+r+'".')}var a}};return i.fn.emulateTransitionEnd=t,i.event.special[l.TRANSITION_END]={bindType:e,delegateType:e,handle:function(t){if(i(t.target).is(this))return t.handleObj.handler.apply(this,arguments)}},l}(e),In=(n="alert",a="."+(s="bs.alert"),l=(r=e).fn[n],u={CLOSE:"close"+a,CLOSED:"closed"+a,CLICK_DATA_API:"click"+a+".data-api"},f="alert",d="fade",_="show",g=function(){function i(t){this._element=t}var t=i.prototype;return t.close=function(t){var e=this._element;t&&(e=this._getRootElement(t)),this._triggerCloseEvent(e).isDefaultPrevented()||this._removeElement(e)},t.dispose=function(){r.removeData(this._element,s),this._element=null},t._getRootElement=function(t){var e=Cn.getSelectorFromElement(t),n=!1;return e&&(n=r(e)[0]),n||(n=r(t).closest("."+f)[0]),n},t._triggerCloseEvent=function(t){var e=r.Event(u.CLOSE);return r(t).trigger(e),e},t._removeElement=function(e){var n=this;if(r(e).removeClass(_),r(e).hasClass(d)){var t=Cn.getTransitionDurationFromElement(e);r(e).one(Cn.TRANSITION_END,function(t){return n._destroyElement(e,t)}).emulateTransitionEnd(t)}else this._destroyElement(e)},t._destroyElement=function(t){r(t).detach().trigger(u.CLOSED).remove()},i._jQueryInterface=function(n){return this.each(function(){var t=r(this),e=t.data(s);e||(e=new i(this),t.data(s,e)),"close"===n&&e[n](this)})},i._handleDismiss=function(e){return function(t){t&&t.preventDefault(),e.close(this)}},o(i,null,[{key:"VERSION",get:function(){return"4.1.1"}}]),i}(),r(document).on(u.CLICK_DATA_API,'[data-dismiss="alert"]',g._handleDismiss(new g)),r.fn[n]=g._jQueryInterface,r.fn[n].Constructor=g,r.fn[n].noConflict=function(){return r.fn[n]=l,g._jQueryInterface},g),An=(p="button",E="."+(v="bs.button"),y=".data-api",T=(m=e).fn[p],C="active",I="btn",D='[data-toggle^="button"]',b='[data-toggle="buttons"]',S="input",w=".active",N=".btn",O={CLICK_DATA_API:"click"+E+y,FOCUS_BLUR_DATA_API:(A="focus")+E+y+" blur"+E+y},k=function(){function n(t){this._element=t}var t=n.prototype;return t.toggle=function(){var t=!0,e=!0,n=m(this._element).closest(b)[0];if(n){var i=m(this._element).find(S)[0];if(i){if("radio"===i.type)if(i.checked&&m(this._element).hasClass(C))t=!1;else{var r=m(n).find(w)[0];r&&m(r).removeClass(C)}if(t){if(i.hasAttribute("disabled")||n.hasAttribute("disabled")||i.classList.contains("disabled")||n.classList.contains("disabled"))return;i.checked=!m(this._element).hasClass(C),m(i).trigger("change")}i.focus(),e=!1}}e&&this._element.setAttribute("aria-pressed",!m(this._element).hasClass(C)),t&&m(this._element).toggleClass(C)},t.dispose=function(){m.removeData(this._element,v),this._element=null},n._jQueryInterface=function(e){return this.each(function(){var t=m(this).data(v);t||(t=new n(this),m(this).data(v,t)),"toggle"===e&&t[e]()})},o(n,null,[{key:"VERSION",get:function(){return"4.1.1"}}]),n}(),m(document).on(O.CLICK_DATA_API,D,function(t){t.preventDefault();var e=t.target;m(e).hasClass(I)||(e=m(e).closest(N)),k._jQueryInterface.call(m(e),"toggle")}).on(O.FOCUS_BLUR_DATA_API,D,function(t){var e=m(t.target).closest(N)[0];m(e).toggleClass(A,/^focus(in)?$/.test(t.type))}),m.fn[p]=k._jQueryInterface,m.fn[p].Constructor=k,m.fn[p].noConflict=function(){return m.fn[p]=T,k._jQueryInterface},k),Dn=(L="carousel",R="."+(j="bs.carousel"),H=".data-api",W=(P=e).fn[L],M={interval:5e3,keyboard:!0,slide:!1,pause:"hover",wrap:!0},x={interval:"(number|boolean)",keyboard:"boolean",slide:"(boolean|string)",pause:"(string|boolean)",wrap:"boolean"},U="next",K="prev",F="left",V="right",Q={SLIDE:"slide"+R,SLID:"slid"+R,KEYDOWN:"keydown"+R,MOUSEENTER:"mouseenter"+R,MOUSELEAVE:"mouseleave"+R,TOUCHEND:"touchend"+R,LOAD_DATA_API:"load"+R+H,CLICK_DATA_API:"click"+R+H},B="carousel",Y="active",G="slide",q="carousel-item-right",z="carousel-item-left",X="carousel-item-next",J="carousel-item-prev",Z={ACTIVE:".active",ACTIVE_ITEM:".active.carousel-item",ITEM:".carousel-item",NEXT_PREV:".carousel-item-next, .carousel-item-prev",INDICATORS:".carousel-indicators",DATA_SLIDE:"[data-slide], [data-slide-to]",DATA_RIDE:'[data-ride="carousel"]'},$=function(){function s(t,e){this._items=null,this._interval=null,this._activeElement=null,this._isPaused=!1,this._isSliding=!1,this.touchTimeout=null,this._config=this._getConfig(e),this._element=P(t)[0],this._indicatorsElement=P(this._element).find(Z.INDICATORS)[0],this._addEventListeners()}var t=s.prototype;return t.next=function(){this._isSliding||this._slide(U)},t.nextWhenVisible=function(){!document.hidden&&P(this._element).is(":visible")&&"hidden"!==P(this._element).css("visibility")&&this.next()},t.prev=function(){this._isSliding||this._slide(K)},t.pause=function(t){t||(this._isPaused=!0),P(this._element).find(Z.NEXT_PREV)[0]&&(Cn.triggerTransitionEnd(this._element),this.cycle(!0)),clearInterval(this._interval),this._interval=null},t.cycle=function(t){t||(this._isPaused=!1),this._interval&&(clearInterval(this._interval),this._interval=null),this._config.interval&&!this._isPaused&&(this._interval=setInterval((document.visibilityState?this.nextWhenVisible:this.next).bind(this),this._config.interval))},t.to=function(t){var e=this;this._activeElement=P(this._element).find(Z.ACTIVE_ITEM)[0];var n=this._getItemIndex(this._activeElement);if(!(t>this._items.length-1||t<0))if(this._isSliding)P(this._element).one(Q.SLID,function(){return e.to(t)});else{if(n===t)return this.pause(),void this.cycle();var i=n<t?U:K;this._slide(i,this._items[t])}},t.dispose=function(){P(this._element).off(R),P.removeData(this._element,j),this._items=null,this._config=null,this._element=null,this._interval=null,this._isPaused=null,this._isSliding=null,this._activeElement=null,this._indicatorsElement=null},t._getConfig=function(t){return t=h({},M,t),Cn.typeCheckConfig(L,t,x),t},t._addEventListeners=function(){var e=this;this._config.keyboard&&P(this._element).on(Q.KEYDOWN,function(t){return e._keydown(t)}),"hover"===this._config.pause&&(P(this._element).on(Q.MOUSEENTER,function(t){return e.pause(t)}).on(Q.MOUSELEAVE,function(t){return e.cycle(t)}),"ontouchstart"in document.documentElement&&P(this._element).on(Q.TOUCHEND,function(){e.pause(),e.touchTimeout&&clearTimeout(e.touchTimeout),e.touchTimeout=setTimeout(function(t){return e.cycle(t)},500+e._config.interval)}))},t._keydown=function(t){if(!/input|textarea/i.test(t.target.tagName))switch(t.which){case 37:t.preventDefault(),this.prev();break;case 39:t.preventDefault(),this.next()}},t._getItemIndex=function(t){return this._items=P.makeArray(P(t).parent().find(Z.ITEM)),this._items.indexOf(t)},t._getItemByDirection=function(t,e){var n=t===U,i=t===K,r=this._getItemIndex(e),s=this._items.length-1;if((i&&0===r||n&&r===s)&&!this._config.wrap)return e;var o=(r+(t===K?-1:1))%this._items.length;return-1===o?this._items[this._items.length-1]:this._items[o]},t._triggerSlideEvent=function(t,e){var n=this._getItemIndex(t),i=this._getItemIndex(P(this._element).find(Z.ACTIVE_ITEM)[0]),r=P.Event(Q.SLIDE,{relatedTarget:t,direction:e,from:i,to:n});return P(this._element).trigger(r),r},t._setActiveIndicatorElement=function(t){if(this._indicatorsElement){P(this._indicatorsElement).find(Z.ACTIVE).removeClass(Y);var e=this._indicatorsElement.children[this._getItemIndex(t)];e&&P(e).addClass(Y)}},t._slide=function(t,e){var n,i,r,s=this,o=P(this._element).find(Z.ACTIVE_ITEM)[0],a=this._getItemIndex(o),l=e||o&&this._getItemByDirection(t,o),h=this._getItemIndex(l),c=Boolean(this._interval);if(t===U?(n=z,i=X,r=F):(n=q,i=J,r=V),l&&P(l).hasClass(Y))this._isSliding=!1;else if(!this._triggerSlideEvent(l,r).isDefaultPrevented()&&o&&l){this._isSliding=!0,c&&this.pause(),this._setActiveIndicatorElement(l);var u=P.Event(Q.SLID,{relatedTarget:l,direction:r,from:a,to:h});if(P(this._element).hasClass(G)){P(l).addClass(i),Cn.reflow(l),P(o).addClass(n),P(l).addClass(n);var f=Cn.getTransitionDurationFromElement(o);P(o).one(Cn.TRANSITION_END,function(){P(l).removeClass(n+" "+i).addClass(Y),P(o).removeClass(Y+" "+i+" "+n),s._isSliding=!1,setTimeout(function(){return P(s._element).trigger(u)},0)}).emulateTransitionEnd(f)}else P(o).removeClass(Y),P(l).addClass(Y),this._isSliding=!1,P(this._element).trigger(u);c&&this.cycle()}},s._jQueryInterface=function(i){return this.each(function(){var t=P(this).data(j),e=h({},M,P(this).data());"object"==typeof i&&(e=h({},e,i));var n="string"==typeof i?i:e.slide;if(t||(t=new s(this,e),P(this).data(j,t)),"number"==typeof i)t.to(i);else if("string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}else e.interval&&(t.pause(),t.cycle())})},s._dataApiClickHandler=function(t){var e=Cn.getSelectorFromElement(this);if(e){var n=P(e)[0];if(n&&P(n).hasClass(B)){var i=h({},P(n).data(),P(this).data()),r=this.getAttribute("data-slide-to");r&&(i.interval=!1),s._jQueryInterface.call(P(n),i),r&&P(n).data(j).to(r),t.preventDefault()}}},o(s,null,[{key:"VERSION",get:function(){return"4.1.1"}},{key:"Default",get:function(){return M}}]),s}(),P(document).on(Q.CLICK_DATA_API,Z.DATA_SLIDE,$._dataApiClickHandler),P(window).on(Q.LOAD_DATA_API,function(){P(Z.DATA_RIDE).each(function(){var t=P(this);$._jQueryInterface.call(t,t.data())})}),P.fn[L]=$._jQueryInterface,P.fn[L].Constructor=$,P.fn[L].noConflict=function(){return P.fn[L]=W,$._jQueryInterface},$),bn=(et="collapse",it="."+(nt="bs.collapse"),rt=(tt=e).fn[et],st={toggle:!0,parent:""},ot={toggle:"boolean",parent:"(string|element)"},at={SHOW:"show"+it,SHOWN:"shown"+it,HIDE:"hide"+it,HIDDEN:"hidden"+it,CLICK_DATA_API:"click"+it+".data-api"},lt="show",ht="collapse",ct="collapsing",ut="collapsed",ft="width",dt="height",_t={ACTIVES:".show, .collapsing",DATA_TOGGLE:'[data-toggle="collapse"]'},gt=function(){function a(t,e){this._isTransitioning=!1,this._element=t,this._config=this._getConfig(e),this._triggerArray=tt.makeArray(tt('[data-toggle="collapse"][href="#'+t.id+'"],[data-toggle="collapse"][data-target="#'+t.id+'"]'));for(var n=tt(_t.DATA_TOGGLE),i=0;i<n.length;i++){var r=n[i],s=Cn.getSelectorFromElement(r);null!==s&&0<tt(s).filter(t).length&&(this._selector=s,this._triggerArray.push(r))}this._parent=this._config.parent?this._getParent():null,this._config.parent||this._addAriaAndCollapsedClass(this._element,this._triggerArray),this._config.toggle&&this.toggle()}var t=a.prototype;return t.toggle=function(){tt(this._element).hasClass(lt)?this.hide():this.show()},t.show=function(){var t,e,n=this;if(!this._isTransitioning&&!tt(this._element).hasClass(lt)&&(this._parent&&0===(t=tt.makeArray(tt(this._parent).find(_t.ACTIVES).filter('[data-parent="'+this._config.parent+'"]'))).length&&(t=null),!(t&&(e=tt(t).not(this._selector).data(nt))&&e._isTransitioning))){var i=tt.Event(at.SHOW);if(tt(this._element).trigger(i),!i.isDefaultPrevented()){t&&(a._jQueryInterface.call(tt(t).not(this._selector),"hide"),e||tt(t).data(nt,null));var r=this._getDimension();tt(this._element).removeClass(ht).addClass(ct),(this._element.style[r]=0)<this._triggerArray.length&&tt(this._triggerArray).removeClass(ut).attr("aria-expanded",!0),this.setTransitioning(!0);var s="scroll"+(r[0].toUpperCase()+r.slice(1)),o=Cn.getTransitionDurationFromElement(this._element);tt(this._element).one(Cn.TRANSITION_END,function(){tt(n._element).removeClass(ct).addClass(ht).addClass(lt),n._element.style[r]="",n.setTransitioning(!1),tt(n._element).trigger(at.SHOWN)}).emulateTransitionEnd(o),this._element.style[r]=this._element[s]+"px"}}},t.hide=function(){var t=this;if(!this._isTransitioning&&tt(this._element).hasClass(lt)){var e=tt.Event(at.HIDE);if(tt(this._element).trigger(e),!e.isDefaultPrevented()){var n=this._getDimension();if(this._element.style[n]=this._element.getBoundingClientRect()[n]+"px",Cn.reflow(this._element),tt(this._element).addClass(ct).removeClass(ht).removeClass(lt),0<this._triggerArray.length)for(var i=0;i<this._triggerArray.length;i++){var r=this._triggerArray[i],s=Cn.getSelectorFromElement(r);if(null!==s)tt(s).hasClass(lt)||tt(r).addClass(ut).attr("aria-expanded",!1)}this.setTransitioning(!0);this._element.style[n]="";var o=Cn.getTransitionDurationFromElement(this._element);tt(this._element).one(Cn.TRANSITION_END,function(){t.setTransitioning(!1),tt(t._element).removeClass(ct).addClass(ht).trigger(at.HIDDEN)}).emulateTransitionEnd(o)}}},t.setTransitioning=function(t){this._isTransitioning=t},t.dispose=function(){tt.removeData(this._element,nt),this._config=null,this._parent=null,this._element=null,this._triggerArray=null,this._isTransitioning=null},t._getConfig=function(t){return(t=h({},st,t)).toggle=Boolean(t.toggle),Cn.typeCheckConfig(et,t,ot),t},t._getDimension=function(){return tt(this._element).hasClass(ft)?ft:dt},t._getParent=function(){var n=this,t=null;Cn.isElement(this._config.parent)?(t=this._config.parent,"undefined"!=typeof this._config.parent.jquery&&(t=this._config.parent[0])):t=tt(this._config.parent)[0];var e='[data-toggle="collapse"][data-parent="'+this._config.parent+'"]';return tt(t).find(e).each(function(t,e){n._addAriaAndCollapsedClass(a._getTargetFromElement(e),[e])}),t},t._addAriaAndCollapsedClass=function(t,e){if(t){var n=tt(t).hasClass(lt);0<e.length&&tt(e).toggleClass(ut,!n).attr("aria-expanded",n)}},a._getTargetFromElement=function(t){var e=Cn.getSelectorFromElement(t);return e?tt(e)[0]:null},a._jQueryInterface=function(i){return this.each(function(){var t=tt(this),e=t.data(nt),n=h({},st,t.data(),"object"==typeof i&&i?i:{});if(!e&&n.toggle&&/show|hide/.test(i)&&(n.toggle=!1),e||(e=new a(this,n),t.data(nt,e)),"string"==typeof i){if("undefined"==typeof e[i])throw new TypeError('No method named "'+i+'"');e[i]()}})},o(a,null,[{key:"VERSION",get:function(){return"4.1.1"}},{key:"Default",get:function(){return st}}]),a}(),tt(document).on(at.CLICK_DATA_API,_t.DATA_TOGGLE,function(t){"A"===t.currentTarget.tagName&&t.preventDefault();var n=tt(this),e=Cn.getSelectorFromElement(this);tt(e).each(function(){var t=tt(this),e=t.data(nt)?"toggle":n.data();gt._jQueryInterface.call(t,e)})}),tt.fn[et]=gt._jQueryInterface,tt.fn[et].Constructor=gt,tt.fn[et].noConflict=function(){return tt.fn[et]=rt,gt._jQueryInterface},gt),Sn=(pt="dropdown",Et="."+(vt="bs.dropdown"),yt=".data-api",Tt=(mt=e).fn[pt],Ct=new RegExp("38|40|27"),It={HIDE:"hide"+Et,HIDDEN:"hidden"+Et,SHOW:"show"+Et,SHOWN:"shown"+Et,CLICK:"click"+Et,CLICK_DATA_API:"click"+Et+yt,KEYDOWN_DATA_API:"keydown"+Et+yt,KEYUP_DATA_API:"keyup"+Et+yt},At="disabled",Dt="show",bt="dropup",St="dropright",wt="dropleft",Nt="dropdown-menu-right",Ot="position-static",kt='[data-toggle="dropdown"]',Pt=".dropdown form",Lt=".dropdown-menu",jt=".navbar-nav",Rt=".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",Ht="top-start",Wt="top-end",Mt="bottom-start",xt="bottom-end",Ut="right-start",Kt="left-start",Ft={offset:0,flip:!0,boundary:"scrollParent",reference:"toggle",display:"dynamic"},Vt={offset:"(number|string|function)",flip:"boolean",boundary:"(string|element)",reference:"(string|element)",display:"string"},Qt=function(){function l(t,e){this._element=t,this._popper=null,this._config=this._getConfig(e),this._menu=this._getMenuElement(),this._inNavbar=this._detectNavbar(),this._addEventListeners()}var t=l.prototype;return t.toggle=function(){if(!this._element.disabled&&!mt(this._element).hasClass(At)){var t=l._getParentFromElement(this._element),e=mt(this._menu).hasClass(Dt);if(l._clearMenus(),!e){var n={relatedTarget:this._element},i=mt.Event(It.SHOW,n);if(mt(t).trigger(i),!i.isDefaultPrevented()){if(!this._inNavbar){if("undefined"==typeof c)throw new TypeError("Bootstrap dropdown require Popper.js (https://popper.js.org)");var r=this._element;"parent"===this._config.reference?r=t:Cn.isElement(this._config.reference)&&(r=this._config.reference,"undefined"!=typeof this._config.reference.jquery&&(r=this._config.reference[0])),"scrollParent"!==this._config.boundary&&mt(t).addClass(Ot),this._popper=new c(r,this._menu,this._getPopperConfig())}"ontouchstart"in document.documentElement&&0===mt(t).closest(jt).length&&mt(document.body).children().on("mouseover",null,mt.noop),this._element.focus(),this._element.setAttribute("aria-expanded",!0),mt(this._menu).toggleClass(Dt),mt(t).toggleClass(Dt).trigger(mt.Event(It.SHOWN,n))}}}},t.dispose=function(){mt.removeData(this._element,vt),mt(this._element).off(Et),this._element=null,(this._menu=null)!==this._popper&&(this._popper.destroy(),this._popper=null)},t.update=function(){this._inNavbar=this._detectNavbar(),null!==this._popper&&this._popper.scheduleUpdate()},t._addEventListeners=function(){var e=this;mt(this._element).on(It.CLICK,function(t){t.preventDefault(),t.stopPropagation(),e.toggle()})},t._getConfig=function(t){return t=h({},this.constructor.Default,mt(this._element).data(),t),Cn.typeCheckConfig(pt,t,this.constructor.DefaultType),t},t._getMenuElement=function(){if(!this._menu){var t=l._getParentFromElement(this._element);this._menu=mt(t).find(Lt)[0]}return this._menu},t._getPlacement=function(){var t=mt(this._element).parent(),e=Mt;return t.hasClass(bt)?(e=Ht,mt(this._menu).hasClass(Nt)&&(e=Wt)):t.hasClass(St)?e=Ut:t.hasClass(wt)?e=Kt:mt(this._menu).hasClass(Nt)&&(e=xt),e},t._detectNavbar=function(){return 0<mt(this._element).closest(".navbar").length},t._getPopperConfig=function(){var e=this,t={};"function"==typeof this._config.offset?t.fn=function(t){return t.offsets=h({},t.offsets,e._config.offset(t.offsets)||{}),t}:t.offset=this._config.offset;var n={placement:this._getPlacement(),modifiers:{offset:t,flip:{enabled:this._config.flip},preventOverflow:{boundariesElement:this._config.boundary}}};return"static"===this._config.display&&(n.modifiers.applyStyle={enabled:!1}),n},l._jQueryInterface=function(e){return this.each(function(){var t=mt(this).data(vt);if(t||(t=new l(this,"object"==typeof e?e:null),mt(this).data(vt,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},l._clearMenus=function(t){if(!t||3!==t.which&&("keyup"!==t.type||9===t.which))for(var e=mt.makeArray(mt(kt)),n=0;n<e.length;n++){var i=l._getParentFromElement(e[n]),r=mt(e[n]).data(vt),s={relatedTarget:e[n]};if(r){var o=r._menu;if(mt(i).hasClass(Dt)&&!(t&&("click"===t.type&&/input|textarea/i.test(t.target.tagName)||"keyup"===t.type&&9===t.which)&&mt.contains(i,t.target))){var a=mt.Event(It.HIDE,s);mt(i).trigger(a),a.isDefaultPrevented()||("ontouchstart"in document.documentElement&&mt(document.body).children().off("mouseover",null,mt.noop),e[n].setAttribute("aria-expanded","false"),mt(o).removeClass(Dt),mt(i).removeClass(Dt).trigger(mt.Event(It.HIDDEN,s)))}}}},l._getParentFromElement=function(t){var e,n=Cn.getSelectorFromElement(t);return n&&(e=mt(n)[0]),e||t.parentNode},l._dataApiKeydownHandler=function(t){if((/input|textarea/i.test(t.target.tagName)?!(32===t.which||27!==t.which&&(40!==t.which&&38!==t.which||mt(t.target).closest(Lt).length)):Ct.test(t.which))&&(t.preventDefault(),t.stopPropagation(),!this.disabled&&!mt(this).hasClass(At))){var e=l._getParentFromElement(this),n=mt(e).hasClass(Dt);if((n||27===t.which&&32===t.which)&&(!n||27!==t.which&&32!==t.which)){var i=mt(e).find(Rt).get();if(0!==i.length){var r=i.indexOf(t.target);38===t.which&&0<r&&r--,40===t.which&&r<i.length-1&&r++,r<0&&(r=0),i[r].focus()}}else{if(27===t.which){var s=mt(e).find(kt)[0];mt(s).trigger("focus")}mt(this).trigger("click")}}},o(l,null,[{key:"VERSION",get:function(){return"4.1.1"}},{key:"Default",get:function(){return Ft}},{key:"DefaultType",get:function(){return Vt}}]),l}(),mt(document).on(It.KEYDOWN_DATA_API,kt,Qt._dataApiKeydownHandler).on(It.KEYDOWN_DATA_API,Lt,Qt._dataApiKeydownHandler).on(It.CLICK_DATA_API+" "+It.KEYUP_DATA_API,Qt._clearMenus).on(It.CLICK_DATA_API,kt,function(t){t.preventDefault(),t.stopPropagation(),Qt._jQueryInterface.call(mt(this),"toggle")}).on(It.CLICK_DATA_API,Pt,function(t){t.stopPropagation()}),mt.fn[pt]=Qt._jQueryInterface,mt.fn[pt].Constructor=Qt,mt.fn[pt].noConflict=function(){return mt.fn[pt]=Tt,Qt._jQueryInterface},Qt),wn=(Yt="modal",qt="."+(Gt="bs.modal"),zt=(Bt=e).fn[Yt],Xt={backdrop:!0,keyboard:!0,focus:!0,show:!0},Jt={backdrop:"(boolean|string)",keyboard:"boolean",focus:"boolean",show:"boolean"},Zt={HIDE:"hide"+qt,HIDDEN:"hidden"+qt,SHOW:"show"+qt,SHOWN:"shown"+qt,FOCUSIN:"focusin"+qt,RESIZE:"resize"+qt,CLICK_DISMISS:"click.dismiss"+qt,KEYDOWN_DISMISS:"keydown.dismiss"+qt,MOUSEUP_DISMISS:"mouseup.dismiss"+qt,MOUSEDOWN_DISMISS:"mousedown.dismiss"+qt,CLICK_DATA_API:"click"+qt+".data-api"},$t="modal-scrollbar-measure",te="modal-backdrop",ee="modal-open",ne="fade",ie="show",re={DIALOG:".modal-dialog",DATA_TOGGLE:'[data-toggle="modal"]',DATA_DISMISS:'[data-dismiss="modal"]',FIXED_CONTENT:".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",STICKY_CONTENT:".sticky-top",NAVBAR_TOGGLER:".navbar-toggler"},se=function(){function r(t,e){this._config=this._getConfig(e),this._element=t,this._dialog=Bt(t).find(re.DIALOG)[0],this._backdrop=null,this._isShown=!1,this._isBodyOverflowing=!1,this._ignoreBackdropClick=!1,this._scrollbarWidth=0}var t=r.prototype;return t.toggle=function(t){return this._isShown?this.hide():this.show(t)},t.show=function(t){var e=this;if(!this._isTransitioning&&!this._isShown){Bt(this._element).hasClass(ne)&&(this._isTransitioning=!0);var n=Bt.Event(Zt.SHOW,{relatedTarget:t});Bt(this._element).trigger(n),this._isShown||n.isDefaultPrevented()||(this._isShown=!0,this._checkScrollbar(),this._setScrollbar(),this._adjustDialog(),Bt(document.body).addClass(ee),this._setEscapeEvent(),this._setResizeEvent(),Bt(this._element).on(Zt.CLICK_DISMISS,re.DATA_DISMISS,function(t){return e.hide(t)}),Bt(this._dialog).on(Zt.MOUSEDOWN_DISMISS,function(){Bt(e._element).one(Zt.MOUSEUP_DISMISS,function(t){Bt(t.target).is(e._element)&&(e._ignoreBackdropClick=!0)})}),this._showBackdrop(function(){return e._showElement(t)}))}},t.hide=function(t){var e=this;if(t&&t.preventDefault(),!this._isTransitioning&&this._isShown){var n=Bt.Event(Zt.HIDE);if(Bt(this._element).trigger(n),this._isShown&&!n.isDefaultPrevented()){this._isShown=!1;var i=Bt(this._element).hasClass(ne);if(i&&(this._isTransitioning=!0),this._setEscapeEvent(),this._setResizeEvent(),Bt(document).off(Zt.FOCUSIN),Bt(this._element).removeClass(ie),Bt(this._element).off(Zt.CLICK_DISMISS),Bt(this._dialog).off(Zt.MOUSEDOWN_DISMISS),i){var r=Cn.getTransitionDurationFromElement(this._element);Bt(this._element).one(Cn.TRANSITION_END,function(t){return e._hideModal(t)}).emulateTransitionEnd(r)}else this._hideModal()}}},t.dispose=function(){Bt.removeData(this._element,Gt),Bt(window,document,this._element,this._backdrop).off(qt),this._config=null,this._element=null,this._dialog=null,this._backdrop=null,this._isShown=null,this._isBodyOverflowing=null,this._ignoreBackdropClick=null,this._scrollbarWidth=null},t.handleUpdate=function(){this._adjustDialog()},t._getConfig=function(t){return t=h({},Xt,t),Cn.typeCheckConfig(Yt,t,Jt),t},t._showElement=function(t){var e=this,n=Bt(this._element).hasClass(ne);this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE||document.body.appendChild(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.scrollTop=0,n&&Cn.reflow(this._element),Bt(this._element).addClass(ie),this._config.focus&&this._enforceFocus();var i=Bt.Event(Zt.SHOWN,{relatedTarget:t}),r=function(){e._config.focus&&e._element.focus(),e._isTransitioning=!1,Bt(e._element).trigger(i)};if(n){var s=Cn.getTransitionDurationFromElement(this._element);Bt(this._dialog).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r()},t._enforceFocus=function(){var e=this;Bt(document).off(Zt.FOCUSIN).on(Zt.FOCUSIN,function(t){document!==t.target&&e._element!==t.target&&0===Bt(e._element).has(t.target).length&&e._element.focus()})},t._setEscapeEvent=function(){var e=this;this._isShown&&this._config.keyboard?Bt(this._element).on(Zt.KEYDOWN_DISMISS,function(t){27===t.which&&(t.preventDefault(),e.hide())}):this._isShown||Bt(this._element).off(Zt.KEYDOWN_DISMISS)},t._setResizeEvent=function(){var e=this;this._isShown?Bt(window).on(Zt.RESIZE,function(t){return e.handleUpdate(t)}):Bt(window).off(Zt.RESIZE)},t._hideModal=function(){var t=this;this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._isTransitioning=!1,this._showBackdrop(function(){Bt(document.body).removeClass(ee),t._resetAdjustments(),t._resetScrollbar(),Bt(t._element).trigger(Zt.HIDDEN)})},t._removeBackdrop=function(){this._backdrop&&(Bt(this._backdrop).remove(),this._backdrop=null)},t._showBackdrop=function(t){var e=this,n=Bt(this._element).hasClass(ne)?ne:"";if(this._isShown&&this._config.backdrop){if(this._backdrop=document.createElement("div"),this._backdrop.className=te,n&&Bt(this._backdrop).addClass(n),Bt(this._backdrop).appendTo(document.body),Bt(this._element).on(Zt.CLICK_DISMISS,function(t){e._ignoreBackdropClick?e._ignoreBackdropClick=!1:t.target===t.currentTarget&&("static"===e._config.backdrop?e._element.focus():e.hide())}),n&&Cn.reflow(this._backdrop),Bt(this._backdrop).addClass(ie),!t)return;if(!n)return void t();var i=Cn.getTransitionDurationFromElement(this._backdrop);Bt(this._backdrop).one(Cn.TRANSITION_END,t).emulateTransitionEnd(i)}else if(!this._isShown&&this._backdrop){Bt(this._backdrop).removeClass(ie);var r=function(){e._removeBackdrop(),t&&t()};if(Bt(this._element).hasClass(ne)){var s=Cn.getTransitionDurationFromElement(this._backdrop);Bt(this._backdrop).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r()}else t&&t()},t._adjustDialog=function(){var t=this._element.scrollHeight>document.documentElement.clientHeight;!this._isBodyOverflowing&&t&&(this._element.style.paddingLeft=this._scrollbarWidth+"px"),this._isBodyOverflowing&&!t&&(this._element.style.paddingRight=this._scrollbarWidth+"px")},t._resetAdjustments=function(){this._element.style.paddingLeft="",this._element.style.paddingRight=""},t._checkScrollbar=function(){var t=document.body.getBoundingClientRect();this._isBodyOverflowing=t.left+t.right<window.innerWidth,this._scrollbarWidth=this._getScrollbarWidth()},t._setScrollbar=function(){var r=this;if(this._isBodyOverflowing){Bt(re.FIXED_CONTENT).each(function(t,e){var n=Bt(e)[0].style.paddingRight,i=Bt(e).css("padding-right");Bt(e).data("padding-right",n).css("padding-right",parseFloat(i)+r._scrollbarWidth+"px")}),Bt(re.STICKY_CONTENT).each(function(t,e){var n=Bt(e)[0].style.marginRight,i=Bt(e).css("margin-right");Bt(e).data("margin-right",n).css("margin-right",parseFloat(i)-r._scrollbarWidth+"px")}),Bt(re.NAVBAR_TOGGLER).each(function(t,e){var n=Bt(e)[0].style.marginRight,i=Bt(e).css("margin-right");Bt(e).data("margin-right",n).css("margin-right",parseFloat(i)+r._scrollbarWidth+"px")});var t=document.body.style.paddingRight,e=Bt(document.body).css("padding-right");Bt(document.body).data("padding-right",t).css("padding-right",parseFloat(e)+this._scrollbarWidth+"px")}},t._resetScrollbar=function(){Bt(re.FIXED_CONTENT).each(function(t,e){var n=Bt(e).data("padding-right");"undefined"!=typeof n&&Bt(e).css("padding-right",n).removeData("padding-right")}),Bt(re.STICKY_CONTENT+", "+re.NAVBAR_TOGGLER).each(function(t,e){var n=Bt(e).data("margin-right");"undefined"!=typeof n&&Bt(e).css("margin-right",n).removeData("margin-right")});var t=Bt(document.body).data("padding-right");"undefined"!=typeof t&&Bt(document.body).css("padding-right",t).removeData("padding-right")},t._getScrollbarWidth=function(){var t=document.createElement("div");t.className=$t,document.body.appendChild(t);var e=t.getBoundingClientRect().width-t.clientWidth;return document.body.removeChild(t),e},r._jQueryInterface=function(n,i){return this.each(function(){var t=Bt(this).data(Gt),e=h({},Xt,Bt(this).data(),"object"==typeof n&&n?n:{});if(t||(t=new r(this,e),Bt(this).data(Gt,t)),"string"==typeof n){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n](i)}else e.show&&t.show(i)})},o(r,null,[{key:"VERSION",get:function(){return"4.1.1"}},{key:"Default",get:function(){return Xt}}]),r}(),Bt(document).on(Zt.CLICK_DATA_API,re.DATA_TOGGLE,function(t){var e,n=this,i=Cn.getSelectorFromElement(this);i&&(e=Bt(i)[0]);var r=Bt(e).data(Gt)?"toggle":h({},Bt(e).data(),Bt(this).data());"A"!==this.tagName&&"AREA"!==this.tagName||t.preventDefault();var s=Bt(e).one(Zt.SHOW,function(t){t.isDefaultPrevented()||s.one(Zt.HIDDEN,function(){Bt(n).is(":visible")&&n.focus()})});se._jQueryInterface.call(Bt(e),r,this)}),Bt.fn[Yt]=se._jQueryInterface,Bt.fn[Yt].Constructor=se,Bt.fn[Yt].noConflict=function(){return Bt.fn[Yt]=zt,se._jQueryInterface},se),Nn=(ae="tooltip",he="."+(le="bs.tooltip"),ce=(oe=e).fn[ae],ue="bs-tooltip",fe=new RegExp("(^|\\s)"+ue+"\\S+","g"),ge={animation:!0,template:'<div class="tooltip" role="tooltip"><div class="arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!(_e={AUTO:"auto",TOP:"top",RIGHT:"right",BOTTOM:"bottom",LEFT:"left"}),selector:!(de={animation:"boolean",template:"string",title:"(string|element|function)",trigger:"string",delay:"(number|object)",html:"boolean",selector:"(string|boolean)",placement:"(string|function)",offset:"(number|string)",container:"(string|element|boolean)",fallbackPlacement:"(string|array)",boundary:"(string|element)"}),placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent"},pe="out",ve={HIDE:"hide"+he,HIDDEN:"hidden"+he,SHOW:(me="show")+he,SHOWN:"shown"+he,INSERTED:"inserted"+he,CLICK:"click"+he,FOCUSIN:"focusin"+he,FOCUSOUT:"focusout"+he,MOUSEENTER:"mouseenter"+he,MOUSELEAVE:"mouseleave"+he},Ee="fade",ye="show",Te=".tooltip-inner",Ce=".arrow",Ie="hover",Ae="focus",De="click",be="manual",Se=function(){function i(t,e){if("undefined"==typeof c)throw new TypeError("Bootstrap tooltips require Popper.js (https://popper.js.org)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=oe(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(oe(this.getTipElement()).hasClass(ye))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),oe.removeData(this.element,this.constructor.DATA_KEY),oe(this.element).off(this.constructor.EVENT_KEY),oe(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&oe(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===oe(this.element).css("display"))throw new Error("Please use show on visible elements");var t=oe.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){oe(this.element).trigger(t);var n=oe.contains(this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!n)return;var i=this.getTipElement(),r=Cn.getUID(this.constructor.NAME);i.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&oe(i).addClass(Ee);var s="function"==typeof this.config.placement?this.config.placement.call(this,i,this.element):this.config.placement,o=this._getAttachment(s);this.addAttachmentClass(o);var a=!1===this.config.container?document.body:oe(this.config.container);oe(i).data(this.constructor.DATA_KEY,this),oe.contains(this.element.ownerDocument.documentElement,this.tip)||oe(i).appendTo(a),oe(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new c(this.element,i,{placement:o,modifiers:{offset:{offset:this.config.offset},flip:{behavior:this.config.fallbackPlacement},arrow:{element:Ce},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){e._handlePopperPlacementChange(t)}}),oe(i).addClass(ye),"ontouchstart"in document.documentElement&&oe(document.body).children().on("mouseover",null,oe.noop);var l=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,oe(e.element).trigger(e.constructor.Event.SHOWN),t===pe&&e._leave(null,e)};if(oe(this.tip).hasClass(Ee)){var h=Cn.getTransitionDurationFromElement(this.tip);oe(this.tip).one(Cn.TRANSITION_END,l).emulateTransitionEnd(h)}else l()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=oe.Event(this.constructor.Event.HIDE),r=function(){e._hoverState!==me&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),oe(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(oe(this.element).trigger(i),!i.isDefaultPrevented()){if(oe(n).removeClass(ye),"ontouchstart"in document.documentElement&&oe(document.body).children().off("mouseover",null,oe.noop),this._activeTrigger[De]=!1,this._activeTrigger[Ae]=!1,this._activeTrigger[Ie]=!1,oe(this.tip).hasClass(Ee)){var s=Cn.getTransitionDurationFromElement(n);oe(n).one(Cn.TRANSITION_END,r).emulateTransitionEnd(s)}else r();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){oe(this.getTipElement()).addClass(ue+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||oe(this.config.template)[0],this.tip},t.setContent=function(){var t=oe(this.getTipElement());this.setElementContent(t.find(Te),this.getTitle()),t.removeClass(Ee+" "+ye)},t.setElementContent=function(t,e){var n=this.config.html;"object"==typeof e&&(e.nodeType||e.jquery)?n?oe(e).parent().is(t)||t.empty().append(e):t.text(oe(e).text()):t[n?"html":"text"](e)},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getAttachment=function(t){return _e[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)oe(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==be){var e=t===Ie?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===Ie?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;oe(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}oe(i.element).closest(".modal").on("hide.bs.modal",function(){return i.hide()})}),this.config.selector?this.config=h({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||oe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Ae:Ie]=!0),oe(e.getTipElement()).hasClass(ye)||e._hoverState===me?e._hoverState=me:(clearTimeout(e._timeout),e._hoverState=me,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===me&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||oe(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),oe(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Ae:Ie]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=pe,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===pe&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){return"number"==typeof(t=h({},this.constructor.Default,oe(this.element).data(),"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),Cn.typeCheckConfig(ae,t,this.constructor.DefaultType),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=oe(this.getTipElement()),e=t.attr("class").match(fe);null!==e&&0<e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(oe(t).removeClass(Ee),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=oe(this).data(le),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),oe(this).data(le,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},o(i,null,[{key:"VERSION",get:function(){return"4.1.1"}},{key:"Default",get:function(){return ge}},{key:"NAME",get:function(){return ae}},{key:"DATA_KEY",get:function(){return le}},{key:"Event",get:function(){return ve}},{key:"EVENT_KEY",get:function(){return he}},{key:"DefaultType",get:function(){return de}}]),i}(),oe.fn[ae]=Se._jQueryInterface,oe.fn[ae].Constructor=Se,oe.fn[ae].noConflict=function(){return oe.fn[ae]=ce,Se._jQueryInterface},Se),On=(Ne="popover",ke="."+(Oe="bs.popover"),Pe=(we=e).fn[Ne],Le="bs-popover",je=new RegExp("(^|\\s)"+Le+"\\S+","g"),Re=h({},Nn.Default,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>'}),He=h({},Nn.DefaultType,{content:"(string|element|function)"}),We="fade",xe=".popover-header",Ue=".popover-body",Ke={HIDE:"hide"+ke,HIDDEN:"hidden"+ke,SHOW:(Me="show")+ke,SHOWN:"shown"+ke,INSERTED:"inserted"+ke,CLICK:"click"+ke,FOCUSIN:"focusin"+ke,FOCUSOUT:"focusout"+ke,MOUSEENTER:"mouseenter"+ke,MOUSELEAVE:"mouseleave"+ke},Fe=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var r=i.prototype;return r.isWithContent=function(){return this.getTitle()||this._getContent()},r.addAttachmentClass=function(t){we(this.getTipElement()).addClass(Le+"-"+t)},r.getTipElement=function(){return this.tip=this.tip||we(this.config.template)[0],this.tip},r.setContent=function(){var t=we(this.getTipElement());this.setElementContent(t.find(xe),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(Ue),e),t.removeClass(We+" "+Me)},r._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},r._cleanTipClass=function(){var t=we(this.getTipElement()),e=t.attr("class").match(je);null!==e&&0<e.length&&t.removeClass(e.join(""))},i._jQueryInterface=function(n){return this.each(function(){var t=we(this).data(Oe),e="object"==typeof n?n:null;if((t||!/destroy|hide/.test(n))&&(t||(t=new i(this,e),we(this).data(Oe,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},o(i,null,[{key:"VERSION",get:function(){return"4.1.1"}},{key:"Default",get:function(){return Re}},{key:"NAME",get:function(){return Ne}},{key:"DATA_KEY",get:function(){return Oe}},{key:"Event",get:function(){return Ke}},{key:"EVENT_KEY",get:function(){return ke}},{key:"DefaultType",get:function(){return He}}]),i}(Nn),we.fn[Ne]=Fe._jQueryInterface,we.fn[Ne].Constructor=Fe,we.fn[Ne].noConflict=function(){return we.fn[Ne]=Pe,Fe._jQueryInterface},Fe),kn=(Qe="scrollspy",Ye="."+(Be="bs.scrollspy"),Ge=(Ve=e).fn[Qe],qe={offset:10,method:"auto",target:""},ze={offset:"number",method:"string",target:"(string|element)"},Xe={ACTIVATE:"activate"+Ye,SCROLL:"scroll"+Ye,LOAD_DATA_API:"load"+Ye+".data-api"},Je="dropdown-item",Ze="active",$e={DATA_SPY:'[data-spy="scroll"]',ACTIVE:".active",NAV_LIST_GROUP:".nav, .list-group",NAV_LINKS:".nav-link",NAV_ITEMS:".nav-item",LIST_ITEMS:".list-group-item",DROPDOWN:".dropdown",DROPDOWN_ITEMS:".dropdown-item",DROPDOWN_TOGGLE:".dropdown-toggle"},tn="offset",en="position",nn=function(){function n(t,e){var n=this;this._element=t,this._scrollElement="BODY"===t.tagName?window:t,this._config=this._getConfig(e),this._selector=this._config.target+" "+$e.NAV_LINKS+","+this._config.target+" "+$e.LIST_ITEMS+","+this._config.target+" "+$e.DROPDOWN_ITEMS,this._offsets=[],this._targets=[],this._activeTarget=null,this._scrollHeight=0,Ve(this._scrollElement).on(Xe.SCROLL,function(t){return n._process(t)}),this.refresh(),this._process()}var t=n.prototype;return t.refresh=function(){var e=this,t=this._scrollElement===this._scrollElement.window?tn:en,r="auto"===this._config.method?t:this._config.method,s=r===en?this._getScrollTop():0;this._offsets=[],this._targets=[],this._scrollHeight=this._getScrollHeight(),Ve.makeArray(Ve(this._selector)).map(function(t){var e,n=Cn.getSelectorFromElement(t);if(n&&(e=Ve(n)[0]),e){var i=e.getBoundingClientRect();if(i.width||i.height)return[Ve(e)[r]().top+s,n]}return null}).filter(function(t){return t}).sort(function(t,e){return t[0]-e[0]}).forEach(function(t){e._offsets.push(t[0]),e._targets.push(t[1])})},t.dispose=function(){Ve.removeData(this._element,Be),Ve(this._scrollElement).off(Ye),this._element=null,this._scrollElement=null,this._config=null,this._selector=null,this._offsets=null,this._targets=null,this._activeTarget=null,this._scrollHeight=null},t._getConfig=function(t){if("string"!=typeof(t=h({},qe,"object"==typeof t&&t?t:{})).target){var e=Ve(t.target).attr("id");e||(e=Cn.getUID(Qe),Ve(t.target).attr("id",e)),t.target="#"+e}return Cn.typeCheckConfig(Qe,t,ze),t},t._getScrollTop=function(){return this._scrollElement===window?this._scrollElement.pageYOffset:this._scrollElement.scrollTop},t._getScrollHeight=function(){return this._scrollElement.scrollHeight||Math.max(document.body.scrollHeight,document.documentElement.scrollHeight)},t._getOffsetHeight=function(){return this._scrollElement===window?window.innerHeight:this._scrollElement.getBoundingClientRect().height},t._process=function(){var t=this._getScrollTop()+this._config.offset,e=this._getScrollHeight(),n=this._config.offset+e-this._getOffsetHeight();if(this._scrollHeight!==e&&this.refresh(),n<=t){var i=this._targets[this._targets.length-1];this._activeTarget!==i&&this._activate(i)}else{if(this._activeTarget&&t<this._offsets[0]&&0<this._offsets[0])return this._activeTarget=null,void this._clear();for(var r=this._offsets.length;r--;){this._activeTarget!==this._targets[r]&&t>=this._offsets[r]&&("undefined"==typeof this._offsets[r+1]||t<this._offsets[r+1])&&this._activate(this._targets[r])}}},t._activate=function(e){this._activeTarget=e,this._clear();var t=this._selector.split(",");t=t.map(function(t){return t+'[data-target="'+e+'"],'+t+'[href="'+e+'"]'});var n=Ve(t.join(","));n.hasClass(Je)?(n.closest($e.DROPDOWN).find($e.DROPDOWN_TOGGLE).addClass(Ze),n.addClass(Ze)):(n.addClass(Ze),n.parents($e.NAV_LIST_GROUP).prev($e.NAV_LINKS+", "+$e.LIST_ITEMS).addClass(Ze),n.parents($e.NAV_LIST_GROUP).prev($e.NAV_ITEMS).children($e.NAV_LINKS).addClass(Ze)),Ve(this._scrollElement).trigger(Xe.ACTIVATE,{relatedTarget:e})},t._clear=function(){Ve(this._selector).filter($e.ACTIVE).removeClass(Ze)},n._jQueryInterface=function(e){return this.each(function(){var t=Ve(this).data(Be);if(t||(t=new n(this,"object"==typeof e&&e),Ve(this).data(Be,t)),"string"==typeof e){if("undefined"==typeof t[e])throw new TypeError('No method named "'+e+'"');t[e]()}})},o(n,null,[{key:"VERSION",get:function(){return"4.1.1"}},{key:"Default",get:function(){return qe}}]),n}(),Ve(window).on(Xe.LOAD_DATA_API,function(){for(var t=Ve.makeArray(Ve($e.DATA_SPY)),e=t.length;e--;){var n=Ve(t[e]);nn._jQueryInterface.call(n,n.data())}}),Ve.fn[Qe]=nn._jQueryInterface,Ve.fn[Qe].Constructor=nn,Ve.fn[Qe].noConflict=function(){return Ve.fn[Qe]=Ge,nn._jQueryInterface},nn),Pn=(on="."+(sn="bs.tab"),an=(rn=e).fn.tab,ln={HIDE:"hide"+on,HIDDEN:"hidden"+on,SHOW:"show"+on,SHOWN:"shown"+on,CLICK_DATA_API:"click"+on+".data-api"},hn="dropdown-menu",cn="active",un="disabled",fn="fade",dn="show",_n=".dropdown",gn=".nav, .list-group",mn=".active",pn="> li > .active",vn='[data-toggle="tab"], [data-toggle="pill"], [data-toggle="list"]',En=".dropdown-toggle",yn="> .dropdown-menu .active",Tn=function(){function i(t){this._element=t}var t=i.prototype;return t.show=function(){var n=this;if(!(this._element.parentNode&&this._element.parentNode.nodeType===Node.ELEMENT_NODE&&rn(this._element).hasClass(cn)||rn(this._element).hasClass(un))){var t,i,e=rn(this._element).closest(gn)[0],r=Cn.getSelectorFromElement(this._element);if(e){var s="UL"===e.nodeName?pn:mn;i=(i=rn.makeArray(rn(e).find(s)))[i.length-1]}var o=rn.Event(ln.HIDE,{relatedTarget:this._element}),a=rn.Event(ln.SHOW,{relatedTarget:i});if(i&&rn(i).trigger(o),rn(this._element).trigger(a),!a.isDefaultPrevented()&&!o.isDefaultPrevented()){r&&(t=rn(r)[0]),this._activate(this._element,e);var l=function(){var t=rn.Event(ln.HIDDEN,{relatedTarget:n._element}),e=rn.Event(ln.SHOWN,{relatedTarget:i});rn(i).trigger(t),rn(n._element).trigger(e)};t?this._activate(t,t.parentNode,l):l()}}},t.dispose=function(){rn.removeData(this._element,sn),this._element=null},t._activate=function(t,e,n){var i=this,r=("UL"===e.nodeName?rn(e).find(pn):rn(e).children(mn))[0],s=n&&r&&rn(r).hasClass(fn),o=function(){return i._transitionComplete(t,r,n)};if(r&&s){var a=Cn.getTransitionDurationFromElement(r);rn(r).one(Cn.TRANSITION_END,o).emulateTransitionEnd(a)}else o()},t._transitionComplete=function(t,e,n){if(e){rn(e).removeClass(dn+" "+cn);var i=rn(e.parentNode).find(yn)[0];i&&rn(i).removeClass(cn),"tab"===e.getAttribute("role")&&e.setAttribute("aria-selected",!1)}if(rn(t).addClass(cn),"tab"===t.getAttribute("role")&&t.setAttribute("aria-selected",!0),Cn.reflow(t),rn(t).addClass(dn),t.parentNode&&rn(t.parentNode).hasClass(hn)){var r=rn(t).closest(_n)[0];r&&rn(r).find(En).addClass(cn),t.setAttribute("aria-expanded",!0)}n&&n()},i._jQueryInterface=function(n){return this.each(function(){var t=rn(this),e=t.data(sn);if(e||(e=new i(this),t.data(sn,e)),"string"==typeof n){if("undefined"==typeof e[n])throw new TypeError('No method named "'+n+'"');e[n]()}})},o(i,null,[{key:"VERSION",get:function(){return"4.1.1"}}]),i}(),rn(document).on(ln.CLICK_DATA_API,vn,function(t){t.preventDefault(),Tn._jQueryInterface.call(rn(this),"show")}),rn.fn.tab=Tn._jQueryInterface,rn.fn.tab.Constructor=Tn,rn.fn.tab.noConflict=function(){return rn.fn.tab=an,Tn._jQueryInterface},Tn);!function(t){if("undefined"==typeof t)throw new TypeError("Bootstrap's JavaScript requires jQuery. jQuery must be included before Bootstrap's JavaScript.");var e=t.fn.jquery.split(" ")[0].split(".");if(e[0]<2&&e[1]<9||1===e[0]&&9===e[1]&&e[2]<1||4<=e[0])throw new Error("Bootstrap's JavaScript requires at least jQuery v1.9.1 but less than v4.0.0")}(e),t.Util=Cn,t.Alert=In,t.Button=An,t.Carousel=Dn,t.Collapse=bn,t.Dropdown=Sn,t.Modal=wn,t.Popover=On,t.Scrollspy=kn,t.Tab=Pn,t.Tooltip=Nn,Object.defineProperty(t,"__esModule",{value:!0})});
-//# sourceMappingURL=bootstrap.min.js.map
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/bootstrap.min.js.map b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/bootstrap.min.js.map
deleted file mode 100644 (file)
index e44980e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["../../js/src/util.js","../../js/src/alert.js","../../js/src/button.js","../../js/src/carousel.js","../../js/src/collapse.js","../../js/src/dropdown.js","../../js/src/modal.js","../../js/src/tooltip.js","../../js/src/popover.js","../../js/src/scrollspy.js","../../js/src/tab.js","../../js/src/index.js"],"names":["$","NAME","DATA_KEY","EVENT_KEY","JQUERY_NO_CONFLICT","Event","ClassName","Alert","DATA_API_KEY","Selector","Button","Default","DefaultType","Direction","Carousel","Dimension","Collapse","REGEXP_KEYDOWN","AttachmentMap","Dropdown","Modal","CLASS_PREFIX","BSCLS_PREFIX_REGEX","HoverState","Trigger","Tooltip","Popover","OffsetMethod","ScrollSpy","Tab","Util","TRANSITION_END","transitionEndEmulator","duration","_this","this","called","one","setTimeout","triggerTransitionEnd","getUID","prefix","Math","random","document","getElementById","getSelectorFromElement","element","selector","getAttribute","find","length","err","getTransitionDurationFromElement","transitionDuration","css","parseFloat","split","reflow","offsetHeight","trigger","supportsTransitionEnd","Boolean","isElement","obj","nodeType","typeCheckConfig","componentName","config","configTypes","property","Object","prototype","hasOwnProperty","call","expectedTypes","value","valueType","toString","match","toLowerCase","RegExp","test","Error","toUpperCase","fn","emulateTransitionEnd","event","special","bindType","delegateType","handle","target","is","handleObj","handler","apply","arguments","CLOSE","CLOSED","CLICK_DATA_API","_element","_proto","close","rootElement","_getRootElement","_triggerCloseEvent","isDefaultPrevented","_removeElement","dispose","removeData","parent","closest","closeEvent","removeClass","hasClass","_destroyElement","detach","remove","_jQueryInterface","each","$element","data","_handleDismiss","alertInstance","preventDefault","_createClass","key","get","on","Constructor","noConflict","FOCUS_BLUR_DATA_API","toggle","triggerChangeEvent","addAriaPressed","input","type","checked","activeElement","hasAttribute","classList","contains","focus","setAttribute","toggleClass","button","interval","keyboard","slide","pause","wrap","SLIDE","SLID","KEYDOWN","MOUSEENTER","MOUSELEAVE","TOUCHEND","LOAD_DATA_API","ACTIVE","ACTIVE_ITEM","ITEM","NEXT_PREV","INDICATORS","DATA_SLIDE","DATA_RIDE","_items","_interval","_activeElement","_isPaused","_isSliding","touchTimeout","_config","_getConfig","_indicatorsElement","_addEventListeners","next","_slide","nextWhenVisible","hidden","prev","cycle","clearInterval","setInterval","visibilityState","bind","to","index","activeIndex","_getItemIndex","direction","off","_this2","_keydown","documentElement","clearTimeout","tagName","which","makeArray","indexOf","_getItemByDirection","isNextDirection","isPrevDirection","lastItemIndex","itemIndex","_triggerSlideEvent","relatedTarget","eventDirectionName","targetIndex","fromIndex","slideEvent","from","_setActiveIndicatorElement","nextIndicator","children","addClass","directionalClassName","orderClassName","_this3","activeElementIndex","nextElement","nextElementIndex","isCycling","slidEvent","action","TypeError","_dataApiClickHandler","slideIndex","window","$carousel","SHOW","SHOWN","HIDE","HIDDEN","ACTIVES","DATA_TOGGLE","_isTransitioning","_triggerArray","id","tabToggles","i","elem","filter","_selector","push","_parent","_getParent","_addAriaAndCollapsedClass","hide","show","actives","activesData","not","startEvent","dimension","_getDimension","style","attr","setTransitioning","scrollSize","slice","getBoundingClientRect","isTransitioning","jquery","_getTargetFromElement","triggerArray","isOpen","$this","currentTarget","$trigger","$target","ARROW_UP_KEYCODE","CLICK","KEYDOWN_DATA_API","KEYUP_DATA_API","offset","flip","boundary","reference","display","_popper","_menu","_getMenuElement","_inNavbar","_detectNavbar","disabled","_getParentFromElement","isActive","_clearMenus","showEvent","Popper","referenceElement","_getPopperConfig","body","noop","destroy","update","scheduleUpdate","stopPropagation","constructor","_getPlacement","$parentDropdown","placement","offsetConf","offsets","_objectSpread","popperConfig","modifiers","enabled","preventOverflow","boundariesElement","applyStyle","toggles","context","dropdownMenu","hideEvent","parentNode","_dataApiKeydownHandler","items","e","backdrop","FOCUSIN","RESIZE","CLICK_DISMISS","KEYDOWN_DISMISS","MOUSEUP_DISMISS","MOUSEDOWN_DISMISS","DIALOG","DATA_DISMISS","FIXED_CONTENT","STICKY_CONTENT","NAVBAR_TOGGLER","_dialog","_backdrop","_isShown","_isBodyOverflowing","_ignoreBackdropClick","_scrollbarWidth","_checkScrollbar","_setScrollbar","_adjustDialog","_setEscapeEvent","_setResizeEvent","_showBackdrop","_showElement","transition","_hideModal","handleUpdate","Node","ELEMENT_NODE","appendChild","removeAttribute","scrollTop","_enforceFocus","shownEvent","transitionComplete","_this4","has","_this5","_this6","_this7","_resetAdjustments","_resetScrollbar","_removeBackdrop","callback","_this8","animate","createElement","className","appendTo","backdropTransitionDuration","callbackRemove","isModalOverflowing","scrollHeight","clientHeight","paddingLeft","paddingRight","rect","left","right","innerWidth","_getScrollbarWidth","_this9","actualPadding","calculatedPadding","actualMargin","marginRight","calculatedMargin","padding","margin","scrollDiv","scrollbarWidth","width","clientWidth","removeChild","_this10","animation","template","title","delay","html","AUTO","TOP","RIGHT","BOTTOM","LEFT","container","fallbackPlacement","INSERTED","FOCUSOUT","_isEnabled","_timeout","_hoverState","_activeTrigger","tip","_setListeners","enable","disable","toggleEnabled","dataKey","_getDelegateConfig","click","_isWithActiveTrigger","_enter","_leave","getTipElement","isWithContent","isInTheDom","ownerDocument","tipId","setContent","attachment","_getAttachment","addAttachmentClass","behavior","arrow","onCreate","originalPlacement","_handlePopperPlacementChange","onUpdate","complete","_fixTransition","prevHoverState","_cleanTipClass","getTitle","$tip","setElementContent","content","empty","append","text","forEach","eventIn","eventOut","_fixTitle","titleType","tabClass","join","initConfigAnimation","_Tooltip","_getContent","method","ACTIVATE","SCROLL","DATA_SPY","NAV_LIST_GROUP","NAV_LINKS","NAV_ITEMS","LIST_ITEMS","DROPDOWN","DROPDOWN_ITEMS","DROPDOWN_TOGGLE","_scrollElement","_offsets","_targets","_activeTarget","_scrollHeight","_process","refresh","autoMethod","offsetMethod","offsetBase","_getScrollTop","_getScrollHeight","map","targetSelector","targetBCR","height","top","item","sort","a","b","pageYOffset","max","_getOffsetHeight","innerHeight","maxScroll","_activate","_clear","queries","$link","parents","scrollSpys","$spy","previous","listElement","itemSelector","nodeName","hiddenEvent","active","_transitionComplete","dropdownChild","dropdownElement","version"],"mappings":";;;;;m/BASA,ICCgBA,EAORC,EAEAC,EACAC,EAEAC,EAMAC,EAMAC,EAAAA,EAAAA,EAYAC,ECrCSP,EAOTC,EAEAC,EACAC,EACAK,EACAJ,EAEAE,EAAAA,EAAAA,EAMAG,EAAAA,EAAAA,EAAAA,EAAAA,EAQAJ,EAYAK,ECvCWV,EAOXC,EAEAC,EACAC,EACAK,EACAJ,EAKAO,EAQAC,EAQAC,EAAAA,EAAAA,EAAAA,EAOAR,EAWAC,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAAAA,EAWAG,EAgBAK,EC9EWd,GAOXC,GAEAC,GACAC,GAEAC,GAEAO,GAKAC,GAKAP,GAQAC,GAAAA,GAAAA,GAAAA,GAOAS,GAAAA,GAKAN,GAWAO,GCtDWhB,GAOXC,GAEAC,GACAC,GACAK,GACAJ,GAOAa,GAEAZ,GAWAC,GAAAA,GAAAA,GAAAA,GAAAA,GAAAA,GAAAA,GAWAG,GAAAA,GAAAA,GAAAA,GAAAA,GAQAS,GAAAA,GAAAA,GAAAA,GAAAA,GAAAA,GAWAP,GAQAC,GAcAO,GCrFQnB,GAORC,GAEAC,GACAC,GAEAC,GAGAO,GAOAC,GAOAP,GAcAC,GAAAA,GAAAA,GAAAA,GAAAA,GAQAG,GAeAW,GCjEUpB,GAOVC,GAEAC,GACAC,GACAC,GACAiB,GACAC,GAEAV,GAeAM,GAQAP,GAiBAY,GAAAA,GAKAlB,GAaAC,GAAAA,GAKAG,GAAAA,GAMAe,GAAAA,GAAAA,GAAAA,GAcAC,GCnGUzB,GAOVC,GAEAC,GACAC,GACAC,GACAiB,GACAC,GAEAX,GAWAC,GAKAN,GAAAA,GAKAG,GAAAA,GAKAJ,GAmBAqB,GC5DY1B,GAOZC,GAEAC,GACAC,GAEAC,GAEAO,GAMAC,GAMAP,GAMAC,GAAAA,GAMAG,GAYAkB,GAAAA,GAWAC,GC7DM5B,GASNE,GACAC,GAEAC,GAEAC,GAQAC,GAAAA,GAAAA,GAAAA,GAAAA,GAQAG,GAAAA,GAAAA,GAAAA,GAAAA,GAAAA,GAAAA,GAgBAoB,GV/CFC,GAAQ,SAAC9B,GAOb,IAAM+B,EAAiB,gBAsBvB,SAASC,EAAsBC,GAAU,IAAAC,EAAAC,KACnCC,GAAS,EAYb,OAVApC,EAAEmC,MAAME,IAAIP,EAAKC,eAAgB,WAC/BK,GAAS,IAGXE,WAAW,WACJF,GACHN,EAAKS,qBAAqBL,IAE3BD,GAEIE,KAcT,IAAML,EAAO,CAEXC,eAAgB,kBAEhBS,OAJW,SAIJC,GACL,KAEEA,MAvDU,IAuDGC,KAAKC,UACXC,SAASC,eAAeJ,KACjC,OAAOA,GAGTK,uBAZW,SAYYC,GACrB,IAAIC,EAAWD,EAAQE,aAAa,eAC/BD,GAAyB,MAAbA,IACfA,EAAWD,EAAQE,aAAa,SAAW,IAG7C,IAEE,OAA0B,EADRjD,EAAE4C,UAAUM,KAAKF,GAClBG,OAAaH,EAAW,KACzC,MAAOI,GACP,OAAO,OAIXC,iCA1BW,SA0BsBN,GAC/B,IAAKA,EACH,OAAO,EAIT,IAAIO,EAAqBtD,EAAE+C,GAASQ,IAAI,uBAIxC,OAHgCC,WAAWF,IAQ3CA,EAAqBA,EAAmBG,MAAM,KAAK,GAxFvB,IA0FrBD,WAAWF,IANT,GASXI,OA9CW,SA8CJX,GACL,OAAOA,EAAQY,cAGjBpB,qBAlDW,SAkDUQ,GACnB/C,EAAE+C,GAASa,QAAQ7B,IAIrB8B,sBAvDW,WAwDT,OAAOC,QAAQ/B,IAGjBgC,UA3DW,SA2DDC,GACR,OAAQA,EAAI,IAAMA,GAAKC,UAGzBC,gBA/DW,SA+DKC,EAAeC,EAAQC,GACrC,IAAK,IAAMC,KAAYD,EACrB,GAAIE,OAAOC,UAAUC,eAAeC,KAAKL,EAAaC,GAAW,CAC/D,IAAMK,EAAgBN,EAAYC,GAC5BM,EAAgBR,EAAOE,GACvBO,EAAgBD,GAAS9C,EAAKiC,UAAUa,GAC1C,WAjHIZ,EAiHeY,EAhHtB,GAAGE,SAASJ,KAAKV,GAAKe,MAAM,eAAe,GAAGC,eAkH/C,IAAK,IAAIC,OAAON,GAAeO,KAAKL,GAClC,MAAM,IAAIM,MACLhB,EAAciB,cAAjB,aACWd,EADX,oBACuCO,EADvC,wBAEsBF,EAFtB,MArHZ,IAAgBX,IAgIhB,OA9FEhE,EAAEqF,GAAGC,qBAAuBtD,EAC5BhC,EAAEuF,MAAMC,QAAQ1D,EAAKC,gBA9Bd,CACL0D,SAAU1D,EACV2D,aAAc3D,EACd4D,OAHK,SAGEJ,GACL,GAAIvF,EAAEuF,EAAMK,QAAQC,GAAG1D,MACrB,OAAOoD,EAAMO,UAAUC,QAAQC,MAAM7D,KAAM8D,aAsH5CnE,EA5IK,CA6IX9B,GC5IGO,IAOEN,EAAsB,QAGtBE,EAAAA,KADAD,EAAsB,YAGtBE,GAZQJ,EA0KbA,GA9J6BqF,GAAGpF,GAM3BI,EAAQ,CACZ6F,MAAAA,QAAyB/F,EACzBgG,OAAAA,SAA0BhG,EAC1BiG,eAAAA,QAAyBjG,EAVC,aAatBG,EACI,QADJA,EAEI,OAFJA,EAGI,OASJC,EApCc,WAqClB,SAAAA,EAAYwC,GACVZ,KAAKkE,SAAWtD,EAtCA,IAAAuD,EAAA/F,EAAAiE,UAAA,OAAA8B,EAiDlBC,MAjDkB,SAiDZxD,GACJ,IAAIyD,EAAcrE,KAAKkE,SACnBtD,IACFyD,EAAcrE,KAAKsE,gBAAgB1D,IAGjBZ,KAAKuE,mBAAmBF,GAE5BG,sBAIhBxE,KAAKyE,eAAeJ,IA7DJF,EAgElBO,QAhEkB,WAiEhB7G,EAAE8G,WAAW3E,KAAKkE,SAAUnG,GAC5BiC,KAAKkE,SAAW,MAlEAC,EAuElBG,gBAvEkB,SAuEF1D,GACd,IAAMC,EAAWlB,GAAKgB,uBAAuBC,GACzCgE,GAAa,EAUjB,OARI/D,IACF+D,EAAS/G,EAAEgD,GAAU,IAGlB+D,IACHA,EAAS/G,EAAE+C,GAASiE,QAAX,IAAuB1G,GAAmB,IAG9CyG,GAnFST,EAsFlBI,mBAtFkB,SAsFC3D,GACjB,IAAMkE,EAAajH,EAAEK,MAAMA,EAAM6F,OAGjC,OADAlG,EAAE+C,GAASa,QAAQqD,GACZA,GA1FSX,EA6FlBM,eA7FkB,SA6FH7D,GAAS,IAAAb,EAAAC,KAGtB,GAFAnC,EAAE+C,GAASmE,YAAY5G,GAElBN,EAAE+C,GAASoE,SAAS7G,GAAzB,CAKA,IAAMgD,EAAqBxB,GAAKuB,iCAAiCN,GAEjE/C,EAAE+C,GACCV,IAAIP,GAAKC,eAAgB,SAACwD,GAAD,OAAWrD,EAAKkF,gBAAgBrE,EAASwC,KAClED,qBAAqBhC,QARtBnB,KAAKiF,gBAAgBrE,IAjGPuD,EA4GlBc,gBA5GkB,SA4GFrE,GACd/C,EAAE+C,GACCsE,SACAzD,QAAQvD,EAAM8F,QACdmB,UAhHa/G,EAqHXgH,iBArHW,SAqHMnD,GACtB,OAAOjC,KAAKqF,KAAK,WACf,IAAMC,EAAWzH,EAAEmC,MACfuF,EAAaD,EAASC,KAAKxH,GAE1BwH,IACHA,EAAO,IAAInH,EAAM4B,MACjBsF,EAASC,KAAKxH,EAAUwH,IAGX,UAAXtD,GACFsD,EAAKtD,GAAQjC,SAhID5B,EAqIXoH,eArIW,SAqIIC,GACpB,OAAO,SAAUrC,GACXA,GACFA,EAAMsC,iBAGRD,EAAcrB,MAAMpE,QA3IN2F,EAAAvH,EAAA,KAAA,CAAA,CAAAwH,IAAA,UAAAC,IAAA,WA4ChB,MApCwB,YARRzH,EAAA,GAsJpBP,EAAE4C,UAAUqF,GACV5H,EAAM+F,eAxII,yBA0IV7F,EAAMoH,eAAe,IAAIpH,IAS3BP,EAAEqF,GAAGpF,GAAoBM,EAAMgH,iBAC/BvH,EAAEqF,GAAGpF,GAAMiI,YAAc3H,EACzBP,EAAEqF,GAAGpF,GAAMkI,WAAc,WAEvB,OADAnI,EAAEqF,GAAGpF,GAAQG,EACNG,EAAMgH,kBAGRhH,GC1KHG,IAOET,EAAsB,SAGtBE,EAAAA,KADAD,EAAsB,aAEtBM,EAAsB,YACtBJ,GAZSJ,EAmKdA,GAvJ6BqF,GAAGpF,GAE3BK,EACK,SADLA,EAEK,MAILG,EACiB,0BADjBA,EAEiB,0BAFjBA,EAGiB,QAHjBA,EAIiB,UAJjBA,EAKiB,OAGjBJ,EAAQ,CACZ+F,eAAAA,QAA8BjG,EAAYK,EAC1C4H,qBAhBI9H,EAGK,SAaqBH,EAAYK,EAApB,QACSL,EAAYK,GASvCE,EAxCe,WAyCnB,SAAAA,EAAYqC,GACVZ,KAAKkE,SAAWtD,EA1CC,IAAAuD,EAAA5F,EAAA8D,UAAA,OAAA8B,EAqDnB+B,OArDmB,WAsDjB,IAAIC,GAAqB,EACrBC,GAAiB,EACf/B,EAAcxG,EAAEmC,KAAKkE,UAAUW,QACnCvG,GACA,GAEF,GAAI+F,EAAa,CACf,IAAMgC,EAAQxI,EAAEmC,KAAKkE,UAAUnD,KAAKzC,GAAgB,GAEpD,GAAI+H,EAAO,CACT,GAAmB,UAAfA,EAAMC,KACR,GAAID,EAAME,SACR1I,EAAEmC,KAAKkE,UAAUc,SAAS7G,GAC1BgI,GAAqB,MAChB,CACL,IAAMK,EAAgB3I,EAAEwG,GAAatD,KAAKzC,GAAiB,GAEvDkI,GACF3I,EAAE2I,GAAezB,YAAY5G,GAKnC,GAAIgI,EAAoB,CACtB,GAAIE,EAAMI,aAAa,aACrBpC,EAAYoC,aAAa,aACzBJ,EAAMK,UAAUC,SAAS,aACzBtC,EAAYqC,UAAUC,SAAS,YAC/B,OAEFN,EAAME,SAAW1I,EAAEmC,KAAKkE,UAAUc,SAAS7G,GAC3CN,EAAEwI,GAAO5E,QAAQ,UAGnB4E,EAAMO,QACNR,GAAiB,GAIjBA,GACFpG,KAAKkE,SAAS2C,aAAa,gBACxBhJ,EAAEmC,KAAKkE,UAAUc,SAAS7G,IAG3BgI,GACFtI,EAAEmC,KAAKkE,UAAU4C,YAAY3I,IAnGdgG,EAuGnBO,QAvGmB,WAwGjB7G,EAAE8G,WAAW3E,KAAKkE,SAAUnG,GAC5BiC,KAAKkE,SAAW,MAzGC3F,EA8GZ6G,iBA9GY,SA8GKnD,GACtB,OAAOjC,KAAKqF,KAAK,WACf,IAAIE,EAAO1H,EAAEmC,MAAMuF,KAAKxH,GAEnBwH,IACHA,EAAO,IAAIhH,EAAOyB,MAClBnC,EAAEmC,MAAMuF,KAAKxH,EAAUwH,IAGV,WAAXtD,GACFsD,EAAKtD,QAxHQ0D,EAAApH,EAAA,KAAA,CAAA,CAAAqH,IAAA,UAAAC,IAAA,WAgDjB,MAxCwB,YARPtH,EAAA,GAoIrBV,EAAE4C,UACCqF,GAAG5H,EAAM+F,eAAgB3F,EAA6B,SAAC8E,GACtDA,EAAMsC,iBAEN,IAAIqB,EAAS3D,EAAMK,OAEd5F,EAAEkJ,GAAQ/B,SAAS7G,KACtB4I,EAASlJ,EAAEkJ,GAAQlC,QAAQvG,IAG7BC,EAAO6G,iBAAiB7C,KAAK1E,EAAEkJ,GAAS,YAEzCjB,GAAG5H,EAAM+H,oBAAqB3H,EAA6B,SAAC8E,GAC3D,IAAM2D,EAASlJ,EAAEuF,EAAMK,QAAQoB,QAAQvG,GAAiB,GACxDT,EAAEkJ,GAAQD,YAAY3I,EAAiB,eAAe4E,KAAKK,EAAMkD,SASrEzI,EAAEqF,GAAGpF,GAAQS,EAAO6G,iBACpBvH,EAAEqF,GAAGpF,GAAMiI,YAAcxH,EACzBV,EAAEqF,GAAGpF,GAAMkI,WAAa,WAEtB,OADAnI,EAAEqF,GAAGpF,GAAQG,EACNM,EAAO6G,kBAGT7G,GCjKHI,IAOEb,EAAyB,WAGzBE,EAAAA,KADAD,EAAyB,eAEzBM,EAAyB,YACzBJ,GAZWJ,EAwfhBA,GA5egCqF,GAAGpF,GAK9BU,EAAU,CACdwI,SAAW,IACXC,UAAW,EACXC,OAAW,EACXC,MAAW,QACXC,MAAW,GAGP3I,EAAc,CAClBuI,SAAW,mBACXC,SAAW,UACXC,MAAW,mBACXC,MAAW,mBACXC,KAAW,WAGP1I,EACO,OADPA,EAEO,OAFPA,EAGO,OAHPA,EAIO,QAGPR,EAAQ,CACZmJ,MAAAA,QAAyBrJ,EACzBsJ,KAAAA,OAAwBtJ,EACxBuJ,QAAAA,UAA2BvJ,EAC3BwJ,WAAAA,aAA8BxJ,EAC9ByJ,WAAAA,aAA8BzJ,EAC9B0J,SAAAA,WAA4B1J,EAC5B2J,cAAAA,OAAwB3J,EAAYK,EACpC4F,eAAAA,QAAyBjG,EAAYK,GAGjCF,EACO,WADPA,EAEO,SAFPA,EAGO,QAHPA,EAIO,sBAJPA,EAKO,qBALPA,EAMO,qBANPA,EAOO,qBAIPG,EAAW,CACfsJ,OAAc,UACdC,YAAc,wBACdC,KAAc,iBACdC,UAAc,2CACdC,WAAc,uBACdC,WAAc,gCACdC,UAAc,0BASVvJ,EA9EiB,WA+ErB,SAAAA,EAAYiC,EAASqB,GACnBjC,KAAKmI,OAAsB,KAC3BnI,KAAKoI,UAAsB,KAC3BpI,KAAKqI,eAAsB,KAE3BrI,KAAKsI,WAAsB,EAC3BtI,KAAKuI,YAAsB,EAE3BvI,KAAKwI,aAAsB,KAE3BxI,KAAKyI,QAAsBzI,KAAK0I,WAAWzG,GAC3CjC,KAAKkE,SAAsBrG,EAAE+C,GAAS,GACtCZ,KAAK2I,mBAAsB9K,EAAEmC,KAAKkE,UAAUnD,KAAKzC,EAAS0J,YAAY,GAEtEhI,KAAK4I,qBA7Fc,IAAAzE,EAAAxF,EAAA0D,UAAA,OAAA8B,EA4GrB0E,KA5GqB,WA6Gd7I,KAAKuI,YACRvI,KAAK8I,OAAOpK,IA9GKyF,EAkHrB4E,gBAlHqB,YAqHdtI,SAASuI,QACXnL,EAAEmC,KAAKkE,UAAUR,GAAG,aAAsD,WAAvC7F,EAAEmC,KAAKkE,UAAU9C,IAAI,eACzDpB,KAAK6I,QAvHY1E,EA2HrB8E,KA3HqB,WA4HdjJ,KAAKuI,YACRvI,KAAK8I,OAAOpK,IA7HKyF,EAiIrBgD,MAjIqB,SAiIf/D,GACCA,IACHpD,KAAKsI,WAAY,GAGfzK,EAAEmC,KAAKkE,UAAUnD,KAAKzC,EAASyJ,WAAW,KAC5CpI,GAAKS,qBAAqBJ,KAAKkE,UAC/BlE,KAAKkJ,OAAM,IAGbC,cAAcnJ,KAAKoI,WACnBpI,KAAKoI,UAAY,MA5IEjE,EA+IrB+E,MA/IqB,SA+If9F,GACCA,IACHpD,KAAKsI,WAAY,GAGftI,KAAKoI,YACPe,cAAcnJ,KAAKoI,WACnBpI,KAAKoI,UAAY,MAGfpI,KAAKyI,QAAQzB,WAAahH,KAAKsI,YACjCtI,KAAKoI,UAAYgB,aACd3I,SAAS4I,gBAAkBrJ,KAAK+I,gBAAkB/I,KAAK6I,MAAMS,KAAKtJ,MACnEA,KAAKyI,QAAQzB,YA5JE7C,EAiKrBoF,GAjKqB,SAiKlBC,GAAO,IAAAzJ,EAAAC,KACRA,KAAKqI,eAAiBxK,EAAEmC,KAAKkE,UAAUnD,KAAKzC,EAASuJ,aAAa,GAElE,IAAM4B,EAAczJ,KAAK0J,cAAc1J,KAAKqI,gBAE5C,KAAImB,EAAQxJ,KAAKmI,OAAOnH,OAAS,GAAKwI,EAAQ,GAI9C,GAAIxJ,KAAKuI,WACP1K,EAAEmC,KAAKkE,UAAUhE,IAAIhC,EAAMoJ,KAAM,WAAA,OAAMvH,EAAKwJ,GAAGC,SADjD,CAKA,GAAIC,IAAgBD,EAGlB,OAFAxJ,KAAKmH,aACLnH,KAAKkJ,QAIP,IAAMS,EAAoBF,EAARD,EACd9K,EACAA,EAEJsB,KAAK8I,OAAOa,EAAW3J,KAAKmI,OAAOqB,MAzLhBrF,EA4LrBO,QA5LqB,WA6LnB7G,EAAEmC,KAAKkE,UAAU0F,IAAI5L,GACrBH,EAAE8G,WAAW3E,KAAKkE,SAAUnG,GAE5BiC,KAAKmI,OAAqB,KAC1BnI,KAAKyI,QAAqB,KAC1BzI,KAAKkE,SAAqB,KAC1BlE,KAAKoI,UAAqB,KAC1BpI,KAAKsI,UAAqB,KAC1BtI,KAAKuI,WAAqB,KAC1BvI,KAAKqI,eAAqB,KAC1BrI,KAAK2I,mBAAqB,MAvMPxE,EA4MrBuE,WA5MqB,SA4MVzG,GAMT,OALAA,EAAAA,EAAAA,GACKzD,EACAyD,GAELtC,GAAKoC,gBAAgBjE,EAAMmE,EAAQxD,GAC5BwD,GAlNYkC,EAqNrByE,mBArNqB,WAqNA,IAAAiB,EAAA7J,KACfA,KAAKyI,QAAQxB,UACfpJ,EAAEmC,KAAKkE,UACJ4B,GAAG5H,EAAMqJ,QAAS,SAACnE,GAAD,OAAWyG,EAAKC,SAAS1G,KAGrB,UAAvBpD,KAAKyI,QAAQtB,QACftJ,EAAEmC,KAAKkE,UACJ4B,GAAG5H,EAAMsJ,WAAY,SAACpE,GAAD,OAAWyG,EAAK1C,MAAM/D,KAC3C0C,GAAG5H,EAAMuJ,WAAY,SAACrE,GAAD,OAAWyG,EAAKX,MAAM9F,KAC1C,iBAAkB3C,SAASsJ,iBAQ7BlM,EAAEmC,KAAKkE,UAAU4B,GAAG5H,EAAMwJ,SAAU,WAClCmC,EAAK1C,QACD0C,EAAKrB,cACPwB,aAAaH,EAAKrB,cAEpBqB,EAAKrB,aAAerI,WAAW,SAACiD,GAAD,OAAWyG,EAAKX,MAAM9F,IA7NhC,IA6NiEyG,EAAKpB,QAAQzB,cA5OtF7C,EAkPrB2F,SAlPqB,SAkPZ1G,GACP,IAAI,kBAAkBL,KAAKK,EAAMK,OAAOwG,SAIxC,OAAQ7G,EAAM8G,OACZ,KA3OyB,GA4OvB9G,EAAMsC,iBACN1F,KAAKiJ,OACL,MACF,KA9OyB,GA+OvB7F,EAAMsC,iBACN1F,KAAK6I,SA9PU1E,EAoQrBuF,cApQqB,SAoQP9I,GAEZ,OADAZ,KAAKmI,OAAStK,EAAEsM,UAAUtM,EAAE+C,GAASgE,SAAS7D,KAAKzC,EAASwJ,OACrD9H,KAAKmI,OAAOiC,QAAQxJ,IAtQRuD,EAyQrBkG,oBAzQqB,SAyQDV,EAAWnD,GAC7B,IAAM8D,EAAkBX,IAAcjL,EAChC6L,EAAkBZ,IAAcjL,EAChC+K,EAAkBzJ,KAAK0J,cAAclD,GACrCgE,EAAkBxK,KAAKmI,OAAOnH,OAAS,EAI7C,IAHwBuJ,GAAmC,IAAhBd,GACnBa,GAAmBb,IAAgBe,KAErCxK,KAAKyI,QAAQrB,KACjC,OAAOZ,EAGT,IACMiE,GAAahB,GADDE,IAAcjL,GAAkB,EAAI,IACZsB,KAAKmI,OAAOnH,OAEtD,OAAsB,IAAfyJ,EACHzK,KAAKmI,OAAOnI,KAAKmI,OAAOnH,OAAS,GAAKhB,KAAKmI,OAAOsC,IAzRnCtG,EA4RrBuG,mBA5RqB,SA4RFC,EAAeC,GAChC,IAAMC,EAAc7K,KAAK0J,cAAciB,GACjCG,EAAY9K,KAAK0J,cAAc7L,EAAEmC,KAAKkE,UAAUnD,KAAKzC,EAASuJ,aAAa,IAC3EkD,EAAalN,EAAEK,MAAMA,EAAMmJ,MAAO,CACtCsD,cAAAA,EACAhB,UAAWiB,EACXI,KAAMF,EACNvB,GAAIsB,IAKN,OAFAhN,EAAEmC,KAAKkE,UAAUzC,QAAQsJ,GAElBA,GAxSY5G,EA2SrB8G,2BA3SqB,SA2SMrK,GACzB,GAAIZ,KAAK2I,mBAAoB,CAC3B9K,EAAEmC,KAAK2I,oBACJ5H,KAAKzC,EAASsJ,QACd7C,YAAY5G,GAEf,IAAM+M,EAAgBlL,KAAK2I,mBAAmBwC,SAC5CnL,KAAK0J,cAAc9I,IAGjBsK,GACFrN,EAAEqN,GAAeE,SAASjN,KAtTXgG,EA2TrB2E,OA3TqB,SA2Tda,EAAW/I,GAAS,IAQrByK,EACAC,EACAV,EAVqBW,EAAAvL,KACnBwG,EAAgB3I,EAAEmC,KAAKkE,UAAUnD,KAAKzC,EAASuJ,aAAa,GAC5D2D,EAAqBxL,KAAK0J,cAAclD,GACxCiF,EAAgB7K,GAAW4F,GAC/BxG,KAAKqK,oBAAoBV,EAAWnD,GAChCkF,EAAmB1L,KAAK0J,cAAc+B,GACtCE,EAAYhK,QAAQ3B,KAAKoI,WAgB/B,GAVIuB,IAAcjL,GAChB2M,EAAuBlN,EACvBmN,EAAiBnN,EACjByM,EAAqBlM,IAErB2M,EAAuBlN,EACvBmN,EAAiBnN,EACjByM,EAAqBlM,GAGnB+M,GAAe5N,EAAE4N,GAAazG,SAAS7G,GACzC6B,KAAKuI,YAAa,OAKpB,IADmBvI,KAAK0K,mBAAmBe,EAAab,GACzCpG,sBAIVgC,GAAkBiF,EAAvB,CAKAzL,KAAKuI,YAAa,EAEdoD,GACF3L,KAAKmH,QAGPnH,KAAKiL,2BAA2BQ,GAEhC,IAAMG,EAAY/N,EAAEK,MAAMA,EAAMoJ,KAAM,CACpCqD,cAAec,EACf9B,UAAWiB,EACXI,KAAMQ,EACNjC,GAAImC,IAGN,GAAI7N,EAAEmC,KAAKkE,UAAUc,SAAS7G,GAAkB,CAC9CN,EAAE4N,GAAaL,SAASE,GAExB3L,GAAK4B,OAAOkK,GAEZ5N,EAAE2I,GAAe4E,SAASC,GAC1BxN,EAAE4N,GAAaL,SAASC,GAExB,IAAMlK,EAAqBxB,GAAKuB,iCAAiCsF,GAEjE3I,EAAE2I,GACCtG,IAAIP,GAAKC,eAAgB,WACxB/B,EAAE4N,GACC1G,YAAesG,EADlB,IAC0CC,GACvCF,SAASjN,GAEZN,EAAE2I,GAAezB,YAAe5G,EAAhC,IAAoDmN,EAApD,IAAsED,GAEtEE,EAAKhD,YAAa,EAElBpI,WAAW,WAAA,OAAMtC,EAAE0N,EAAKrH,UAAUzC,QAAQmK,IAAY,KAEvDzI,qBAAqBhC,QAExBtD,EAAE2I,GAAezB,YAAY5G,GAC7BN,EAAE4N,GAAaL,SAASjN,GAExB6B,KAAKuI,YAAa,EAClB1K,EAAEmC,KAAKkE,UAAUzC,QAAQmK,GAGvBD,GACF3L,KAAKkJ,UA/YYvK,EAqZdyG,iBArZc,SAqZGnD,GACtB,OAAOjC,KAAKqF,KAAK,WACf,IAAIE,EAAO1H,EAAEmC,MAAMuF,KAAKxH,GACpB0K,EAAAA,EAAAA,GACCjK,EACAX,EAAEmC,MAAMuF,QAGS,iBAAXtD,IACTwG,EAAAA,EAAAA,GACKA,EACAxG,IAIP,IAAM4J,EAA2B,iBAAX5J,EAAsBA,EAASwG,EAAQvB,MAO7D,GALK3B,IACHA,EAAO,IAAI5G,EAASqB,KAAMyI,GAC1B5K,EAAEmC,MAAMuF,KAAKxH,EAAUwH,IAGH,iBAAXtD,EACTsD,EAAKgE,GAAGtH,QACH,GAAsB,iBAAX4J,EAAqB,CACrC,GAA4B,oBAAjBtG,EAAKsG,GACd,MAAM,IAAIC,UAAJ,oBAAkCD,EAAlC,KAERtG,EAAKsG,UACIpD,EAAQzB,WACjBzB,EAAK4B,QACL5B,EAAK2D,YApbUvK,EAybdoN,qBAzbc,SAybO3I,GAC1B,IAAMvC,EAAWlB,GAAKgB,uBAAuBX,MAE7C,GAAKa,EAAL,CAIA,IAAM4C,EAAS5F,EAAEgD,GAAU,GAE3B,GAAK4C,GAAW5F,EAAE4F,GAAQuB,SAAS7G,GAAnC,CAIA,IAAM8D,EAAAA,EAAAA,GACDpE,EAAE4F,GAAQ8B,OACV1H,EAAEmC,MAAMuF,QAEPyG,EAAahM,KAAKc,aAAa,iBAEjCkL,IACF/J,EAAO+E,UAAW,GAGpBrI,EAASyG,iBAAiB7C,KAAK1E,EAAE4F,GAASxB,GAEtC+J,GACFnO,EAAE4F,GAAQ8B,KAAKxH,GAAUwL,GAAGyC,GAG9B5I,EAAMsC,oBAtdaC,EAAAhH,EAAA,KAAA,CAAA,CAAAiH,IAAA,UAAAC,IAAA,WAmGnB,MA3F2B,UARR,CAAAD,IAAA,UAAAC,IAAA,WAuGnB,OAAOrH,MAvGYG,EAAA,GAgevBd,EAAE4C,UACCqF,GAAG5H,EAAM+F,eAAgB3F,EAAS2J,WAAYtJ,EAASoN,sBAE1DlO,EAAEoO,QAAQnG,GAAG5H,EAAMyJ,cAAe,WAChC9J,EAAES,EAAS4J,WAAW7C,KAAK,WACzB,IAAM6G,EAAYrO,EAAEmC,MACpBrB,EAASyG,iBAAiB7C,KAAK2J,EAAWA,EAAU3G,YAUxD1H,EAAEqF,GAAGpF,GAAQa,EAASyG,iBACtBvH,EAAEqF,GAAGpF,GAAMiI,YAAcpH,EACzBd,EAAEqF,GAAGpF,GAAMkI,WAAa,WAEtB,OADAnI,EAAEqF,GAAGpF,GAAQG,EACNU,EAASyG,kBAGXzG,GCvfHE,IAOEf,GAAsB,WAGtBE,GAAAA,KADAD,GAAsB,eAGtBE,IAZWJ,GA6XhBA,GAjX6BqF,GAAGpF,IAE3BU,GAAU,CACd0H,QAAS,EACTtB,OAAS,IAGLnG,GAAc,CAClByH,OAAS,UACTtB,OAAS,oBAGL1G,GAAQ,CACZiO,KAAAA,OAAwBnO,GACxBoO,MAAAA,QAAyBpO,GACzBqO,KAAAA,OAAwBrO,GACxBsO,OAAAA,SAA0BtO,GAC1BiG,eAAAA,QAAyBjG,GAlBC,aAqBtBG,GACS,OADTA,GAES,WAFTA,GAGS,aAHTA,GAIS,YAGTS,GACK,QADLA,GAEK,SAGLN,GAAW,CACfiO,QAAc,qBACdC,YAAc,4BASV3N,GAvDiB,WAwDrB,SAAAA,EAAY+B,EAASqB,GACnBjC,KAAKyM,kBAAmB,EACxBzM,KAAKkE,SAAmBtD,EACxBZ,KAAKyI,QAAmBzI,KAAK0I,WAAWzG,GACxCjC,KAAK0M,cAAmB7O,GAAEsM,UAAUtM,GAClC,mCAAmC+C,EAAQ+L,GAA3C,6CAC0C/L,EAAQ+L,GADlD,OAIF,IADA,IAAMC,EAAa/O,GAAES,GAASkO,aACrBK,EAAI,EAAGA,EAAID,EAAW5L,OAAQ6L,IAAK,CAC1C,IAAMC,EAAOF,EAAWC,GAClBhM,EAAWlB,GAAKgB,uBAAuBmM,GAC5B,OAAbjM,GAA0D,EAArChD,GAAEgD,GAAUkM,OAAOnM,GAASI,SACnDhB,KAAKgN,UAAYnM,EACjBb,KAAK0M,cAAcO,KAAKH,IAI5B9M,KAAKkN,QAAUlN,KAAKyI,QAAQ7D,OAAS5E,KAAKmN,aAAe,KAEpDnN,KAAKyI,QAAQ7D,QAChB5E,KAAKoN,0BAA0BpN,KAAKkE,SAAUlE,KAAK0M,eAGjD1M,KAAKyI,QAAQvC,QACflG,KAAKkG,SAjFY,IAAA/B,EAAAtF,EAAAwD,UAAA,OAAA8B,EAiGrB+B,OAjGqB,WAkGfrI,GAAEmC,KAAKkE,UAAUc,SAAS7G,IAC5B6B,KAAKqN,OAELrN,KAAKsN,QArGYnJ,EAyGrBmJ,KAzGqB,WAyGd,IAMDC,EACAC,EAPCzN,EAAAC,KACL,IAAIA,KAAKyM,mBACP5O,GAAEmC,KAAKkE,UAAUc,SAAS7G,MAOxB6B,KAAKkN,SAMgB,KALvBK,EAAU1P,GAAEsM,UACVtM,GAAEmC,KAAKkN,SACJnM,KAAKzC,GAASiO,SACdQ,OAFH,iBAE2B/M,KAAKyI,QAAQ7D,OAFxC,QAIU5D,SACVuM,EAAU,QAIVA,IACFC,EAAc3P,GAAE0P,GAASE,IAAIzN,KAAKgN,WAAWzH,KAAKxH,MAC/ByP,EAAYf,mBAFjC,CAOA,IAAMiB,EAAa7P,GAAEK,MAAMA,GAAMiO,MAEjC,GADAtO,GAAEmC,KAAKkE,UAAUzC,QAAQiM,IACrBA,EAAWlJ,qBAAf,CAII+I,IACF1O,EAASuG,iBAAiB7C,KAAK1E,GAAE0P,GAASE,IAAIzN,KAAKgN,WAAY,QAC1DQ,GACH3P,GAAE0P,GAAShI,KAAKxH,GAAU,OAI9B,IAAM4P,EAAY3N,KAAK4N,gBAEvB/P,GAAEmC,KAAKkE,UACJa,YAAY5G,IACZiN,SAASjN,KAEZ6B,KAAKkE,SAAS2J,MAAMF,GAAa,GAE7B3N,KAAK0M,cAAc1L,QACrBnD,GAAEmC,KAAK0M,eACJ3H,YAAY5G,IACZ2P,KAAK,iBAAiB,GAG3B9N,KAAK+N,kBAAiB,GAEtB,IAcMC,EAAAA,UADuBL,EAAU,GAAG1K,cAAgB0K,EAAUM,MAAM,IAEpE9M,EAAqBxB,GAAKuB,iCAAiClB,KAAKkE,UAEtErG,GAAEmC,KAAKkE,UACJhE,IAAIP,GAAKC,eAlBK,WACf/B,GAAEkC,EAAKmE,UACJa,YAAY5G,IACZiN,SAASjN,IACTiN,SAASjN,IAEZ4B,EAAKmE,SAAS2J,MAAMF,GAAa,GAEjC5N,EAAKgO,kBAAiB,GAEtBlQ,GAAEkC,EAAKmE,UAAUzC,QAAQvD,GAAMkO,SAS9BjJ,qBAAqBhC,GAExBnB,KAAKkE,SAAS2J,MAAMF,GAAgB3N,KAAKkE,SAAS8J,GAAlD,QAtLmB7J,EAyLrBkJ,KAzLqB,WAyLd,IAAAxD,EAAA7J,KACL,IAAIA,KAAKyM,kBACN5O,GAAEmC,KAAKkE,UAAUc,SAAS7G,IAD7B,CAKA,IAAMuP,EAAa7P,GAAEK,MAAMA,GAAMmO,MAEjC,GADAxO,GAAEmC,KAAKkE,UAAUzC,QAAQiM,IACrBA,EAAWlJ,qBAAf,CAIA,IAAMmJ,EAAY3N,KAAK4N,gBAWvB,GATA5N,KAAKkE,SAAS2J,MAAMF,GAAgB3N,KAAKkE,SAASgK,wBAAwBP,GAA1E,KAEAhO,GAAK4B,OAAOvB,KAAKkE,UAEjBrG,GAAEmC,KAAKkE,UACJkH,SAASjN,IACT4G,YAAY5G,IACZ4G,YAAY5G,IAEiB,EAA5B6B,KAAK0M,cAAc1L,OACrB,IAAK,IAAI6L,EAAI,EAAGA,EAAI7M,KAAK0M,cAAc1L,OAAQ6L,IAAK,CAClD,IAAMpL,EAAUzB,KAAK0M,cAAcG,GAC7BhM,EAAWlB,GAAKgB,uBAAuBc,GAC7C,GAAiB,OAAbZ,EACYhD,GAAEgD,GACLmE,SAAS7G,KAClBN,GAAE4D,GAAS2J,SAASjN,IACjB2P,KAAK,iBAAiB,GAMjC9N,KAAK+N,kBAAiB,GAUtB/N,KAAKkE,SAAS2J,MAAMF,GAAa,GACjC,IAAMxM,EAAqBxB,GAAKuB,iCAAiClB,KAAKkE,UAEtErG,GAAEmC,KAAKkE,UACJhE,IAAIP,GAAKC,eAZK,WACfiK,EAAKkE,kBAAiB,GACtBlQ,GAAEgM,EAAK3F,UACJa,YAAY5G,IACZiN,SAASjN,IACTsD,QAAQvD,GAAMoO,UAQhBnJ,qBAAqBhC,MA7OLgD,EAgPrB4J,iBAhPqB,SAgPJI,GACfnO,KAAKyM,iBAAmB0B,GAjPLhK,EAoPrBO,QApPqB,WAqPnB7G,GAAE8G,WAAW3E,KAAKkE,SAAUnG,IAE5BiC,KAAKyI,QAAmB,KACxBzI,KAAKkN,QAAmB,KACxBlN,KAAKkE,SAAmB,KACxBlE,KAAK0M,cAAmB,KACxB1M,KAAKyM,iBAAmB,MA3PLtI,EAgQrBuE,WAhQqB,SAgQVzG,GAOT,OANAA,EAAAA,EAAAA,GACKzD,GACAyD,IAEEiE,OAASvE,QAAQM,EAAOiE,QAC/BvG,GAAKoC,gBAAgBjE,GAAMmE,EAAQxD,IAC5BwD,GAvQYkC,EA0QrByJ,cA1QqB,WA4QnB,OADiB/P,GAAEmC,KAAKkE,UAAUc,SAASpG,IACzBA,GAAkBA,IA5QjBuF,EA+QrBgJ,WA/QqB,WA+QR,IAAA5B,EAAAvL,KACP4E,EAAS,KACTjF,GAAKiC,UAAU5B,KAAKyI,QAAQ7D,SAC9BA,EAAS5E,KAAKyI,QAAQ7D,OAGoB,oBAA/B5E,KAAKyI,QAAQ7D,OAAOwJ,SAC7BxJ,EAAS5E,KAAKyI,QAAQ7D,OAAO,KAG/BA,EAAS/G,GAAEmC,KAAKyI,QAAQ7D,QAAQ,GAGlC,IAAM/D,EAAAA,yCACqCb,KAAKyI,QAAQ7D,OADlD,KAUN,OAPA/G,GAAE+G,GAAQ7D,KAAKF,GAAUwE,KAAK,SAACwH,EAAGjM,GAChC2K,EAAK6B,0BACHvO,EAASwP,sBAAsBzN,GAC/B,CAACA,MAIEgE,GAtSYT,EAySrBiJ,0BAzSqB,SAySKxM,EAAS0N,GACjC,GAAI1N,EAAS,CACX,IAAM2N,EAAS1Q,GAAE+C,GAASoE,SAAS7G,IAET,EAAtBmQ,EAAatN,QACfnD,GAAEyQ,GACCxH,YAAY3I,IAAsBoQ,GAClCT,KAAK,gBAAiBS,KAhTV1P,EAuTdwP,sBAvTc,SAuTQzN,GAC3B,IAAMC,EAAWlB,GAAKgB,uBAAuBC,GAC7C,OAAOC,EAAWhD,GAAEgD,GAAU,GAAK,MAzThBhC,EA4TduG,iBA5Tc,SA4TGnD,GACtB,OAAOjC,KAAKqF,KAAK,WACf,IAAMmJ,EAAU3Q,GAAEmC,MACduF,EAAYiJ,EAAMjJ,KAAKxH,IACrB0K,EAAAA,EAAAA,GACDjK,GACAgQ,EAAMjJ,OACY,iBAAXtD,GAAuBA,EAASA,EAAS,IAYrD,IATKsD,GAAQkD,EAAQvC,QAAU,YAAYnD,KAAKd,KAC9CwG,EAAQvC,QAAS,GAGdX,IACHA,EAAO,IAAI1G,EAASmB,KAAMyI,GAC1B+F,EAAMjJ,KAAKxH,GAAUwH,IAGD,iBAAXtD,EAAqB,CAC9B,GAA4B,oBAAjBsD,EAAKtD,GACd,MAAM,IAAI6J,UAAJ,oBAAkC7J,EAAlC,KAERsD,EAAKtD,SAnVU0D,EAAA9G,EAAA,KAAA,CAAA,CAAA+G,IAAA,UAAAC,IAAA,WAwFnB,MAhFwB,UARL,CAAAD,IAAA,UAAAC,IAAA,WA4FnB,OAAOrH,OA5FYK,EAAA,GA+VvBhB,GAAE4C,UAAUqF,GAAG5H,GAAM+F,eAAgB3F,GAASkO,YAAa,SAAUpJ,GAE/B,MAAhCA,EAAMqL,cAAcxE,SACtB7G,EAAMsC,iBAGR,IAAMgJ,EAAW7Q,GAAEmC,MACba,EAAWlB,GAAKgB,uBAAuBX,MAC7CnC,GAAEgD,GAAUwE,KAAK,WACf,IAAMsJ,EAAU9Q,GAAEmC,MAEZiC,EADU0M,EAAQpJ,KAAKxH,IACN,SAAW2Q,EAASnJ,OAC3C1G,GAASuG,iBAAiB7C,KAAKoM,EAAS1M,OAU5CpE,GAAEqF,GAAGpF,IAAQe,GAASuG,iBACtBvH,GAAEqF,GAAGpF,IAAMiI,YAAclH,GACzBhB,GAAEqF,GAAGpF,IAAMkI,WAAa,WAEtB,OADAnI,GAAEqF,GAAGpF,IAAQG,GACNY,GAASuG,kBAGXvG,IC3XHG,IAOElB,GAA2B,WAG3BE,GAAAA,KADAD,GAA2B,eAE3BM,GAA2B,YAC3BJ,IAZWJ,GAydhBA,GA7ckCqF,GAAGpF,IAOhCgB,GAA2B,IAAIgE,OAAU8L,YAEzC1Q,GAAQ,CACZmO,KAAAA,OAA0BrO,GAC1BsO,OAAAA,SAA4BtO,GAC5BmO,KAAAA,OAA0BnO,GAC1BoO,MAAAA,QAA2BpO,GAC3B6Q,MAAAA,QAA2B7Q,GAC3BiG,eAAAA,QAA2BjG,GAAYK,GACvCyQ,iBAAAA,UAA6B9Q,GAAYK,GACzC0Q,eAAAA,QAA2B/Q,GAAYK,IAGnCF,GACQ,WADRA,GAEQ,OAFRA,GAGQ,SAHRA,GAIQ,YAJRA,GAKQ,WALRA,GAMQ,sBANRA,GAQc,kBAGdG,GACY,2BADZA,GAEY,iBAFZA,GAGY,iBAHZA,GAIY,cAJZA,GAKY,8DAGZS,GACQ,YADRA,GAEQ,UAFRA,GAGQ,eAHRA,GAIQ,aAJRA,GAKQ,cALRA,GAOQ,aAIRP,GAAU,CACdwQ,OAAc,EACdC,MAAc,EACdC,SAAc,eACdC,UAAc,SACdC,QAAc,WAGV3Q,GAAc,CAClBuQ,OAAc,2BACdC,KAAc,UACdC,SAAc,mBACdC,UAAc,mBACdC,QAAc,UASVpQ,GApFiB,WAqFrB,SAAAA,EAAY4B,EAASqB,GACnBjC,KAAKkE,SAAYtD,EACjBZ,KAAKqP,QAAY,KACjBrP,KAAKyI,QAAYzI,KAAK0I,WAAWzG,GACjCjC,KAAKsP,MAAYtP,KAAKuP,kBACtBvP,KAAKwP,UAAYxP,KAAKyP,gBAEtBzP,KAAK4I,qBA5Fc,IAAAzE,EAAAnF,EAAAqD,UAAA,OAAA8B,EA+GrB+B,OA/GqB,WAgHnB,IAAIlG,KAAKkE,SAASwL,WAAY7R,GAAEmC,KAAKkE,UAAUc,SAAS7G,IAAxD,CAIA,IAAMyG,EAAW5F,EAAS2Q,sBAAsB3P,KAAKkE,UAC/C0L,EAAW/R,GAAEmC,KAAKsP,OAAOtK,SAAS7G,IAIxC,GAFAa,EAAS6Q,eAELD,EAAJ,CAIA,IAAMjF,EAAgB,CACpBA,cAAe3K,KAAKkE,UAEhB4L,EAAYjS,GAAEK,MAAMA,GAAMiO,KAAMxB,GAItC,GAFA9M,GAAE+G,GAAQnD,QAAQqO,IAEdA,EAAUtL,qBAAd,CAKA,IAAKxE,KAAKwP,UAAW,CAKnB,GAAsB,oBAAXO,EACT,MAAM,IAAIjE,UAAU,gEAGtB,IAAIkE,EAAmBhQ,KAAKkE,SAEG,WAA3BlE,KAAKyI,QAAQ0G,UACfa,EAAmBpL,EACVjF,GAAKiC,UAAU5B,KAAKyI,QAAQ0G,aACrCa,EAAmBhQ,KAAKyI,QAAQ0G,UAGa,oBAAlCnP,KAAKyI,QAAQ0G,UAAUf,SAChC4B,EAAmBhQ,KAAKyI,QAAQ0G,UAAU,KAOhB,iBAA1BnP,KAAKyI,QAAQyG,UACfrR,GAAE+G,GAAQwG,SAASjN,IAErB6B,KAAKqP,QAAU,IAAIU,EAAOC,EAAkBhQ,KAAKsP,MAAOtP,KAAKiQ,oBAO3D,iBAAkBxP,SAASsJ,iBACsB,IAAlDlM,GAAE+G,GAAQC,QAAQvG,IAAqB0C,QACxCnD,GAAE4C,SAASyP,MAAM/E,WAAWrF,GAAG,YAAa,KAAMjI,GAAEsS,MAGtDnQ,KAAKkE,SAAS0C,QACd5G,KAAKkE,SAAS2C,aAAa,iBAAiB,GAE5ChJ,GAAEmC,KAAKsP,OAAOxI,YAAY3I,IAC1BN,GAAE+G,GACCkC,YAAY3I,IACZsD,QAAQ5D,GAAEK,MAAMA,GAAMkO,MAAOzB,QAvLbxG,EA0LrBO,QA1LqB,WA2LnB7G,GAAE8G,WAAW3E,KAAKkE,SAAUnG,IAC5BF,GAAEmC,KAAKkE,UAAU0F,IAAI5L,IACrBgC,KAAKkE,SAAW,MAChBlE,KAAKsP,MAAQ,QACTtP,KAAKqP,UACPrP,KAAKqP,QAAQe,UACbpQ,KAAKqP,QAAU,OAjMElL,EAqMrBkM,OArMqB,WAsMnBrQ,KAAKwP,UAAYxP,KAAKyP,gBACD,OAAjBzP,KAAKqP,SACPrP,KAAKqP,QAAQiB,kBAxMInM,EA8MrByE,mBA9MqB,WA8MA,IAAA7I,EAAAC,KACnBnC,GAAEmC,KAAKkE,UAAU4B,GAAG5H,GAAM2Q,MAAO,SAACzL,GAChCA,EAAMsC,iBACNtC,EAAMmN,kBACNxQ,EAAKmG,YAlNY/B,EAsNrBuE,WAtNqB,SAsNVzG,GAaT,OAZAA,EAAAA,EAAAA,GACKjC,KAAKwQ,YAAYhS,QACjBX,GAAEmC,KAAKkE,UAAUqB,OACjBtD,GAGLtC,GAAKoC,gBACHjE,GACAmE,EACAjC,KAAKwQ,YAAY/R,aAGZwD,GAnOYkC,EAsOrBoL,gBAtOqB,WAuOnB,IAAKvP,KAAKsP,MAAO,CACf,IAAM1K,EAAS5F,EAAS2Q,sBAAsB3P,KAAKkE,UACnDlE,KAAKsP,MAAQzR,GAAE+G,GAAQ7D,KAAKzC,IAAe,GAE7C,OAAO0B,KAAKsP,OA3OOnL,EA8OrBsM,cA9OqB,WA+OnB,IAAMC,EAAkB7S,GAAEmC,KAAKkE,UAAUU,SACrC+L,EAAY5R,GAehB,OAZI2R,EAAgB1L,SAAS7G,KAC3BwS,EAAY5R,GACRlB,GAAEmC,KAAKsP,OAAOtK,SAAS7G,MACzBwS,EAAY5R,KAEL2R,EAAgB1L,SAAS7G,IAClCwS,EAAY5R,GACH2R,EAAgB1L,SAAS7G,IAClCwS,EAAY5R,GACHlB,GAAEmC,KAAKsP,OAAOtK,SAAS7G,MAChCwS,EAAY5R,IAEP4R,GA/PYxM,EAkQrBsL,cAlQqB,WAmQnB,OAAoD,EAA7C5R,GAAEmC,KAAKkE,UAAUW,QAAQ,WAAW7D,QAnQxBmD,EAsQrB8L,iBAtQqB,WAsQF,IAAApG,EAAA7J,KACX4Q,EAAa,GACgB,mBAAxB5Q,KAAKyI,QAAQuG,OACtB4B,EAAW1N,GAAK,SAACqC,GAKf,OAJAA,EAAKsL,QAALC,EAAA,GACKvL,EAAKsL,QACLhH,EAAKpB,QAAQuG,OAAOzJ,EAAKsL,UAAY,IAEnCtL,GAGTqL,EAAW5B,OAAShP,KAAKyI,QAAQuG,OAEnC,IAAM+B,EAAe,CACnBJ,UAAW3Q,KAAKyQ,gBAChBO,UAAW,CACThC,OAAQ4B,EACR3B,KAAM,CACJgC,QAASjR,KAAKyI,QAAQwG,MAExBiC,gBAAiB,CACfC,kBAAmBnR,KAAKyI,QAAQyG,YAWtC,MAL6B,WAAzBlP,KAAKyI,QAAQ2G,UACf2B,EAAaC,UAAUI,WAAa,CAClCH,SAAS,IAGNF,GAtSY/R,EA2SdoG,iBA3Sc,SA2SGnD,GACtB,OAAOjC,KAAKqF,KAAK,WACf,IAAIE,EAAO1H,GAAEmC,MAAMuF,KAAKxH,IAQxB,GALKwH,IACHA,EAAO,IAAIvG,EAASgB,KAHY,iBAAXiC,EAAsBA,EAAS,MAIpDpE,GAAEmC,MAAMuF,KAAKxH,GAAUwH,IAGH,iBAAXtD,EAAqB,CAC9B,GAA4B,oBAAjBsD,EAAKtD,GACd,MAAM,IAAI6J,UAAJ,oBAAkC7J,EAAlC,KAERsD,EAAKtD,SAzTUjD,EA8Td6Q,YA9Tc,SA8TFzM,GACjB,IAAIA,GA7SyB,IA6SfA,EAAM8G,QACH,UAAf9G,EAAMkD,MAjTqB,IAiTDlD,EAAM8G,OAKlC,IADA,IAAMmH,EAAUxT,GAAEsM,UAAUtM,GAAES,KACrBuO,EAAI,EAAGA,EAAIwE,EAAQrQ,OAAQ6L,IAAK,CACvC,IAAMjI,EAAS5F,EAAS2Q,sBAAsB0B,EAAQxE,IAChDyE,EAAUzT,GAAEwT,EAAQxE,IAAItH,KAAKxH,IAC7B4M,EAAgB,CACpBA,cAAe0G,EAAQxE,IAGzB,GAAKyE,EAAL,CAIA,IAAMC,EAAeD,EAAQhC,MAC7B,GAAKzR,GAAE+G,GAAQI,SAAS7G,OAIpBiF,IAAyB,UAAfA,EAAMkD,MAChB,kBAAkBvD,KAAKK,EAAMK,OAAOwG,UAA2B,UAAf7G,EAAMkD,MAvU/B,IAuUmDlD,EAAM8G,QAChFrM,GAAE8I,SAAS/B,EAAQxB,EAAMK,SAF7B,CAMA,IAAM+N,EAAY3T,GAAEK,MAAMA,GAAMmO,KAAM1B,GACtC9M,GAAE+G,GAAQnD,QAAQ+P,GACdA,EAAUhN,uBAMV,iBAAkB/D,SAASsJ,iBAC7BlM,GAAE4C,SAASyP,MAAM/E,WAAWvB,IAAI,YAAa,KAAM/L,GAAEsS,MAGvDkB,EAAQxE,GAAGhG,aAAa,gBAAiB,SAEzChJ,GAAE0T,GAAcxM,YAAY5G,IAC5BN,GAAE+G,GACCG,YAAY5G,IACZsD,QAAQ5D,GAAEK,MAAMA,GAAMoO,OAAQ3B,SA5WhB3L,EAgXd2Q,sBAhXc,SAgXQ/O,GAC3B,IAAIgE,EACE/D,EAAWlB,GAAKgB,uBAAuBC,GAM7C,OAJIC,IACF+D,EAAS/G,GAAEgD,GAAU,IAGhB+D,GAAUhE,EAAQ6Q,YAxXNzS,EA4Xd0S,uBA5Xc,SA4XStO,GAQ5B,IAAI,kBAAkBL,KAAKK,EAAMK,OAAOwG,WAtXX,KAuXzB7G,EAAM8G,OAxXmB,KAwXQ9G,EAAM8G,QApXd,KAqX1B9G,EAAM8G,OAtXoB,KAsXY9G,EAAM8G,OAC3CrM,GAAEuF,EAAMK,QAAQoB,QAAQvG,IAAe0C,SAAWlC,GAAeiE,KAAKK,EAAM8G,UAIhF9G,EAAMsC,iBACNtC,EAAMmN,mBAEFvQ,KAAK0P,WAAY7R,GAAEmC,MAAMgF,SAAS7G,KAAtC,CAIA,IAAMyG,EAAW5F,EAAS2Q,sBAAsB3P,MAC1C4P,EAAW/R,GAAE+G,GAAQI,SAAS7G,IAEpC,IAAKyR,GAxYwB,KAwYXxM,EAAM8G,OAvYK,KAuYuB9G,EAAM8G,UACrD0F,GAzYwB,KAyYXxM,EAAM8G,OAxYK,KAwYuB9G,EAAM8G,OAD1D,CAWA,IAAMyH,EAAQ9T,GAAE+G,GAAQ7D,KAAKzC,IAAwBuH,MAErD,GAAqB,IAAjB8L,EAAM3Q,OAAV,CAIA,IAAIwI,EAAQmI,EAAMvH,QAAQhH,EAAMK,QAtZH,KAwZzBL,EAAM8G,OAAsC,EAARV,GACtCA,IAxZ2B,KA2ZzBpG,EAAM8G,OAAgCV,EAAQmI,EAAM3Q,OAAS,GAC/DwI,IAGEA,EAAQ,IACVA,EAAQ,GAGVmI,EAAMnI,GAAO5C,aA/Bb,CAEE,GA1Y2B,KA0YvBxD,EAAM8G,MAA0B,CAClC,IAAMhE,EAASrI,GAAE+G,GAAQ7D,KAAKzC,IAAsB,GACpDT,GAAEqI,GAAQzE,QAAQ,SAGpB5D,GAAEmC,MAAMyB,QAAQ,YA5ZCkE,EAAA3G,EAAA,KAAA,CAAA,CAAA4G,IAAA,UAAAC,IAAA,WAkGnB,MA1F6B,UARV,CAAAD,IAAA,UAAAC,IAAA,WAsGnB,OAAOrH,KAtGY,CAAAoH,IAAA,cAAAC,IAAA,WA0GnB,OAAOpH,OA1GYO,EAAA,GA8bvBnB,GAAE4C,UACCqF,GAAG5H,GAAM4Q,iBAAkBxQ,GAAsBU,GAAS0S,wBAC1D5L,GAAG5H,GAAM4Q,iBAAkBxQ,GAAeU,GAAS0S,wBACnD5L,GAAM5H,GAAM+F,eAHf,IAGiC/F,GAAM6Q,eAAkB/P,GAAS6Q,aAC/D/J,GAAG5H,GAAM+F,eAAgB3F,GAAsB,SAAU8E,GACxDA,EAAMsC,iBACNtC,EAAMmN,kBACNvR,GAASoG,iBAAiB7C,KAAK1E,GAAEmC,MAAO,YAEzC8F,GAAG5H,GAAM+F,eAAgB3F,GAAqB,SAACsT,GAC9CA,EAAErB,oBASN1S,GAAEqF,GAAGpF,IAAQkB,GAASoG,iBACtBvH,GAAEqF,GAAGpF,IAAMiI,YAAc/G,GACzBnB,GAAEqF,GAAGpF,IAAMkI,WAAa,WAEtB,OADAnI,GAAEqF,GAAGpF,IAAQG,GACNe,GAASoG,kBAGXpG,ICzdHC,IAOEnB,GAAqB,QAGrBE,GAAAA,KADAD,GAAqB,YAGrBE,IAZQJ,GAsjBbA,GA1iB4BqF,GAAGpF,IAG1BU,GAAU,CACdqT,UAAW,EACX5K,UAAW,EACXL,OAAW,EACX0G,MAAW,GAGP7O,GAAc,CAClBoT,SAAW,mBACX5K,SAAW,UACXL,MAAW,UACX0G,KAAW,WAGPpP,GAAQ,CACZmO,KAAAA,OAA2BrO,GAC3BsO,OAAAA,SAA6BtO,GAC7BmO,KAAAA,OAA2BnO,GAC3BoO,MAAAA,QAA4BpO,GAC5B8T,QAAAA,UAA8B9T,GAC9B+T,OAAAA,SAA6B/T,GAC7BgU,cAAAA,gBAAoChU,GACpCiU,gBAAAA,kBAAsCjU,GACtCkU,gBAAAA,kBAAsClU,GACtCmU,kBAAAA,oBAAwCnU,GACxCiG,eAAAA,QAA4BjG,GA7BH,aAgCrBG,GACiB,0BADjBA,GAEiB,iBAFjBA,GAGiB,aAHjBA,GAIiB,OAJjBA,GAKiB,OAGjBG,GAAW,CACf8T,OAAqB,gBACrB5F,YAAqB,wBACrB6F,aAAqB,yBACrBC,cAAqB,oDACrBC,eAAqB,cACrBC,eAAqB,mBASjBvT,GAlEc,WAmElB,SAAAA,EAAY2B,EAASqB,GACnBjC,KAAKyI,QAAuBzI,KAAK0I,WAAWzG,GAC5CjC,KAAKkE,SAAuBtD,EAC5BZ,KAAKyS,QAAuB5U,GAAE+C,GAASG,KAAKzC,GAAS8T,QAAQ,GAC7DpS,KAAK0S,UAAuB,KAC5B1S,KAAK2S,UAAuB,EAC5B3S,KAAK4S,oBAAuB,EAC5B5S,KAAK6S,sBAAuB,EAC5B7S,KAAK8S,gBAAuB,EA3EZ,IAAA3O,EAAAlF,EAAAoD,UAAA,OAAA8B,EA0FlB+B,OA1FkB,SA0FXyE,GACL,OAAO3K,KAAK2S,SAAW3S,KAAKqN,OAASrN,KAAKsN,KAAK3C,IA3F/BxG,EA8FlBmJ,KA9FkB,SA8Fb3C,GAAe,IAAA5K,EAAAC,KAClB,IAAIA,KAAKyM,mBAAoBzM,KAAK2S,SAAlC,CAII9U,GAAEmC,KAAKkE,UAAUc,SAAS7G,MAC5B6B,KAAKyM,kBAAmB,GAG1B,IAAMqD,EAAYjS,GAAEK,MAAMA,GAAMiO,KAAM,CACpCxB,cAAAA,IAGF9M,GAAEmC,KAAKkE,UAAUzC,QAAQqO,GAErB9P,KAAK2S,UAAY7C,EAAUtL,uBAI/BxE,KAAK2S,UAAW,EAEhB3S,KAAK+S,kBACL/S,KAAKgT,gBAELhT,KAAKiT,gBAELpV,GAAE4C,SAASyP,MAAM9E,SAASjN,IAE1B6B,KAAKkT,kBACLlT,KAAKmT,kBAELtV,GAAEmC,KAAKkE,UAAU4B,GACf5H,GAAM8T,cACN1T,GAAS+T,aACT,SAACjP,GAAD,OAAWrD,EAAKsN,KAAKjK,KAGvBvF,GAAEmC,KAAKyS,SAAS3M,GAAG5H,GAAMiU,kBAAmB,WAC1CtU,GAAEkC,EAAKmE,UAAUhE,IAAIhC,GAAMgU,gBAAiB,SAAC9O,GACvCvF,GAAEuF,EAAMK,QAAQC,GAAG3D,EAAKmE,YAC1BnE,EAAK8S,sBAAuB,OAKlC7S,KAAKoT,cAAc,WAAA,OAAMrT,EAAKsT,aAAa1I,QA3I3BxG,EA8IlBkJ,KA9IkB,SA8IbjK,GAAO,IAAAyG,EAAA7J,KAKV,GAJIoD,GACFA,EAAMsC,kBAGJ1F,KAAKyM,kBAAqBzM,KAAK2S,SAAnC,CAIA,IAAMnB,EAAY3T,GAAEK,MAAMA,GAAMmO,MAIhC,GAFAxO,GAAEmC,KAAKkE,UAAUzC,QAAQ+P,GAEpBxR,KAAK2S,WAAYnB,EAAUhN,qBAAhC,CAIAxE,KAAK2S,UAAW,EAChB,IAAMW,EAAazV,GAAEmC,KAAKkE,UAAUc,SAAS7G,IAiB7C,GAfImV,IACFtT,KAAKyM,kBAAmB,GAG1BzM,KAAKkT,kBACLlT,KAAKmT,kBAELtV,GAAE4C,UAAUmJ,IAAI1L,GAAM4T,SAEtBjU,GAAEmC,KAAKkE,UAAUa,YAAY5G,IAE7BN,GAAEmC,KAAKkE,UAAU0F,IAAI1L,GAAM8T,eAC3BnU,GAAEmC,KAAKyS,SAAS7I,IAAI1L,GAAMiU,mBAGtBmB,EAAY,CACd,IAAMnS,EAAsBxB,GAAKuB,iCAAiClB,KAAKkE,UAEvErG,GAAEmC,KAAKkE,UACJhE,IAAIP,GAAKC,eAAgB,SAACwD,GAAD,OAAWyG,EAAK0J,WAAWnQ,KACpDD,qBAAqBhC,QAExBnB,KAAKuT,gBAxLSpP,EA4LlBO,QA5LkB,WA6LhB7G,GAAE8G,WAAW3E,KAAKkE,SAAUnG,IAE5BF,GAAEoO,OAAQxL,SAAUT,KAAKkE,SAAUlE,KAAK0S,WAAW9I,IAAI5L,IAEvDgC,KAAKyI,QAAuB,KAC5BzI,KAAKkE,SAAuB,KAC5BlE,KAAKyS,QAAuB,KAC5BzS,KAAK0S,UAAuB,KAC5B1S,KAAK2S,SAAuB,KAC5B3S,KAAK4S,mBAAuB,KAC5B5S,KAAK6S,qBAAuB,KAC5B7S,KAAK8S,gBAAuB,MAxMZ3O,EA2MlBqP,aA3MkB,WA4MhBxT,KAAKiT,iBA5MW9O,EAiNlBuE,WAjNkB,SAiNPzG,GAMT,OALAA,EAAAA,EAAAA,GACKzD,GACAyD,GAELtC,GAAKoC,gBAAgBjE,GAAMmE,EAAQxD,IAC5BwD,GAvNSkC,EA0NlBkP,aA1NkB,SA0NL1I,GAAe,IAAAY,EAAAvL,KACpBsT,EAAazV,GAAEmC,KAAKkE,UAAUc,SAAS7G,IAExC6B,KAAKkE,SAASuN,YAChBzR,KAAKkE,SAASuN,WAAW3P,WAAa2R,KAAKC,cAE5CjT,SAASyP,KAAKyD,YAAY3T,KAAKkE,UAGjClE,KAAKkE,SAAS2J,MAAMuB,QAAU,QAC9BpP,KAAKkE,SAAS0P,gBAAgB,eAC9B5T,KAAKkE,SAAS2P,UAAY,EAEtBP,GACF3T,GAAK4B,OAAOvB,KAAKkE,UAGnBrG,GAAEmC,KAAKkE,UAAUkH,SAASjN,IAEtB6B,KAAKyI,QAAQ7B,OACf5G,KAAK8T,gBAGP,IAAMC,EAAalW,GAAEK,MAAMA,GAAMkO,MAAO,CACtCzB,cAAAA,IAGIqJ,EAAqB,WACrBzI,EAAK9C,QAAQ7B,OACf2E,EAAKrH,SAAS0C,QAEhB2E,EAAKkB,kBAAmB,EACxB5O,GAAE0N,EAAKrH,UAAUzC,QAAQsS,IAG3B,GAAIT,EAAY,CACd,IAAMnS,EAAsBxB,GAAKuB,iCAAiClB,KAAKkE,UAEvErG,GAAEmC,KAAKyS,SACJvS,IAAIP,GAAKC,eAAgBoU,GACzB7Q,qBAAqBhC,QAExB6S,KApQc7P,EAwQlB2P,cAxQkB,WAwQF,IAAAG,EAAAjU,KACdnC,GAAE4C,UACCmJ,IAAI1L,GAAM4T,SACVhM,GAAG5H,GAAM4T,QAAS,SAAC1O,GACd3C,WAAa2C,EAAMK,QACnBwQ,EAAK/P,WAAad,EAAMK,QACsB,IAA9C5F,GAAEoW,EAAK/P,UAAUgQ,IAAI9Q,EAAMK,QAAQzC,QACrCiT,EAAK/P,SAAS0C,WA/QJzC,EAoRlB+O,gBApRkB,WAoRA,IAAAiB,EAAAnU,KACZA,KAAK2S,UAAY3S,KAAKyI,QAAQxB,SAChCpJ,GAAEmC,KAAKkE,UAAU4B,GAAG5H,GAAM+T,gBAAiB,SAAC7O,GAzQvB,KA0QfA,EAAM8G,QACR9G,EAAMsC,iBACNyO,EAAK9G,UAGCrN,KAAK2S,UACf9U,GAAEmC,KAAKkE,UAAU0F,IAAI1L,GAAM+T,kBA7Rb9N,EAiSlBgP,gBAjSkB,WAiSA,IAAAiB,EAAApU,KACZA,KAAK2S,SACP9U,GAAEoO,QAAQnG,GAAG5H,GAAM6T,OAAQ,SAAC3O,GAAD,OAAWgR,EAAKZ,aAAapQ,KAExDvF,GAAEoO,QAAQrC,IAAI1L,GAAM6T,SArSN5N,EAySlBoP,WAzSkB,WAySL,IAAAc,EAAArU,KACXA,KAAKkE,SAAS2J,MAAMuB,QAAU,OAC9BpP,KAAKkE,SAAS2C,aAAa,eAAe,GAC1C7G,KAAKyM,kBAAmB,EACxBzM,KAAKoT,cAAc,WACjBvV,GAAE4C,SAASyP,MAAMnL,YAAY5G,IAC7BkW,EAAKC,oBACLD,EAAKE,kBACL1W,GAAEwW,EAAKnQ,UAAUzC,QAAQvD,GAAMoO,WAjTjBnI,EAqTlBqQ,gBArTkB,WAsTZxU,KAAK0S,YACP7U,GAAEmC,KAAK0S,WAAWvN,SAClBnF,KAAK0S,UAAY,OAxTHvO,EA4TlBiP,cA5TkB,SA4TJqB,GAAU,IAAAC,EAAA1U,KAChB2U,EAAU9W,GAAEmC,KAAKkE,UAAUc,SAAS7G,IACtCA,GAAiB,GAErB,GAAI6B,KAAK2S,UAAY3S,KAAKyI,QAAQoJ,SAAU,CA+B1C,GA9BA7R,KAAK0S,UAAYjS,SAASmU,cAAc,OACxC5U,KAAK0S,UAAUmC,UAAY1W,GAEvBwW,GACF9W,GAAEmC,KAAK0S,WAAWtH,SAASuJ,GAG7B9W,GAAEmC,KAAK0S,WAAWoC,SAASrU,SAASyP,MAEpCrS,GAAEmC,KAAKkE,UAAU4B,GAAG5H,GAAM8T,cAAe,SAAC5O,GACpCsR,EAAK7B,qBACP6B,EAAK7B,sBAAuB,EAG1BzP,EAAMK,SAAWL,EAAMqL,gBAGG,WAA1BiG,EAAKjM,QAAQoJ,SACf6C,EAAKxQ,SAAS0C,QAEd8N,EAAKrH,UAILsH,GACFhV,GAAK4B,OAAOvB,KAAK0S,WAGnB7U,GAAEmC,KAAK0S,WAAWtH,SAASjN,KAEtBsW,EACH,OAGF,IAAKE,EAEH,YADAF,IAIF,IAAMM,EAA6BpV,GAAKuB,iCAAiClB,KAAK0S,WAE9E7U,GAAEmC,KAAK0S,WACJxS,IAAIP,GAAKC,eAAgB6U,GACzBtR,qBAAqB4R,QACnB,IAAK/U,KAAK2S,UAAY3S,KAAK0S,UAAW,CAC3C7U,GAAEmC,KAAK0S,WAAW3N,YAAY5G,IAE9B,IAAM6W,EAAiB,WACrBN,EAAKF,kBACDC,GACFA,KAIJ,GAAI5W,GAAEmC,KAAKkE,UAAUc,SAAS7G,IAAiB,CAC7C,IAAM4W,EAA6BpV,GAAKuB,iCAAiClB,KAAK0S,WAE9E7U,GAAEmC,KAAK0S,WACJxS,IAAIP,GAAKC,eAAgBoV,GACzB7R,qBAAqB4R,QAExBC,SAEOP,GACTA,KAjYctQ,EA0YlB8O,cA1YkB,WA2YhB,IAAMgC,EACJjV,KAAKkE,SAASgR,aAAezU,SAASsJ,gBAAgBoL,cAEnDnV,KAAK4S,oBAAsBqC,IAC9BjV,KAAKkE,SAAS2J,MAAMuH,YAAiBpV,KAAK8S,gBAA1C,MAGE9S,KAAK4S,qBAAuBqC,IAC9BjV,KAAKkE,SAAS2J,MAAMwH,aAAkBrV,KAAK8S,gBAA3C,OAnZc3O,EAuZlBmQ,kBAvZkB,WAwZhBtU,KAAKkE,SAAS2J,MAAMuH,YAAc,GAClCpV,KAAKkE,SAAS2J,MAAMwH,aAAe,IAzZnBlR,EA4ZlB4O,gBA5ZkB,WA6ZhB,IAAMuC,EAAO7U,SAASyP,KAAKhC,wBAC3BlO,KAAK4S,mBAAqB0C,EAAKC,KAAOD,EAAKE,MAAQvJ,OAAOwJ,WAC1DzV,KAAK8S,gBAAkB9S,KAAK0V,sBA/ZZvR,EAkalB6O,cAlakB,WAkaF,IAAA2C,EAAA3V,KACd,GAAIA,KAAK4S,mBAAoB,CAK3B/U,GAAES,GAASgU,eAAejN,KAAK,SAACmE,EAAO5I,GACrC,IAAMgV,EAAgB/X,GAAE+C,GAAS,GAAGiN,MAAMwH,aACpCQ,EAAoBhY,GAAE+C,GAASQ,IAAI,iBACzCvD,GAAE+C,GAAS2E,KAAK,gBAAiBqQ,GAAexU,IAAI,gBAAoBC,WAAWwU,GAAqBF,EAAK7C,gBAA7G,QAIFjV,GAAES,GAASiU,gBAAgBlN,KAAK,SAACmE,EAAO5I,GACtC,IAAMkV,EAAejY,GAAE+C,GAAS,GAAGiN,MAAMkI,YACnCC,EAAmBnY,GAAE+C,GAASQ,IAAI,gBACxCvD,GAAE+C,GAAS2E,KAAK,eAAgBuQ,GAAc1U,IAAI,eAAmBC,WAAW2U,GAAoBL,EAAK7C,gBAAzG,QAIFjV,GAAES,GAASkU,gBAAgBnN,KAAK,SAACmE,EAAO5I,GACtC,IAAMkV,EAAejY,GAAE+C,GAAS,GAAGiN,MAAMkI,YACnCC,EAAmBnY,GAAE+C,GAASQ,IAAI,gBACxCvD,GAAE+C,GAAS2E,KAAK,eAAgBuQ,GAAc1U,IAAI,eAAmBC,WAAW2U,GAAoBL,EAAK7C,gBAAzG,QAIF,IAAM8C,EAAgBnV,SAASyP,KAAKrC,MAAMwH,aACpCQ,EAAoBhY,GAAE4C,SAASyP,MAAM9O,IAAI,iBAC/CvD,GAAE4C,SAASyP,MAAM3K,KAAK,gBAAiBqQ,GAAexU,IAAI,gBAAoBC,WAAWwU,GAAqB7V,KAAK8S,gBAAnH,QA/bc3O,EAmclBoQ,gBAnckB,WAqchB1W,GAAES,GAASgU,eAAejN,KAAK,SAACmE,EAAO5I,GACrC,IAAMqV,EAAUpY,GAAE+C,GAAS2E,KAAK,iBACT,oBAAZ0Q,GACTpY,GAAE+C,GAASQ,IAAI,gBAAiB6U,GAAStR,WAAW,mBAKxD9G,GAAKS,GAASiU,eAAd,KAAiCjU,GAASkU,gBAAkBnN,KAAK,SAACmE,EAAO5I,GACvE,IAAMsV,EAASrY,GAAE+C,GAAS2E,KAAK,gBACT,oBAAX2Q,GACTrY,GAAE+C,GAASQ,IAAI,eAAgB8U,GAAQvR,WAAW,kBAKtD,IAAMsR,EAAUpY,GAAE4C,SAASyP,MAAM3K,KAAK,iBACf,oBAAZ0Q,GACTpY,GAAE4C,SAASyP,MAAM9O,IAAI,gBAAiB6U,GAAStR,WAAW,kBAvd5CR,EA2dlBuR,mBA3dkB,WA4dhB,IAAMS,EAAY1V,SAASmU,cAAc,OACzCuB,EAAUtB,UAAY1W,GACtBsC,SAASyP,KAAKyD,YAAYwC,GAC1B,IAAMC,EAAiBD,EAAUjI,wBAAwBmI,MAAQF,EAAUG,YAE3E,OADA7V,SAASyP,KAAKqG,YAAYJ,GACnBC,GAjeSnX,EAseXmG,iBAteW,SAseMnD,EAAQ0I,GAC9B,OAAO3K,KAAKqF,KAAK,WACf,IAAIE,EAAO1H,GAAEmC,MAAMuF,KAAKxH,IAClB0K,EAAAA,EAAAA,GACDjK,GACAX,GAAEmC,MAAMuF,OACU,iBAAXtD,GAAuBA,EAASA,EAAS,IAQrD,GALKsD,IACHA,EAAO,IAAItG,EAAMe,KAAMyI,GACvB5K,GAAEmC,MAAMuF,KAAKxH,GAAUwH,IAGH,iBAAXtD,EAAqB,CAC9B,GAA4B,oBAAjBsD,EAAKtD,GACd,MAAM,IAAI6J,UAAJ,oBAAkC7J,EAAlC,KAERsD,EAAKtD,GAAQ0I,QACJlC,EAAQ6E,MACjB/H,EAAK+H,KAAK3C,MA1fEhF,EAAA1G,EAAA,KAAA,CAAA,CAAA2G,IAAA,UAAAC,IAAA,WAiFhB,MAzEuB,UARP,CAAAD,IAAA,UAAAC,IAAA,WAqFhB,OAAOrH,OArFSS,EAAA,GAsgBpBpB,GAAE4C,UAAUqF,GAAG5H,GAAM+F,eAAgB3F,GAASkO,YAAa,SAAUpJ,GAAO,IACtEK,EADsE+S,EAAAxW,KAEpEa,EAAWlB,GAAKgB,uBAAuBX,MAEzCa,IACF4C,EAAS5F,GAAEgD,GAAU,IAGvB,IAAMoB,EAASpE,GAAE4F,GAAQ8B,KAAKxH,IAC1B,SADW+S,EAAA,GAERjT,GAAE4F,GAAQ8B,OACV1H,GAAEmC,MAAMuF,QAGM,MAAjBvF,KAAKiK,SAAoC,SAAjBjK,KAAKiK,SAC/B7G,EAAMsC,iBAGR,IAAMiJ,EAAU9Q,GAAE4F,GAAQvD,IAAIhC,GAAMiO,KAAM,SAAC2D,GACrCA,EAAUtL,sBAKdmK,EAAQzO,IAAIhC,GAAMoO,OAAQ,WACpBzO,GAAE2Y,GAAM9S,GAAG,aACb8S,EAAK5P,YAKX3H,GAAMmG,iBAAiB7C,KAAK1E,GAAE4F,GAASxB,EAAQjC,QASjDnC,GAAEqF,GAAGpF,IAAQmB,GAAMmG,iBACnBvH,GAAEqF,GAAGpF,IAAMiI,YAAc9G,GACzBpB,GAAEqF,GAAGpF,IAAMkI,WAAa,WAEtB,OADAnI,GAAEqF,GAAGpF,IAAQG,GACNgB,GAAMmG,kBAGRnG,ICpjBHK,IAOExB,GAAqB,UAGrBE,GAAAA,KADAD,GAAqB,cAErBE,IAXUJ,GAqsBfA,GA1rB4BqF,GAAGpF,IAC1BoB,GAAqB,aACrBC,GAAqB,IAAI2D,OAAJ,UAAqB5D,GAArB,OAAyC,KAyB9DV,GAAU,CACdiY,WAAsB,EACtBC,SAAsB,uGAGtBjV,QAAsB,cACtBkV,MAAsB,GACtBC,MAAsB,EACtBC,OAhBI9X,GAAgB,CACpB+X,KAAS,OACTC,IAAS,MACTC,MAAS,QACTC,OAAS,SACTC,KAAS,SAYTrW,WAhCIpC,GAAc,CAClBgY,UAAsB,UACtBC,SAAsB,SACtBC,MAAsB,4BACtBlV,QAAsB,SACtBmV,MAAsB,kBACtBC,KAAsB,UACtBhW,SAAsB,mBACtB8P,UAAsB,oBACtB3B,OAAsB,kBACtBmI,UAAsB,2BACtBC,kBAAsB,iBACtBlI,SAAsB,qBAqBtByB,UAAsB,MACtB3B,OAAsB,EACtBmI,WAAsB,EACtBC,kBAAsB,OACtBlI,SAAsB,gBAGlB9P,GAEG,MAGHlB,GAAQ,CACZmO,KAAAA,OAAoBrO,GACpBsO,OAAAA,SAAsBtO,GACtBmO,MARI/M,GACG,QAOapB,GACpBoO,MAAAA,QAAqBpO,GACrBqZ,SAAAA,WAAwBrZ,GACxB6Q,MAAAA,QAAqB7Q,GACrB8T,QAAAA,UAAuB9T,GACvBsZ,SAAAA,WAAwBtZ,GACxBwJ,WAAAA,aAA0BxJ,GAC1ByJ,WAAAA,aAA0BzJ,IAGtBG,GACG,OADHA,GAEG,OAGHG,GAEY,iBAFZA,GAGY,SAGZe,GACK,QADLA,GAEK,QAFLA,GAGK,QAHLA,GAIK,SAULC,GAlGgB,WAmGpB,SAAAA,EAAYsB,EAASqB,GAKnB,GAAsB,oBAAX8N,EACT,MAAM,IAAIjE,UAAU,gEAItB9L,KAAKuX,YAAiB,EACtBvX,KAAKwX,SAAiB,EACtBxX,KAAKyX,YAAiB,GACtBzX,KAAK0X,eAAiB,GACtB1X,KAAKqP,QAAiB,KAGtBrP,KAAKY,QAAUA,EACfZ,KAAKiC,OAAUjC,KAAK0I,WAAWzG,GAC/BjC,KAAK2X,IAAU,KAEf3X,KAAK4X,gBAxHa,IAAAzT,EAAA7E,EAAA+C,UAAA,OAAA8B,EA2JpB0T,OA3JoB,WA4JlB7X,KAAKuX,YAAa,GA5JApT,EA+JpB2T,QA/JoB,WAgKlB9X,KAAKuX,YAAa,GAhKApT,EAmKpB4T,cAnKoB,WAoKlB/X,KAAKuX,YAAcvX,KAAKuX,YApKNpT,EAuKpB+B,OAvKoB,SAuKb9C,GACL,GAAKpD,KAAKuX,WAIV,GAAInU,EAAO,CACT,IAAM4U,EAAUhY,KAAKwQ,YAAYzS,SAC7BuT,EAAUzT,GAAEuF,EAAMqL,eAAelJ,KAAKyS,GAErC1G,IACHA,EAAU,IAAItR,KAAKwQ,YACjBpN,EAAMqL,cACNzO,KAAKiY,sBAEPpa,GAAEuF,EAAMqL,eAAelJ,KAAKyS,EAAS1G,IAGvCA,EAAQoG,eAAeQ,OAAS5G,EAAQoG,eAAeQ,MAEnD5G,EAAQ6G,uBACV7G,EAAQ8G,OAAO,KAAM9G,GAErBA,EAAQ+G,OAAO,KAAM/G,OAElB,CACL,GAAIzT,GAAEmC,KAAKsY,iBAAiBtT,SAAS7G,IAEnC,YADA6B,KAAKqY,OAAO,KAAMrY,MAIpBA,KAAKoY,OAAO,KAAMpY,QArMFmE,EAyMpBO,QAzMoB,WA0MlBsF,aAAahK,KAAKwX,UAElB3Z,GAAE8G,WAAW3E,KAAKY,QAASZ,KAAKwQ,YAAYzS,UAE5CF,GAAEmC,KAAKY,SAASgJ,IAAI5J,KAAKwQ,YAAYxS,WACrCH,GAAEmC,KAAKY,SAASiE,QAAQ,UAAU+E,IAAI,iBAElC5J,KAAK2X,KACP9Z,GAAEmC,KAAK2X,KAAKxS,SAGdnF,KAAKuX,WAAiB,KACtBvX,KAAKwX,SAAiB,KACtBxX,KAAKyX,YAAiB,MACtBzX,KAAK0X,eAAiB,QAClB1X,KAAKqP,SACPrP,KAAKqP,QAAQe,UAGfpQ,KAAKqP,QAAU,KACfrP,KAAKY,QAAU,KACfZ,KAAKiC,OAAU,KACfjC,KAAK2X,IAAU,MAhOGxT,EAmOpBmJ,KAnOoB,WAmOb,IAAAvN,EAAAC,KACL,GAAuC,SAAnCnC,GAAEmC,KAAKY,SAASQ,IAAI,WACtB,MAAM,IAAI4B,MAAM,uCAGlB,IAAM8M,EAAYjS,GAAEK,MAAM8B,KAAKwQ,YAAYtS,MAAMiO,MACjD,GAAInM,KAAKuY,iBAAmBvY,KAAKuX,WAAY,CAC3C1Z,GAAEmC,KAAKY,SAASa,QAAQqO,GAExB,IAAM0I,EAAa3a,GAAE8I,SACnB3G,KAAKY,QAAQ6X,cAAc1O,gBAC3B/J,KAAKY,SAGP,GAAIkP,EAAUtL,uBAAyBgU,EACrC,OAGF,IAAMb,EAAQ3X,KAAKsY,gBACbI,EAAQ/Y,GAAKU,OAAOL,KAAKwQ,YAAY1S,MAE3C6Z,EAAI9Q,aAAa,KAAM6R,GACvB1Y,KAAKY,QAAQiG,aAAa,mBAAoB6R,GAE9C1Y,KAAK2Y,aAED3Y,KAAKiC,OAAOwU,WACd5Y,GAAE8Z,GAAKvM,SAASjN,IAGlB,IAAMwS,EAA8C,mBAA1B3Q,KAAKiC,OAAO0O,UAClC3Q,KAAKiC,OAAO0O,UAAUpO,KAAKvC,KAAM2X,EAAK3X,KAAKY,SAC3CZ,KAAKiC,OAAO0O,UAEViI,EAAa5Y,KAAK6Y,eAAelI,GACvC3Q,KAAK8Y,mBAAmBF,GAExB,IAAMzB,GAAsC,IAA1BnX,KAAKiC,OAAOkV,UAAsB1W,SAASyP,KAAOrS,GAAEmC,KAAKiC,OAAOkV,WAElFtZ,GAAE8Z,GAAKpS,KAAKvF,KAAKwQ,YAAYzS,SAAUiC,MAElCnC,GAAE8I,SAAS3G,KAAKY,QAAQ6X,cAAc1O,gBAAiB/J,KAAK2X,MAC/D9Z,GAAE8Z,GAAK7C,SAASqC,GAGlBtZ,GAAEmC,KAAKY,SAASa,QAAQzB,KAAKwQ,YAAYtS,MAAMmZ,UAE/CrX,KAAKqP,QAAU,IAAIU,EAAO/P,KAAKY,QAAS+W,EAAK,CAC3ChH,UAAWiI,EACX5H,UAAW,CACThC,OAAQ,CACNA,OAAQhP,KAAKiC,OAAO+M,QAEtBC,KAAM,CACJ8J,SAAU/Y,KAAKiC,OAAOmV,mBAExB4B,MAAO,CACLpY,QAAStC,IAEX4S,gBAAiB,CACfC,kBAAmBnR,KAAKiC,OAAOiN,WAGnC+J,SAAU,SAAC1T,GACLA,EAAK2T,oBAAsB3T,EAAKoL,WAClC5Q,EAAKoZ,6BAA6B5T,IAGtC6T,SAAU,SAAC7T,GACTxF,EAAKoZ,6BAA6B5T,MAItC1H,GAAE8Z,GAAKvM,SAASjN,IAMZ,iBAAkBsC,SAASsJ,iBAC7BlM,GAAE4C,SAASyP,MAAM/E,WAAWrF,GAAG,YAAa,KAAMjI,GAAEsS,MAGtD,IAAMkJ,EAAW,WACXtZ,EAAKkC,OAAOwU,WACd1W,EAAKuZ,iBAEP,IAAMC,EAAiBxZ,EAAK0X,YAC5B1X,EAAK0X,YAAkB,KAEvB5Z,GAAEkC,EAAKa,SAASa,QAAQ1B,EAAKyQ,YAAYtS,MAAMkO,OAE3CmN,IAAmBna,IACrBW,EAAKsY,OAAO,KAAMtY,IAItB,GAAIlC,GAAEmC,KAAK2X,KAAK3S,SAAS7G,IAAiB,CACxC,IAAMgD,EAAqBxB,GAAKuB,iCAAiClB,KAAK2X,KAEtE9Z,GAAEmC,KAAK2X,KACJzX,IAAIP,GAAKC,eAAgByZ,GACzBlW,qBAAqBhC,QAExBkY,MA3UclV,EAgVpBkJ,KAhVoB,SAgVfoH,GAAU,IAAA5K,EAAA7J,KACP2X,EAAY3X,KAAKsY,gBACjB9G,EAAY3T,GAAEK,MAAM8B,KAAKwQ,YAAYtS,MAAMmO,MAC3CgN,EAAW,WACXxP,EAAK4N,cAAgBrY,IAAmBuY,EAAIlG,YAC9CkG,EAAIlG,WAAW8E,YAAYoB,GAG7B9N,EAAK2P,iBACL3P,EAAKjJ,QAAQgT,gBAAgB,oBAC7B/V,GAAEgM,EAAKjJ,SAASa,QAAQoI,EAAK2G,YAAYtS,MAAMoO,QAC1B,OAAjBzC,EAAKwF,SACPxF,EAAKwF,QAAQe,UAGXqE,GACFA,KAMJ,GAFA5W,GAAEmC,KAAKY,SAASa,QAAQ+P,IAEpBA,EAAUhN,qBAAd,CAgBA,GAZA3G,GAAE8Z,GAAK5S,YAAY5G,IAIf,iBAAkBsC,SAASsJ,iBAC7BlM,GAAE4C,SAASyP,MAAM/E,WAAWvB,IAAI,YAAa,KAAM/L,GAAEsS,MAGvDnQ,KAAK0X,eAAerY,KAAiB,EACrCW,KAAK0X,eAAerY,KAAiB,EACrCW,KAAK0X,eAAerY,KAAiB,EAEjCxB,GAAEmC,KAAK2X,KAAK3S,SAAS7G,IAAiB,CACxC,IAAMgD,EAAqBxB,GAAKuB,iCAAiCyW,GAEjE9Z,GAAE8Z,GACCzX,IAAIP,GAAKC,eAAgByZ,GACzBlW,qBAAqBhC,QAExBkY,IAGFrZ,KAAKyX,YAAc,KAhYDtT,EAmYpBkM,OAnYoB,WAoYG,OAAjBrQ,KAAKqP,SACPrP,KAAKqP,QAAQiB,kBArYGnM,EA2YpBoU,cA3YoB,WA4YlB,OAAO5W,QAAQ3B,KAAKyZ,aA5YFtV,EA+YpB2U,mBA/YoB,SA+YDF,GACjB/a,GAAEmC,KAAKsY,iBAAiBlN,SAAYlM,GAApC,IAAoD0Z,IAhZlCzU,EAmZpBmU,cAnZoB,WAqZlB,OADAtY,KAAK2X,IAAM3X,KAAK2X,KAAO9Z,GAAEmC,KAAKiC,OAAOyU,UAAU,GACxC1W,KAAK2X,KArZMxT,EAwZpBwU,WAxZoB,WAyZlB,IAAMe,EAAO7b,GAAEmC,KAAKsY,iBACpBtY,KAAK2Z,kBAAkBD,EAAK3Y,KAAKzC,IAAyB0B,KAAKyZ,YAC/DC,EAAK3U,YAAe5G,GAApB,IAAsCA,KA3ZpBgG,EA8ZpBwV,kBA9ZoB,SA8ZFrU,EAAUsU,GAC1B,IAAM/C,EAAO7W,KAAKiC,OAAO4U,KACF,iBAAZ+C,IAAyBA,EAAQ9X,UAAY8X,EAAQxL,QAE1DyI,EACGhZ,GAAE+b,GAAShV,SAASlB,GAAG4B,IAC1BA,EAASuU,QAAQC,OAAOF,GAG1BtU,EAASyU,KAAKlc,GAAE+b,GAASG,QAG3BzU,EAASuR,EAAO,OAAS,QAAQ+C,IA1ajBzV,EA8apBsV,SA9aoB,WA+alB,IAAI9C,EAAQ3W,KAAKY,QAAQE,aAAa,uBAQtC,OANK6V,IACHA,EAAqC,mBAAtB3W,KAAKiC,OAAO0U,MACvB3W,KAAKiC,OAAO0U,MAAMpU,KAAKvC,KAAKY,SAC5BZ,KAAKiC,OAAO0U,OAGXA,GAvbWxS,EA4bpB0U,eA5boB,SA4bLlI,GACb,OAAO5R,GAAc4R,EAAU1N,gBA7bbkB,EAgcpByT,cAhcoB,WAgcJ,IAAArM,EAAAvL,KACGA,KAAKiC,OAAOR,QAAQH,MAAM,KAElC0Y,QAAQ,SAACvY,GAChB,GAAgB,UAAZA,EACF5D,GAAE0N,EAAK3K,SAASkF,GACdyF,EAAKiF,YAAYtS,MAAM2Q,MACvBtD,EAAKtJ,OAAOpB,SACZ,SAACuC,GAAD,OAAWmI,EAAKrF,OAAO9C,UAEpB,GAAI3B,IAAYpC,GAAgB,CACrC,IAAM4a,EAAUxY,IAAYpC,GACxBkM,EAAKiF,YAAYtS,MAAMsJ,WACvB+D,EAAKiF,YAAYtS,MAAM4T,QACrBoI,EAAWzY,IAAYpC,GACzBkM,EAAKiF,YAAYtS,MAAMuJ,WACvB8D,EAAKiF,YAAYtS,MAAMoZ,SAE3BzZ,GAAE0N,EAAK3K,SACJkF,GACCmU,EACA1O,EAAKtJ,OAAOpB,SACZ,SAACuC,GAAD,OAAWmI,EAAK6M,OAAOhV,KAExB0C,GACCoU,EACA3O,EAAKtJ,OAAOpB,SACZ,SAACuC,GAAD,OAAWmI,EAAK8M,OAAOjV,KAI7BvF,GAAE0N,EAAK3K,SAASiE,QAAQ,UAAUiB,GAChC,gBACA,WAAA,OAAMyF,EAAK8B,WAIXrN,KAAKiC,OAAOpB,SACdb,KAAKiC,OAAL6O,EAAA,GACK9Q,KAAKiC,OADV,CAEER,QAAS,SACTZ,SAAU,KAGZb,KAAKma,aA5eWhW,EAgfpBgW,UAhfoB,WAiflB,IAAMC,SAAmBpa,KAAKY,QAAQE,aAAa,wBAC/Cd,KAAKY,QAAQE,aAAa,UACb,WAAdsZ,KACDpa,KAAKY,QAAQiG,aACX,sBACA7G,KAAKY,QAAQE,aAAa,UAAY,IAExCd,KAAKY,QAAQiG,aAAa,QAAS,MAxfnB1C,EA4fpBiU,OA5foB,SA4fbhV,EAAOkO,GACZ,IAAM0G,EAAUhY,KAAKwQ,YAAYzS,UAEjCuT,EAAUA,GAAWzT,GAAEuF,EAAMqL,eAAelJ,KAAKyS,MAG/C1G,EAAU,IAAItR,KAAKwQ,YACjBpN,EAAMqL,cACNzO,KAAKiY,sBAEPpa,GAAEuF,EAAMqL,eAAelJ,KAAKyS,EAAS1G,IAGnClO,IACFkO,EAAQoG,eACS,YAAftU,EAAMkD,KAAqBjH,GAAgBA,KACzC,GAGFxB,GAAEyT,EAAQgH,iBAAiBtT,SAAS7G,KACrCmT,EAAQmG,cAAgBrY,GACzBkS,EAAQmG,YAAcrY,IAIxB4K,aAAasH,EAAQkG,UAErBlG,EAAQmG,YAAcrY,GAEjBkS,EAAQrP,OAAO2U,OAAUtF,EAAQrP,OAAO2U,MAAMtJ,KAKnDgE,EAAQkG,SAAWrX,WAAW,WACxBmR,EAAQmG,cAAgBrY,IAC1BkS,EAAQhE,QAETgE,EAAQrP,OAAO2U,MAAMtJ,MARtBgE,EAAQhE,SA1hBQnJ,EAqiBpBkU,OAriBoB,SAqiBbjV,EAAOkO,GACZ,IAAM0G,EAAUhY,KAAKwQ,YAAYzS,UAEjCuT,EAAUA,GAAWzT,GAAEuF,EAAMqL,eAAelJ,KAAKyS,MAG/C1G,EAAU,IAAItR,KAAKwQ,YACjBpN,EAAMqL,cACNzO,KAAKiY,sBAEPpa,GAAEuF,EAAMqL,eAAelJ,KAAKyS,EAAS1G,IAGnClO,IACFkO,EAAQoG,eACS,aAAftU,EAAMkD,KAAsBjH,GAAgBA,KAC1C,GAGFiS,EAAQ6G,yBAIZnO,aAAasH,EAAQkG,UAErBlG,EAAQmG,YAAcrY,GAEjBkS,EAAQrP,OAAO2U,OAAUtF,EAAQrP,OAAO2U,MAAMvJ,KAKnDiE,EAAQkG,SAAWrX,WAAW,WACxBmR,EAAQmG,cAAgBrY,IAC1BkS,EAAQjE,QAETiE,EAAQrP,OAAO2U,MAAMvJ,MARtBiE,EAAQjE,SAjkBQlJ,EA4kBpBgU,qBA5kBoB,WA6kBlB,IAAK,IAAM1W,KAAWzB,KAAK0X,eACzB,GAAI1X,KAAK0X,eAAejW,GACtB,OAAO,EAIX,OAAO,GAnlBW0C,EAslBpBuE,WAtlBoB,SAslBTzG,GA4BT,MArB4B,iBAN5BA,EAAAA,EAAAA,GACKjC,KAAKwQ,YAAYhS,QACjBX,GAAEmC,KAAKY,SAAS2E,OACE,iBAAXtD,GAAuBA,EAASA,EAAS,KAGnC2U,QAChB3U,EAAO2U,MAAQ,CACbtJ,KAAMrL,EAAO2U,MACbvJ,KAAMpL,EAAO2U,QAIW,iBAAjB3U,EAAO0U,QAChB1U,EAAO0U,MAAQ1U,EAAO0U,MAAMhU,YAGA,iBAAnBV,EAAO2X,UAChB3X,EAAO2X,QAAU3X,EAAO2X,QAAQjX,YAGlChD,GAAKoC,gBACHjE,GACAmE,EACAjC,KAAKwQ,YAAY/R,aAGZwD,GAlnBWkC,EAqnBpB8T,mBArnBoB,WAsnBlB,IAAMhW,EAAS,GAEf,GAAIjC,KAAKiC,OACP,IAAK,IAAM2D,KAAO5F,KAAKiC,OACjBjC,KAAKwQ,YAAYhS,QAAQoH,KAAS5F,KAAKiC,OAAO2D,KAChD3D,EAAO2D,GAAO5F,KAAKiC,OAAO2D,IAKhC,OAAO3D,GAhoBWkC,EAmoBpBqV,eAnoBoB,WAooBlB,IAAME,EAAO7b,GAAEmC,KAAKsY,iBACd+B,EAAWX,EAAK5L,KAAK,SAASlL,MAAMzD,IACzB,OAAbkb,GAAuC,EAAlBA,EAASrZ,QAChC0Y,EAAK3U,YAAYsV,EAASC,KAAK,MAvoBfnW,EA2oBpBgV,6BA3oBoB,SA2oBS5T,GAC3BvF,KAAKwZ,iBACLxZ,KAAK8Y,mBAAmB9Y,KAAK6Y,eAAetT,EAAKoL,aA7oB/BxM,EAgpBpBmV,eAhpBoB,WAipBlB,IAAM3B,EAAM3X,KAAKsY,gBACXiC,EAAsBva,KAAKiC,OAAOwU,UACA,OAApCkB,EAAI7W,aAAa,iBAGrBjD,GAAE8Z,GAAK5S,YAAY5G,IACnB6B,KAAKiC,OAAOwU,WAAY,EACxBzW,KAAKqN,OACLrN,KAAKsN,OACLtN,KAAKiC,OAAOwU,UAAY8D,IA1pBNjb,EA+pBb8F,iBA/pBa,SA+pBInD,GACtB,OAAOjC,KAAKqF,KAAK,WACf,IAAIE,EAAO1H,GAAEmC,MAAMuF,KAAKxH,IAClB0K,EAA4B,iBAAXxG,GAAuBA,EAE9C,IAAKsD,IAAQ,eAAexC,KAAKd,MAI5BsD,IACHA,EAAO,IAAIjG,EAAQU,KAAMyI,GACzB5K,GAAEmC,MAAMuF,KAAKxH,GAAUwH,IAGH,iBAAXtD,GAAqB,CAC9B,GAA4B,oBAAjBsD,EAAKtD,GACd,MAAM,IAAI6J,UAAJ,oBAAkC7J,EAAlC,KAERsD,EAAKtD,SAjrBS0D,EAAArG,EAAA,KAAA,CAAA,CAAAsG,IAAA,UAAAC,IAAA,WA8HlB,MAtHuB,UARL,CAAAD,IAAA,UAAAC,IAAA,WAkIlB,OAAOrH,KAlIW,CAAAoH,IAAA,OAAAC,IAAA,WAsIlB,OAAO/H,KAtIW,CAAA8H,IAAA,WAAAC,IAAA,WA0IlB,OAAO9H,KA1IW,CAAA6H,IAAA,QAAAC,IAAA,WA8IlB,OAAO3H,KA9IW,CAAA0H,IAAA,YAAAC,IAAA,WAkJlB,OAAO7H,KAlJW,CAAA4H,IAAA,cAAAC,IAAA,WAsJlB,OAAOpH,OAtJWa,EAAA,GA6rBtBzB,GAAEqF,GAAGpF,IAAQwB,GAAQ8F,iBACrBvH,GAAEqF,GAAGpF,IAAMiI,YAAczG,GACzBzB,GAAEqF,GAAGpF,IAAMkI,WAAa,WAEtB,OADAnI,GAAEqF,GAAGpF,IAAQG,GACNqB,GAAQ8F,kBAGV9F,ICrsBHC,IAOEzB,GAAsB,UAGtBE,GAAAA,KADAD,GAAsB,cAEtBE,IAXUJ,GA+KfA,GApK6BqF,GAAGpF,IAC3BoB,GAAsB,aACtBC,GAAsB,IAAI2D,OAAJ,UAAqB5D,GAArB,OAAyC,KAE/DV,GAAAA,EAAAA,GACDc,GAAQd,QADP,CAEJmS,UAAY,QACZlP,QAAY,QACZmY,QAAY,GACZlD,SAAY,wIAMRjY,GAAAA,EAAAA,GACDa,GAAQb,YADP,CAEJmb,QAAU,8BAGNzb,GACG,OAIHG,GACM,kBADNA,GAEM,gBAGNJ,GAAQ,CACZmO,KAAAA,OAAoBrO,GACpBsO,OAAAA,SAAsBtO,GACtBmO,MAbIhO,GAEG,QAWaH,GACpBoO,MAAAA,QAAqBpO,GACrBqZ,SAAAA,WAAwBrZ,GACxB6Q,MAAAA,QAAqB7Q,GACrB8T,QAAAA,UAAuB9T,GACvBsZ,SAAAA,WAAwBtZ,GACxBwJ,WAAAA,aAA0BxJ,GAC1ByJ,WAAAA,aAA0BzJ,IAStBuB,GA5DgB,SAAAib,WAAA,SAAAjb,IAAA,OAAAib,EAAA3W,MAAA7D,KAAA8D,YAAA9D,OAAAwa,KAAAjb,gFAAA,IAAA4E,EAAA5E,EAAA8C,UAAA,OAAA8B,EA6FpBoU,cA7FoB,WA8FlB,OAAOvY,KAAKyZ,YAAczZ,KAAKya,eA9FbtW,EAiGpB2U,mBAjGoB,SAiGDF,GACjB/a,GAAEmC,KAAKsY,iBAAiBlN,SAAYlM,GAApC,IAAoD0Z,IAlGlCzU,EAqGpBmU,cArGoB,WAuGlB,OADAtY,KAAK2X,IAAM3X,KAAK2X,KAAO9Z,GAAEmC,KAAKiC,OAAOyU,UAAU,GACxC1W,KAAK2X,KAvGMxT,EA0GpBwU,WA1GoB,WA2GlB,IAAMe,EAAO7b,GAAEmC,KAAKsY,iBAGpBtY,KAAK2Z,kBAAkBD,EAAK3Y,KAAKzC,IAAiB0B,KAAKyZ,YACvD,IAAIG,EAAU5Z,KAAKya,cACI,mBAAZb,IACTA,EAAUA,EAAQrX,KAAKvC,KAAKY,UAE9BZ,KAAK2Z,kBAAkBD,EAAK3Y,KAAKzC,IAAmBsb,GAEpDF,EAAK3U,YAAe5G,GAApB,IAAsCA,KArHpBgG,EA0HpBsW,YA1HoB,WA2HlB,OAAOza,KAAKY,QAAQE,aAAa,iBAC/Bd,KAAKiC,OAAO2X,SA5HIzV,EA+HpBqV,eA/HoB,WAgIlB,IAAME,EAAO7b,GAAEmC,KAAKsY,iBACd+B,EAAWX,EAAK5L,KAAK,SAASlL,MAAMzD,IACzB,OAAbkb,GAAuC,EAAlBA,EAASrZ,QAChC0Y,EAAK3U,YAAYsV,EAASC,KAAK,MAnIf/a,EAyIb6F,iBAzIa,SAyIInD,GACtB,OAAOjC,KAAKqF,KAAK,WACf,IAAIE,EAAO1H,GAAEmC,MAAMuF,KAAKxH,IAClB0K,EAA4B,iBAAXxG,EAAsBA,EAAS,KAEtD,IAAKsD,IAAQ,eAAexC,KAAKd,MAI5BsD,IACHA,EAAO,IAAIhG,EAAQS,KAAMyI,GACzB5K,GAAEmC,MAAMuF,KAAKxH,GAAUwH,IAGH,iBAAXtD,GAAqB,CAC9B,GAA4B,oBAAjBsD,EAAKtD,GACd,MAAM,IAAI6J,UAAJ,oBAAkC7J,EAAlC,KAERsD,EAAKtD,SA3JS0D,EAAApG,EAAA,KAAA,CAAA,CAAAqG,IAAA,UAAAC,IAAA,WAgElB,MAxDwB,UARN,CAAAD,IAAA,UAAAC,IAAA,WAoElB,OAAOrH,KApEW,CAAAoH,IAAA,OAAAC,IAAA,WAwElB,OAAO/H,KAxEW,CAAA8H,IAAA,WAAAC,IAAA,WA4ElB,OAAO9H,KA5EW,CAAA6H,IAAA,QAAAC,IAAA,WAgFlB,OAAO3H,KAhFW,CAAA0H,IAAA,YAAAC,IAAA,WAoFlB,OAAO7H,KApFW,CAAA4H,IAAA,cAAAC,IAAA,WAwFlB,OAAOpH,OAxFWc,EAAA,CA4DAD,IA2GtBzB,GAAEqF,GAAGpF,IAAQyB,GAAQ6F,iBACrBvH,GAAEqF,GAAGpF,IAAMiI,YAAcxG,GACzB1B,GAAEqF,GAAGpF,IAAMkI,WAAa,WAEtB,OADAnI,GAAEqF,GAAGpF,IAAQG,GACNsB,GAAQ6F,kBAGV7F,IC9KHE,IAOE3B,GAAqB,YAGrBE,GAAAA,KADAD,GAAqB,gBAGrBE,IAZYJ,GA4TjBA,GAhT4BqF,GAAGpF,IAE1BU,GAAU,CACdwQ,OAAS,GACT0L,OAAS,OACTjX,OAAS,IAGLhF,GAAc,CAClBuQ,OAAS,SACT0L,OAAS,SACTjX,OAAS,oBAGLvF,GAAQ,CACZyc,SAAAA,WAA2B3c,GAC3B4c,OAAAA,SAAyB5c,GACzB2J,cAAAA,OAAuB3J,GAlBE,aAqBrBG,GACY,gBADZA,GAGY,SAGZG,GAAW,CACfuc,SAAkB,sBAClBjT,OAAkB,UAClBkT,eAAkB,oBAClBC,UAAkB,YAClBC,UAAkB,YAClBC,WAAkB,mBAClBC,SAAkB,YAClBC,eAAkB,iBAClBC,gBAAkB,oBAGd5b,GACO,SADPA,GAEO,WASPC,GA7DkB,WA8DtB,SAAAA,EAAYmB,EAASqB,GAAQ,IAAAlC,EAAAC,KAC3BA,KAAKkE,SAAiBtD,EACtBZ,KAAKqb,eAAqC,SAApBza,EAAQqJ,QAAqBgC,OAASrL,EAC5DZ,KAAKyI,QAAiBzI,KAAK0I,WAAWzG,GACtCjC,KAAKgN,UAAoBhN,KAAKyI,QAAQhF,OAAhB,IAA0BnF,GAASyc,UAAnC,IACG/a,KAAKyI,QAAQhF,OADhB,IAC0BnF,GAAS2c,WADnC,IAEGjb,KAAKyI,QAAQhF,OAFhB,IAE0BnF,GAAS6c,eACzDnb,KAAKsb,SAAiB,GACtBtb,KAAKub,SAAiB,GACtBvb,KAAKwb,cAAiB,KACtBxb,KAAKyb,cAAiB,EAEtB5d,GAAEmC,KAAKqb,gBAAgBvV,GAAG5H,GAAM0c,OAAQ,SAACxX,GAAD,OAAWrD,EAAK2b,SAAStY,KAEjEpD,KAAK2b,UACL3b,KAAK0b,WA7Ee,IAAAvX,EAAA1E,EAAA4C,UAAA,OAAA8B,EA4FtBwX,QA5FsB,WA4FZ,IAAA9R,EAAA7J,KACF4b,EAAa5b,KAAKqb,iBAAmBrb,KAAKqb,eAAepP,OAC3DzM,GAAsBA,GAEpBqc,EAAuC,SAAxB7b,KAAKyI,QAAQiS,OAC9BkB,EAAa5b,KAAKyI,QAAQiS,OAExBoB,EAAaD,IAAiBrc,GAChCQ,KAAK+b,gBAAkB,EAE3B/b,KAAKsb,SAAW,GAChBtb,KAAKub,SAAW,GAEhBvb,KAAKyb,cAAgBzb,KAAKgc,mBAEVne,GAAEsM,UAAUtM,GAAEmC,KAAKgN,YAGhCiP,IAAI,SAACrb,GACJ,IAAI6C,EACEyY,EAAiBvc,GAAKgB,uBAAuBC,GAMnD,GAJIsb,IACFzY,EAAS5F,GAAEqe,GAAgB,IAGzBzY,EAAQ,CACV,IAAM0Y,EAAY1Y,EAAOyK,wBACzB,GAAIiO,EAAU9F,OAAS8F,EAAUC,OAE/B,MAAO,CACLve,GAAE4F,GAAQoY,KAAgBQ,IAAMP,EAChCI,GAIN,OAAO,OAERnP,OAAO,SAACuP,GAAD,OAAUA,IACjBC,KAAK,SAACC,EAAGC,GAAJ,OAAUD,EAAE,GAAKC,EAAE,KACxBzC,QAAQ,SAACsC,GACRzS,EAAKyR,SAASrO,KAAKqP,EAAK,IACxBzS,EAAK0R,SAAStO,KAAKqP,EAAK,OAtIRnY,EA0ItBO,QA1IsB,WA2IpB7G,GAAE8G,WAAW3E,KAAKkE,SAAUnG,IAC5BF,GAAEmC,KAAKqb,gBAAgBzR,IAAI5L,IAE3BgC,KAAKkE,SAAiB,KACtBlE,KAAKqb,eAAiB,KACtBrb,KAAKyI,QAAiB,KACtBzI,KAAKgN,UAAiB,KACtBhN,KAAKsb,SAAiB,KACtBtb,KAAKub,SAAiB,KACtBvb,KAAKwb,cAAiB,KACtBxb,KAAKyb,cAAiB,MArJFtX,EA0JtBuE,WA1JsB,SA0JXzG,GAMT,GAA6B,iBAL7BA,EAAAA,EAAAA,GACKzD,GACkB,iBAAXyD,GAAuBA,EAASA,EAAS,KAGnCwB,OAAqB,CACrC,IAAIkJ,EAAK9O,GAAEoE,EAAOwB,QAAQqK,KAAK,MAC1BnB,IACHA,EAAKhN,GAAKU,OAAOvC,IACjBD,GAAEoE,EAAOwB,QAAQqK,KAAK,KAAMnB,IAE9B1K,EAAOwB,OAAP,IAAoBkJ,EAKtB,OAFAhN,GAAKoC,gBAAgBjE,GAAMmE,EAAQxD,IAE5BwD,GA3KakC,EA8KtB4X,cA9KsB,WA+KpB,OAAO/b,KAAKqb,iBAAmBpP,OAC3BjM,KAAKqb,eAAeqB,YAAc1c,KAAKqb,eAAexH,WAhLtC1P,EAmLtB6X,iBAnLsB,WAoLpB,OAAOhc,KAAKqb,eAAenG,cAAgB3U,KAAKoc,IAC9Clc,SAASyP,KAAKgF,aACdzU,SAASsJ,gBAAgBmL,eAtLP/Q,EA0LtByY,iBA1LsB,WA2LpB,OAAO5c,KAAKqb,iBAAmBpP,OAC3BA,OAAO4Q,YAAc7c,KAAKqb,eAAenN,wBAAwBkO,QA5LjDjY,EA+LtBuX,SA/LsB,WAgMpB,IAAM7H,EAAe7T,KAAK+b,gBAAkB/b,KAAKyI,QAAQuG,OACnDkG,EAAelV,KAAKgc,mBACpBc,EAAe9c,KAAKyI,QAAQuG,OAChCkG,EACAlV,KAAK4c,mBAMP,GAJI5c,KAAKyb,gBAAkBvG,GACzBlV,KAAK2b,UAGUmB,GAAbjJ,EAAJ,CACE,IAAMpQ,EAASzD,KAAKub,SAASvb,KAAKub,SAASva,OAAS,GAEhDhB,KAAKwb,gBAAkB/X,GACzBzD,KAAK+c,UAAUtZ,OAJnB,CASA,GAAIzD,KAAKwb,eAAiB3H,EAAY7T,KAAKsb,SAAS,IAAyB,EAAnBtb,KAAKsb,SAAS,GAGtE,OAFAtb,KAAKwb,cAAgB,UACrBxb,KAAKgd,SAIP,IAAK,IAAInQ,EAAI7M,KAAKsb,SAASta,OAAQ6L,KAAM,CAChB7M,KAAKwb,gBAAkBxb,KAAKub,SAAS1O,IACxDgH,GAAa7T,KAAKsb,SAASzO,KACM,oBAAzB7M,KAAKsb,SAASzO,EAAI,IACtBgH,EAAY7T,KAAKsb,SAASzO,EAAI,KAGpC7M,KAAK+c,UAAU/c,KAAKub,SAAS1O,OAhOb1I,EAqOtB4Y,UArOsB,SAqOZtZ,GACRzD,KAAKwb,cAAgB/X,EAErBzD,KAAKgd,SAEL,IAAIC,EAAUjd,KAAKgN,UAAU1L,MAAM,KAEnC2b,EAAUA,EAAQhB,IAAI,SAACpb,GACrB,OAAUA,EAAH,iBAA4B4C,EAA5B,MACG5C,EADH,UACqB4C,EADrB,OAIT,IAAMyZ,EAAQrf,GAAEof,EAAQ3C,KAAK,MAEzB4C,EAAMlY,SAAS7G,KACjB+e,EAAMrY,QAAQvG,GAAS4c,UAAUna,KAAKzC,GAAS8c,iBAAiBhQ,SAASjN,IACzE+e,EAAM9R,SAASjN,MAGf+e,EAAM9R,SAASjN,IAGf+e,EAAMC,QAAQ7e,GAASwc,gBAAgB7R,KAAQ3K,GAASyc,UAAxD,KAAsEzc,GAAS2c,YAAc7P,SAASjN,IAEtG+e,EAAMC,QAAQ7e,GAASwc,gBAAgB7R,KAAK3K,GAAS0c,WAAW7P,SAAS7M,GAASyc,WAAW3P,SAASjN,KAGxGN,GAAEmC,KAAKqb,gBAAgB5Z,QAAQvD,GAAMyc,SAAU,CAC7ChQ,cAAelH,KAjQGU,EAqQtB6Y,OArQsB,WAsQpBnf,GAAEmC,KAAKgN,WAAWD,OAAOzO,GAASsJ,QAAQ7C,YAAY5G,KAtQlCsB,EA2Qf2F,iBA3Qe,SA2QEnD,GACtB,OAAOjC,KAAKqF,KAAK,WACf,IAAIE,EAAO1H,GAAEmC,MAAMuF,KAAKxH,IAQxB,GALKwH,IACHA,EAAO,IAAI9F,EAAUO,KAHW,iBAAXiC,GAAuBA,GAI5CpE,GAAEmC,MAAMuF,KAAKxH,GAAUwH,IAGH,iBAAXtD,EAAqB,CAC9B,GAA4B,oBAAjBsD,EAAKtD,GACd,MAAM,IAAI6J,UAAJ,oBAAkC7J,EAAlC,KAERsD,EAAKtD,SAzRW0D,EAAAlG,EAAA,KAAA,CAAA,CAAAmG,IAAA,UAAAC,IAAA,WAmFpB,MA3EuB,UARH,CAAAD,IAAA,UAAAC,IAAA,WAuFpB,OAAOrH,OAvFaiB,EAAA,GAqSxB5B,GAAEoO,QAAQnG,GAAG5H,GAAMyJ,cAAe,WAGhC,IAFA,IAAMyV,EAAavf,GAAEsM,UAAUtM,GAAES,GAASuc,WAEjChO,EAAIuQ,EAAWpc,OAAQ6L,KAAM,CACpC,IAAMwQ,EAAOxf,GAAEuf,EAAWvQ,IAC1BpN,GAAU2F,iBAAiB7C,KAAK8a,EAAMA,EAAK9X,WAU/C1H,GAAEqF,GAAGpF,IAAQ2B,GAAU2F,iBACvBvH,GAAEqF,GAAGpF,IAAMiI,YAActG,GACzB5B,GAAEqF,GAAGpF,IAAMkI,WAAa,WAEtB,OADAnI,GAAEqF,GAAGpF,IAAQG,GACNwB,GAAU2F,kBAGZ3F,IC3THC,IAUE1B,GAAAA,KADAD,GAAqB,UAGrBE,IAZMJ,GA0PXA,GA9O4BqF,GAAF,IAErBhF,GAAQ,CACZmO,KAAAA,OAAwBrO,GACxBsO,OAAAA,SAA0BtO,GAC1BmO,KAAAA,OAAwBnO,GACxBoO,MAAAA,QAAyBpO,GACzBiG,eAAAA,QAAyBjG,GARA,aAWrBG,GACY,gBADZA,GAEY,SAFZA,GAGY,WAHZA,GAIY,OAJZA,GAKY,OAGZG,GACoB,YADpBA,GAEoB,oBAFpBA,GAGoB,UAHpBA,GAIoB,iBAJpBA,GAKoB,kEALpBA,GAMoB,mBANpBA,GAOoB,2BASpBoB,GA9CY,WA+ChB,SAAAA,EAAYkB,GACVZ,KAAKkE,SAAWtD,EAhDF,IAAAuD,EAAAzE,EAAA2C,UAAA,OAAA8B,EA2DhBmJ,KA3DgB,WA2DT,IAAAvN,EAAAC,KACL,KAAIA,KAAKkE,SAASuN,YACdzR,KAAKkE,SAASuN,WAAW3P,WAAa2R,KAAKC,cAC3C7V,GAAEmC,KAAKkE,UAAUc,SAAS7G,KAC1BN,GAAEmC,KAAKkE,UAAUc,SAAS7G,KAH9B,CAOA,IAAIsF,EACA6Z,EACEC,EAAc1f,GAAEmC,KAAKkE,UAAUW,QAAQvG,IAAyB,GAChEuC,EAAWlB,GAAKgB,uBAAuBX,KAAKkE,UAElD,GAAIqZ,EAAa,CACf,IAAMC,EAAwC,OAAzBD,EAAYE,SAAoBnf,GAAqBA,GAE1Egf,GADAA,EAAWzf,GAAEsM,UAAUtM,GAAE0f,GAAaxc,KAAKyc,KACvBF,EAAStc,OAAS,GAGxC,IAAMwQ,EAAY3T,GAAEK,MAAMA,GAAMmO,KAAM,CACpC1B,cAAe3K,KAAKkE,WAGhB4L,EAAYjS,GAAEK,MAAMA,GAAMiO,KAAM,CACpCxB,cAAe2S,IASjB,GANIA,GACFzf,GAAEyf,GAAU7b,QAAQ+P,GAGtB3T,GAAEmC,KAAKkE,UAAUzC,QAAQqO,IAErBA,EAAUtL,uBACXgN,EAAUhN,qBADb,CAKI3D,IACF4C,EAAS5F,GAAEgD,GAAU,IAGvBb,KAAK+c,UACH/c,KAAKkE,SACLqZ,GAGF,IAAMlE,EAAW,WACf,IAAMqE,EAAc7f,GAAEK,MAAMA,GAAMoO,OAAQ,CACxC3B,cAAe5K,EAAKmE,WAGhB6P,EAAalW,GAAEK,MAAMA,GAAMkO,MAAO,CACtCzB,cAAe2S,IAGjBzf,GAAEyf,GAAU7b,QAAQic,GACpB7f,GAAEkC,EAAKmE,UAAUzC,QAAQsS,IAGvBtQ,EACFzD,KAAK+c,UAAUtZ,EAAQA,EAAOgO,WAAY4H,GAE1CA,OA1HYlV,EA8HhBO,QA9HgB,WA+Hd7G,GAAE8G,WAAW3E,KAAKkE,SAAUnG,IAC5BiC,KAAKkE,SAAW,MAhIFC,EAqIhB4Y,UArIgB,SAqINnc,EAASuW,EAAW1C,GAAU,IAAA5K,EAAA7J,KAQhC2d,GANqB,OAAvBxG,EAAUsG,SACK5f,GAAEsZ,GAAWpW,KAAKzC,IAElBT,GAAEsZ,GAAWhM,SAAS7M,KAGX,GACxB6P,EAAkBsG,GACrBkJ,GAAU9f,GAAE8f,GAAQ3Y,SAAS7G,IAE1Bkb,EAAW,WAAA,OAAMxP,EAAK+T,oBAC1Bhd,EACA+c,EACAlJ,IAGF,GAAIkJ,GAAUxP,EAAiB,CAC7B,IAAMhN,EAAqBxB,GAAKuB,iCAAiCyc,GAEjE9f,GAAE8f,GACCzd,IAAIP,GAAKC,eAAgByZ,GACzBlW,qBAAqBhC,QAExBkY,KA9JYlV,EAkKhByZ,oBAlKgB,SAkKIhd,EAAS+c,EAAQlJ,GACnC,GAAIkJ,EAAQ,CACV9f,GAAE8f,GAAQ5Y,YAAe5G,GAAzB,IAA2CA,IAE3C,IAAM0f,EAAgBhgB,GAAE8f,EAAOlM,YAAY1Q,KACzCzC,IACA,GAEEuf,GACFhgB,GAAEggB,GAAe9Y,YAAY5G,IAGK,QAAhCwf,EAAO7c,aAAa,SACtB6c,EAAO9W,aAAa,iBAAiB,GAYzC,GARAhJ,GAAE+C,GAASwK,SAASjN,IACiB,QAAjCyC,EAAQE,aAAa,SACvBF,EAAQiG,aAAa,iBAAiB,GAGxClH,GAAK4B,OAAOX,GACZ/C,GAAE+C,GAASwK,SAASjN,IAEhByC,EAAQ6Q,YACR5T,GAAE+C,EAAQ6Q,YAAYzM,SAAS7G,IAA0B,CAC3D,IAAM2f,EAAkBjgB,GAAE+C,GAASiE,QAAQvG,IAAmB,GAC1Dwf,GACFjgB,GAAEigB,GAAiB/c,KAAKzC,IAA0B8M,SAASjN,IAG7DyC,EAAQiG,aAAa,iBAAiB,GAGpC4N,GACFA,KAtMY/U,EA4MT0F,iBA5MS,SA4MQnD,GACtB,OAAOjC,KAAKqF,KAAK,WACf,IAAMmJ,EAAQ3Q,GAAEmC,MACZuF,EAAOiJ,EAAMjJ,KAAKxH,IAOtB,GALKwH,IACHA,EAAO,IAAI7F,EAAIM,MACfwO,EAAMjJ,KAAKxH,GAAUwH,IAGD,iBAAXtD,EAAqB,CAC9B,GAA4B,oBAAjBsD,EAAKtD,GACd,MAAM,IAAI6J,UAAJ,oBAAkC7J,EAAlC,KAERsD,EAAKtD,SA1NK0D,EAAAjG,EAAA,KAAA,CAAA,CAAAkG,IAAA,UAAAC,IAAA,WAsDd,MA9CuB,YARTnG,EAAA,GAsOlB7B,GAAE4C,UACCqF,GAAG5H,GAAM+F,eAAgB3F,GAAsB,SAAU8E,GACxDA,EAAMsC,iBACNhG,GAAI0F,iBAAiB7C,KAAK1E,GAAEmC,MAAO,UASvCnC,GAAEqF,GAAF,IAAaxD,GAAI0F,iBACjBvH,GAAEqF,GAAF,IAAW6C,YAAcrG,GACzB7B,GAAEqF,GAAF,IAAW8C,WAAa,WAEtB,OADAnI,GAAEqF,GAAF,IAAajF,GACNyB,GAAI0F,kBAGN1F,KC/OT,SAAE7B,GACA,GAAiB,oBAANA,EACT,MAAM,IAAIiO,UAAU,kGAGtB,IAAMiS,EAAUlgB,EAAEqF,GAAGkL,OAAO9M,MAAM,KAAK,GAAGA,MAAM,KAOhD,GAAIyc,EAAQ,GALI,GAKYA,EAAQ,GAJnB,GAFA,IAMoCA,EAAQ,IAJ5C,IAI+DA,EAAQ,IAAmBA,EAAQ,GAHlG,GACA,GAEmHA,EAAQ,GAC1I,MAAM,IAAI/a,MAAM,+EAbpB,CAeGnF","sourcesContent":["import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): util.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Util = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Private TransitionEnd Helpers\n   * ------------------------------------------------------------------------\n   */\n\n  const TRANSITION_END = 'transitionend'\n  const MAX_UID = 1000000\n  const MILLISECONDS_MULTIPLIER = 1000\n\n  // Shoutout AngusCroll (https://goo.gl/pxwQGp)\n  function toType(obj) {\n    return {}.toString.call(obj).match(/\\s([a-z]+)/i)[1].toLowerCase()\n  }\n\n  function getSpecialTransitionEndEvent() {\n    return {\n      bindType: TRANSITION_END,\n      delegateType: TRANSITION_END,\n      handle(event) {\n        if ($(event.target).is(this)) {\n          return event.handleObj.handler.apply(this, arguments) // eslint-disable-line prefer-rest-params\n        }\n        return undefined // eslint-disable-line no-undefined\n      }\n    }\n  }\n\n  function transitionEndEmulator(duration) {\n    let called = false\n\n    $(this).one(Util.TRANSITION_END, () => {\n      called = true\n    })\n\n    setTimeout(() => {\n      if (!called) {\n        Util.triggerTransitionEnd(this)\n      }\n    }, duration)\n\n    return this\n  }\n\n  function setTransitionEndSupport() {\n    $.fn.emulateTransitionEnd = transitionEndEmulator\n    $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent()\n  }\n\n  /**\n   * --------------------------------------------------------------------------\n   * Public Util Api\n   * --------------------------------------------------------------------------\n   */\n\n  const Util = {\n\n    TRANSITION_END: 'bsTransitionEnd',\n\n    getUID(prefix) {\n      do {\n        // eslint-disable-next-line no-bitwise\n        prefix += ~~(Math.random() * MAX_UID) // \"~~\" acts like a faster Math.floor() here\n      } while (document.getElementById(prefix))\n      return prefix\n    },\n\n    getSelectorFromElement(element) {\n      let selector = element.getAttribute('data-target')\n      if (!selector || selector === '#') {\n        selector = element.getAttribute('href') || ''\n      }\n\n      try {\n        const $selector = $(document).find(selector)\n        return $selector.length > 0 ? selector : null\n      } catch (err) {\n        return null\n      }\n    },\n\n    getTransitionDurationFromElement(element) {\n      if (!element) {\n        return 0\n      }\n\n      // Get transition-duration of the element\n      let transitionDuration = $(element).css('transition-duration')\n      const floatTransitionDuration = parseFloat(transitionDuration)\n\n      // Return 0 if element or transition duration is not found\n      if (!floatTransitionDuration) {\n        return 0\n      }\n\n      // If multiple durations are defined, take the first\n      transitionDuration = transitionDuration.split(',')[0]\n\n      return parseFloat(transitionDuration) * MILLISECONDS_MULTIPLIER\n    },\n\n    reflow(element) {\n      return element.offsetHeight\n    },\n\n    triggerTransitionEnd(element) {\n      $(element).trigger(TRANSITION_END)\n    },\n\n    // TODO: Remove in v5\n    supportsTransitionEnd() {\n      return Boolean(TRANSITION_END)\n    },\n\n    isElement(obj) {\n      return (obj[0] || obj).nodeType\n    },\n\n    typeCheckConfig(componentName, config, configTypes) {\n      for (const property in configTypes) {\n        if (Object.prototype.hasOwnProperty.call(configTypes, property)) {\n          const expectedTypes = configTypes[property]\n          const value         = config[property]\n          const valueType     = value && Util.isElement(value)\n            ? 'element' : toType(value)\n\n          if (!new RegExp(expectedTypes).test(valueType)) {\n            throw new Error(\n              `${componentName.toUpperCase()}: ` +\n              `Option \"${property}\" provided type \"${valueType}\" ` +\n              `but expected type \"${expectedTypes}\".`)\n          }\n        }\n      }\n    }\n  }\n\n  setTransitionEndSupport()\n\n  return Util\n})($)\n\nexport default Util\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Alert = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'alert'\n  const VERSION             = '4.1.1'\n  const DATA_KEY            = 'bs.alert'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const DATA_API_KEY        = '.data-api'\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n\n  const Selector = {\n    DISMISS : '[data-dismiss=\"alert\"]'\n  }\n\n  const Event = {\n    CLOSE          : `close${EVENT_KEY}`,\n    CLOSED         : `closed${EVENT_KEY}`,\n    CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    ALERT : 'alert',\n    FADE  : 'fade',\n    SHOW  : 'show'\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Alert {\n    constructor(element) {\n      this._element = element\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    // Public\n\n    close(element) {\n      let rootElement = this._element\n      if (element) {\n        rootElement = this._getRootElement(element)\n      }\n\n      const customEvent = this._triggerCloseEvent(rootElement)\n\n      if (customEvent.isDefaultPrevented()) {\n        return\n      }\n\n      this._removeElement(rootElement)\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      this._element = null\n    }\n\n    // Private\n\n    _getRootElement(element) {\n      const selector = Util.getSelectorFromElement(element)\n      let parent     = false\n\n      if (selector) {\n        parent = $(selector)[0]\n      }\n\n      if (!parent) {\n        parent = $(element).closest(`.${ClassName.ALERT}`)[0]\n      }\n\n      return parent\n    }\n\n    _triggerCloseEvent(element) {\n      const closeEvent = $.Event(Event.CLOSE)\n\n      $(element).trigger(closeEvent)\n      return closeEvent\n    }\n\n    _removeElement(element) {\n      $(element).removeClass(ClassName.SHOW)\n\n      if (!$(element).hasClass(ClassName.FADE)) {\n        this._destroyElement(element)\n        return\n      }\n\n      const transitionDuration = Util.getTransitionDurationFromElement(element)\n\n      $(element)\n        .one(Util.TRANSITION_END, (event) => this._destroyElement(element, event))\n        .emulateTransitionEnd(transitionDuration)\n    }\n\n    _destroyElement(element) {\n      $(element)\n        .detach()\n        .trigger(Event.CLOSED)\n        .remove()\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        const $element = $(this)\n        let data       = $element.data(DATA_KEY)\n\n        if (!data) {\n          data = new Alert(this)\n          $element.data(DATA_KEY, data)\n        }\n\n        if (config === 'close') {\n          data[config](this)\n        }\n      })\n    }\n\n    static _handleDismiss(alertInstance) {\n      return function (event) {\n        if (event) {\n          event.preventDefault()\n        }\n\n        alertInstance.close(this)\n      }\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document).on(\n    Event.CLICK_DATA_API,\n    Selector.DISMISS,\n    Alert._handleDismiss(new Alert())\n  )\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME]             = Alert._jQueryInterface\n  $.fn[NAME].Constructor = Alert\n  $.fn[NAME].noConflict  = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Alert._jQueryInterface\n  }\n\n  return Alert\n})($)\n\nexport default Alert\n","import $ from 'jquery'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Button = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'button'\n  const VERSION             = '4.1.1'\n  const DATA_KEY            = 'bs.button'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const DATA_API_KEY        = '.data-api'\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n\n  const ClassName = {\n    ACTIVE : 'active',\n    BUTTON : 'btn',\n    FOCUS  : 'focus'\n  }\n\n  const Selector = {\n    DATA_TOGGLE_CARROT : '[data-toggle^=\"button\"]',\n    DATA_TOGGLE        : '[data-toggle=\"buttons\"]',\n    INPUT              : 'input',\n    ACTIVE             : '.active',\n    BUTTON             : '.btn'\n  }\n\n  const Event = {\n    CLICK_DATA_API      : `click${EVENT_KEY}${DATA_API_KEY}`,\n    FOCUS_BLUR_DATA_API : `focus${EVENT_KEY}${DATA_API_KEY} ` +\n                            `blur${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Button {\n    constructor(element) {\n      this._element = element\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    // Public\n\n    toggle() {\n      let triggerChangeEvent = true\n      let addAriaPressed = true\n      const rootElement = $(this._element).closest(\n        Selector.DATA_TOGGLE\n      )[0]\n\n      if (rootElement) {\n        const input = $(this._element).find(Selector.INPUT)[0]\n\n        if (input) {\n          if (input.type === 'radio') {\n            if (input.checked &&\n              $(this._element).hasClass(ClassName.ACTIVE)) {\n              triggerChangeEvent = false\n            } else {\n              const activeElement = $(rootElement).find(Selector.ACTIVE)[0]\n\n              if (activeElement) {\n                $(activeElement).removeClass(ClassName.ACTIVE)\n              }\n            }\n          }\n\n          if (triggerChangeEvent) {\n            if (input.hasAttribute('disabled') ||\n              rootElement.hasAttribute('disabled') ||\n              input.classList.contains('disabled') ||\n              rootElement.classList.contains('disabled')) {\n              return\n            }\n            input.checked = !$(this._element).hasClass(ClassName.ACTIVE)\n            $(input).trigger('change')\n          }\n\n          input.focus()\n          addAriaPressed = false\n        }\n      }\n\n      if (addAriaPressed) {\n        this._element.setAttribute('aria-pressed',\n          !$(this._element).hasClass(ClassName.ACTIVE))\n      }\n\n      if (triggerChangeEvent) {\n        $(this._element).toggleClass(ClassName.ACTIVE)\n      }\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      this._element = null\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n\n        if (!data) {\n          data = new Button(this)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (config === 'toggle') {\n          data[config]()\n        }\n      })\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document)\n    .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n      event.preventDefault()\n\n      let button = event.target\n\n      if (!$(button).hasClass(ClassName.BUTTON)) {\n        button = $(button).closest(Selector.BUTTON)\n      }\n\n      Button._jQueryInterface.call($(button), 'toggle')\n    })\n    .on(Event.FOCUS_BLUR_DATA_API, Selector.DATA_TOGGLE_CARROT, (event) => {\n      const button = $(event.target).closest(Selector.BUTTON)[0]\n      $(button).toggleClass(ClassName.FOCUS, /^focus(in)?$/.test(event.type))\n    })\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Button._jQueryInterface\n  $.fn[NAME].Constructor = Button\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Button._jQueryInterface\n  }\n\n  return Button\n})($)\n\nexport default Button\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Carousel = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                   = 'carousel'\n  const VERSION                = '4.1.1'\n  const DATA_KEY               = 'bs.carousel'\n  const EVENT_KEY              = `.${DATA_KEY}`\n  const DATA_API_KEY           = '.data-api'\n  const JQUERY_NO_CONFLICT     = $.fn[NAME]\n  const ARROW_LEFT_KEYCODE     = 37 // KeyboardEvent.which value for left arrow key\n  const ARROW_RIGHT_KEYCODE    = 39 // KeyboardEvent.which value for right arrow key\n  const TOUCHEVENT_COMPAT_WAIT = 500 // Time for mouse compat events to fire after touch\n\n  const Default = {\n    interval : 5000,\n    keyboard : true,\n    slide    : false,\n    pause    : 'hover',\n    wrap     : true\n  }\n\n  const DefaultType = {\n    interval : '(number|boolean)',\n    keyboard : 'boolean',\n    slide    : '(boolean|string)',\n    pause    : '(string|boolean)',\n    wrap     : 'boolean'\n  }\n\n  const Direction = {\n    NEXT     : 'next',\n    PREV     : 'prev',\n    LEFT     : 'left',\n    RIGHT    : 'right'\n  }\n\n  const Event = {\n    SLIDE          : `slide${EVENT_KEY}`,\n    SLID           : `slid${EVENT_KEY}`,\n    KEYDOWN        : `keydown${EVENT_KEY}`,\n    MOUSEENTER     : `mouseenter${EVENT_KEY}`,\n    MOUSELEAVE     : `mouseleave${EVENT_KEY}`,\n    TOUCHEND       : `touchend${EVENT_KEY}`,\n    LOAD_DATA_API  : `load${EVENT_KEY}${DATA_API_KEY}`,\n    CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    CAROUSEL : 'carousel',\n    ACTIVE   : 'active',\n    SLIDE    : 'slide',\n    RIGHT    : 'carousel-item-right',\n    LEFT     : 'carousel-item-left',\n    NEXT     : 'carousel-item-next',\n    PREV     : 'carousel-item-prev',\n    ITEM     : 'carousel-item'\n  }\n\n  const Selector = {\n    ACTIVE      : '.active',\n    ACTIVE_ITEM : '.active.carousel-item',\n    ITEM        : '.carousel-item',\n    NEXT_PREV   : '.carousel-item-next, .carousel-item-prev',\n    INDICATORS  : '.carousel-indicators',\n    DATA_SLIDE  : '[data-slide], [data-slide-to]',\n    DATA_RIDE   : '[data-ride=\"carousel\"]'\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Carousel {\n    constructor(element, config) {\n      this._items              = null\n      this._interval           = null\n      this._activeElement      = null\n\n      this._isPaused           = false\n      this._isSliding          = false\n\n      this.touchTimeout        = null\n\n      this._config             = this._getConfig(config)\n      this._element            = $(element)[0]\n      this._indicatorsElement  = $(this._element).find(Selector.INDICATORS)[0]\n\n      this._addEventListeners()\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    // Public\n\n    next() {\n      if (!this._isSliding) {\n        this._slide(Direction.NEXT)\n      }\n    }\n\n    nextWhenVisible() {\n      // Don't call next when the page isn't visible\n      // or the carousel or its parent isn't visible\n      if (!document.hidden &&\n        ($(this._element).is(':visible') && $(this._element).css('visibility') !== 'hidden')) {\n        this.next()\n      }\n    }\n\n    prev() {\n      if (!this._isSliding) {\n        this._slide(Direction.PREV)\n      }\n    }\n\n    pause(event) {\n      if (!event) {\n        this._isPaused = true\n      }\n\n      if ($(this._element).find(Selector.NEXT_PREV)[0]) {\n        Util.triggerTransitionEnd(this._element)\n        this.cycle(true)\n      }\n\n      clearInterval(this._interval)\n      this._interval = null\n    }\n\n    cycle(event) {\n      if (!event) {\n        this._isPaused = false\n      }\n\n      if (this._interval) {\n        clearInterval(this._interval)\n        this._interval = null\n      }\n\n      if (this._config.interval && !this._isPaused) {\n        this._interval = setInterval(\n          (document.visibilityState ? this.nextWhenVisible : this.next).bind(this),\n          this._config.interval\n        )\n      }\n    }\n\n    to(index) {\n      this._activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n\n      const activeIndex = this._getItemIndex(this._activeElement)\n\n      if (index > this._items.length - 1 || index < 0) {\n        return\n      }\n\n      if (this._isSliding) {\n        $(this._element).one(Event.SLID, () => this.to(index))\n        return\n      }\n\n      if (activeIndex === index) {\n        this.pause()\n        this.cycle()\n        return\n      }\n\n      const direction = index > activeIndex\n        ? Direction.NEXT\n        : Direction.PREV\n\n      this._slide(direction, this._items[index])\n    }\n\n    dispose() {\n      $(this._element).off(EVENT_KEY)\n      $.removeData(this._element, DATA_KEY)\n\n      this._items             = null\n      this._config            = null\n      this._element           = null\n      this._interval          = null\n      this._isPaused          = null\n      this._isSliding         = null\n      this._activeElement     = null\n      this._indicatorsElement = null\n    }\n\n    // Private\n\n    _getConfig(config) {\n      config = {\n        ...Default,\n        ...config\n      }\n      Util.typeCheckConfig(NAME, config, DefaultType)\n      return config\n    }\n\n    _addEventListeners() {\n      if (this._config.keyboard) {\n        $(this._element)\n          .on(Event.KEYDOWN, (event) => this._keydown(event))\n      }\n\n      if (this._config.pause === 'hover') {\n        $(this._element)\n          .on(Event.MOUSEENTER, (event) => this.pause(event))\n          .on(Event.MOUSELEAVE, (event) => this.cycle(event))\n        if ('ontouchstart' in document.documentElement) {\n          // If it's a touch-enabled device, mouseenter/leave are fired as\n          // part of the mouse compatibility events on first tap - the carousel\n          // would stop cycling until user tapped out of it;\n          // here, we listen for touchend, explicitly pause the carousel\n          // (as if it's the second time we tap on it, mouseenter compat event\n          // is NOT fired) and after a timeout (to allow for mouse compatibility\n          // events to fire) we explicitly restart cycling\n          $(this._element).on(Event.TOUCHEND, () => {\n            this.pause()\n            if (this.touchTimeout) {\n              clearTimeout(this.touchTimeout)\n            }\n            this.touchTimeout = setTimeout((event) => this.cycle(event), TOUCHEVENT_COMPAT_WAIT + this._config.interval)\n          })\n        }\n      }\n    }\n\n    _keydown(event) {\n      if (/input|textarea/i.test(event.target.tagName)) {\n        return\n      }\n\n      switch (event.which) {\n        case ARROW_LEFT_KEYCODE:\n          event.preventDefault()\n          this.prev()\n          break\n        case ARROW_RIGHT_KEYCODE:\n          event.preventDefault()\n          this.next()\n          break\n        default:\n      }\n    }\n\n    _getItemIndex(element) {\n      this._items = $.makeArray($(element).parent().find(Selector.ITEM))\n      return this._items.indexOf(element)\n    }\n\n    _getItemByDirection(direction, activeElement) {\n      const isNextDirection = direction === Direction.NEXT\n      const isPrevDirection = direction === Direction.PREV\n      const activeIndex     = this._getItemIndex(activeElement)\n      const lastItemIndex   = this._items.length - 1\n      const isGoingToWrap   = isPrevDirection && activeIndex === 0 ||\n                              isNextDirection && activeIndex === lastItemIndex\n\n      if (isGoingToWrap && !this._config.wrap) {\n        return activeElement\n      }\n\n      const delta     = direction === Direction.PREV ? -1 : 1\n      const itemIndex = (activeIndex + delta) % this._items.length\n\n      return itemIndex === -1\n        ? this._items[this._items.length - 1] : this._items[itemIndex]\n    }\n\n    _triggerSlideEvent(relatedTarget, eventDirectionName) {\n      const targetIndex = this._getItemIndex(relatedTarget)\n      const fromIndex = this._getItemIndex($(this._element).find(Selector.ACTIVE_ITEM)[0])\n      const slideEvent = $.Event(Event.SLIDE, {\n        relatedTarget,\n        direction: eventDirectionName,\n        from: fromIndex,\n        to: targetIndex\n      })\n\n      $(this._element).trigger(slideEvent)\n\n      return slideEvent\n    }\n\n    _setActiveIndicatorElement(element) {\n      if (this._indicatorsElement) {\n        $(this._indicatorsElement)\n          .find(Selector.ACTIVE)\n          .removeClass(ClassName.ACTIVE)\n\n        const nextIndicator = this._indicatorsElement.children[\n          this._getItemIndex(element)\n        ]\n\n        if (nextIndicator) {\n          $(nextIndicator).addClass(ClassName.ACTIVE)\n        }\n      }\n    }\n\n    _slide(direction, element) {\n      const activeElement = $(this._element).find(Selector.ACTIVE_ITEM)[0]\n      const activeElementIndex = this._getItemIndex(activeElement)\n      const nextElement   = element || activeElement &&\n        this._getItemByDirection(direction, activeElement)\n      const nextElementIndex = this._getItemIndex(nextElement)\n      const isCycling = Boolean(this._interval)\n\n      let directionalClassName\n      let orderClassName\n      let eventDirectionName\n\n      if (direction === Direction.NEXT) {\n        directionalClassName = ClassName.LEFT\n        orderClassName = ClassName.NEXT\n        eventDirectionName = Direction.LEFT\n      } else {\n        directionalClassName = ClassName.RIGHT\n        orderClassName = ClassName.PREV\n        eventDirectionName = Direction.RIGHT\n      }\n\n      if (nextElement && $(nextElement).hasClass(ClassName.ACTIVE)) {\n        this._isSliding = false\n        return\n      }\n\n      const slideEvent = this._triggerSlideEvent(nextElement, eventDirectionName)\n      if (slideEvent.isDefaultPrevented()) {\n        return\n      }\n\n      if (!activeElement || !nextElement) {\n        // Some weirdness is happening, so we bail\n        return\n      }\n\n      this._isSliding = true\n\n      if (isCycling) {\n        this.pause()\n      }\n\n      this._setActiveIndicatorElement(nextElement)\n\n      const slidEvent = $.Event(Event.SLID, {\n        relatedTarget: nextElement,\n        direction: eventDirectionName,\n        from: activeElementIndex,\n        to: nextElementIndex\n      })\n\n      if ($(this._element).hasClass(ClassName.SLIDE)) {\n        $(nextElement).addClass(orderClassName)\n\n        Util.reflow(nextElement)\n\n        $(activeElement).addClass(directionalClassName)\n        $(nextElement).addClass(directionalClassName)\n\n        const transitionDuration = Util.getTransitionDurationFromElement(activeElement)\n\n        $(activeElement)\n          .one(Util.TRANSITION_END, () => {\n            $(nextElement)\n              .removeClass(`${directionalClassName} ${orderClassName}`)\n              .addClass(ClassName.ACTIVE)\n\n            $(activeElement).removeClass(`${ClassName.ACTIVE} ${orderClassName} ${directionalClassName}`)\n\n            this._isSliding = false\n\n            setTimeout(() => $(this._element).trigger(slidEvent), 0)\n          })\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        $(activeElement).removeClass(ClassName.ACTIVE)\n        $(nextElement).addClass(ClassName.ACTIVE)\n\n        this._isSliding = false\n        $(this._element).trigger(slidEvent)\n      }\n\n      if (isCycling) {\n        this.cycle()\n      }\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n        let _config = {\n          ...Default,\n          ...$(this).data()\n        }\n\n        if (typeof config === 'object') {\n          _config = {\n            ..._config,\n            ...config\n          }\n        }\n\n        const action = typeof config === 'string' ? config : _config.slide\n\n        if (!data) {\n          data = new Carousel(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'number') {\n          data.to(config)\n        } else if (typeof action === 'string') {\n          if (typeof data[action] === 'undefined') {\n            throw new TypeError(`No method named \"${action}\"`)\n          }\n          data[action]()\n        } else if (_config.interval) {\n          data.pause()\n          data.cycle()\n        }\n      })\n    }\n\n    static _dataApiClickHandler(event) {\n      const selector = Util.getSelectorFromElement(this)\n\n      if (!selector) {\n        return\n      }\n\n      const target = $(selector)[0]\n\n      if (!target || !$(target).hasClass(ClassName.CAROUSEL)) {\n        return\n      }\n\n      const config = {\n        ...$(target).data(),\n        ...$(this).data()\n      }\n      const slideIndex = this.getAttribute('data-slide-to')\n\n      if (slideIndex) {\n        config.interval = false\n      }\n\n      Carousel._jQueryInterface.call($(target), config)\n\n      if (slideIndex) {\n        $(target).data(DATA_KEY).to(slideIndex)\n      }\n\n      event.preventDefault()\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document)\n    .on(Event.CLICK_DATA_API, Selector.DATA_SLIDE, Carousel._dataApiClickHandler)\n\n  $(window).on(Event.LOAD_DATA_API, () => {\n    $(Selector.DATA_RIDE).each(function () {\n      const $carousel = $(this)\n      Carousel._jQueryInterface.call($carousel, $carousel.data())\n    })\n  })\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Carousel._jQueryInterface\n  $.fn[NAME].Constructor = Carousel\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Carousel._jQueryInterface\n  }\n\n  return Carousel\n})($)\n\nexport default Carousel\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Collapse = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'collapse'\n  const VERSION             = '4.1.1'\n  const DATA_KEY            = 'bs.collapse'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const DATA_API_KEY        = '.data-api'\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n\n  const Default = {\n    toggle : true,\n    parent : ''\n  }\n\n  const DefaultType = {\n    toggle : 'boolean',\n    parent : '(string|element)'\n  }\n\n  const Event = {\n    SHOW           : `show${EVENT_KEY}`,\n    SHOWN          : `shown${EVENT_KEY}`,\n    HIDE           : `hide${EVENT_KEY}`,\n    HIDDEN         : `hidden${EVENT_KEY}`,\n    CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    SHOW       : 'show',\n    COLLAPSE   : 'collapse',\n    COLLAPSING : 'collapsing',\n    COLLAPSED  : 'collapsed'\n  }\n\n  const Dimension = {\n    WIDTH  : 'width',\n    HEIGHT : 'height'\n  }\n\n  const Selector = {\n    ACTIVES     : '.show, .collapsing',\n    DATA_TOGGLE : '[data-toggle=\"collapse\"]'\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Collapse {\n    constructor(element, config) {\n      this._isTransitioning = false\n      this._element         = element\n      this._config          = this._getConfig(config)\n      this._triggerArray    = $.makeArray($(\n        `[data-toggle=\"collapse\"][href=\"#${element.id}\"],` +\n        `[data-toggle=\"collapse\"][data-target=\"#${element.id}\"]`\n      ))\n      const tabToggles = $(Selector.DATA_TOGGLE)\n      for (let i = 0; i < tabToggles.length; i++) {\n        const elem = tabToggles[i]\n        const selector = Util.getSelectorFromElement(elem)\n        if (selector !== null && $(selector).filter(element).length > 0) {\n          this._selector = selector\n          this._triggerArray.push(elem)\n        }\n      }\n\n      this._parent = this._config.parent ? this._getParent() : null\n\n      if (!this._config.parent) {\n        this._addAriaAndCollapsedClass(this._element, this._triggerArray)\n      }\n\n      if (this._config.toggle) {\n        this.toggle()\n      }\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    // Public\n\n    toggle() {\n      if ($(this._element).hasClass(ClassName.SHOW)) {\n        this.hide()\n      } else {\n        this.show()\n      }\n    }\n\n    show() {\n      if (this._isTransitioning ||\n        $(this._element).hasClass(ClassName.SHOW)) {\n        return\n      }\n\n      let actives\n      let activesData\n\n      if (this._parent) {\n        actives = $.makeArray(\n          $(this._parent)\n            .find(Selector.ACTIVES)\n            .filter(`[data-parent=\"${this._config.parent}\"]`)\n        )\n        if (actives.length === 0) {\n          actives = null\n        }\n      }\n\n      if (actives) {\n        activesData = $(actives).not(this._selector).data(DATA_KEY)\n        if (activesData && activesData._isTransitioning) {\n          return\n        }\n      }\n\n      const startEvent = $.Event(Event.SHOW)\n      $(this._element).trigger(startEvent)\n      if (startEvent.isDefaultPrevented()) {\n        return\n      }\n\n      if (actives) {\n        Collapse._jQueryInterface.call($(actives).not(this._selector), 'hide')\n        if (!activesData) {\n          $(actives).data(DATA_KEY, null)\n        }\n      }\n\n      const dimension = this._getDimension()\n\n      $(this._element)\n        .removeClass(ClassName.COLLAPSE)\n        .addClass(ClassName.COLLAPSING)\n\n      this._element.style[dimension] = 0\n\n      if (this._triggerArray.length > 0) {\n        $(this._triggerArray)\n          .removeClass(ClassName.COLLAPSED)\n          .attr('aria-expanded', true)\n      }\n\n      this.setTransitioning(true)\n\n      const complete = () => {\n        $(this._element)\n          .removeClass(ClassName.COLLAPSING)\n          .addClass(ClassName.COLLAPSE)\n          .addClass(ClassName.SHOW)\n\n        this._element.style[dimension] = ''\n\n        this.setTransitioning(false)\n\n        $(this._element).trigger(Event.SHOWN)\n      }\n\n      const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1)\n      const scrollSize = `scroll${capitalizedDimension}`\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n\n      this._element.style[dimension] = `${this._element[scrollSize]}px`\n    }\n\n    hide() {\n      if (this._isTransitioning ||\n        !$(this._element).hasClass(ClassName.SHOW)) {\n        return\n      }\n\n      const startEvent = $.Event(Event.HIDE)\n      $(this._element).trigger(startEvent)\n      if (startEvent.isDefaultPrevented()) {\n        return\n      }\n\n      const dimension = this._getDimension()\n\n      this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`\n\n      Util.reflow(this._element)\n\n      $(this._element)\n        .addClass(ClassName.COLLAPSING)\n        .removeClass(ClassName.COLLAPSE)\n        .removeClass(ClassName.SHOW)\n\n      if (this._triggerArray.length > 0) {\n        for (let i = 0; i < this._triggerArray.length; i++) {\n          const trigger = this._triggerArray[i]\n          const selector = Util.getSelectorFromElement(trigger)\n          if (selector !== null) {\n            const $elem = $(selector)\n            if (!$elem.hasClass(ClassName.SHOW)) {\n              $(trigger).addClass(ClassName.COLLAPSED)\n                .attr('aria-expanded', false)\n            }\n          }\n        }\n      }\n\n      this.setTransitioning(true)\n\n      const complete = () => {\n        this.setTransitioning(false)\n        $(this._element)\n          .removeClass(ClassName.COLLAPSING)\n          .addClass(ClassName.COLLAPSE)\n          .trigger(Event.HIDDEN)\n      }\n\n      this._element.style[dimension] = ''\n      const transitionDuration = Util.getTransitionDurationFromElement(this._element)\n\n      $(this._element)\n        .one(Util.TRANSITION_END, complete)\n        .emulateTransitionEnd(transitionDuration)\n    }\n\n    setTransitioning(isTransitioning) {\n      this._isTransitioning = isTransitioning\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n\n      this._config          = null\n      this._parent          = null\n      this._element         = null\n      this._triggerArray    = null\n      this._isTransitioning = null\n    }\n\n    // Private\n\n    _getConfig(config) {\n      config = {\n        ...Default,\n        ...config\n      }\n      config.toggle = Boolean(config.toggle) // Coerce string values\n      Util.typeCheckConfig(NAME, config, DefaultType)\n      return config\n    }\n\n    _getDimension() {\n      const hasWidth = $(this._element).hasClass(Dimension.WIDTH)\n      return hasWidth ? Dimension.WIDTH : Dimension.HEIGHT\n    }\n\n    _getParent() {\n      let parent = null\n      if (Util.isElement(this._config.parent)) {\n        parent = this._config.parent\n\n        // It's a jQuery object\n        if (typeof this._config.parent.jquery !== 'undefined') {\n          parent = this._config.parent[0]\n        }\n      } else {\n        parent = $(this._config.parent)[0]\n      }\n\n      const selector =\n        `[data-toggle=\"collapse\"][data-parent=\"${this._config.parent}\"]`\n\n      $(parent).find(selector).each((i, element) => {\n        this._addAriaAndCollapsedClass(\n          Collapse._getTargetFromElement(element),\n          [element]\n        )\n      })\n\n      return parent\n    }\n\n    _addAriaAndCollapsedClass(element, triggerArray) {\n      if (element) {\n        const isOpen = $(element).hasClass(ClassName.SHOW)\n\n        if (triggerArray.length > 0) {\n          $(triggerArray)\n            .toggleClass(ClassName.COLLAPSED, !isOpen)\n            .attr('aria-expanded', isOpen)\n        }\n      }\n    }\n\n    // Static\n\n    static _getTargetFromElement(element) {\n      const selector = Util.getSelectorFromElement(element)\n      return selector ? $(selector)[0] : null\n    }\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        const $this   = $(this)\n        let data      = $this.data(DATA_KEY)\n        const _config = {\n          ...Default,\n          ...$this.data(),\n          ...typeof config === 'object' && config ? config : {}\n        }\n\n        if (!data && _config.toggle && /show|hide/.test(config)) {\n          _config.toggle = false\n        }\n\n        if (!data) {\n          data = new Collapse(this, _config)\n          $this.data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n    // preventDefault only for <a> elements (which change the URL) not inside the collapsible element\n    if (event.currentTarget.tagName === 'A') {\n      event.preventDefault()\n    }\n\n    const $trigger = $(this)\n    const selector = Util.getSelectorFromElement(this)\n    $(selector).each(function () {\n      const $target = $(this)\n      const data    = $target.data(DATA_KEY)\n      const config  = data ? 'toggle' : $trigger.data()\n      Collapse._jQueryInterface.call($target, config)\n    })\n  })\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Collapse._jQueryInterface\n  $.fn[NAME].Constructor = Collapse\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Collapse._jQueryInterface\n  }\n\n  return Collapse\n})($)\n\nexport default Collapse\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Dropdown = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                     = 'dropdown'\n  const VERSION                  = '4.1.1'\n  const DATA_KEY                 = 'bs.dropdown'\n  const EVENT_KEY                = `.${DATA_KEY}`\n  const DATA_API_KEY             = '.data-api'\n  const JQUERY_NO_CONFLICT       = $.fn[NAME]\n  const ESCAPE_KEYCODE           = 27 // KeyboardEvent.which value for Escape (Esc) key\n  const SPACE_KEYCODE            = 32 // KeyboardEvent.which value for space key\n  const TAB_KEYCODE              = 9 // KeyboardEvent.which value for tab key\n  const ARROW_UP_KEYCODE         = 38 // KeyboardEvent.which value for up arrow key\n  const ARROW_DOWN_KEYCODE       = 40 // KeyboardEvent.which value for down arrow key\n  const RIGHT_MOUSE_BUTTON_WHICH = 3 // MouseEvent.which value for the right button (assuming a right-handed mouse)\n  const REGEXP_KEYDOWN           = new RegExp(`${ARROW_UP_KEYCODE}|${ARROW_DOWN_KEYCODE}|${ESCAPE_KEYCODE}`)\n\n  const Event = {\n    HIDE             : `hide${EVENT_KEY}`,\n    HIDDEN           : `hidden${EVENT_KEY}`,\n    SHOW             : `show${EVENT_KEY}`,\n    SHOWN            : `shown${EVENT_KEY}`,\n    CLICK            : `click${EVENT_KEY}`,\n    CLICK_DATA_API   : `click${EVENT_KEY}${DATA_API_KEY}`,\n    KEYDOWN_DATA_API : `keydown${EVENT_KEY}${DATA_API_KEY}`,\n    KEYUP_DATA_API   : `keyup${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    DISABLED  : 'disabled',\n    SHOW      : 'show',\n    DROPUP    : 'dropup',\n    DROPRIGHT : 'dropright',\n    DROPLEFT  : 'dropleft',\n    MENURIGHT : 'dropdown-menu-right',\n    MENULEFT  : 'dropdown-menu-left',\n    POSITION_STATIC : 'position-static'\n  }\n\n  const Selector = {\n    DATA_TOGGLE   : '[data-toggle=\"dropdown\"]',\n    FORM_CHILD    : '.dropdown form',\n    MENU          : '.dropdown-menu',\n    NAVBAR_NAV    : '.navbar-nav',\n    VISIBLE_ITEMS : '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)'\n  }\n\n  const AttachmentMap = {\n    TOP       : 'top-start',\n    TOPEND    : 'top-end',\n    BOTTOM    : 'bottom-start',\n    BOTTOMEND : 'bottom-end',\n    RIGHT     : 'right-start',\n    RIGHTEND  : 'right-end',\n    LEFT      : 'left-start',\n    LEFTEND   : 'left-end'\n  }\n\n  const Default = {\n    offset      : 0,\n    flip        : true,\n    boundary    : 'scrollParent',\n    reference   : 'toggle',\n    display     : 'dynamic'\n  }\n\n  const DefaultType = {\n    offset      : '(number|string|function)',\n    flip        : 'boolean',\n    boundary    : '(string|element)',\n    reference   : '(string|element)',\n    display     : 'string'\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Dropdown {\n    constructor(element, config) {\n      this._element  = element\n      this._popper   = null\n      this._config   = this._getConfig(config)\n      this._menu     = this._getMenuElement()\n      this._inNavbar = this._detectNavbar()\n\n      this._addEventListeners()\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    static get DefaultType() {\n      return DefaultType\n    }\n\n    // Public\n\n    toggle() {\n      if (this._element.disabled || $(this._element).hasClass(ClassName.DISABLED)) {\n        return\n      }\n\n      const parent   = Dropdown._getParentFromElement(this._element)\n      const isActive = $(this._menu).hasClass(ClassName.SHOW)\n\n      Dropdown._clearMenus()\n\n      if (isActive) {\n        return\n      }\n\n      const relatedTarget = {\n        relatedTarget: this._element\n      }\n      const showEvent = $.Event(Event.SHOW, relatedTarget)\n\n      $(parent).trigger(showEvent)\n\n      if (showEvent.isDefaultPrevented()) {\n        return\n      }\n\n      // Disable totally Popper.js for Dropdown in Navbar\n      if (!this._inNavbar) {\n        /**\n         * Check for Popper dependency\n         * Popper - https://popper.js.org\n         */\n        if (typeof Popper === 'undefined') {\n          throw new TypeError('Bootstrap dropdown require Popper.js (https://popper.js.org)')\n        }\n\n        let referenceElement = this._element\n\n        if (this._config.reference === 'parent') {\n          referenceElement = parent\n        } else if (Util.isElement(this._config.reference)) {\n          referenceElement = this._config.reference\n\n          // Check if it's jQuery element\n          if (typeof this._config.reference.jquery !== 'undefined') {\n            referenceElement = this._config.reference[0]\n          }\n        }\n\n        // If boundary is not `scrollParent`, then set position to `static`\n        // to allow the menu to \"escape\" the scroll parent's boundaries\n        // https://github.com/twbs/bootstrap/issues/24251\n        if (this._config.boundary !== 'scrollParent') {\n          $(parent).addClass(ClassName.POSITION_STATIC)\n        }\n        this._popper = new Popper(referenceElement, this._menu, this._getPopperConfig())\n      }\n\n      // If this is a touch-enabled device we add extra\n      // empty mouseover listeners to the body's immediate children;\n      // only needed because of broken event delegation on iOS\n      // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n      if ('ontouchstart' in document.documentElement &&\n         $(parent).closest(Selector.NAVBAR_NAV).length === 0) {\n        $(document.body).children().on('mouseover', null, $.noop)\n      }\n\n      this._element.focus()\n      this._element.setAttribute('aria-expanded', true)\n\n      $(this._menu).toggleClass(ClassName.SHOW)\n      $(parent)\n        .toggleClass(ClassName.SHOW)\n        .trigger($.Event(Event.SHOWN, relatedTarget))\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      $(this._element).off(EVENT_KEY)\n      this._element = null\n      this._menu = null\n      if (this._popper !== null) {\n        this._popper.destroy()\n        this._popper = null\n      }\n    }\n\n    update() {\n      this._inNavbar = this._detectNavbar()\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate()\n      }\n    }\n\n    // Private\n\n    _addEventListeners() {\n      $(this._element).on(Event.CLICK, (event) => {\n        event.preventDefault()\n        event.stopPropagation()\n        this.toggle()\n      })\n    }\n\n    _getConfig(config) {\n      config = {\n        ...this.constructor.Default,\n        ...$(this._element).data(),\n        ...config\n      }\n\n      Util.typeCheckConfig(\n        NAME,\n        config,\n        this.constructor.DefaultType\n      )\n\n      return config\n    }\n\n    _getMenuElement() {\n      if (!this._menu) {\n        const parent = Dropdown._getParentFromElement(this._element)\n        this._menu = $(parent).find(Selector.MENU)[0]\n      }\n      return this._menu\n    }\n\n    _getPlacement() {\n      const $parentDropdown = $(this._element).parent()\n      let placement = AttachmentMap.BOTTOM\n\n      // Handle dropup\n      if ($parentDropdown.hasClass(ClassName.DROPUP)) {\n        placement = AttachmentMap.TOP\n        if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n          placement = AttachmentMap.TOPEND\n        }\n      } else if ($parentDropdown.hasClass(ClassName.DROPRIGHT)) {\n        placement = AttachmentMap.RIGHT\n      } else if ($parentDropdown.hasClass(ClassName.DROPLEFT)) {\n        placement = AttachmentMap.LEFT\n      } else if ($(this._menu).hasClass(ClassName.MENURIGHT)) {\n        placement = AttachmentMap.BOTTOMEND\n      }\n      return placement\n    }\n\n    _detectNavbar() {\n      return $(this._element).closest('.navbar').length > 0\n    }\n\n    _getPopperConfig() {\n      const offsetConf = {}\n      if (typeof this._config.offset === 'function') {\n        offsetConf.fn = (data) => {\n          data.offsets = {\n            ...data.offsets,\n            ...this._config.offset(data.offsets) || {}\n          }\n          return data\n        }\n      } else {\n        offsetConf.offset = this._config.offset\n      }\n      const popperConfig = {\n        placement: this._getPlacement(),\n        modifiers: {\n          offset: offsetConf,\n          flip: {\n            enabled: this._config.flip\n          },\n          preventOverflow: {\n            boundariesElement: this._config.boundary\n          }\n        }\n      }\n\n      // Disable Popper.js if we have a static display\n      if (this._config.display === 'static') {\n        popperConfig.modifiers.applyStyle = {\n          enabled: false\n        }\n      }\n      return popperConfig\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n        const _config = typeof config === 'object' ? config : null\n\n        if (!data) {\n          data = new Dropdown(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n\n    static _clearMenus(event) {\n      if (event && (event.which === RIGHT_MOUSE_BUTTON_WHICH ||\n        event.type === 'keyup' && event.which !== TAB_KEYCODE)) {\n        return\n      }\n\n      const toggles = $.makeArray($(Selector.DATA_TOGGLE))\n      for (let i = 0; i < toggles.length; i++) {\n        const parent = Dropdown._getParentFromElement(toggles[i])\n        const context = $(toggles[i]).data(DATA_KEY)\n        const relatedTarget = {\n          relatedTarget: toggles[i]\n        }\n\n        if (!context) {\n          continue\n        }\n\n        const dropdownMenu = context._menu\n        if (!$(parent).hasClass(ClassName.SHOW)) {\n          continue\n        }\n\n        if (event && (event.type === 'click' &&\n            /input|textarea/i.test(event.target.tagName) || event.type === 'keyup' && event.which === TAB_KEYCODE) &&\n            $.contains(parent, event.target)) {\n          continue\n        }\n\n        const hideEvent = $.Event(Event.HIDE, relatedTarget)\n        $(parent).trigger(hideEvent)\n        if (hideEvent.isDefaultPrevented()) {\n          continue\n        }\n\n        // If this is a touch-enabled device we remove the extra\n        // empty mouseover listeners we added for iOS support\n        if ('ontouchstart' in document.documentElement) {\n          $(document.body).children().off('mouseover', null, $.noop)\n        }\n\n        toggles[i].setAttribute('aria-expanded', 'false')\n\n        $(dropdownMenu).removeClass(ClassName.SHOW)\n        $(parent)\n          .removeClass(ClassName.SHOW)\n          .trigger($.Event(Event.HIDDEN, relatedTarget))\n      }\n    }\n\n    static _getParentFromElement(element) {\n      let parent\n      const selector = Util.getSelectorFromElement(element)\n\n      if (selector) {\n        parent = $(selector)[0]\n      }\n\n      return parent || element.parentNode\n    }\n\n    // eslint-disable-next-line complexity\n    static _dataApiKeydownHandler(event) {\n      // If not input/textarea:\n      //  - And not a key in REGEXP_KEYDOWN => not a dropdown command\n      // If input/textarea:\n      //  - If space key => not a dropdown command\n      //  - If key is other than escape\n      //    - If key is not up or down => not a dropdown command\n      //    - If trigger inside the menu => not a dropdown command\n      if (/input|textarea/i.test(event.target.tagName)\n        ? event.which === SPACE_KEYCODE || event.which !== ESCAPE_KEYCODE &&\n        (event.which !== ARROW_DOWN_KEYCODE && event.which !== ARROW_UP_KEYCODE ||\n          $(event.target).closest(Selector.MENU).length) : !REGEXP_KEYDOWN.test(event.which)) {\n        return\n      }\n\n      event.preventDefault()\n      event.stopPropagation()\n\n      if (this.disabled || $(this).hasClass(ClassName.DISABLED)) {\n        return\n      }\n\n      const parent   = Dropdown._getParentFromElement(this)\n      const isActive = $(parent).hasClass(ClassName.SHOW)\n\n      if (!isActive && (event.which !== ESCAPE_KEYCODE || event.which !== SPACE_KEYCODE) ||\n           isActive && (event.which === ESCAPE_KEYCODE || event.which === SPACE_KEYCODE)) {\n        if (event.which === ESCAPE_KEYCODE) {\n          const toggle = $(parent).find(Selector.DATA_TOGGLE)[0]\n          $(toggle).trigger('focus')\n        }\n\n        $(this).trigger('click')\n        return\n      }\n\n      const items = $(parent).find(Selector.VISIBLE_ITEMS).get()\n\n      if (items.length === 0) {\n        return\n      }\n\n      let index = items.indexOf(event.target)\n\n      if (event.which === ARROW_UP_KEYCODE && index > 0) { // Up\n        index--\n      }\n\n      if (event.which === ARROW_DOWN_KEYCODE && index < items.length - 1) { // Down\n        index++\n      }\n\n      if (index < 0) {\n        index = 0\n      }\n\n      items[index].focus()\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document)\n    .on(Event.KEYDOWN_DATA_API, Selector.DATA_TOGGLE, Dropdown._dataApiKeydownHandler)\n    .on(Event.KEYDOWN_DATA_API, Selector.MENU, Dropdown._dataApiKeydownHandler)\n    .on(`${Event.CLICK_DATA_API} ${Event.KEYUP_DATA_API}`, Dropdown._clearMenus)\n    .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n      event.preventDefault()\n      event.stopPropagation()\n      Dropdown._jQueryInterface.call($(this), 'toggle')\n    })\n    .on(Event.CLICK_DATA_API, Selector.FORM_CHILD, (e) => {\n      e.stopPropagation()\n    })\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Dropdown._jQueryInterface\n  $.fn[NAME].Constructor = Dropdown\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Dropdown._jQueryInterface\n  }\n\n  return Dropdown\n})($, Popper)\n\nexport default Dropdown\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Modal = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME               = 'modal'\n  const VERSION            = '4.1.1'\n  const DATA_KEY           = 'bs.modal'\n  const EVENT_KEY          = `.${DATA_KEY}`\n  const DATA_API_KEY       = '.data-api'\n  const JQUERY_NO_CONFLICT = $.fn[NAME]\n  const ESCAPE_KEYCODE     = 27 // KeyboardEvent.which value for Escape (Esc) key\n\n  const Default = {\n    backdrop : true,\n    keyboard : true,\n    focus    : true,\n    show     : true\n  }\n\n  const DefaultType = {\n    backdrop : '(boolean|string)',\n    keyboard : 'boolean',\n    focus    : 'boolean',\n    show     : 'boolean'\n  }\n\n  const Event = {\n    HIDE              : `hide${EVENT_KEY}`,\n    HIDDEN            : `hidden${EVENT_KEY}`,\n    SHOW              : `show${EVENT_KEY}`,\n    SHOWN             : `shown${EVENT_KEY}`,\n    FOCUSIN           : `focusin${EVENT_KEY}`,\n    RESIZE            : `resize${EVENT_KEY}`,\n    CLICK_DISMISS     : `click.dismiss${EVENT_KEY}`,\n    KEYDOWN_DISMISS   : `keydown.dismiss${EVENT_KEY}`,\n    MOUSEUP_DISMISS   : `mouseup.dismiss${EVENT_KEY}`,\n    MOUSEDOWN_DISMISS : `mousedown.dismiss${EVENT_KEY}`,\n    CLICK_DATA_API    : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    SCROLLBAR_MEASURER : 'modal-scrollbar-measure',\n    BACKDROP           : 'modal-backdrop',\n    OPEN               : 'modal-open',\n    FADE               : 'fade',\n    SHOW               : 'show'\n  }\n\n  const Selector = {\n    DIALOG             : '.modal-dialog',\n    DATA_TOGGLE        : '[data-toggle=\"modal\"]',\n    DATA_DISMISS       : '[data-dismiss=\"modal\"]',\n    FIXED_CONTENT      : '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top',\n    STICKY_CONTENT     : '.sticky-top',\n    NAVBAR_TOGGLER     : '.navbar-toggler'\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Modal {\n    constructor(element, config) {\n      this._config              = this._getConfig(config)\n      this._element             = element\n      this._dialog              = $(element).find(Selector.DIALOG)[0]\n      this._backdrop            = null\n      this._isShown             = false\n      this._isBodyOverflowing   = false\n      this._ignoreBackdropClick = false\n      this._scrollbarWidth      = 0\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    // Public\n\n    toggle(relatedTarget) {\n      return this._isShown ? this.hide() : this.show(relatedTarget)\n    }\n\n    show(relatedTarget) {\n      if (this._isTransitioning || this._isShown) {\n        return\n      }\n\n      if ($(this._element).hasClass(ClassName.FADE)) {\n        this._isTransitioning = true\n      }\n\n      const showEvent = $.Event(Event.SHOW, {\n        relatedTarget\n      })\n\n      $(this._element).trigger(showEvent)\n\n      if (this._isShown || showEvent.isDefaultPrevented()) {\n        return\n      }\n\n      this._isShown = true\n\n      this._checkScrollbar()\n      this._setScrollbar()\n\n      this._adjustDialog()\n\n      $(document.body).addClass(ClassName.OPEN)\n\n      this._setEscapeEvent()\n      this._setResizeEvent()\n\n      $(this._element).on(\n        Event.CLICK_DISMISS,\n        Selector.DATA_DISMISS,\n        (event) => this.hide(event)\n      )\n\n      $(this._dialog).on(Event.MOUSEDOWN_DISMISS, () => {\n        $(this._element).one(Event.MOUSEUP_DISMISS, (event) => {\n          if ($(event.target).is(this._element)) {\n            this._ignoreBackdropClick = true\n          }\n        })\n      })\n\n      this._showBackdrop(() => this._showElement(relatedTarget))\n    }\n\n    hide(event) {\n      if (event) {\n        event.preventDefault()\n      }\n\n      if (this._isTransitioning || !this._isShown) {\n        return\n      }\n\n      const hideEvent = $.Event(Event.HIDE)\n\n      $(this._element).trigger(hideEvent)\n\n      if (!this._isShown || hideEvent.isDefaultPrevented()) {\n        return\n      }\n\n      this._isShown = false\n      const transition = $(this._element).hasClass(ClassName.FADE)\n\n      if (transition) {\n        this._isTransitioning = true\n      }\n\n      this._setEscapeEvent()\n      this._setResizeEvent()\n\n      $(document).off(Event.FOCUSIN)\n\n      $(this._element).removeClass(ClassName.SHOW)\n\n      $(this._element).off(Event.CLICK_DISMISS)\n      $(this._dialog).off(Event.MOUSEDOWN_DISMISS)\n\n\n      if (transition) {\n        const transitionDuration  = Util.getTransitionDurationFromElement(this._element)\n\n        $(this._element)\n          .one(Util.TRANSITION_END, (event) => this._hideModal(event))\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        this._hideModal()\n      }\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n\n      $(window, document, this._element, this._backdrop).off(EVENT_KEY)\n\n      this._config              = null\n      this._element             = null\n      this._dialog              = null\n      this._backdrop            = null\n      this._isShown             = null\n      this._isBodyOverflowing   = null\n      this._ignoreBackdropClick = null\n      this._scrollbarWidth      = null\n    }\n\n    handleUpdate() {\n      this._adjustDialog()\n    }\n\n    // Private\n\n    _getConfig(config) {\n      config = {\n        ...Default,\n        ...config\n      }\n      Util.typeCheckConfig(NAME, config, DefaultType)\n      return config\n    }\n\n    _showElement(relatedTarget) {\n      const transition = $(this._element).hasClass(ClassName.FADE)\n\n      if (!this._element.parentNode ||\n         this._element.parentNode.nodeType !== Node.ELEMENT_NODE) {\n        // Don't move modal's DOM position\n        document.body.appendChild(this._element)\n      }\n\n      this._element.style.display = 'block'\n      this._element.removeAttribute('aria-hidden')\n      this._element.scrollTop = 0\n\n      if (transition) {\n        Util.reflow(this._element)\n      }\n\n      $(this._element).addClass(ClassName.SHOW)\n\n      if (this._config.focus) {\n        this._enforceFocus()\n      }\n\n      const shownEvent = $.Event(Event.SHOWN, {\n        relatedTarget\n      })\n\n      const transitionComplete = () => {\n        if (this._config.focus) {\n          this._element.focus()\n        }\n        this._isTransitioning = false\n        $(this._element).trigger(shownEvent)\n      }\n\n      if (transition) {\n        const transitionDuration  = Util.getTransitionDurationFromElement(this._element)\n\n        $(this._dialog)\n          .one(Util.TRANSITION_END, transitionComplete)\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        transitionComplete()\n      }\n    }\n\n    _enforceFocus() {\n      $(document)\n        .off(Event.FOCUSIN) // Guard against infinite focus loop\n        .on(Event.FOCUSIN, (event) => {\n          if (document !== event.target &&\n              this._element !== event.target &&\n              $(this._element).has(event.target).length === 0) {\n            this._element.focus()\n          }\n        })\n    }\n\n    _setEscapeEvent() {\n      if (this._isShown && this._config.keyboard) {\n        $(this._element).on(Event.KEYDOWN_DISMISS, (event) => {\n          if (event.which === ESCAPE_KEYCODE) {\n            event.preventDefault()\n            this.hide()\n          }\n        })\n      } else if (!this._isShown) {\n        $(this._element).off(Event.KEYDOWN_DISMISS)\n      }\n    }\n\n    _setResizeEvent() {\n      if (this._isShown) {\n        $(window).on(Event.RESIZE, (event) => this.handleUpdate(event))\n      } else {\n        $(window).off(Event.RESIZE)\n      }\n    }\n\n    _hideModal() {\n      this._element.style.display = 'none'\n      this._element.setAttribute('aria-hidden', true)\n      this._isTransitioning = false\n      this._showBackdrop(() => {\n        $(document.body).removeClass(ClassName.OPEN)\n        this._resetAdjustments()\n        this._resetScrollbar()\n        $(this._element).trigger(Event.HIDDEN)\n      })\n    }\n\n    _removeBackdrop() {\n      if (this._backdrop) {\n        $(this._backdrop).remove()\n        this._backdrop = null\n      }\n    }\n\n    _showBackdrop(callback) {\n      const animate = $(this._element).hasClass(ClassName.FADE)\n        ? ClassName.FADE : ''\n\n      if (this._isShown && this._config.backdrop) {\n        this._backdrop = document.createElement('div')\n        this._backdrop.className = ClassName.BACKDROP\n\n        if (animate) {\n          $(this._backdrop).addClass(animate)\n        }\n\n        $(this._backdrop).appendTo(document.body)\n\n        $(this._element).on(Event.CLICK_DISMISS, (event) => {\n          if (this._ignoreBackdropClick) {\n            this._ignoreBackdropClick = false\n            return\n          }\n          if (event.target !== event.currentTarget) {\n            return\n          }\n          if (this._config.backdrop === 'static') {\n            this._element.focus()\n          } else {\n            this.hide()\n          }\n        })\n\n        if (animate) {\n          Util.reflow(this._backdrop)\n        }\n\n        $(this._backdrop).addClass(ClassName.SHOW)\n\n        if (!callback) {\n          return\n        }\n\n        if (!animate) {\n          callback()\n          return\n        }\n\n        const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n        $(this._backdrop)\n          .one(Util.TRANSITION_END, callback)\n          .emulateTransitionEnd(backdropTransitionDuration)\n      } else if (!this._isShown && this._backdrop) {\n        $(this._backdrop).removeClass(ClassName.SHOW)\n\n        const callbackRemove = () => {\n          this._removeBackdrop()\n          if (callback) {\n            callback()\n          }\n        }\n\n        if ($(this._element).hasClass(ClassName.FADE)) {\n          const backdropTransitionDuration = Util.getTransitionDurationFromElement(this._backdrop)\n\n          $(this._backdrop)\n            .one(Util.TRANSITION_END, callbackRemove)\n            .emulateTransitionEnd(backdropTransitionDuration)\n        } else {\n          callbackRemove()\n        }\n      } else if (callback) {\n        callback()\n      }\n    }\n\n    // ----------------------------------------------------------------------\n    // the following methods are used to handle overflowing modals\n    // todo (fat): these should probably be refactored out of modal.js\n    // ----------------------------------------------------------------------\n\n    _adjustDialog() {\n      const isModalOverflowing =\n        this._element.scrollHeight > document.documentElement.clientHeight\n\n      if (!this._isBodyOverflowing && isModalOverflowing) {\n        this._element.style.paddingLeft = `${this._scrollbarWidth}px`\n      }\n\n      if (this._isBodyOverflowing && !isModalOverflowing) {\n        this._element.style.paddingRight = `${this._scrollbarWidth}px`\n      }\n    }\n\n    _resetAdjustments() {\n      this._element.style.paddingLeft = ''\n      this._element.style.paddingRight = ''\n    }\n\n    _checkScrollbar() {\n      const rect = document.body.getBoundingClientRect()\n      this._isBodyOverflowing = rect.left + rect.right < window.innerWidth\n      this._scrollbarWidth = this._getScrollbarWidth()\n    }\n\n    _setScrollbar() {\n      if (this._isBodyOverflowing) {\n        // Note: DOMNode.style.paddingRight returns the actual value or '' if not set\n        //   while $(DOMNode).css('padding-right') returns the calculated value or 0 if not set\n\n        // Adjust fixed content padding\n        $(Selector.FIXED_CONTENT).each((index, element) => {\n          const actualPadding = $(element)[0].style.paddingRight\n          const calculatedPadding = $(element).css('padding-right')\n          $(element).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n        })\n\n        // Adjust sticky content margin\n        $(Selector.STICKY_CONTENT).each((index, element) => {\n          const actualMargin = $(element)[0].style.marginRight\n          const calculatedMargin = $(element).css('margin-right')\n          $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) - this._scrollbarWidth}px`)\n        })\n\n        // Adjust navbar-toggler margin\n        $(Selector.NAVBAR_TOGGLER).each((index, element) => {\n          const actualMargin = $(element)[0].style.marginRight\n          const calculatedMargin = $(element).css('margin-right')\n          $(element).data('margin-right', actualMargin).css('margin-right', `${parseFloat(calculatedMargin) + this._scrollbarWidth}px`)\n        })\n\n        // Adjust body padding\n        const actualPadding = document.body.style.paddingRight\n        const calculatedPadding = $(document.body).css('padding-right')\n        $(document.body).data('padding-right', actualPadding).css('padding-right', `${parseFloat(calculatedPadding) + this._scrollbarWidth}px`)\n      }\n    }\n\n    _resetScrollbar() {\n      // Restore fixed content padding\n      $(Selector.FIXED_CONTENT).each((index, element) => {\n        const padding = $(element).data('padding-right')\n        if (typeof padding !== 'undefined') {\n          $(element).css('padding-right', padding).removeData('padding-right')\n        }\n      })\n\n      // Restore sticky content and navbar-toggler margin\n      $(`${Selector.STICKY_CONTENT}, ${Selector.NAVBAR_TOGGLER}`).each((index, element) => {\n        const margin = $(element).data('margin-right')\n        if (typeof margin !== 'undefined') {\n          $(element).css('margin-right', margin).removeData('margin-right')\n        }\n      })\n\n      // Restore body padding\n      const padding = $(document.body).data('padding-right')\n      if (typeof padding !== 'undefined') {\n        $(document.body).css('padding-right', padding).removeData('padding-right')\n      }\n    }\n\n    _getScrollbarWidth() { // thx d.walsh\n      const scrollDiv = document.createElement('div')\n      scrollDiv.className = ClassName.SCROLLBAR_MEASURER\n      document.body.appendChild(scrollDiv)\n      const scrollbarWidth = scrollDiv.getBoundingClientRect().width - scrollDiv.clientWidth\n      document.body.removeChild(scrollDiv)\n      return scrollbarWidth\n    }\n\n    // Static\n\n    static _jQueryInterface(config, relatedTarget) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n        const _config = {\n          ...Default,\n          ...$(this).data(),\n          ...typeof config === 'object' && config ? config : {}\n        }\n\n        if (!data) {\n          data = new Modal(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`)\n          }\n          data[config](relatedTarget)\n        } else if (_config.show) {\n          data.show(relatedTarget)\n        }\n      })\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document).on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n    let target\n    const selector = Util.getSelectorFromElement(this)\n\n    if (selector) {\n      target = $(selector)[0]\n    }\n\n    const config = $(target).data(DATA_KEY)\n      ? 'toggle' : {\n        ...$(target).data(),\n        ...$(this).data()\n      }\n\n    if (this.tagName === 'A' || this.tagName === 'AREA') {\n      event.preventDefault()\n    }\n\n    const $target = $(target).one(Event.SHOW, (showEvent) => {\n      if (showEvent.isDefaultPrevented()) {\n        // Only register focus restorer if modal will actually get shown\n        return\n      }\n\n      $target.one(Event.HIDDEN, () => {\n        if ($(this).is(':visible')) {\n          this.focus()\n        }\n      })\n    })\n\n    Modal._jQueryInterface.call($(target), config, this)\n  })\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Modal._jQueryInterface\n  $.fn[NAME].Constructor = Modal\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Modal._jQueryInterface\n  }\n\n  return Modal\n})($)\n\nexport default Modal\n","import $ from 'jquery'\nimport Popper from 'popper.js'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tooltip = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME               = 'tooltip'\n  const VERSION            = '4.1.1'\n  const DATA_KEY           = 'bs.tooltip'\n  const EVENT_KEY          = `.${DATA_KEY}`\n  const JQUERY_NO_CONFLICT = $.fn[NAME]\n  const CLASS_PREFIX       = 'bs-tooltip'\n  const BSCLS_PREFIX_REGEX = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n  const DefaultType = {\n    animation           : 'boolean',\n    template            : 'string',\n    title               : '(string|element|function)',\n    trigger             : 'string',\n    delay               : '(number|object)',\n    html                : 'boolean',\n    selector            : '(string|boolean)',\n    placement           : '(string|function)',\n    offset              : '(number|string)',\n    container           : '(string|element|boolean)',\n    fallbackPlacement   : '(string|array)',\n    boundary            : '(string|element)'\n  }\n\n  const AttachmentMap = {\n    AUTO   : 'auto',\n    TOP    : 'top',\n    RIGHT  : 'right',\n    BOTTOM : 'bottom',\n    LEFT   : 'left'\n  }\n\n  const Default = {\n    animation           : true,\n    template            : '<div class=\"tooltip\" role=\"tooltip\">' +\n                        '<div class=\"arrow\"></div>' +\n                        '<div class=\"tooltip-inner\"></div></div>',\n    trigger             : 'hover focus',\n    title               : '',\n    delay               : 0,\n    html                : false,\n    selector            : false,\n    placement           : 'top',\n    offset              : 0,\n    container           : false,\n    fallbackPlacement   : 'flip',\n    boundary            : 'scrollParent'\n  }\n\n  const HoverState = {\n    SHOW : 'show',\n    OUT  : 'out'\n  }\n\n  const Event = {\n    HIDE       : `hide${EVENT_KEY}`,\n    HIDDEN     : `hidden${EVENT_KEY}`,\n    SHOW       : `show${EVENT_KEY}`,\n    SHOWN      : `shown${EVENT_KEY}`,\n    INSERTED   : `inserted${EVENT_KEY}`,\n    CLICK      : `click${EVENT_KEY}`,\n    FOCUSIN    : `focusin${EVENT_KEY}`,\n    FOCUSOUT   : `focusout${EVENT_KEY}`,\n    MOUSEENTER : `mouseenter${EVENT_KEY}`,\n    MOUSELEAVE : `mouseleave${EVENT_KEY}`\n  }\n\n  const ClassName = {\n    FADE : 'fade',\n    SHOW : 'show'\n  }\n\n  const Selector = {\n    TOOLTIP       : '.tooltip',\n    TOOLTIP_INNER : '.tooltip-inner',\n    ARROW         : '.arrow'\n  }\n\n  const Trigger = {\n    HOVER  : 'hover',\n    FOCUS  : 'focus',\n    CLICK  : 'click',\n    MANUAL : 'manual'\n  }\n\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Tooltip {\n    constructor(element, config) {\n      /**\n       * Check for Popper dependency\n       * Popper - https://popper.js.org\n       */\n      if (typeof Popper === 'undefined') {\n        throw new TypeError('Bootstrap tooltips require Popper.js (https://popper.js.org)')\n      }\n\n      // private\n      this._isEnabled     = true\n      this._timeout       = 0\n      this._hoverState    = ''\n      this._activeTrigger = {}\n      this._popper        = null\n\n      // Protected\n      this.element = element\n      this.config  = this._getConfig(config)\n      this.tip     = null\n\n      this._setListeners()\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    static get NAME() {\n      return NAME\n    }\n\n    static get DATA_KEY() {\n      return DATA_KEY\n    }\n\n    static get Event() {\n      return Event\n    }\n\n    static get EVENT_KEY() {\n      return EVENT_KEY\n    }\n\n    static get DefaultType() {\n      return DefaultType\n    }\n\n    // Public\n\n    enable() {\n      this._isEnabled = true\n    }\n\n    disable() {\n      this._isEnabled = false\n    }\n\n    toggleEnabled() {\n      this._isEnabled = !this._isEnabled\n    }\n\n    toggle(event) {\n      if (!this._isEnabled) {\n        return\n      }\n\n      if (event) {\n        const dataKey = this.constructor.DATA_KEY\n        let context = $(event.currentTarget).data(dataKey)\n\n        if (!context) {\n          context = new this.constructor(\n            event.currentTarget,\n            this._getDelegateConfig()\n          )\n          $(event.currentTarget).data(dataKey, context)\n        }\n\n        context._activeTrigger.click = !context._activeTrigger.click\n\n        if (context._isWithActiveTrigger()) {\n          context._enter(null, context)\n        } else {\n          context._leave(null, context)\n        }\n      } else {\n        if ($(this.getTipElement()).hasClass(ClassName.SHOW)) {\n          this._leave(null, this)\n          return\n        }\n\n        this._enter(null, this)\n      }\n    }\n\n    dispose() {\n      clearTimeout(this._timeout)\n\n      $.removeData(this.element, this.constructor.DATA_KEY)\n\n      $(this.element).off(this.constructor.EVENT_KEY)\n      $(this.element).closest('.modal').off('hide.bs.modal')\n\n      if (this.tip) {\n        $(this.tip).remove()\n      }\n\n      this._isEnabled     = null\n      this._timeout       = null\n      this._hoverState    = null\n      this._activeTrigger = null\n      if (this._popper !== null) {\n        this._popper.destroy()\n      }\n\n      this._popper = null\n      this.element = null\n      this.config  = null\n      this.tip     = null\n    }\n\n    show() {\n      if ($(this.element).css('display') === 'none') {\n        throw new Error('Please use show on visible elements')\n      }\n\n      const showEvent = $.Event(this.constructor.Event.SHOW)\n      if (this.isWithContent() && this._isEnabled) {\n        $(this.element).trigger(showEvent)\n\n        const isInTheDom = $.contains(\n          this.element.ownerDocument.documentElement,\n          this.element\n        )\n\n        if (showEvent.isDefaultPrevented() || !isInTheDom) {\n          return\n        }\n\n        const tip   = this.getTipElement()\n        const tipId = Util.getUID(this.constructor.NAME)\n\n        tip.setAttribute('id', tipId)\n        this.element.setAttribute('aria-describedby', tipId)\n\n        this.setContent()\n\n        if (this.config.animation) {\n          $(tip).addClass(ClassName.FADE)\n        }\n\n        const placement  = typeof this.config.placement === 'function'\n          ? this.config.placement.call(this, tip, this.element)\n          : this.config.placement\n\n        const attachment = this._getAttachment(placement)\n        this.addAttachmentClass(attachment)\n\n        const container = this.config.container === false ? document.body : $(this.config.container)\n\n        $(tip).data(this.constructor.DATA_KEY, this)\n\n        if (!$.contains(this.element.ownerDocument.documentElement, this.tip)) {\n          $(tip).appendTo(container)\n        }\n\n        $(this.element).trigger(this.constructor.Event.INSERTED)\n\n        this._popper = new Popper(this.element, tip, {\n          placement: attachment,\n          modifiers: {\n            offset: {\n              offset: this.config.offset\n            },\n            flip: {\n              behavior: this.config.fallbackPlacement\n            },\n            arrow: {\n              element: Selector.ARROW\n            },\n            preventOverflow: {\n              boundariesElement: this.config.boundary\n            }\n          },\n          onCreate: (data) => {\n            if (data.originalPlacement !== data.placement) {\n              this._handlePopperPlacementChange(data)\n            }\n          },\n          onUpdate: (data) => {\n            this._handlePopperPlacementChange(data)\n          }\n        })\n\n        $(tip).addClass(ClassName.SHOW)\n\n        // If this is a touch-enabled device we add extra\n        // empty mouseover listeners to the body's immediate children;\n        // only needed because of broken event delegation on iOS\n        // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n        if ('ontouchstart' in document.documentElement) {\n          $(document.body).children().on('mouseover', null, $.noop)\n        }\n\n        const complete = () => {\n          if (this.config.animation) {\n            this._fixTransition()\n          }\n          const prevHoverState = this._hoverState\n          this._hoverState     = null\n\n          $(this.element).trigger(this.constructor.Event.SHOWN)\n\n          if (prevHoverState === HoverState.OUT) {\n            this._leave(null, this)\n          }\n        }\n\n        if ($(this.tip).hasClass(ClassName.FADE)) {\n          const transitionDuration = Util.getTransitionDurationFromElement(this.tip)\n\n          $(this.tip)\n            .one(Util.TRANSITION_END, complete)\n            .emulateTransitionEnd(transitionDuration)\n        } else {\n          complete()\n        }\n      }\n    }\n\n    hide(callback) {\n      const tip       = this.getTipElement()\n      const hideEvent = $.Event(this.constructor.Event.HIDE)\n      const complete = () => {\n        if (this._hoverState !== HoverState.SHOW && tip.parentNode) {\n          tip.parentNode.removeChild(tip)\n        }\n\n        this._cleanTipClass()\n        this.element.removeAttribute('aria-describedby')\n        $(this.element).trigger(this.constructor.Event.HIDDEN)\n        if (this._popper !== null) {\n          this._popper.destroy()\n        }\n\n        if (callback) {\n          callback()\n        }\n      }\n\n      $(this.element).trigger(hideEvent)\n\n      if (hideEvent.isDefaultPrevented()) {\n        return\n      }\n\n      $(tip).removeClass(ClassName.SHOW)\n\n      // If this is a touch-enabled device we remove the extra\n      // empty mouseover listeners we added for iOS support\n      if ('ontouchstart' in document.documentElement) {\n        $(document.body).children().off('mouseover', null, $.noop)\n      }\n\n      this._activeTrigger[Trigger.CLICK] = false\n      this._activeTrigger[Trigger.FOCUS] = false\n      this._activeTrigger[Trigger.HOVER] = false\n\n      if ($(this.tip).hasClass(ClassName.FADE)) {\n        const transitionDuration = Util.getTransitionDurationFromElement(tip)\n\n        $(tip)\n          .one(Util.TRANSITION_END, complete)\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        complete()\n      }\n\n      this._hoverState = ''\n    }\n\n    update() {\n      if (this._popper !== null) {\n        this._popper.scheduleUpdate()\n      }\n    }\n\n    // Protected\n\n    isWithContent() {\n      return Boolean(this.getTitle())\n    }\n\n    addAttachmentClass(attachment) {\n      $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n    }\n\n    getTipElement() {\n      this.tip = this.tip || $(this.config.template)[0]\n      return this.tip\n    }\n\n    setContent() {\n      const $tip = $(this.getTipElement())\n      this.setElementContent($tip.find(Selector.TOOLTIP_INNER), this.getTitle())\n      $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n    }\n\n    setElementContent($element, content) {\n      const html = this.config.html\n      if (typeof content === 'object' && (content.nodeType || content.jquery)) {\n        // Content is a DOM node or a jQuery\n        if (html) {\n          if (!$(content).parent().is($element)) {\n            $element.empty().append(content)\n          }\n        } else {\n          $element.text($(content).text())\n        }\n      } else {\n        $element[html ? 'html' : 'text'](content)\n      }\n    }\n\n    getTitle() {\n      let title = this.element.getAttribute('data-original-title')\n\n      if (!title) {\n        title = typeof this.config.title === 'function'\n          ? this.config.title.call(this.element)\n          : this.config.title\n      }\n\n      return title\n    }\n\n    // Private\n\n    _getAttachment(placement) {\n      return AttachmentMap[placement.toUpperCase()]\n    }\n\n    _setListeners() {\n      const triggers = this.config.trigger.split(' ')\n\n      triggers.forEach((trigger) => {\n        if (trigger === 'click') {\n          $(this.element).on(\n            this.constructor.Event.CLICK,\n            this.config.selector,\n            (event) => this.toggle(event)\n          )\n        } else if (trigger !== Trigger.MANUAL) {\n          const eventIn = trigger === Trigger.HOVER\n            ? this.constructor.Event.MOUSEENTER\n            : this.constructor.Event.FOCUSIN\n          const eventOut = trigger === Trigger.HOVER\n            ? this.constructor.Event.MOUSELEAVE\n            : this.constructor.Event.FOCUSOUT\n\n          $(this.element)\n            .on(\n              eventIn,\n              this.config.selector,\n              (event) => this._enter(event)\n            )\n            .on(\n              eventOut,\n              this.config.selector,\n              (event) => this._leave(event)\n            )\n        }\n\n        $(this.element).closest('.modal').on(\n          'hide.bs.modal',\n          () => this.hide()\n        )\n      })\n\n      if (this.config.selector) {\n        this.config = {\n          ...this.config,\n          trigger: 'manual',\n          selector: ''\n        }\n      } else {\n        this._fixTitle()\n      }\n    }\n\n    _fixTitle() {\n      const titleType = typeof this.element.getAttribute('data-original-title')\n      if (this.element.getAttribute('title') ||\n         titleType !== 'string') {\n        this.element.setAttribute(\n          'data-original-title',\n          this.element.getAttribute('title') || ''\n        )\n        this.element.setAttribute('title', '')\n      }\n    }\n\n    _enter(event, context) {\n      const dataKey = this.constructor.DATA_KEY\n\n      context = context || $(event.currentTarget).data(dataKey)\n\n      if (!context) {\n        context = new this.constructor(\n          event.currentTarget,\n          this._getDelegateConfig()\n        )\n        $(event.currentTarget).data(dataKey, context)\n      }\n\n      if (event) {\n        context._activeTrigger[\n          event.type === 'focusin' ? Trigger.FOCUS : Trigger.HOVER\n        ] = true\n      }\n\n      if ($(context.getTipElement()).hasClass(ClassName.SHOW) ||\n         context._hoverState === HoverState.SHOW) {\n        context._hoverState = HoverState.SHOW\n        return\n      }\n\n      clearTimeout(context._timeout)\n\n      context._hoverState = HoverState.SHOW\n\n      if (!context.config.delay || !context.config.delay.show) {\n        context.show()\n        return\n      }\n\n      context._timeout = setTimeout(() => {\n        if (context._hoverState === HoverState.SHOW) {\n          context.show()\n        }\n      }, context.config.delay.show)\n    }\n\n    _leave(event, context) {\n      const dataKey = this.constructor.DATA_KEY\n\n      context = context || $(event.currentTarget).data(dataKey)\n\n      if (!context) {\n        context = new this.constructor(\n          event.currentTarget,\n          this._getDelegateConfig()\n        )\n        $(event.currentTarget).data(dataKey, context)\n      }\n\n      if (event) {\n        context._activeTrigger[\n          event.type === 'focusout' ? Trigger.FOCUS : Trigger.HOVER\n        ] = false\n      }\n\n      if (context._isWithActiveTrigger()) {\n        return\n      }\n\n      clearTimeout(context._timeout)\n\n      context._hoverState = HoverState.OUT\n\n      if (!context.config.delay || !context.config.delay.hide) {\n        context.hide()\n        return\n      }\n\n      context._timeout = setTimeout(() => {\n        if (context._hoverState === HoverState.OUT) {\n          context.hide()\n        }\n      }, context.config.delay.hide)\n    }\n\n    _isWithActiveTrigger() {\n      for (const trigger in this._activeTrigger) {\n        if (this._activeTrigger[trigger]) {\n          return true\n        }\n      }\n\n      return false\n    }\n\n    _getConfig(config) {\n      config = {\n        ...this.constructor.Default,\n        ...$(this.element).data(),\n        ...typeof config === 'object' && config ? config : {}\n      }\n\n      if (typeof config.delay === 'number') {\n        config.delay = {\n          show: config.delay,\n          hide: config.delay\n        }\n      }\n\n      if (typeof config.title === 'number') {\n        config.title = config.title.toString()\n      }\n\n      if (typeof config.content === 'number') {\n        config.content = config.content.toString()\n      }\n\n      Util.typeCheckConfig(\n        NAME,\n        config,\n        this.constructor.DefaultType\n      )\n\n      return config\n    }\n\n    _getDelegateConfig() {\n      const config = {}\n\n      if (this.config) {\n        for (const key in this.config) {\n          if (this.constructor.Default[key] !== this.config[key]) {\n            config[key] = this.config[key]\n          }\n        }\n      }\n\n      return config\n    }\n\n    _cleanTipClass() {\n      const $tip = $(this.getTipElement())\n      const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''))\n      }\n    }\n\n    _handlePopperPlacementChange(data) {\n      this._cleanTipClass()\n      this.addAttachmentClass(this._getAttachment(data.placement))\n    }\n\n    _fixTransition() {\n      const tip = this.getTipElement()\n      const initConfigAnimation = this.config.animation\n      if (tip.getAttribute('x-placement') !== null) {\n        return\n      }\n      $(tip).removeClass(ClassName.FADE)\n      this.config.animation = false\n      this.hide()\n      this.show()\n      this.config.animation = initConfigAnimation\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n        const _config = typeof config === 'object' && config\n\n        if (!data && /dispose|hide/.test(config)) {\n          return\n        }\n\n        if (!data) {\n          data = new Tooltip(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Tooltip._jQueryInterface\n  $.fn[NAME].Constructor = Tooltip\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Tooltip._jQueryInterface\n  }\n\n  return Tooltip\n})($, Popper)\n\nexport default Tooltip\n","import $ from 'jquery'\nimport Tooltip from './tooltip'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Popover = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME                = 'popover'\n  const VERSION             = '4.1.1'\n  const DATA_KEY            = 'bs.popover'\n  const EVENT_KEY           = `.${DATA_KEY}`\n  const JQUERY_NO_CONFLICT  = $.fn[NAME]\n  const CLASS_PREFIX        = 'bs-popover'\n  const BSCLS_PREFIX_REGEX  = new RegExp(`(^|\\\\s)${CLASS_PREFIX}\\\\S+`, 'g')\n\n  const Default = {\n    ...Tooltip.Default,\n    placement : 'right',\n    trigger   : 'click',\n    content   : '',\n    template  : '<div class=\"popover\" role=\"tooltip\">' +\n                '<div class=\"arrow\"></div>' +\n                '<h3 class=\"popover-header\"></h3>' +\n                '<div class=\"popover-body\"></div></div>'\n  }\n\n  const DefaultType = {\n    ...Tooltip.DefaultType,\n    content : '(string|element|function)'\n  }\n\n  const ClassName = {\n    FADE : 'fade',\n    SHOW : 'show'\n  }\n\n  const Selector = {\n    TITLE   : '.popover-header',\n    CONTENT : '.popover-body'\n  }\n\n  const Event = {\n    HIDE       : `hide${EVENT_KEY}`,\n    HIDDEN     : `hidden${EVENT_KEY}`,\n    SHOW       : `show${EVENT_KEY}`,\n    SHOWN      : `shown${EVENT_KEY}`,\n    INSERTED   : `inserted${EVENT_KEY}`,\n    CLICK      : `click${EVENT_KEY}`,\n    FOCUSIN    : `focusin${EVENT_KEY}`,\n    FOCUSOUT   : `focusout${EVENT_KEY}`,\n    MOUSEENTER : `mouseenter${EVENT_KEY}`,\n    MOUSELEAVE : `mouseleave${EVENT_KEY}`\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Popover extends Tooltip {\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    static get NAME() {\n      return NAME\n    }\n\n    static get DATA_KEY() {\n      return DATA_KEY\n    }\n\n    static get Event() {\n      return Event\n    }\n\n    static get EVENT_KEY() {\n      return EVENT_KEY\n    }\n\n    static get DefaultType() {\n      return DefaultType\n    }\n\n    // Overrides\n\n    isWithContent() {\n      return this.getTitle() || this._getContent()\n    }\n\n    addAttachmentClass(attachment) {\n      $(this.getTipElement()).addClass(`${CLASS_PREFIX}-${attachment}`)\n    }\n\n    getTipElement() {\n      this.tip = this.tip || $(this.config.template)[0]\n      return this.tip\n    }\n\n    setContent() {\n      const $tip = $(this.getTipElement())\n\n      // We use append for html objects to maintain js events\n      this.setElementContent($tip.find(Selector.TITLE), this.getTitle())\n      let content = this._getContent()\n      if (typeof content === 'function') {\n        content = content.call(this.element)\n      }\n      this.setElementContent($tip.find(Selector.CONTENT), content)\n\n      $tip.removeClass(`${ClassName.FADE} ${ClassName.SHOW}`)\n    }\n\n    // Private\n\n    _getContent() {\n      return this.element.getAttribute('data-content') ||\n        this.config.content\n    }\n\n    _cleanTipClass() {\n      const $tip = $(this.getTipElement())\n      const tabClass = $tip.attr('class').match(BSCLS_PREFIX_REGEX)\n      if (tabClass !== null && tabClass.length > 0) {\n        $tip.removeClass(tabClass.join(''))\n      }\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n        const _config = typeof config === 'object' ? config : null\n\n        if (!data && /destroy|hide/.test(config)) {\n          return\n        }\n\n        if (!data) {\n          data = new Popover(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Popover._jQueryInterface\n  $.fn[NAME].Constructor = Popover\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Popover._jQueryInterface\n  }\n\n  return Popover\n})($)\n\nexport default Popover\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst ScrollSpy = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME               = 'scrollspy'\n  const VERSION            = '4.1.1'\n  const DATA_KEY           = 'bs.scrollspy'\n  const EVENT_KEY          = `.${DATA_KEY}`\n  const DATA_API_KEY       = '.data-api'\n  const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n  const Default = {\n    offset : 10,\n    method : 'auto',\n    target : ''\n  }\n\n  const DefaultType = {\n    offset : 'number',\n    method : 'string',\n    target : '(string|element)'\n  }\n\n  const Event = {\n    ACTIVATE      : `activate${EVENT_KEY}`,\n    SCROLL        : `scroll${EVENT_KEY}`,\n    LOAD_DATA_API : `load${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    DROPDOWN_ITEM : 'dropdown-item',\n    DROPDOWN_MENU : 'dropdown-menu',\n    ACTIVE        : 'active'\n  }\n\n  const Selector = {\n    DATA_SPY        : '[data-spy=\"scroll\"]',\n    ACTIVE          : '.active',\n    NAV_LIST_GROUP  : '.nav, .list-group',\n    NAV_LINKS       : '.nav-link',\n    NAV_ITEMS       : '.nav-item',\n    LIST_ITEMS      : '.list-group-item',\n    DROPDOWN        : '.dropdown',\n    DROPDOWN_ITEMS  : '.dropdown-item',\n    DROPDOWN_TOGGLE : '.dropdown-toggle'\n  }\n\n  const OffsetMethod = {\n    OFFSET   : 'offset',\n    POSITION : 'position'\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class ScrollSpy {\n    constructor(element, config) {\n      this._element       = element\n      this._scrollElement = element.tagName === 'BODY' ? window : element\n      this._config        = this._getConfig(config)\n      this._selector      = `${this._config.target} ${Selector.NAV_LINKS},` +\n                            `${this._config.target} ${Selector.LIST_ITEMS},` +\n                            `${this._config.target} ${Selector.DROPDOWN_ITEMS}`\n      this._offsets       = []\n      this._targets       = []\n      this._activeTarget  = null\n      this._scrollHeight  = 0\n\n      $(this._scrollElement).on(Event.SCROLL, (event) => this._process(event))\n\n      this.refresh()\n      this._process()\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    static get Default() {\n      return Default\n    }\n\n    // Public\n\n    refresh() {\n      const autoMethod = this._scrollElement === this._scrollElement.window\n        ? OffsetMethod.OFFSET : OffsetMethod.POSITION\n\n      const offsetMethod = this._config.method === 'auto'\n        ? autoMethod : this._config.method\n\n      const offsetBase = offsetMethod === OffsetMethod.POSITION\n        ? this._getScrollTop() : 0\n\n      this._offsets = []\n      this._targets = []\n\n      this._scrollHeight = this._getScrollHeight()\n\n      const targets = $.makeArray($(this._selector))\n\n      targets\n        .map((element) => {\n          let target\n          const targetSelector = Util.getSelectorFromElement(element)\n\n          if (targetSelector) {\n            target = $(targetSelector)[0]\n          }\n\n          if (target) {\n            const targetBCR = target.getBoundingClientRect()\n            if (targetBCR.width || targetBCR.height) {\n              // TODO (fat): remove sketch reliance on jQuery position/offset\n              return [\n                $(target)[offsetMethod]().top + offsetBase,\n                targetSelector\n              ]\n            }\n          }\n          return null\n        })\n        .filter((item) => item)\n        .sort((a, b) => a[0] - b[0])\n        .forEach((item) => {\n          this._offsets.push(item[0])\n          this._targets.push(item[1])\n        })\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      $(this._scrollElement).off(EVENT_KEY)\n\n      this._element       = null\n      this._scrollElement = null\n      this._config        = null\n      this._selector      = null\n      this._offsets       = null\n      this._targets       = null\n      this._activeTarget  = null\n      this._scrollHeight  = null\n    }\n\n    // Private\n\n    _getConfig(config) {\n      config = {\n        ...Default,\n        ...typeof config === 'object' && config ? config : {}\n      }\n\n      if (typeof config.target !== 'string') {\n        let id = $(config.target).attr('id')\n        if (!id) {\n          id = Util.getUID(NAME)\n          $(config.target).attr('id', id)\n        }\n        config.target = `#${id}`\n      }\n\n      Util.typeCheckConfig(NAME, config, DefaultType)\n\n      return config\n    }\n\n    _getScrollTop() {\n      return this._scrollElement === window\n        ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop\n    }\n\n    _getScrollHeight() {\n      return this._scrollElement.scrollHeight || Math.max(\n        document.body.scrollHeight,\n        document.documentElement.scrollHeight\n      )\n    }\n\n    _getOffsetHeight() {\n      return this._scrollElement === window\n        ? window.innerHeight : this._scrollElement.getBoundingClientRect().height\n    }\n\n    _process() {\n      const scrollTop    = this._getScrollTop() + this._config.offset\n      const scrollHeight = this._getScrollHeight()\n      const maxScroll    = this._config.offset +\n        scrollHeight -\n        this._getOffsetHeight()\n\n      if (this._scrollHeight !== scrollHeight) {\n        this.refresh()\n      }\n\n      if (scrollTop >= maxScroll) {\n        const target = this._targets[this._targets.length - 1]\n\n        if (this._activeTarget !== target) {\n          this._activate(target)\n        }\n        return\n      }\n\n      if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) {\n        this._activeTarget = null\n        this._clear()\n        return\n      }\n\n      for (let i = this._offsets.length; i--;) {\n        const isActiveTarget = this._activeTarget !== this._targets[i] &&\n            scrollTop >= this._offsets[i] &&\n            (typeof this._offsets[i + 1] === 'undefined' ||\n                scrollTop < this._offsets[i + 1])\n\n        if (isActiveTarget) {\n          this._activate(this._targets[i])\n        }\n      }\n    }\n\n    _activate(target) {\n      this._activeTarget = target\n\n      this._clear()\n\n      let queries = this._selector.split(',')\n      // eslint-disable-next-line arrow-body-style\n      queries = queries.map((selector) => {\n        return `${selector}[data-target=\"${target}\"],` +\n               `${selector}[href=\"${target}\"]`\n      })\n\n      const $link = $(queries.join(','))\n\n      if ($link.hasClass(ClassName.DROPDOWN_ITEM)) {\n        $link.closest(Selector.DROPDOWN).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n        $link.addClass(ClassName.ACTIVE)\n      } else {\n        // Set triggered link as active\n        $link.addClass(ClassName.ACTIVE)\n        // Set triggered links parents as active\n        // With both <ul> and <nav> markup a parent is the previous sibling of any nav ancestor\n        $link.parents(Selector.NAV_LIST_GROUP).prev(`${Selector.NAV_LINKS}, ${Selector.LIST_ITEMS}`).addClass(ClassName.ACTIVE)\n        // Handle special case when .nav-link is inside .nav-item\n        $link.parents(Selector.NAV_LIST_GROUP).prev(Selector.NAV_ITEMS).children(Selector.NAV_LINKS).addClass(ClassName.ACTIVE)\n      }\n\n      $(this._scrollElement).trigger(Event.ACTIVATE, {\n        relatedTarget: target\n      })\n    }\n\n    _clear() {\n      $(this._selector).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE)\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        let data = $(this).data(DATA_KEY)\n        const _config = typeof config === 'object' && config\n\n        if (!data) {\n          data = new ScrollSpy(this, _config)\n          $(this).data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(window).on(Event.LOAD_DATA_API, () => {\n    const scrollSpys = $.makeArray($(Selector.DATA_SPY))\n\n    for (let i = scrollSpys.length; i--;) {\n      const $spy = $(scrollSpys[i])\n      ScrollSpy._jQueryInterface.call($spy, $spy.data())\n    }\n  })\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = ScrollSpy._jQueryInterface\n  $.fn[NAME].Constructor = ScrollSpy\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return ScrollSpy._jQueryInterface\n  }\n\n  return ScrollSpy\n})($)\n\nexport default ScrollSpy\n","import $ from 'jquery'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): tab.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst Tab = (($) => {\n  /**\n   * ------------------------------------------------------------------------\n   * Constants\n   * ------------------------------------------------------------------------\n   */\n\n  const NAME               = 'tab'\n  const VERSION            = '4.1.1'\n  const DATA_KEY           = 'bs.tab'\n  const EVENT_KEY          = `.${DATA_KEY}`\n  const DATA_API_KEY       = '.data-api'\n  const JQUERY_NO_CONFLICT = $.fn[NAME]\n\n  const Event = {\n    HIDE           : `hide${EVENT_KEY}`,\n    HIDDEN         : `hidden${EVENT_KEY}`,\n    SHOW           : `show${EVENT_KEY}`,\n    SHOWN          : `shown${EVENT_KEY}`,\n    CLICK_DATA_API : `click${EVENT_KEY}${DATA_API_KEY}`\n  }\n\n  const ClassName = {\n    DROPDOWN_MENU : 'dropdown-menu',\n    ACTIVE        : 'active',\n    DISABLED      : 'disabled',\n    FADE          : 'fade',\n    SHOW          : 'show'\n  }\n\n  const Selector = {\n    DROPDOWN              : '.dropdown',\n    NAV_LIST_GROUP        : '.nav, .list-group',\n    ACTIVE                : '.active',\n    ACTIVE_UL             : '> li > .active',\n    DATA_TOGGLE           : '[data-toggle=\"tab\"], [data-toggle=\"pill\"], [data-toggle=\"list\"]',\n    DROPDOWN_TOGGLE       : '.dropdown-toggle',\n    DROPDOWN_ACTIVE_CHILD : '> .dropdown-menu .active'\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Class Definition\n   * ------------------------------------------------------------------------\n   */\n\n  class Tab {\n    constructor(element) {\n      this._element = element\n    }\n\n    // Getters\n\n    static get VERSION() {\n      return VERSION\n    }\n\n    // Public\n\n    show() {\n      if (this._element.parentNode &&\n          this._element.parentNode.nodeType === Node.ELEMENT_NODE &&\n          $(this._element).hasClass(ClassName.ACTIVE) ||\n          $(this._element).hasClass(ClassName.DISABLED)) {\n        return\n      }\n\n      let target\n      let previous\n      const listElement = $(this._element).closest(Selector.NAV_LIST_GROUP)[0]\n      const selector = Util.getSelectorFromElement(this._element)\n\n      if (listElement) {\n        const itemSelector = listElement.nodeName === 'UL' ? Selector.ACTIVE_UL : Selector.ACTIVE\n        previous = $.makeArray($(listElement).find(itemSelector))\n        previous = previous[previous.length - 1]\n      }\n\n      const hideEvent = $.Event(Event.HIDE, {\n        relatedTarget: this._element\n      })\n\n      const showEvent = $.Event(Event.SHOW, {\n        relatedTarget: previous\n      })\n\n      if (previous) {\n        $(previous).trigger(hideEvent)\n      }\n\n      $(this._element).trigger(showEvent)\n\n      if (showEvent.isDefaultPrevented() ||\n         hideEvent.isDefaultPrevented()) {\n        return\n      }\n\n      if (selector) {\n        target = $(selector)[0]\n      }\n\n      this._activate(\n        this._element,\n        listElement\n      )\n\n      const complete = () => {\n        const hiddenEvent = $.Event(Event.HIDDEN, {\n          relatedTarget: this._element\n        })\n\n        const shownEvent = $.Event(Event.SHOWN, {\n          relatedTarget: previous\n        })\n\n        $(previous).trigger(hiddenEvent)\n        $(this._element).trigger(shownEvent)\n      }\n\n      if (target) {\n        this._activate(target, target.parentNode, complete)\n      } else {\n        complete()\n      }\n    }\n\n    dispose() {\n      $.removeData(this._element, DATA_KEY)\n      this._element = null\n    }\n\n    // Private\n\n    _activate(element, container, callback) {\n      let activeElements\n      if (container.nodeName === 'UL') {\n        activeElements = $(container).find(Selector.ACTIVE_UL)\n      } else {\n        activeElements = $(container).children(Selector.ACTIVE)\n      }\n\n      const active = activeElements[0]\n      const isTransitioning = callback &&\n        (active && $(active).hasClass(ClassName.FADE))\n\n      const complete = () => this._transitionComplete(\n        element,\n        active,\n        callback\n      )\n\n      if (active && isTransitioning) {\n        const transitionDuration = Util.getTransitionDurationFromElement(active)\n\n        $(active)\n          .one(Util.TRANSITION_END, complete)\n          .emulateTransitionEnd(transitionDuration)\n      } else {\n        complete()\n      }\n    }\n\n    _transitionComplete(element, active, callback) {\n      if (active) {\n        $(active).removeClass(`${ClassName.SHOW} ${ClassName.ACTIVE}`)\n\n        const dropdownChild = $(active.parentNode).find(\n          Selector.DROPDOWN_ACTIVE_CHILD\n        )[0]\n\n        if (dropdownChild) {\n          $(dropdownChild).removeClass(ClassName.ACTIVE)\n        }\n\n        if (active.getAttribute('role') === 'tab') {\n          active.setAttribute('aria-selected', false)\n        }\n      }\n\n      $(element).addClass(ClassName.ACTIVE)\n      if (element.getAttribute('role') === 'tab') {\n        element.setAttribute('aria-selected', true)\n      }\n\n      Util.reflow(element)\n      $(element).addClass(ClassName.SHOW)\n\n      if (element.parentNode &&\n          $(element.parentNode).hasClass(ClassName.DROPDOWN_MENU)) {\n        const dropdownElement = $(element).closest(Selector.DROPDOWN)[0]\n        if (dropdownElement) {\n          $(dropdownElement).find(Selector.DROPDOWN_TOGGLE).addClass(ClassName.ACTIVE)\n        }\n\n        element.setAttribute('aria-expanded', true)\n      }\n\n      if (callback) {\n        callback()\n      }\n    }\n\n    // Static\n\n    static _jQueryInterface(config) {\n      return this.each(function () {\n        const $this = $(this)\n        let data = $this.data(DATA_KEY)\n\n        if (!data) {\n          data = new Tab(this)\n          $this.data(DATA_KEY, data)\n        }\n\n        if (typeof config === 'string') {\n          if (typeof data[config] === 'undefined') {\n            throw new TypeError(`No method named \"${config}\"`)\n          }\n          data[config]()\n        }\n      })\n    }\n  }\n\n  /**\n   * ------------------------------------------------------------------------\n   * Data Api implementation\n   * ------------------------------------------------------------------------\n   */\n\n  $(document)\n    .on(Event.CLICK_DATA_API, Selector.DATA_TOGGLE, function (event) {\n      event.preventDefault()\n      Tab._jQueryInterface.call($(this), 'show')\n    })\n\n  /**\n   * ------------------------------------------------------------------------\n   * jQuery\n   * ------------------------------------------------------------------------\n   */\n\n  $.fn[NAME] = Tab._jQueryInterface\n  $.fn[NAME].Constructor = Tab\n  $.fn[NAME].noConflict = function () {\n    $.fn[NAME] = JQUERY_NO_CONFLICT\n    return Tab._jQueryInterface\n  }\n\n  return Tab\n})($)\n\nexport default Tab\n","import $ from 'jquery'\nimport Alert from './alert'\nimport Button from './button'\nimport Carousel from './carousel'\nimport Collapse from './collapse'\nimport Dropdown from './dropdown'\nimport Modal from './modal'\nimport Popover from './popover'\nimport Scrollspy from './scrollspy'\nimport Tab from './tab'\nimport Tooltip from './tooltip'\nimport Util from './util'\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v4.1.1): index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n(($) => {\n  if (typeof $ === 'undefined') {\n    throw new TypeError('Bootstrap\\'s JavaScript requires jQuery. jQuery must be included before Bootstrap\\'s JavaScript.')\n  }\n\n  const version = $.fn.jquery.split(' ')[0].split('.')\n  const minMajor = 1\n  const ltMajor = 2\n  const minMinor = 9\n  const minPatch = 1\n  const maxMajor = 4\n\n  if (version[0] < ltMajor && version[1] < minMinor || version[0] === minMajor && version[1] === minMinor && version[2] < minPatch || version[0] >= maxMajor) {\n    throw new Error('Bootstrap\\'s JavaScript requires at least jQuery v1.9.1 but less than v4.0.0')\n  }\n})($)\n\nexport {\n  Util,\n  Alert,\n  Button,\n  Carousel,\n  Collapse,\n  Dropdown,\n  Modal,\n  Popover,\n  Scrollspy,\n  Tab,\n  Tooltip\n}\n"]}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/jquery-3.3.1.min.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/jquery-3.3.1.min.js
deleted file mode 100644 (file)
index 4d9b3a2..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */
-!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n<t?[this[n]]:[])},end:function(){return this.prevObject||this.constructor()},push:s,sort:n.sort,splice:n.splice},w.extend=w.fn.extend=function(){var e,t,n,r,i,o,a=arguments[0]||{},s=1,u=arguments.length,l=!1;for("boolean"==typeof a&&(l=a,a=arguments[s]||{},s++),"object"==typeof a||g(a)||(a={}),s===u&&(a=this,s--);s<u;s++)if(null!=(e=arguments[s]))for(t in e)n=a[t],a!==(r=e[t])&&(l&&r&&(w.isPlainObject(r)||(i=Array.isArray(r)))?(i?(i=!1,o=n&&Array.isArray(n)?n:[]):o=n&&w.isPlainObject(n)?n:{},a[t]=w.extend(l,o,r)):void 0!==r&&(a[t]=r));return a},w.extend({expando:"jQuery"+("3.3.1"+Math.random()).replace(/\D/g,""),isReady:!0,error:function(e){throw new Error(e)},noop:function(){},isPlainObject:function(e){var t,n;return!(!e||"[object Object]"!==c.call(e))&&(!(t=i(e))||"function"==typeof(n=f.call(t,"constructor")&&t.constructor)&&p.call(n)===d)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},globalEval:function(e){m(e)},each:function(e,t){var n,r=0;if(C(e)){for(n=e.length;r<n;r++)if(!1===t.call(e[r],r,e[r]))break}else for(r in e)if(!1===t.call(e[r],r,e[r]))break;return e},trim:function(e){return null==e?"":(e+"").replace(T,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(C(Object(e))?w.merge(n,"string"==typeof e?[e]:e):s.call(n,e)),n},inArray:function(e,t,n){return null==t?-1:u.call(t,e,n)},merge:function(e,t){for(var n=+t.length,r=0,i=e.length;r<n;r++)e[i++]=t[r];return e.length=i,e},grep:function(e,t,n){for(var r,i=[],o=0,a=e.length,s=!n;o<a;o++)(r=!t(e[o],o))!==s&&i.push(e[o]);return i},map:function(e,t,n){var r,i,o=0,s=[];if(C(e))for(r=e.length;o<r;o++)null!=(i=t(e[o],o,n))&&s.push(i);else for(o in e)null!=(i=t(e[o],o,n))&&s.push(i);return a.apply([],s)},guid:1,support:h}),"function"==typeof Symbol&&(w.fn[Symbol.iterator]=n[Symbol.iterator]),w.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(e,t){l["[object "+t+"]"]=t.toLowerCase()});function C(e){var t=!!e&&"length"in e&&e.length,n=x(e);return!g(e)&&!y(e)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n<r;n++)if(e[n]===t)return n;return-1},P="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",M="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\0-\\xa0])+",I="\\["+M+"*("+R+")(?:"+M+"*([*^$|!~]?=)"+M+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+R+"))|)"+M+"*\\]",W=":("+R+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+I+")*)|.*)\\)|)",$=new RegExp(M+"+","g"),B=new RegExp("^"+M+"+|((?:^|[^\\\\])(?:\\\\.)*)"+M+"+$","g"),F=new RegExp("^"+M+"*,"+M+"*"),_=new RegExp("^"+M+"*([>+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="<a id='"+b+"'></a><select id='"+b+"-\r\\' msallowcapture=''><option selected=''></option></select>",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="<a href='' disabled='disabled'></a><select disabled='disabled'><option/></select>";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n<t;n+=2)e.push(n);return e}),odd:he(function(e,t){for(var n=1;n<t;n+=2)e.push(n);return e}),lt:he(function(e,t,n){for(var r=n<0?n+t:n;--r>=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r<t;)e.push(r);return e})}}).pseudos.nth=r.pseudos.eq;for(t in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})r.pseudos[t]=fe(t);for(t in{submit:!0,reset:!0})r.pseudos[t]=pe(t);function ye(){}ye.prototype=r.filters=r.pseudos,r.setFilters=new ye,a=oe.tokenize=function(e,t){var n,i,o,a,s,u,l,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,u=[],l=r.preFilter;while(s){n&&!(i=F.exec(s))||(i&&(s=s.slice(i[0].length)||s),u.push(o=[])),n=!1,(i=_.exec(s))&&(n=i.shift(),o.push({value:n,type:i[0].replace(B," ")}),s=s.slice(n.length));for(a in r.filter)!(i=V[a].exec(s))||l[a]&&!(i=l[a](i))||(n=i.shift(),o.push({value:n,type:a,matches:i}),s=s.slice(n.length));if(!n)break}return t?s.length:s?oe.error(e):k(e,u).slice(0)};function ve(e){for(var t=0,n=e.length,r="";t<n;t++)r+=e[t].value;return r}function me(e,t,n){var r=t.dir,i=t.next,o=i||r,a=n&&"parentNode"===o,s=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||a)return e(t,n,i);return!1}:function(t,n,u){var l,c,f,p=[T,s];if(u){while(t=t[r])if((1===t.nodeType||a)&&e(t,n,u))return!0}else while(t=t[r])if(1===t.nodeType||a)if(f=t[b]||(t[b]={}),c=f[t.uniqueID]||(f[t.uniqueID]={}),i&&i===t.nodeName.toLowerCase())t=t[r]||t;else{if((l=c[o])&&l[0]===T&&l[1]===s)return p[2]=l[2];if(c[o]=p,p[2]=e(t,n,u))return!0}return!1}}function xe(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r<i;r++)oe(e,t[r],n);return n}function we(e,t,n,r,i){for(var o,a=[],s=0,u=e.length,l=null!=t;s<u;s++)(o=e[s])&&(n&&!n(o,r,i)||(a.push(o),l&&t.push(s)));return a}function Te(e,t,n,r,i,o){return r&&!r[b]&&(r=Te(r)),i&&!i[b]&&(i=Te(i,o)),se(function(o,a,s,u){var l,c,f,p=[],d=[],h=a.length,g=o||be(t||"*",s.nodeType?[s]:s,[]),y=!e||!o&&t?g:we(g,p,e,s,u),v=n?i||(o?e:h||r)?[]:a:y;if(n&&n(y,v,s,u),r){l=we(v,d),r(l,[],s,u),c=l.length;while(c--)(f=l[c])&&(v[d[c]]=!(y[d[c]]=f))}if(o){if(i||e){if(i){l=[],c=v.length;while(c--)(f=v[c])&&l.push(y[c]=f);i(null,v=[],l,u)}c=v.length;while(c--)(f=v[c])&&(l=i?O(o,f):p[c])>-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u<o;u++)if(n=r.relative[e[u].type])p=[me(xe(p),n)];else{if((n=r.filter[e[u].type].apply(null,e[u].matches))[b]){for(i=++u;i<o;i++)if(r.relative[e[i].type])break;return Te(u>1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u<i&&Ce(e.slice(u,i)),i<o&&Ce(e=e.slice(i)),i<o&&ve(e))}p.push(n)}return xe(p)}function Ee(e,t){var n=t.length>0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="<a href='#'></a>","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="<input/>",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t<r;t++)if(w.contains(i[t],this))return!0}));for(n=this.pushStack([]),t=0;t<r;t++)w.find(e,i[t],n);return r>1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e<n;e++)if(w.contains(this,t[e]))return!0})},closest:function(e,t){var n,r=0,i=this.length,o=[],a="string"!=typeof e&&w(e);if(!D.test(e))for(;r<i;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(n.nodeType<11&&(a?a.index(n)>-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s<o.length)!1===o[s].apply(n[0],n[1])&&e.stopOnFalse&&(s=o.length,n=!1)}e.memory||(n=!1),t=!1,i&&(o=n?[]:"")},l={add:function(){return o&&(n&&!t&&(s=o.length-1,a.push(n)),function t(n){w.each(n,function(n,r){g(r)?e.unique&&l.has(r)||o.push(r):r&&r.length&&"string"!==x(r)&&t(r)})}(arguments),n&&!t&&u()),this},remove:function(){return w.each(arguments,function(e,t){var n;while((n=w.inArray(t,o,n))>-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t<o)){if((e=r.apply(s,u))===n.promise())throw new TypeError("Thenable self-resolution");l=e&&("object"==typeof e||"function"==typeof e)&&e.then,g(l)?i?l.call(e,a(o,n,I,i),a(o,n,W,i)):(o++,l.call(e,a(o,n,I,i),a(o,n,W,i),a(o,n,I,n.notifyWith))):(r!==I&&(s=void 0,u=[e]),(i||n.resolveWith)(s,u))}},c=i?l:function(){try{l()}catch(e){w.Deferred.exceptionHook&&w.Deferred.exceptionHook(e,c.stackTrace),t+1>=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s<u;s++)t(e[s],n,a?r:r.call(e[s],s,t(e[s],n)));return i?e:l?t.call(e):u?t(e[0],n):o},X=/^-ms-/,U=/-([a-z])/g;function V(e,t){return t.toUpperCase()}function G(e){return e.replace(X,"ms-").replace(U,V)}var Y=function(e){return 1===e.nodeType||9===e.nodeType||!+e.nodeType};function Q(){this.expando=w.expando+Q.uid++}Q.uid=1,Q.prototype={cache:function(e){var t=e[this.expando];return t||(t={},Y(e)&&(e.nodeType?e[this.expando]=t:Object.defineProperty(e,this.expando,{value:t,configurable:!0}))),t},set:function(e,t,n){var r,i=this.cache(e);if("string"==typeof t)i[G(t)]=n;else for(r in t)i[G(r)]=t[r];return i},get:function(e,t){return void 0===t?this.cache(e):e[this.expando]&&e[this.expando][G(t)]},access:function(e,t,n){return void 0===t||t&&"string"==typeof t&&void 0===n?this.get(e,t):(this.set(e,t,n),void 0!==n?n:t)},remove:function(e,t){var n,r=e[this.expando];if(void 0!==r){if(void 0!==t){n=(t=Array.isArray(t)?t.map(G):(t=G(t))in r?[t]:t.match(M)||[]).length;while(n--)delete r[t[n]]}(void 0===t||w.isEmptyObject(r))&&(e.nodeType?e[this.expando]=void 0:delete e[this.expando])}},hasData:function(e){var t=e[this.expando];return void 0!==t&&!w.isEmptyObject(t)}};var J=new Q,K=new Q,Z=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,ee=/[A-Z]/g;function te(e){return"true"===e||"false"!==e&&("null"===e?null:e===+e+""?+e:Z.test(e)?JSON.parse(e):e)}function ne(e,t,n){var r;if(void 0===n&&1===e.nodeType)if(r="data-"+t.replace(ee,"-$&").toLowerCase(),"string"==typeof(n=e.getAttribute(r))){try{n=te(n)}catch(e){}K.set(e,t,n)}else n=void 0;return n}w.extend({hasData:function(e){return K.hasData(e)||J.hasData(e)},data:function(e,t,n){return K.access(e,t,n)},removeData:function(e,t){K.remove(e,t)},_data:function(e,t,n){return J.access(e,t,n)},_removeData:function(e,t){J.remove(e,t)}}),w.fn.extend({data:function(e,t){var n,r,i,o=this[0],a=o&&o.attributes;if(void 0===e){if(this.length&&(i=K.get(o),1===o.nodeType&&!J.get(o,"hasDataAttrs"))){n=a.length;while(n--)a[n]&&0===(r=a[n].name).indexOf("data-")&&(r=G(r.slice(5)),ne(o,r,i[r]));J.set(o,"hasDataAttrs",!0)}return i}return"object"==typeof e?this.each(function(){K.set(this,e)}):z(this,function(t){var n;if(o&&void 0===t){if(void 0!==(n=K.get(o,e)))return n;if(void 0!==(n=ne(o,e)))return n}else this.each(function(){K.set(this,e,t)})},null,t,arguments.length>1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length<n?w.queue(this[0],e):void 0===t?this:this.each(function(){var n=w.queue(this,e,t);w._queueHooks(this,e),"fx"===e&&"inprogress"!==n[0]&&w.dequeue(this,e)})},dequeue:function(e){return this.each(function(){w.dequeue(this,e)})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,t){var n,r=1,i=w.Deferred(),o=this,a=this.length,s=function(){--r||i.resolveWith(o,[o])};"string"!=typeof e&&(t=e,e=void 0),e=e||"fx";while(a--)(n=J.get(o[a],e+"queueHooks"))&&n.empty&&(r++,n.empty.add(s));return s(),i.promise(t)}});var re=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,ie=new RegExp("^(?:([+-])=|)("+re+")([a-z%]*)$","i"),oe=["Top","Right","Bottom","Left"],ae=function(e,t){return"none"===(e=t||e).style.display||""===e.style.display&&w.contains(e.ownerDocument,e)&&"none"===w.css(e,"display")},se=function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i};function ue(e,t,n,r){var i,o,a=20,s=r?function(){return r.cur()}:function(){return w.css(e,t,"")},u=s(),l=n&&n[3]||(w.cssNumber[t]?"":"px"),c=(w.cssNumber[t]||"px"!==l&&+u)&&ie.exec(w.css(e,t));if(c&&c[3]!==l){u/=2,l=l||c[3],c=+u||1;while(a--)w.style(e,t,c+l),(1-o)*(1-(o=s()/u||.5))<=0&&(a=0),c/=o;c*=2,w.style(e,t,c+l),n=n||[]}return n&&(c=+c||+u||0,i=n[1]?c+(n[1]+1)*n[2]:+n[2],r&&(r.unit=l,r.start=c,r.end=i)),i}var le={};function ce(e){var t,n=e.ownerDocument,r=e.nodeName,i=le[r];return i||(t=n.body.appendChild(n.createElement(r)),i=w.css(t,"display"),t.parentNode.removeChild(t),"none"===i&&(i="block"),le[r]=i,i)}function fe(e,t){for(var n,r,i=[],o=0,a=e.length;o<a;o++)(r=e[o]).style&&(n=r.style.display,t?("none"===n&&(i[o]=J.get(r,"display")||null,i[o]||(r.style.display="")),""===r.style.display&&ae(r)&&(i[o]=ce(r))):"none"!==n&&(i[o]="none",J.set(r,"display",n)));for(o=0;o<a;o++)null!=i[o]&&(e[o].style.display=i[o]);return e}w.fn.extend({show:function(){return fe(this,!0)},hide:function(){return fe(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){ae(this)?w(this).show():w(this).hide()})}});var pe=/^(?:checkbox|radio)$/i,de=/<([a-z][^\/\0>\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,"<select multiple='multiple'>","</select>"],thead:[1,"<table>","</table>"],col:[2,"<table><colgroup>","</colgroup></table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n<r;n++)J.set(e[n],"globalEval",!t||J.get(t[n],"globalEval"))}var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d<h;d++)if((o=e[d])||0===o)if("object"===x(o))w.merge(p,o.nodeType?[o]:o);else if(me.test(o)){a=a||f.appendChild(t.createElement("div")),s=(de.exec(o)||["",""])[1].toLowerCase(),u=ge[s]||ge._default,a.innerHTML=u[1]+w.htmlPrefilter(o)+u[2],c=u[0];while(c--)a=a.lastChild;w.merge(p,a.childNodes),(a=f.firstChild).textContent=""}else p.push(t.createTextNode(o));f.textContent="",d=0;while(o=p[d++])if(r&&w.inArray(o,r)>-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="<textarea>x</textarea>",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n<arguments.length;n++)u[n]=arguments[n];if(t.delegateTarget=this,!c.preDispatch||!1!==c.preDispatch.call(this,t)){s=w.event.handlers.call(this,t,l),n=0;while((o=s[n++])&&!t.isPropagationStopped()){t.currentTarget=o.elem,r=0;while((a=o.handlers[r++])&&!t.isImmediatePropagationStopped())t.rnamespace&&!t.rnamespace.test(a.namespace)||(t.handleObj=a,t.data=a.data,void 0!==(i=((w.event.special[a.origType]||{}).handle||a.handler).apply(o.elem,u))&&!1===(t.result=i)&&(t.preventDefault(),t.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,t),t.result}},handlers:function(e,t){var n,r,i,o,a,s=[],u=t.delegateCount,l=e.target;if(u&&l.nodeType&&!("click"===e.type&&e.button>=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n<u;n++)void 0===a[i=(r=t[n]).selector+" "]&&(a[i]=r.needsContext?w(i,this).index(l)>-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u<t.length&&s.push({elem:l,handlers:t.slice(u)}),s},addProp:function(e,t){Object.defineProperty(w.Event.prototype,e,{enumerable:!0,configurable:!0,get:g(t)?function(){if(this.originalEvent)return t(this.originalEvent)}:function(){if(this.originalEvent)return this.originalEvent[e]},set:function(t){Object.defineProperty(this,e,{enumerable:!0,configurable:!0,writable:!0,value:t})}})},fix:function(e){return e[w.expando]?e:new w.Event(e)},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==Se()&&this.focus)return this.focus(),!1},delegateType:"focusin"},blur:{trigger:function(){if(this===Se()&&this.blur)return this.blur(),!1},delegateType:"focusout"},click:{trigger:function(){if("checkbox"===this.type&&this.click&&N(this,"input"))return this.click(),!1},_default:function(e){return N(e.target,"a")}},beforeunload:{postDispatch:function(e){void 0!==e.result&&e.originalEvent&&(e.originalEvent.returnValue=e.result)}}}},w.removeEvent=function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n)},w.Event=function(e,t){if(!(this instanceof w.Event))return new w.Event(e,t);e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||void 0===e.defaultPrevented&&!1===e.returnValue?Ee:ke,this.target=e.target&&3===e.target.nodeType?e.target.parentNode:e.target,this.currentTarget=e.currentTarget,this.relatedTarget=e.relatedTarget):this.type=e,t&&w.extend(this,t),this.timeStamp=e&&e.timeStamp||Date.now(),this[w.expando]=!0},w.Event.prototype={constructor:w.Event,isDefaultPrevented:ke,isPropagationStopped:ke,isImmediatePropagationStopped:ke,isSimulated:!1,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=Ee,e&&!this.isSimulated&&e.preventDefault()},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=Ee,e&&!this.isSimulated&&e.stopPropagation()},stopImmediatePropagation:function(){var e=this.originalEvent;this.isImmediatePropagationStopped=Ee,e&&!this.isSimulated&&e.stopImmediatePropagation(),this.stopPropagation()}},w.each({altKey:!0,bubbles:!0,cancelable:!0,changedTouches:!0,ctrlKey:!0,detail:!0,eventPhase:!0,metaKey:!0,pageX:!0,pageY:!0,shiftKey:!0,view:!0,"char":!0,charCode:!0,key:!0,keyCode:!0,button:!0,buttons:!0,clientX:!0,clientY:!0,offsetX:!0,offsetY:!0,pointerId:!0,pointerType:!0,screenX:!0,screenY:!0,targetTouches:!0,toElement:!0,touches:!0,which:function(e){var t=e.button;return null==e.which&&we.test(e.type)?null!=e.charCode?e.charCode:e.keyCode:!e.which&&void 0!==t&&Te.test(e.type)?1&t?1:2&t?3:4&t?2:0:e.which}},w.event.addProp),w.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(e,t){w.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return i&&(i===r||w.contains(r,i))||(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),w.fn.extend({on:function(e,t,n,r){return De(this,e,t,n,r)},one:function(e,t,n,r){return De(this,e,t,n,r,1)},off:function(e,t,n){var r,i;if(e&&e.preventDefault&&e.handleObj)return r=e.handleObj,w(e.delegateTarget).off(r.namespace?r.origType+"."+r.namespace:r.origType,r.selector,r.handler),this;if("object"==typeof e){for(i in e)this.off(i,t,e[i]);return this}return!1!==t&&"function"!=typeof t||(n=t,t=void 0),!1===n&&(n=ke),this.each(function(){w.event.remove(this,e,n,t)})}});var Ne=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([a-z][^\/\0>\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/<script|<style|<link/i,je=/checked\s*(?:[^=]|=\s*.checked.)/i,qe=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n<r;n++)w.event.add(t,i,l[i][n])}K.hasData(e)&&(s=K.access(e),u=w.extend({},s),K.set(t,u))}}function Me(e,t){var n=t.nodeName.toLowerCase();"input"===n&&pe.test(e.type)?t.checked=e.checked:"input"!==n&&"textarea"!==n||(t.defaultValue=e.defaultValue)}function Re(e,t,n,r){t=a.apply([],t);var i,o,s,u,l,c,f=0,p=e.length,d=p-1,y=t[0],v=g(y);if(v||p>1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f<p;f++)l=i,f!==d&&(l=w.clone(l,!0,!0),u&&w.merge(s,ye(l,"script"))),n.call(e[f],l,f);if(u)for(c=s[s.length-1].ownerDocument,w.map(s,Oe),f=0;f<u;f++)l=s[f],he.test(l.type||"")&&!J.access(l,"globalEval")&&w.contains(c,l)&&(l.src&&"module"!==(l.type||"").toLowerCase()?w._evalUrl&&w._evalUrl(l.src):m(l.textContent.replace(qe,""),c,l))}return e}function Ie(e,t,n){for(var r,i=t?w.filter(t,e):e,o=0;null!=(r=i[o]);o++)n||1!==r.nodeType||w.cleanData(ye(r)),r.parentNode&&(n&&w.contains(r.ownerDocument,r)&&ve(ye(r,"script")),r.parentNode.removeChild(r));return e}w.extend({htmlPrefilter:function(e){return e.replace(Ne,"<$1></$2>")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r<i;r++)Me(o[r],a[r]);if(t)if(n)for(o=o||ye(e),a=a||ye(s),r=0,i=o.length;r<i;r++)Pe(o[r],a[r]);else Pe(e,s);return(a=ye(s,"script")).length>0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n<r;n++)1===(t=this[n]||{}).nodeType&&(w.cleanData(ye(t,!1)),t.innerHTML=e);t=0}catch(e){}}t&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=[];return Re(this,arguments,function(t){var n=this.parentNode;w.inArray(this,e)<0&&(w.cleanData(ye(this)),n&&n.replaceChild(t,this))},e)}}),w.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){w.fn[e]=function(e){for(var n,r=[],i=w(e),o=i.length-1,a=0;a<=o;a++)n=a===o?this:this.clone(!0),w(i[a])[t](n),s.apply(r,n.get());return this.pushStack(r)}});var We=new RegExp("^("+re+")(?!px)[a-z%]+$","i"),$e=function(t){var n=t.ownerDocument.defaultView;return n&&n.opener||(n=e),n.getComputedStyle(t)},Be=new RegExp(oe.join("|"),"i");!function(){function t(){if(c){l.style.cssText="position:absolute;left:-11111px;width:60px;margin-top:1px;padding:0;border:0",c.style.cssText="position:relative;display:block;box-sizing:border-box;overflow:scroll;margin:auto;border:1px;padding:1px;width:60%;top:1%",be.appendChild(l).appendChild(c);var t=e.getComputedStyle(c);i="1%"!==t.top,u=12===n(t.marginLeft),c.style.right="60%",s=36===n(t.right),o=36===n(t.width),c.style.position="absolute",a=36===c.offsetWidth||"absolute",be.removeChild(l),c=null}}function n(e){return Math.round(parseFloat(e))}var i,o,a,s,u,l=r.createElement("div"),c=r.createElement("div");c.style&&(c.style.backgroundClip="content-box",c.cloneNode(!0).style.backgroundClip="",h.clearCloneStyle="content-box"===c.style.backgroundClip,w.extend(h,{boxSizingReliable:function(){return t(),o},pixelBoxStyles:function(){return t(),s},pixelPosition:function(){return t(),i},reliableMarginLeft:function(){return t(),u},scrollboxSize:function(){return t(),a}}))}();function Fe(e,t,n){var r,i,o,a,s=e.style;return(n=n||$e(e))&&(""!==(a=n.getPropertyValue(t)||n[t])||w.contains(e.ownerDocument,e)||(a=w.style(e,t)),!h.pixelBoxStyles()&&We.test(a)&&Be.test(t)&&(r=s.width,i=s.minWidth,o=s.maxWidth,s.minWidth=s.maxWidth=s.width=a,a=n.width,s.width=r,s.minWidth=i,s.maxWidth=o)),void 0!==a?a+"":a}function _e(e,t){return{get:function(){if(!e())return(this.get=t).apply(this,arguments);delete this.get}}}var ze=/^(none|table(?!-c[ea]).+)/,Xe=/^--/,Ue={position:"absolute",visibility:"hidden",display:"block"},Ve={letterSpacing:"0",fontWeight:"400"},Ge=["Webkit","Moz","ms"],Ye=r.createElement("div").style;function Qe(e){if(e in Ye)return e;var t=e[0].toUpperCase()+e.slice(1),n=Ge.length;while(n--)if((e=Ge[n]+t)in Ye)return e}function Je(e){var t=w.cssProps[e];return t||(t=w.cssProps[e]=Qe(e)||e),t}function Ke(e,t,n){var r=ie.exec(t);return r?Math.max(0,r[2]-(n||0))+(r[3]||"px"):t}function Ze(e,t,n,r,i,o){var a="width"===t?1:0,s=0,u=0;if(n===(r?"border":"content"))return 0;for(;a<4;a+=2)"margin"===n&&(u+=w.css(e,n+oe[a],!0,i)),r?("content"===n&&(u-=w.css(e,"padding"+oe[a],!0,i)),"margin"!==n&&(u-=w.css(e,"border"+oe[a]+"Width",!0,i))):(u+=w.css(e,"padding"+oe[a],!0,i),"padding"!==n?u+=w.css(e,"border"+oe[a]+"Width",!0,i):s+=w.css(e,"border"+oe[a]+"Width",!0,i));return!r&&o>=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a<i;a++)o[t[a]]=w.css(e,t[a],!1,r);return o}return void 0!==n?w.style(e,t,n):w.css(e,t)},e,t,arguments.length>1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o<a;o++)if(r=i[o].call(n,t,e))return r}function ct(e,t,n){var r,i,o,a,s,u,l,c,f="width"in t||"height"in t,p=this,d={},h=e.style,g=e.nodeType&&ae(e),y=J.get(e,"fxshow");n.queue||(null==(a=w._queueHooks(e,"fx")).unqueued&&(a.unqueued=0,s=a.empty.fire,a.empty.fire=function(){a.unqueued||s()}),a.unqueued++,p.always(function(){p.always(function(){a.unqueued--,w.queue(e,"fx").length||a.empty.fire()})}));for(r in t)if(i=t[r],it.test(i)){if(delete t[r],o=o||"toggle"===i,i===(g?"hide":"show")){if("show"!==i||!y||void 0===y[r])continue;g=!0}d[r]=y&&y[r]||w.style(e,r)}if((u=!w.isEmptyObject(t))||!w.isEmptyObject(d)){f&&1===e.nodeType&&(n.overflow=[h.overflow,h.overflowX,h.overflowY],null==(l=y&&y.display)&&(l=J.get(e,"display")),"none"===(c=w.css(e,"display"))&&(l?c=l:(fe([e],!0),l=e.style.display||l,c=w.css(e,"display"),fe([e]))),("inline"===c||"inline-block"===c&&null!=l)&&"none"===w.css(e,"float")&&(u||(p.done(function(){h.display=l}),null==l&&(c=h.display,l="none"===c?"":c)),h.display="inline-block")),n.overflow&&(h.overflow="hidden",p.always(function(){h.overflow=n.overflow[0],h.overflowX=n.overflow[1],h.overflowY=n.overflow[2]})),u=!1;for(r in d)u||(y?"hidden"in y&&(g=y.hidden):y=J.access(e,"fxshow",{display:l}),o&&(y.hidden=!g),g&&fe([e],!0),p.done(function(){g||fe([e]),J.remove(e,"fxshow");for(r in d)w.style(e,r,d[r])})),u=lt(g?y[r]:0,r,p),r in y||(y[r]=u.start,g&&(u.end=u.start,u.start=0))}}function ft(e,t){var n,r,i,o,a;for(n in e)if(r=G(n),i=t[r],o=e[n],Array.isArray(o)&&(i=o[1],o=e[n]=o[0]),n!==r&&(e[r]=o,delete e[n]),(a=w.cssHooks[r])&&"expand"in a){o=a.expand(o),delete e[r];for(n in o)n in e||(e[n]=o[n],t[n]=i)}else t[r]=i}function pt(e,t,n){var r,i,o=0,a=pt.prefilters.length,s=w.Deferred().always(function(){delete u.elem}),u=function(){if(i)return!1;for(var t=nt||st(),n=Math.max(0,l.startTime+l.duration-t),r=1-(n/l.duration||0),o=0,a=l.tweens.length;o<a;o++)l.tweens[o].run(r);return s.notifyWith(e,[l,r,n]),r<1&&a?n:(a||s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l]),!1)},l=s.promise({elem:e,props:w.extend({},t),opts:w.extend(!0,{specialEasing:{},easing:w.easing._default},n),originalProperties:t,originalOptions:n,startTime:nt||st(),duration:n.duration,tweens:[],createTween:function(t,n){var r=w.Tween(e,l.opts,t,n,l.opts.specialEasing[t]||l.opts.easing);return l.tweens.push(r),r},stop:function(t){var n=0,r=t?l.tweens.length:0;if(i)return this;for(i=!0;n<r;n++)l.tweens[n].run(1);return t?(s.notifyWith(e,[l,1,0]),s.resolveWith(e,[l,t])):s.rejectWith(e,[l,t]),this}}),c=l.props;for(ft(c,l.opts.specialEasing);o<a;o++)if(r=pt.prefilters[o].call(l,e,c,l.opts))return g(r.stop)&&(w._queueHooks(l.elem,l.opts.queue).stop=r.stop.bind(r)),r;return w.map(c,lt,l),g(l.opts.start)&&l.opts.start.call(e,l),l.progress(l.opts.progress).done(l.opts.done,l.opts.complete).fail(l.opts.fail).always(l.opts.always),w.fx.timer(w.extend(u,{elem:e,anim:l,queue:l.opts.queue})),l}w.Animation=w.extend(pt,{tweeners:{"*":[function(e,t){var n=this.createTween(e,t);return ue(n.elem,e,ie.exec(t),n),n}]},tweener:function(e,t){g(e)?(t=e,e=["*"]):e=e.match(M);for(var n,r=0,i=e.length;r<i;r++)n=e[r],pt.tweeners[n]=pt.tweeners[n]||[],pt.tweeners[n].unshift(t)},prefilters:[ct],prefilter:function(e,t){t?pt.prefilters.unshift(e):pt.prefilters.push(e)}}),w.speed=function(e,t,n){var r=e&&"object"==typeof e?w.extend({},e):{complete:n||!n&&t||g(e)&&e,duration:e,easing:n&&t||t&&!g(t)&&t};return w.fx.off?r.duration=0:"number"!=typeof r.duration&&(r.duration in w.fx.speeds?r.duration=w.fx.speeds[r.duration]:r.duration=w.fx.speeds._default),null!=r.queue&&!0!==r.queue||(r.queue="fx"),r.old=r.complete,r.complete=function(){g(r.old)&&r.old.call(this),r.queue&&w.dequeue(this,r.queue)},r},w.fn.extend({fadeTo:function(e,t,n,r){return this.filter(ae).css("opacity",0).show().end().animate({opacity:t},e,n,r)},animate:function(e,t,n,r){var i=w.isEmptyObject(e),o=w.speed(t,n,r),a=function(){var t=pt(this,w.extend({},e),o);(i||J.get(this,"finish"))&&t.stop(!0)};return a.finish=a,i||!1===o.queue?this.each(a):this.queue(o.queue,a)},stop:function(e,t,n){var r=function(e){var t=e.stop;delete e.stop,t(n)};return"string"!=typeof e&&(n=t,t=e,e=void 0),t&&!1!==e&&this.queue(e||"fx",[]),this.each(function(){var t=!0,i=null!=e&&e+"queueHooks",o=w.timers,a=J.get(this);if(i)a[i]&&a[i].stop&&r(a[i]);else for(i in a)a[i]&&a[i].stop&&ot.test(i)&&r(a[i]);for(i=o.length;i--;)o[i].elem!==this||null!=e&&o[i].queue!==e||(o[i].anim.stop(n),t=!1,o.splice(i,1));!t&&n||w.dequeue(this,e)})},finish:function(e){return!1!==e&&(e=e||"fx"),this.each(function(){var t,n=J.get(this),r=n[e+"queue"],i=n[e+"queueHooks"],o=w.timers,a=r?r.length:0;for(n.finish=!0,w.queue(this,e,[]),i&&i.stop&&i.stop.call(this,!0),t=o.length;t--;)o[t].elem===this&&o[t].queue===e&&(o[t].anim.stop(!0),o.splice(t,1));for(t=0;t<a;t++)r[t]&&r[t].finish&&r[t].finish.call(this);delete n.finish})}}),w.each(["toggle","show","hide"],function(e,t){var n=w.fn[t];w.fn[t]=function(e,r,i){return null==e||"boolean"==typeof e?n.apply(this,arguments):this.animate(ut(t,!0),e,r,i)}}),w.each({slideDown:ut("show"),slideUp:ut("hide"),slideToggle:ut("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,t){w.fn[e]=function(e,n,r){return this.animate(t,e,n,r)}}),w.timers=[],w.fx.tick=function(){var e,t=0,n=w.timers;for(nt=Date.now();t<n.length;t++)(e=n[t])()||n[t]!==e||n.splice(t--,1);n.length||w.fx.stop(),nt=void 0},w.fx.timer=function(e){w.timers.push(e),w.fx.start()},w.fx.interval=13,w.fx.start=function(){rt||(rt=!0,at())},w.fx.stop=function(){rt=null},w.fx.speeds={slow:600,fast:200,_default:400},w.fn.delay=function(t,n){return t=w.fx?w.fx.speeds[t]||t:t,n=n||"fx",this.queue(n,function(n,r){var i=e.setTimeout(n,t);r.stop=function(){e.clearTimeout(i)}})},function(){var e=r.createElement("input"),t=r.createElement("select").appendChild(r.createElement("option"));e.type="checkbox",h.checkOn=""!==e.value,h.optSelected=t.selected,(e=r.createElement("input")).value="t",e.type="radio",h.radioValue="t"===e.value}();var dt,ht=w.expr.attrHandle;w.fn.extend({attr:function(e,t){return z(this,w.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r<u;r++)if(((n=i[r]).selected||r===o)&&!n.disabled&&(!n.parentNode.disabled||!N(n.parentNode,"optgroup"))){if(t=w(n).val(),a)return t;s.push(t)}return s},set:function(e,t){var n,r,i=e.options,o=w.makeArray(t),a=i.length;while(a--)((r=i[a]).selected=w.inArray(w.valHooks.option.get(r),o)>-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w("<script>").prop({charset:e.scriptCharset,src:e.url}).on("load error",n=function(e){t.remove(),n=null,e&&o("error"===e.type?404:200,e.type)}),r.head.appendChild(t[0])},abort:function(){n&&n()}}}});var Yt=[],Qt=/(=)\?(?=&|$)|\?\?/;w.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Yt.pop()||w.expando+"_"+Et++;return this[e]=!0,e}}),w.ajaxPrefilter("json jsonp",function(t,n,r){var i,o,a,s=!1!==t.jsonp&&(Qt.test(t.url)?"url":"string"==typeof t.data&&0===(t.contentType||"").indexOf("application/x-www-form-urlencoded")&&Qt.test(t.data)&&"data");if(s||"jsonp"===t.dataTypes[0])return i=t.jsonpCallback=g(t.jsonpCallback)?t.jsonpCallback():t.jsonpCallback,s?t[s]=t[s].replace(Qt,"$1"+i):!1!==t.jsonp&&(t.url+=(kt.test(t.url)?"&":"?")+t.jsonp+"="+i),t.converters["script json"]=function(){return a||w.error(i+" was not called"),a[0]},t.dataTypes[0]="json",o=e[i],e[i]=function(){a=arguments},r.always(function(){void 0===o?w(e).removeProp(i):e[i]=o,t[i]&&(t.jsonpCallback=n.jsonpCallback,Yt.push(i)),a&&g(o)&&o(a[0]),a=o=void 0}),"script"}),h.createHTMLDocument=function(){var e=r.implementation.createHTMLDocument("").body;return e.innerHTML="<form></form><form></form>",2===e.childNodes.length}(),w.parseHTML=function(e,t,n){if("string"!=typeof e)return[];"boolean"==typeof t&&(n=t,t=!1);var i,o,a;return t||(h.createHTMLDocument?((i=(t=r.implementation.createHTMLDocument("")).createElement("base")).href=r.location.href,t.head.appendChild(i)):t=r),o=A.exec(e),a=!n&&[],o?[t.createElement(o[1])]:(o=xe([e],t,a),a&&a.length&&w(a).remove(),w.merge([],o.childNodes))},w.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return s>-1&&(r=vt(e.slice(s)),e=e.slice(0,s)),g(t)?(n=t,t=void 0):t&&"object"==typeof t&&(i="POST"),a.length>0&&w.ajax({url:e,type:i||"GET",dataType:"html",data:t}).done(function(e){o=arguments,a.html(r?w("<div>").append(w.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},w.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){w.fn[t]=function(e){return this.on(t,e)}}),w.expr.pseudos.animated=function(e){return w.grep(w.timers,function(t){return e===t.elem}).length},w.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l,c=w.css(e,"position"),f=w(e),p={};"static"===c&&(e.style.position="relative"),s=f.offset(),o=w.css(e,"top"),u=w.css(e,"left"),(l=("absolute"===c||"fixed"===c)&&(o+u).indexOf("auto")>-1)?(a=(r=f.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),g(t)&&(t=t.call(e,n,w.extend({},s))),null!=t.top&&(p.top=t.top-s.top+a),null!=t.left&&(p.left=t.left-s.left+i),"using"in t?t.using.call(e,p):f.css(p)}},w.fn.extend({offset:function(e){if(arguments.length)return void 0===e?this:this.each(function(t){w.offset.setOffset(this,e,t)});var t,n,r=this[0];if(r)return r.getClientRects().length?(t=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:t.top+n.pageYOffset,left:t.left+n.pageXOffset}):{top:0,left:0}},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===w.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===w.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=w(e).offset()).top+=w.css(e,"borderTopWidth",!0),i.left+=w.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-w.css(r,"marginTop",!0),left:t.left-i.left-w.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===w.css(e,"position"))e=e.offsetParent;return e||be})}}),w.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(e,t){var n="pageYOffset"===t;w.fn[e]=function(r){return z(this,function(e,r,i){var o;if(y(e)?o=e:9===e.nodeType&&(o=e.defaultView),void 0===i)return o?o[t]:e[r];o?o.scrollTo(n?o.pageXOffset:i,n?i:o.pageYOffset):e[r]=i},e,r,arguments.length)}}),w.each(["top","left"],function(e,t){w.cssHooks[t]=_e(h.pixelPosition,function(e,n){if(n)return n=Fe(e,t),We.test(n)?w(e).position()[t]+"px":n})}),w.each({Height:"height",Width:"width"},function(e,t){w.each({padding:"inner"+e,content:t,"":"outer"+e},function(n,r){w.fn[r]=function(i,o){var a=arguments.length&&(n||"boolean"!=typeof i),s=n||(!0===i||!0===o?"margin":"border");return z(this,function(t,n,i){var o;return y(t)?0===r.indexOf("outer")?t["inner"+e]:t.document.documentElement["client"+e]:9===t.nodeType?(o=t.documentElement,Math.max(t.body["scroll"+e],o["scroll"+e],t.body["offset"+e],o["offset"+e],o["client"+e])):void 0===i?w.css(t,n,s):w.style(t,n,i,s)},t,a?i:void 0,a)}})}),w.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,t){w.fn[t]=function(e,n){return arguments.length>0?this.on(t,null,e,n):this.trigger(t)}}),w.fn.extend({hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),w.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)}}),w.proxy=function(e,t){var n,r,i;if("string"==typeof t&&(n=e[t],t=e,e=n),g(e))return r=o.call(arguments,2),i=function(){return e.apply(t||this,r.concat(o.call(arguments)))},i.guid=e.guid=e.guid||w.guid++,i},w.holdReady=function(e){e?w.readyWait++:w.ready(!0)},w.isArray=Array.isArray,w.parseJSON=JSON.parse,w.nodeName=N,w.isFunction=g,w.isWindow=y,w.camelCase=G,w.type=x,w.now=Date.now,w.isNumeric=function(e){var t=w.type(e);return("number"===t||"string"===t)&&!isNaN(e-parseFloat(e))},"function"==typeof define&&define.amd&&define("jquery",[],function(){return w});var Jt=e.jQuery,Kt=e.$;return w.noConflict=function(t){return e.$===w&&(e.$=Kt),t&&e.jQuery===w&&(e.jQuery=Jt),w},t||(e.jQuery=e.$=w),w});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/popper.min.js b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/resources/html/js/popper.min.js
deleted file mode 100644 (file)
index 79ccbf5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-/*
- Copyright (C) Federico Zivolo 2018
- Distributed under the MIT License (license terms are at http://opensource.org/licenses/MIT).
- */(function(e,t){'object'==typeof exports&&'undefined'!=typeof module?module.exports=t():'function'==typeof define&&define.amd?define(t):e.Popper=t()})(this,function(){'use strict';function e(e){return e&&'[object Function]'==={}.toString.call(e)}function t(e,t){if(1!==e.nodeType)return[];var o=getComputedStyle(e,null);return t?o[t]:o}function o(e){return'HTML'===e.nodeName?e:e.parentNode||e.host}function n(e){if(!e)return document.body;switch(e.nodeName){case'HTML':case'BODY':return e.ownerDocument.body;case'#document':return e.body;}var i=t(e),r=i.overflow,p=i.overflowX,s=i.overflowY;return /(auto|scroll|overlay)/.test(r+s+p)?e:n(o(e))}function r(e){return 11===e?re:10===e?pe:re||pe}function p(e){if(!e)return document.documentElement;for(var o=r(10)?document.body:null,n=e.offsetParent;n===o&&e.nextElementSibling;)n=(e=e.nextElementSibling).offsetParent;var i=n&&n.nodeName;return i&&'BODY'!==i&&'HTML'!==i?-1!==['TD','TABLE'].indexOf(n.nodeName)&&'static'===t(n,'position')?p(n):n:e?e.ownerDocument.documentElement:document.documentElement}function s(e){var t=e.nodeName;return'BODY'!==t&&('HTML'===t||p(e.firstElementChild)===e)}function d(e){return null===e.parentNode?e:d(e.parentNode)}function a(e,t){if(!e||!e.nodeType||!t||!t.nodeType)return document.documentElement;var o=e.compareDocumentPosition(t)&Node.DOCUMENT_POSITION_FOLLOWING,n=o?e:t,i=o?t:e,r=document.createRange();r.setStart(n,0),r.setEnd(i,0);var l=r.commonAncestorContainer;if(e!==l&&t!==l||n.contains(i))return s(l)?l:p(l);var f=d(e);return f.host?a(f.host,t):a(e,d(t).host)}function l(e){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:'top',o='top'===t?'scrollTop':'scrollLeft',n=e.nodeName;if('BODY'===n||'HTML'===n){var i=e.ownerDocument.documentElement,r=e.ownerDocument.scrollingElement||i;return r[o]}return e[o]}function f(e,t){var o=2<arguments.length&&void 0!==arguments[2]&&arguments[2],n=l(t,'top'),i=l(t,'left'),r=o?-1:1;return e.top+=n*r,e.bottom+=n*r,e.left+=i*r,e.right+=i*r,e}function m(e,t){var o='x'===t?'Left':'Top',n='Left'==o?'Right':'Bottom';return parseFloat(e['border'+o+'Width'],10)+parseFloat(e['border'+n+'Width'],10)}function h(e,t,o,n){return $(t['offset'+e],t['scroll'+e],o['client'+e],o['offset'+e],o['scroll'+e],r(10)?o['offset'+e]+n['margin'+('Height'===e?'Top':'Left')]+n['margin'+('Height'===e?'Bottom':'Right')]:0)}function c(){var e=document.body,t=document.documentElement,o=r(10)&&getComputedStyle(t);return{height:h('Height',e,t,o),width:h('Width',e,t,o)}}function g(e){return le({},e,{right:e.left+e.width,bottom:e.top+e.height})}function u(e){var o={};try{if(r(10)){o=e.getBoundingClientRect();var n=l(e,'top'),i=l(e,'left');o.top+=n,o.left+=i,o.bottom+=n,o.right+=i}else o=e.getBoundingClientRect()}catch(t){}var p={left:o.left,top:o.top,width:o.right-o.left,height:o.bottom-o.top},s='HTML'===e.nodeName?c():{},d=s.width||e.clientWidth||p.right-p.left,a=s.height||e.clientHeight||p.bottom-p.top,f=e.offsetWidth-d,h=e.offsetHeight-a;if(f||h){var u=t(e);f-=m(u,'x'),h-=m(u,'y'),p.width-=f,p.height-=h}return g(p)}function b(e,o){var i=2<arguments.length&&void 0!==arguments[2]&&arguments[2],p=r(10),s='HTML'===o.nodeName,d=u(e),a=u(o),l=n(e),m=t(o),h=parseFloat(m.borderTopWidth,10),c=parseFloat(m.borderLeftWidth,10);i&&'HTML'===o.nodeName&&(a.top=$(a.top,0),a.left=$(a.left,0));var b=g({top:d.top-a.top-h,left:d.left-a.left-c,width:d.width,height:d.height});if(b.marginTop=0,b.marginLeft=0,!p&&s){var y=parseFloat(m.marginTop,10),w=parseFloat(m.marginLeft,10);b.top-=h-y,b.bottom-=h-y,b.left-=c-w,b.right-=c-w,b.marginTop=y,b.marginLeft=w}return(p&&!i?o.contains(l):o===l&&'BODY'!==l.nodeName)&&(b=f(b,o)),b}function y(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=e.ownerDocument.documentElement,n=b(e,o),i=$(o.clientWidth,window.innerWidth||0),r=$(o.clientHeight,window.innerHeight||0),p=t?0:l(o),s=t?0:l(o,'left'),d={top:p-n.top+n.marginTop,left:s-n.left+n.marginLeft,width:i,height:r};return g(d)}function w(e){var n=e.nodeName;return'BODY'===n||'HTML'===n?!1:'fixed'===t(e,'position')||w(o(e))}function E(e){if(!e||!e.parentElement||r())return document.documentElement;for(var o=e.parentElement;o&&'none'===t(o,'transform');)o=o.parentElement;return o||document.documentElement}function v(e,t,i,r){var p=4<arguments.length&&void 0!==arguments[4]&&arguments[4],s={top:0,left:0},d=p?E(e):a(e,t);if('viewport'===r)s=y(d,p);else{var l;'scrollParent'===r?(l=n(o(t)),'BODY'===l.nodeName&&(l=e.ownerDocument.documentElement)):'window'===r?l=e.ownerDocument.documentElement:l=r;var f=b(l,d,p);if('HTML'===l.nodeName&&!w(d)){var m=c(),h=m.height,g=m.width;s.top+=f.top-f.marginTop,s.bottom=h+f.top,s.left+=f.left-f.marginLeft,s.right=g+f.left}else s=f}return s.left+=i,s.top+=i,s.right-=i,s.bottom-=i,s}function x(e){var t=e.width,o=e.height;return t*o}function O(e,t,o,n,i){var r=5<arguments.length&&void 0!==arguments[5]?arguments[5]:0;if(-1===e.indexOf('auto'))return e;var p=v(o,n,r,i),s={top:{width:p.width,height:t.top-p.top},right:{width:p.right-t.right,height:p.height},bottom:{width:p.width,height:p.bottom-t.bottom},left:{width:t.left-p.left,height:p.height}},d=Object.keys(s).map(function(e){return le({key:e},s[e],{area:x(s[e])})}).sort(function(e,t){return t.area-e.area}),a=d.filter(function(e){var t=e.width,n=e.height;return t>=o.clientWidth&&n>=o.clientHeight}),l=0<a.length?a[0].key:d[0].key,f=e.split('-')[1];return l+(f?'-'+f:'')}function L(e,t,o){var n=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null,i=n?E(t):a(t,o);return b(o,i,n)}function S(e){var t=getComputedStyle(e),o=parseFloat(t.marginTop)+parseFloat(t.marginBottom),n=parseFloat(t.marginLeft)+parseFloat(t.marginRight),i={width:e.offsetWidth+n,height:e.offsetHeight+o};return i}function T(e){var t={left:'right',right:'left',bottom:'top',top:'bottom'};return e.replace(/left|right|bottom|top/g,function(e){return t[e]})}function C(e,t,o){o=o.split('-')[0];var n=S(e),i={width:n.width,height:n.height},r=-1!==['right','left'].indexOf(o),p=r?'top':'left',s=r?'left':'top',d=r?'height':'width',a=r?'width':'height';return i[p]=t[p]+t[d]/2-n[d]/2,i[s]=o===s?t[s]-n[a]:t[T(s)],i}function D(e,t){return Array.prototype.find?e.find(t):e.filter(t)[0]}function N(e,t,o){if(Array.prototype.findIndex)return e.findIndex(function(e){return e[t]===o});var n=D(e,function(e){return e[t]===o});return e.indexOf(n)}function P(t,o,n){var i=void 0===n?t:t.slice(0,N(t,'name',n));return i.forEach(function(t){t['function']&&console.warn('`modifier.function` is deprecated, use `modifier.fn`!');var n=t['function']||t.fn;t.enabled&&e(n)&&(o.offsets.popper=g(o.offsets.popper),o.offsets.reference=g(o.offsets.reference),o=n(o,t))}),o}function k(){if(!this.state.isDestroyed){var e={instance:this,styles:{},arrowStyles:{},attributes:{},flipped:!1,offsets:{}};e.offsets.reference=L(this.state,this.popper,this.reference,this.options.positionFixed),e.placement=O(this.options.placement,e.offsets.reference,this.popper,this.reference,this.options.modifiers.flip.boundariesElement,this.options.modifiers.flip.padding),e.originalPlacement=e.placement,e.positionFixed=this.options.positionFixed,e.offsets.popper=C(this.popper,e.offsets.reference,e.placement),e.offsets.popper.position=this.options.positionFixed?'fixed':'absolute',e=P(this.modifiers,e),this.state.isCreated?this.options.onUpdate(e):(this.state.isCreated=!0,this.options.onCreate(e))}}function W(e,t){return e.some(function(e){var o=e.name,n=e.enabled;return n&&o===t})}function B(e){for(var t=[!1,'ms','Webkit','Moz','O'],o=e.charAt(0).toUpperCase()+e.slice(1),n=0;n<t.length;n++){var i=t[n],r=i?''+i+o:e;if('undefined'!=typeof document.body.style[r])return r}return null}function H(){return this.state.isDestroyed=!0,W(this.modifiers,'applyStyle')&&(this.popper.removeAttribute('x-placement'),this.popper.style.position='',this.popper.style.top='',this.popper.style.left='',this.popper.style.right='',this.popper.style.bottom='',this.popper.style.willChange='',this.popper.style[B('transform')]=''),this.disableEventListeners(),this.options.removeOnDestroy&&this.popper.parentNode.removeChild(this.popper),this}function A(e){var t=e.ownerDocument;return t?t.defaultView:window}function M(e,t,o,i){var r='BODY'===e.nodeName,p=r?e.ownerDocument.defaultView:e;p.addEventListener(t,o,{passive:!0}),r||M(n(p.parentNode),t,o,i),i.push(p)}function I(e,t,o,i){o.updateBound=i,A(e).addEventListener('resize',o.updateBound,{passive:!0});var r=n(e);return M(r,'scroll',o.updateBound,o.scrollParents),o.scrollElement=r,o.eventsEnabled=!0,o}function F(){this.state.eventsEnabled||(this.state=I(this.reference,this.options,this.state,this.scheduleUpdate))}function R(e,t){return A(e).removeEventListener('resize',t.updateBound),t.scrollParents.forEach(function(e){e.removeEventListener('scroll',t.updateBound)}),t.updateBound=null,t.scrollParents=[],t.scrollElement=null,t.eventsEnabled=!1,t}function U(){this.state.eventsEnabled&&(cancelAnimationFrame(this.scheduleUpdate),this.state=R(this.reference,this.state))}function Y(e){return''!==e&&!isNaN(parseFloat(e))&&isFinite(e)}function j(e,t){Object.keys(t).forEach(function(o){var n='';-1!==['width','height','top','right','bottom','left'].indexOf(o)&&Y(t[o])&&(n='px'),e.style[o]=t[o]+n})}function K(e,t){Object.keys(t).forEach(function(o){var n=t[o];!1===n?e.removeAttribute(o):e.setAttribute(o,t[o])})}function q(e,t,o){var n=D(e,function(e){var o=e.name;return o===t}),i=!!n&&e.some(function(e){return e.name===o&&e.enabled&&e.order<n.order});if(!i){var r='`'+t+'`';console.warn('`'+o+'`'+' modifier is required by '+r+' modifier in order to work, be sure to include it before '+r+'!')}return i}function G(e){return'end'===e?'start':'start'===e?'end':e}function z(e){var t=1<arguments.length&&void 0!==arguments[1]&&arguments[1],o=me.indexOf(e),n=me.slice(o+1).concat(me.slice(0,o));return t?n.reverse():n}function V(e,t,o,n){var i=e.match(/((?:\-|\+)?\d*\.?\d*)(.*)/),r=+i[1],p=i[2];if(!r)return e;if(0===p.indexOf('%')){var s;switch(p){case'%p':s=o;break;case'%':case'%r':default:s=n;}var d=g(s);return d[t]/100*r}if('vh'===p||'vw'===p){var a;return a='vh'===p?$(document.documentElement.clientHeight,window.innerHeight||0):$(document.documentElement.clientWidth,window.innerWidth||0),a/100*r}return r}function _(e,t,o,n){var i=[0,0],r=-1!==['right','left'].indexOf(n),p=e.split(/(\+|\-)/).map(function(e){return e.trim()}),s=p.indexOf(D(p,function(e){return-1!==e.search(/,|\s/)}));p[s]&&-1===p[s].indexOf(',')&&console.warn('Offsets separated by white space(s) are deprecated, use a comma (,) instead.');var d=/\s*,\s*|\s+/,a=-1===s?[p]:[p.slice(0,s).concat([p[s].split(d)[0]]),[p[s].split(d)[1]].concat(p.slice(s+1))];return a=a.map(function(e,n){var i=(1===n?!r:r)?'height':'width',p=!1;return e.reduce(function(e,t){return''===e[e.length-1]&&-1!==['+','-'].indexOf(t)?(e[e.length-1]=t,p=!0,e):p?(e[e.length-1]+=t,p=!1,e):e.concat(t)},[]).map(function(e){return V(e,i,t,o)})}),a.forEach(function(e,t){e.forEach(function(o,n){Y(o)&&(i[t]+=o*('-'===e[n-1]?-1:1))})}),i}function X(e,t){var o,n=t.offset,i=e.placement,r=e.offsets,p=r.popper,s=r.reference,d=i.split('-')[0];return o=Y(+n)?[+n,0]:_(n,p,s,d),'left'===d?(p.top+=o[0],p.left-=o[1]):'right'===d?(p.top+=o[0],p.left+=o[1]):'top'===d?(p.left+=o[0],p.top-=o[1]):'bottom'===d&&(p.left+=o[0],p.top+=o[1]),e.popper=p,e}for(var J=Math.min,Q=Math.round,Z=Math.floor,$=Math.max,ee='undefined'!=typeof window&&'undefined'!=typeof document,te=['Edge','Trident','Firefox'],oe=0,ne=0;ne<te.length;ne+=1)if(ee&&0<=navigator.userAgent.indexOf(te[ne])){oe=1;break}var i=ee&&window.Promise,ie=i?function(e){var t=!1;return function(){t||(t=!0,window.Promise.resolve().then(function(){t=!1,e()}))}}:function(e){var t=!1;return function(){t||(t=!0,setTimeout(function(){t=!1,e()},oe))}},re=ee&&!!(window.MSInputMethodContext&&document.documentMode),pe=ee&&/MSIE 10/.test(navigator.userAgent),se=function(e,t){if(!(e instanceof t))throw new TypeError('Cannot call a class as a function')},de=function(){function e(e,t){for(var o,n=0;n<t.length;n++)o=t[n],o.enumerable=o.enumerable||!1,o.configurable=!0,'value'in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}return function(t,o,n){return o&&e(t.prototype,o),n&&e(t,n),t}}(),ae=function(e,t,o){return t in e?Object.defineProperty(e,t,{value:o,enumerable:!0,configurable:!0,writable:!0}):e[t]=o,e},le=Object.assign||function(e){for(var t,o=1;o<arguments.length;o++)for(var n in t=arguments[o],t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n]);return e},fe=['auto-start','auto','auto-end','top-start','top','top-end','right-start','right','right-end','bottom-end','bottom','bottom-start','left-end','left','left-start'],me=fe.slice(3),he={FLIP:'flip',CLOCKWISE:'clockwise',COUNTERCLOCKWISE:'counterclockwise'},ce=function(){function t(o,n){var i=this,r=2<arguments.length&&void 0!==arguments[2]?arguments[2]:{};se(this,t),this.scheduleUpdate=function(){return requestAnimationFrame(i.update)},this.update=ie(this.update.bind(this)),this.options=le({},t.Defaults,r),this.state={isDestroyed:!1,isCreated:!1,scrollParents:[]},this.reference=o&&o.jquery?o[0]:o,this.popper=n&&n.jquery?n[0]:n,this.options.modifiers={},Object.keys(le({},t.Defaults.modifiers,r.modifiers)).forEach(function(e){i.options.modifiers[e]=le({},t.Defaults.modifiers[e]||{},r.modifiers?r.modifiers[e]:{})}),this.modifiers=Object.keys(this.options.modifiers).map(function(e){return le({name:e},i.options.modifiers[e])}).sort(function(e,t){return e.order-t.order}),this.modifiers.forEach(function(t){t.enabled&&e(t.onLoad)&&t.onLoad(i.reference,i.popper,i.options,t,i.state)}),this.update();var p=this.options.eventsEnabled;p&&this.enableEventListeners(),this.state.eventsEnabled=p}return de(t,[{key:'update',value:function(){return k.call(this)}},{key:'destroy',value:function(){return H.call(this)}},{key:'enableEventListeners',value:function(){return F.call(this)}},{key:'disableEventListeners',value:function(){return U.call(this)}}]),t}();return ce.Utils=('undefined'==typeof window?global:window).PopperUtils,ce.placements=fe,ce.Defaults={placement:'bottom',positionFixed:!1,eventsEnabled:!0,removeOnDestroy:!1,onCreate:function(){},onUpdate:function(){},modifiers:{shift:{order:100,enabled:!0,fn:function(e){var t=e.placement,o=t.split('-')[0],n=t.split('-')[1];if(n){var i=e.offsets,r=i.reference,p=i.popper,s=-1!==['bottom','top'].indexOf(o),d=s?'left':'top',a=s?'width':'height',l={start:ae({},d,r[d]),end:ae({},d,r[d]+r[a]-p[a])};e.offsets.popper=le({},p,l[n])}return e}},offset:{order:200,enabled:!0,fn:X,offset:0},preventOverflow:{order:300,enabled:!0,fn:function(e,t){var o=t.boundariesElement||p(e.instance.popper);e.instance.reference===o&&(o=p(o));var n=B('transform'),i=e.instance.popper.style,r=i.top,s=i.left,d=i[n];i.top='',i.left='',i[n]='';var a=v(e.instance.popper,e.instance.reference,t.padding,o,e.positionFixed);i.top=r,i.left=s,i[n]=d,t.boundaries=a;var l=t.priority,f=e.offsets.popper,m={primary:function(e){var o=f[e];return f[e]<a[e]&&!t.escapeWithReference&&(o=$(f[e],a[e])),ae({},e,o)},secondary:function(e){var o='right'===e?'left':'top',n=f[o];return f[e]>a[e]&&!t.escapeWithReference&&(n=J(f[o],a[e]-('right'===e?f.width:f.height))),ae({},o,n)}};return l.forEach(function(e){var t=-1===['left','top'].indexOf(e)?'secondary':'primary';f=le({},f,m[t](e))}),e.offsets.popper=f,e},priority:['left','right','top','bottom'],padding:5,boundariesElement:'scrollParent'},keepTogether:{order:400,enabled:!0,fn:function(e){var t=e.offsets,o=t.popper,n=t.reference,i=e.placement.split('-')[0],r=Z,p=-1!==['top','bottom'].indexOf(i),s=p?'right':'bottom',d=p?'left':'top',a=p?'width':'height';return o[s]<r(n[d])&&(e.offsets.popper[d]=r(n[d])-o[a]),o[d]>r(n[s])&&(e.offsets.popper[d]=r(n[s])),e}},arrow:{order:500,enabled:!0,fn:function(e,o){var n;if(!q(e.instance.modifiers,'arrow','keepTogether'))return e;var i=o.element;if('string'==typeof i){if(i=e.instance.popper.querySelector(i),!i)return e;}else if(!e.instance.popper.contains(i))return console.warn('WARNING: `arrow.element` must be child of its popper element!'),e;var r=e.placement.split('-')[0],p=e.offsets,s=p.popper,d=p.reference,a=-1!==['left','right'].indexOf(r),l=a?'height':'width',f=a?'Top':'Left',m=f.toLowerCase(),h=a?'left':'top',c=a?'bottom':'right',u=S(i)[l];d[c]-u<s[m]&&(e.offsets.popper[m]-=s[m]-(d[c]-u)),d[m]+u>s[c]&&(e.offsets.popper[m]+=d[m]+u-s[c]),e.offsets.popper=g(e.offsets.popper);var b=d[m]+d[l]/2-u/2,y=t(e.instance.popper),w=parseFloat(y['margin'+f],10),E=parseFloat(y['border'+f+'Width'],10),v=b-e.offsets.popper[m]-w-E;return v=$(J(s[l]-u,v),0),e.arrowElement=i,e.offsets.arrow=(n={},ae(n,m,Q(v)),ae(n,h,''),n),e},element:'[x-arrow]'},flip:{order:600,enabled:!0,fn:function(e,t){if(W(e.instance.modifiers,'inner'))return e;if(e.flipped&&e.placement===e.originalPlacement)return e;var o=v(e.instance.popper,e.instance.reference,t.padding,t.boundariesElement,e.positionFixed),n=e.placement.split('-')[0],i=T(n),r=e.placement.split('-')[1]||'',p=[];switch(t.behavior){case he.FLIP:p=[n,i];break;case he.CLOCKWISE:p=z(n);break;case he.COUNTERCLOCKWISE:p=z(n,!0);break;default:p=t.behavior;}return p.forEach(function(s,d){if(n!==s||p.length===d+1)return e;n=e.placement.split('-')[0],i=T(n);var a=e.offsets.popper,l=e.offsets.reference,f=Z,m='left'===n&&f(a.right)>f(l.left)||'right'===n&&f(a.left)<f(l.right)||'top'===n&&f(a.bottom)>f(l.top)||'bottom'===n&&f(a.top)<f(l.bottom),h=f(a.left)<f(o.left),c=f(a.right)>f(o.right),g=f(a.top)<f(o.top),u=f(a.bottom)>f(o.bottom),b='left'===n&&h||'right'===n&&c||'top'===n&&g||'bottom'===n&&u,y=-1!==['top','bottom'].indexOf(n),w=!!t.flipVariations&&(y&&'start'===r&&h||y&&'end'===r&&c||!y&&'start'===r&&g||!y&&'end'===r&&u);(m||b||w)&&(e.flipped=!0,(m||b)&&(n=p[d+1]),w&&(r=G(r)),e.placement=n+(r?'-'+r:''),e.offsets.popper=le({},e.offsets.popper,C(e.instance.popper,e.offsets.reference,e.placement)),e=P(e.instance.modifiers,e,'flip'))}),e},behavior:'flip',padding:5,boundariesElement:'viewport'},inner:{order:700,enabled:!1,fn:function(e){var t=e.placement,o=t.split('-')[0],n=e.offsets,i=n.popper,r=n.reference,p=-1!==['left','right'].indexOf(o),s=-1===['top','left'].indexOf(o);return i[p?'left':'top']=r[o]-(s?i[p?'width':'height']:0),e.placement=T(t),e.offsets.popper=g(i),e}},hide:{order:800,enabled:!0,fn:function(e){if(!q(e.instance.modifiers,'hide','preventOverflow'))return e;var t=e.offsets.reference,o=D(e.instance.modifiers,function(e){return'preventOverflow'===e.name}).boundaries;if(t.bottom<o.top||t.left>o.right||t.top>o.bottom||t.right<o.left){if(!0===e.hide)return e;e.hide=!0,e.attributes['x-out-of-boundaries']=''}else{if(!1===e.hide)return e;e.hide=!1,e.attributes['x-out-of-boundaries']=!1}return e}},computeStyle:{order:850,enabled:!0,fn:function(e,t){var o=t.x,n=t.y,i=e.offsets.popper,r=D(e.instance.modifiers,function(e){return'applyStyle'===e.name}).gpuAcceleration;void 0!==r&&console.warn('WARNING: `gpuAcceleration` option moved to `computeStyle` modifier and will not be supported in future versions of Popper.js!');var s,d,a=void 0===r?t.gpuAcceleration:r,l=p(e.instance.popper),f=u(l),m={position:i.position},h={left:Z(i.left),top:Q(i.top),bottom:Q(i.bottom),right:Z(i.right)},c='bottom'===o?'top':'bottom',g='right'===n?'left':'right',b=B('transform');if(d='bottom'==c?-f.height+h.bottom:h.top,s='right'==g?-f.width+h.right:h.left,a&&b)m[b]='translate3d('+s+'px, '+d+'px, 0)',m[c]=0,m[g]=0,m.willChange='transform';else{var y='bottom'==c?-1:1,w='right'==g?-1:1;m[c]=d*y,m[g]=s*w,m.willChange=c+', '+g}var E={"x-placement":e.placement};return e.attributes=le({},E,e.attributes),e.styles=le({},m,e.styles),e.arrowStyles=le({},e.offsets.arrow,e.arrowStyles),e},gpuAcceleration:!0,x:'bottom',y:'right'},applyStyle:{order:900,enabled:!0,fn:function(e){return j(e.instance.popper,e.styles),K(e.instance.popper,e.attributes),e.arrowElement&&Object.keys(e.arrowStyles).length&&j(e.arrowElement,e.arrowStyles),e},onLoad:function(e,t,o,n,i){var r=L(i,t,e,o.positionFixed),p=O(o.placement,r,t,e,o.modifiers.flip.boundariesElement,o.modifiers.flip.padding);return t.setAttribute('x-placement',p),j(t,{position:o.positionFixed?'fixed':'absolute'}),o},gpuAcceleration:void 0}}},ce});
-//# sourceMappingURL=popper.min.js.map
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/test/SimpleTests.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/main/test/SimpleTests.java
deleted file mode 100644 (file)
index f2f4e4b..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-import java.io.File;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Iterator;
-import org.json.JSONArray;
-import org.json.JSONObject;
-
-public class SimpleTests {
-
-
-       private static void testURI()
-       {
-               String uri="/ms/1/api/";
-               String query="task=getconfig";
-
-               long id=0;
-               String remoteUrl="";
-               uri = uri.substring("/ms/".length());
-
-               try {
-                       id = Long.parseLong(uri.substring(0, uri.indexOf("/")));
-                       uri=uri.substring(uri.indexOf("/"));
-               } catch (Exception err) {
-                       System.out.println(err.getMessage());
-               }
-
-               if(id>0)
-               {
-               remoteUrl=baseUrl(id)+uri;
-               if (query != null && query.length() > 0)
-                       remoteUrl += "?" + query;
-               }
-               System.out.println("url="+remoteUrl);
-       }
-       private static void testMSDBDataParser()
-       {
-               String resp="{\"took\":6,\"timed_out\":false,\"_shards\":{\"total\":5,\"successful\":5,\"failed\":0},\"hits\":{\"total\":2,\"max_score\":1.0,\"hits\":[{\"_index\":\"mwtn_v1\",\"_type\":\"mediator-server\",\"_id\":\"2\",\"_score\":1.0,\"_source\":{\"id\":2,\"name\":\"Server 2\",\"url\":\"http://mediatorsnmp.fritz.box:7070\"}},{\"_index\":\"mwtn_v1\",\"_type\":\"mediator-server\",\"_id\":\"1\",\"_score\":1.0,\"_source\":{\"id\":1,\"name\":\"Server 1\",\"url\":\"http://192.168.11.44:7070\"}}]}}";
-               JSONObject ro=new JSONObject(resp);
-               JSONArray a=ro.getJSONObject("hits").getJSONArray("hits");
-               for(int i=0;i<a.length();i++)
-               {
-                       JSONObject x=a.getJSONObject(i).getJSONObject("_source");
-                       System.out.println("id="+x.getLong("id")+" name=\""+x.getString("name")+"\" url=\""+x.getString("url")+"\"");
-               }
-
-       }
-
-        public static void walk(ArrayList<File> results, String path ) {
-
-               File root = new File( path );
-               File[] list = root.listFiles();
-
-               if (list == null) return;
-
-               for ( File f : list ) {
-                   if ( f.isDirectory() ) {
-                       walk(results, f.getAbsolutePath() );
-                       //System.out.println( "Dir:" + f.getAbsoluteFile() );
-                   }
-                   else {
-                       //System.out.println( "File:" + f.getAbsoluteFile() );
-                       if(f.isFile() && f.getName().endsWith(".md") )
-                               results.add(f);
-                   }
-               }
-           }
-       private static void testFindMDs()
-       {
-               final String BASEURI = "/help";
-               final int MAX_DEPTH = 10;
-               String uri="/help/";//req.getRequestURI();
-               Path basePath=new File("/home/herbert/odl/distribution-karaf-0.5.3-Boron-SR3").toPath();
-               uri=uri.substring(BASEURI.length());
-               try
-               {
-                       ArrayList<File> mdfiles=new ArrayList<>();
-                       walk(mdfiles,basePath.toAbsolutePath().toString());
-                       JSONArray a=new JSONArray();
-                       Iterator<File> it=mdfiles.iterator();
-                       while(it.hasNext())
-                               a.put(it.next().toString().substring(basePath.toAbsolutePath().toString().length()));
-                       //resp.getOutputStream().println(a.toString());
-                       System.out.println(a.toString());
-
-               }
-               catch(Exception err)
-               {
-                       err.printStackTrace();
-               }
-       }
-       private static void folderTests()
-       {
-               Path basePath=new File("/home/herbert/odl/distribution-karaf-0.5.3-Boron-SR3").toPath();
-               Path pHelp=basePath.resolve("help/");
-               String uri="0.1.0-SNAPSHOT/OpenDaylight";
-               System.out.println("phelp="+pHelp.toString());
-               Path pUri=pHelp.resolve(uri);
-               System.out.println("puri="+pUri.toString());
-       }
-
-       public static void main(String[] args)
-       {
-               //testURI();
-               //testMSDBDataParser();
-               //testFindMDs();
-       }
-
-       private static String baseUrl(long id) {
-               return "http://test.tld:7021";
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/test/java/BundleListTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/test/java/BundleListTest.java
deleted file mode 100644 (file)
index 211dfb4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-import com.highstreet.technologies.info.KarafBundleList;
-
-public class BundleListTest {
-
-       public static void main(String[] args)
-       {
-               KarafBundleList list=new KarafBundleList("/home/herbert/odl/distribution-karaf-0.6.1-Carbon/data/cache/org.eclipse.osgi/bundles");
-               list.scan();
-               System.out.println(list.toJSON());
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/test/java/CompressionTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/test/java/CompressionTest.java
deleted file mode 100644 (file)
index dec351c..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileOutputStream;
-import java.io.IOException;
-
-import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
-import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
-import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream;
-import org.apache.commons.compress.utils.IOUtils;
-
-public class CompressionTest {
-
-       final static String KARAFLOG_FOLDER="/home/herbert/odl/distribution-karaf-0.6.1-Carbon/data/log/";
-       public static void main(String[] args)
-       {
-               createLogDownload("log.tar.gz");
-       }
-       private static void createLogDownload(String tarFilename) {
-               System.out.println("start creating tar file "+tarFilename);
-               File f = new File(tarFilename);
-               if (f.exists())
-                       f.delete();
-               FileOutputStream fOut = null;
-               BufferedOutputStream bOut = null;
-               GzipCompressorOutputStream gzOut = null;
-               TarArchiveOutputStream tOut = null;
-               try {
-                       System.out.println(new File(".").getAbsolutePath());
-                       fOut = new FileOutputStream(new File(tarFilename));
-                       bOut = new BufferedOutputStream(fOut);
-                       gzOut = new GzipCompressorOutputStream(bOut);
-                       tOut = new TarArchiveOutputStream(gzOut);
-                       addFileToTarGz(tOut, KARAFLOG_FOLDER, "", ".log");
-               } catch (IOException e) {
-                       System.out.println("problem creating tar:" + e.getMessage());
-               } finally {
-                       try {
-                               if (tOut != null) {
-                                       tOut.finish();
-                                       tOut.close();
-                               }
-                               if (gzOut != null)
-                                       gzOut.close();
-                               if (bOut != null)
-                                       bOut.close();
-                               if (fOut != null)
-                                       fOut.close();
-                               System.out.println("finished creating tar file");
-                       } catch (IOException e) {
-                               System.out.println("problem closing streams:" + e.getMessage());
-                       }
-               }
-
-       }
-
-       private static void addFileToTarGz(TarArchiveOutputStream tOut, String path, String base, final String filter)
-                       throws IOException {
-               File f = new File(path);
-               String entryName = base + f.getName();
-               TarArchiveEntry tarEntry = new TarArchiveEntry(f, entryName);
-               tOut.putArchiveEntry(tarEntry);
-
-               if (f.isFile())
-               {
-                       if( f.getName().contains(filter)) {
-                               System.out.println("adding to tar:"+f.getName());
-                               IOUtils.copy(new FileInputStream(f), tOut);
-                               tOut.closeArchiveEntry();
-                       }
-                       else
-                               System.out.println("file "+f.getName()+" filtered out, filter="+filter);
-               } else {
-                       tOut.closeArchiveEntry();
-                       File[] children = f.listFiles();
-                       if (children != null) {
-                               for (File child : children) {
-                                       System.out.println(child.getName());
-                                       addFileToTarGz(tOut, child.getAbsolutePath(), entryName + "/", filter);
-                               }
-                       }
-               }
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/test/resources/log4j.properties b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/impl/src/test/resources/log4j.properties
deleted file mode 100644 (file)
index 142663b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-log4j.rootLogger=INFO, out
-
-log4j.logger.org.apache.camel.impl.converter=WARN
-log4j.logger.org.apache.camel.management=WARN
-log4j.logger.org.apache.camel.impl.DefaultPackageScanClassResolver=WARN
-log4j.logger.org.springframework=ERROR
-
-# CONSOLE appender not used by default
-log4j.appender.out=org.apache.log4j.ConsoleAppender
-log4j.appender.out.layout=org.apache.log4j.PatternLayout
-log4j.appender.out.layout.ConversionPattern=%d [%-15.15t] %-5p %-30.30c{1} - %m%n
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/info/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/info/pom.xml
deleted file mode 100644 (file)
index 764a067..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Licensed to the Apache Software Foundation (ASF) under one or more contributor
-       license agreements. See the NOTICE file distributed with this work for additional
-       information regarding copyright ownership. The ASF licenses this file to
-       You under the Apache License, Version 2.0 (the "License"); you may not use
-       this file except in compliance with the License. You may obtain a copy of
-       the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
-       by applicable law or agreed to in writing, software distributed under the
-       License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
-       OF ANY KIND, either express or implied. See the License for the specific
-       language governing permissions and limitations under the License. -->
-<project 
-       xmlns="http://maven.apache.org/POM/4.0.0" 
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-       <modelVersion>4.0.0</modelVersion>
-
-       <groupId>com.highstreet.technologies.info</groupId>
-       <artifactId>info-parent</artifactId>
-       <version>0.5.1-SNAPSHOT</version>
-       <packaging>pom</packaging>
-
-       <properties>
-               <log4j-version>1.2.16</log4j-version>
-               <slf4j-version>1.6.1</slf4j-version>
-       </properties>
-
-       <modules>
-               <module>impl</module>
-               <module>features</module>
-       </modules>
-
-       <dependencies>
-               <dependency>
-                       <groupId>javax.ws.rs</groupId>
-                       <artifactId>javax.ws.rs-api</artifactId>
-                       <version>2.0.1</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.slf4j</groupId>
-                       <artifactId>slf4j-api</artifactId>
-                       <version>${slf4j-version}</version>
-               </dependency>
-
-               <dependency>
-                       <groupId>junit</groupId>
-                       <artifactId>junit</artifactId>
-                       <version>4.12</version>
-                       <scope>test</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.slf4j</groupId>
-                       <artifactId>slf4j-log4j12</artifactId>
-                       <version>${slf4j-version}</version>
-                       <scope>test</scope>
-               </dependency>
-               <dependency>
-                       <groupId>log4j</groupId>
-                       <artifactId>log4j</artifactId>
-                       <version>${log4j-version}</version>
-                       <scope>test</scope>
-               </dependency>
-               <dependency>
-                       <groupId>org.json</groupId>
-                       <artifactId>json</artifactId>
-                       <version>20131018</version>
-               </dependency>
-       </dependencies>
-
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-compiler-plugin</artifactId>
-                               <version>3.3</version>
-                               <configuration>
-                                       <source>1.7</source>
-                                       <target>1.7</target>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.apache.felix</groupId>
-                               <artifactId>maven-bundle-plugin</artifactId>
-                               <version>3.0.1</version>
-                               <extensions>true</extensions>
-                               <configuration>
-                                       <instructions>
-                                               <_include>-bnd.bnd</_include>
-                                       </instructions>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-enforcer-plugin</artifactId>
-                               <version>3.0.0-M1</version>
-                               <executions>
-                                       <execution>
-                                               <id>enforce-maven</id>
-                                               <goals>
-                                                       <goal>enforce</goal>
-                                               </goals>
-                                               <configuration>
-                                                       <rules>
-                                                               <requireMavenVersion>
-                                                                       <version>3.0</version>
-                                                               </requireMavenVersion>
-                                                       </rules>
-                                               </configuration>
-                                       </execution>
-                               </executions>
-                       </plugin>
-               </plugins>
-       </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/pom.xml
deleted file mode 100644 (file)
index a857acb..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.opennetworking.otwg.wtp</groupId>
-        <artifactId>wtp-carbon</artifactId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-
-    <groupId>org.opennetworking.otwg.wtp</groupId>
-    <artifactId>apps</artifactId>
-
-    <name>ONF :: Wireless :: 4th POC Apps</name>
-    <packaging>pom</packaging>
-
-    <prerequisites>
-        <maven>3.3.3</maven>
-    </prerequisites>
-
-
-    <modules>
-        <!-- modified Wipro Apps from 2nd PoC -->
-        <module>commons/config-parent</module>
-        <module>commons/binding-parent</module>
-        <module>commons/configuration</module>
-       <module>devicemodel</module>
-        <module>devicemanager</module>
-        <module>websocketmanager</module>
-        <module>apigateway</module>
-        <module>info</module>
-        <module>helpServer</module>
-        <module>route</module> 
-  </modules>
-
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/pom.xml
deleted file mode 100644 (file)
index 8e569d3..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Copyright © 2017 ZTE and others. All rights reserved.
-
-This program and the accompanying materials are made available under the
-terms of the Eclipse Public License v1.0 which accompanies this distribution,
-and is available at http://www.eclipse.org/legal/epl-v10.html
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.opendaylight.mdsal</groupId>
-    <artifactId>binding-parent</artifactId>
-    <version>0.10.1-Carbon</version>
-    <relativePath/>
-  </parent>
-
-  <groupId>com.highstreet.technologies.odl.app</groupId>
-  <artifactId>route-api</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-  <packaging>bundle</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.opendaylight.mwtn</groupId>
-      <artifactId>devicemodel</artifactId>
-      <version>0.5.1-SNAPSHOT</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/src/main/yang/ltp-path@2017-05-26.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/src/main/yang/ltp-path@2017-05-26.yang
deleted file mode 100644 (file)
index 4cf3859..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-module ltp-path {
-  namespace "urn:onf:params:xml:ns:yang:ltp-path";
-  prefix ltp-path;
-
-  import core-model {
-    prefix core-model;
-  }
-
-  organization
-   "ONF (Open Networking Foundation) Open Transport Working Group -
-    Wireless Transport Project";
-  contact 
-    "WG Web: <https://www.opennetworking.org/technical-communities/areas/
-              specification/1931-optical-transport>
-     WG List:  <mailto:wireless-transport@login.opennetworking.org>
-     WG Chair: Lyndon Ong
-               <mailto:lyong@ciena.com>
-     WG Chair: Giorgio Cazzaniga
-               <mailto:giorgio.cazzaniga@sm-optics.com>
-     Editor:   Martin Skorupski
-               <mailto:martin.skorupski@highstreet-technologies.com>";
-  description 
-    "This module contains a collection of YANG definitions describing a 
-     telecommunication network path.";
-  revision 2017-05-26 {
-    description "Initial version";
-    reference "ltp-path, ONF core-model 1.2";
-  }
-
-  typedef layer-protocol-name-enumeration {
-    type enumeration {
-      enum ETH {
-        value 1;
-        description
-          "Identifying the layer of Ethernet.";
-      }
-      enum PTP {
-        value 2;
-        description
-          "Identifying the layer or the Precision Time Protocol.";
-       }
-    }
-
-    description
-      "The propagation of the layer protocol name.";
-  }
-
-  container ltp-path {
-    description
-      "Listing all the path-identifiers, used by RESTCONF interfaces to
-       address an entry in the ltp-path-list.";
-
-    leaf-list path-identifier {
-      type leafref {
-        path '/ltp-path/ltp-path-list/path-id';
-      }
-      description 
-        "List of reference values for existing path entries.";
-    }
-
-    list ltp-path-list {
-
-      key "path-id";
-
-      description
-        "A list of path found in the network.";
-
-      leaf path-id {
-        type string;
-        description
-          "A unique identifier of a path. It migth be beneficial to use the 
-           format as defined in RFC 4122 
-           (https://www.ietf.org/rfc/rfc4122.txt).";
-      }
-
-      leaf path-name {
-        type string;
-        description
-          "The human readable name of a path. It should include start 
-           and end point.";
-      }
-
-      leaf forwarding-direction {
-        type core-model:forwarding-direction;
-        description
-          "Defines the directionality of the path.";
-      }
-
-      leaf layer-protocol-name {
-        type layer-protocol-name-enumeration;
-        description
-          "Defines the layer of the path. Please see ONF CoreModel for 
-           further details.";
-      }
-
-      list logical-termination-point-list {
-
-        key "ltp-index";
-        min-elements 2;
-
-        description
-          "An ordered list of logical-termination points, defining the path.";
-
-        leaf ltp-index {
-          type string;
-          description
-            "The index of the LTP with in the list. The LTP with the highest
-             index is the end-point of the path. The LTP with the lowest
-             index is the start-point of the path.";
-        }
-
-        leaf ltp-reference {
-          type leafref {
-            path '/core-model:network-element/core-model:ltp/core-model:uuid';
-          }
-          description
-            "The reference value of a network-elements LTP.";
-        }
-
-        leaf physical-port-reference {
-          type string;
-          description
-            "A text label for the unmodelled physical port associated with 
-             the LTP. In many cases there is no associated physical port.";
-        }
-    
-        leaf node-reference {
-          type leafref {
-            path '/core-model:network-element/core-model:uuid';
-          }
-          description
-            "A reference value identifying a network-element.";
-        }
-      }
-   }
-  }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/src/main/yang/route.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/src/main/yang/route.yang
deleted file mode 100644 (file)
index 04d9596..0000000
+++ /dev/null
@@ -1,94 +0,0 @@
-module route {
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:route";
-    prefix "route";
-
-    revision "2015-01-05" {
-        description "Initial revision of route model";
-    }
-
-    grouping fc_desc {
-        list fc {
-            key 'nodeName';
-            leaf nodeName {
-                type string;
-            }
-            leaf aEnd {
-                type string;
-            }
-            leaf zEnd {
-                type string;
-            }
-        }
-    }
-    grouping status_g {
-        leaf status {
-            type enumeration {
-                enum successful;
-                enum failure;
-            }
-        }
-    }
-    rpc create {
-        input {
-            uses fc_desc;
-            leaf vlanid {
-                type int32;
-            }
-        }
-        output {
-            uses status_g;
-        }
-    }
-    rpc delete {
-        input {
-            leaf vlanid {
-                type int32;
-            }
-        }
-        output {
-            uses status_g;
-        }
-    }
-    rpc create_follow_topo {
-        input {
-            leaf vlanid {
-                type int32;
-            }
-        }
-        output {
-            uses status_g;
-        }
-    }
-    rpc switch_follow_topo {
-        input {
-            leaf vlanid {
-                type int32;
-            }
-        }
-        output {
-            uses status_g;
-        }
-    }
-    rpc restore_follow_topo {
-        input {
-            leaf vlanid {
-                type int32;
-            }
-        }
-        output {
-            uses status_g;
-        }
-    }
-    rpc read_airInterface {
-        input {
-            leaf lp_id {
-                type string;
-            }
-            leaf nodeName {
-                type string;
-            }
-        }
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/src/main/yang/threshold@2017-06-15.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/api/src/main/yang/threshold@2017-06-15.yang
deleted file mode 100644 (file)
index 0b8d3af..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-module threshold {
-  namespace "urn:onf:params:xml:ns:yang:ltp-path";
-  prefix threshold;
-
-  import core-model {
-    prefix core-model;
-  }
-
-  organization
-   "ONF (Open Networking Foundation) Open Transport Working Group -
-    Wireless Transport Project";
-  contact 
-    "WG Web: <https://www.opennetworking.org/technical-communities/areas/
-              specification/1931-optical-transport>
-     WG List:  <mailto:wireless-transport@login.opennetworking.org>
-     WG Chair: Lyndon Ong
-               <mailto:lyong@ciena.com>
-     WG Chair: Giorgio Cazzaniga
-               <mailto:giorgio.cazzaniga@sm-optics.com>
-     Editor:   Liu Weihua
-               <mailto:liu.wei91@zte.com.cn>";
-  description 
-    "This module contains a configuration of YANG definitions describing threshold of a ethernet path.";
-  revision 2017-06-15 {
-    description "Initial version";
-  }
-
-  grouping threshold_g {
-        leaf max-serialization-delay {
-          type uint64;
-          default 1;
-          description
-            "unit ms";
-        }
-        leaf minimum-bandwidth {
-          type uint64;
-          default 200000;
-          description
-            "unit kbit/s";
-        }
-  }
-
-  container threshold-of-path {
-        container threshold {
-            uses threshold_g;
-        }
-  }
-
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/features/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/features/pom.xml
deleted file mode 100644 (file)
index e1d3311..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Copyright © 2017 ZTE and others. All rights reserved.
-
-This program and the accompanying materials are made available under the
-terms of the Eclipse Public License v1.0 which accompanies this distribution,
-and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-   <parent>
-        <groupId>org.opendaylight.odlparent</groupId>
-        <artifactId>features-parent</artifactId>
-        <version>1.8.1-Carbon</version>
-        <relativePath />
-    </parent>
-
-  <groupId>com.highstreet.technologies.odl.app</groupId>
-  <artifactId>route-features</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-  <name>${project.artifactId}</name>
-
-   <properties>
-        <dlux.version>0.5.1-Carbon</dlux.version>
-        <decanter.version>1.1.0</decanter.version>
-        <elasticsearch.version>2.2.0</elasticsearch.version>
-        <mdsal.version>1.5.1-Carbon</mdsal.version>
-        <mdsal.model.version>0.10.1-Carbon</mdsal.model.version>
-        <restconf.version>1.5.1-Carbon</restconf.version>
-        <yangtools.version>1.1.1-Carbon</yangtools.version>
-        <openflow.plugin.version>0.4.1-Carbon</openflow.plugin.version>
-        <configfile.directory>etc/opendaylight/karaf</configfile.directory>
-        <netconf.version>1.2.1-Carbon</netconf.version>
-        <jackson.version>2.4.2</jackson.version>
-        <jersey.version>1.17</jersey.version>
-        <xerces.version>2.11.0</xerces.version>
-    </properties>
-
-  <prerequisites>
-    <maven>3.1.1</maven>
-  </prerequisites>
-
-
-  <dependencyManagement>
-    <dependencies>
-      <!-- project specific dependencies -->
-      <dependency>
-        <groupId>org.opendaylight.controller</groupId>
-        <artifactId>mdsal-artifacts</artifactId>
-        <version>${mdsal.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.netconf</groupId>
-        <artifactId>restconf-artifacts</artifactId>
-        <version>${restconf.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.opendaylight.yangtools</groupId>
-        <artifactId>yangtools-artifacts</artifactId>
-        <version>${yangtools.version}</version>
-        <type>pom</type>
-        <scope>import</scope>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.opendaylight.yangtools</groupId>
-      <artifactId>features-yangtools</artifactId>
-      <classifier>features</classifier>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.mdsal.model</groupId>
-      <artifactId>features-mdsal-model</artifactId>
-      <version>${mdsal.model.version}</version>
-      <classifier>features</classifier>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.controller</groupId>
-      <artifactId>features-mdsal</artifactId>
-      <classifier>features</classifier>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.netconf</groupId>
-      <artifactId>features-restconf</artifactId>
-      <classifier>features</classifier>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.dlux</groupId>
-      <artifactId>features-dlux</artifactId>
-      <classifier>features</classifier>
-      <version>${dlux.version}</version>
-      <type>xml</type>
-      <scope>runtime</scope>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>route-impl</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${project.groupId}</groupId>
-      <artifactId>route-api</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/features/src/main/features/features.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/features/src/main/features/features.xml
deleted file mode 100644 (file)
index 61ee7fb..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright © 2017 ZTE and others. All rights reserved.
-
-This program and the accompanying materials are made available under the
-terms of the Eclipse Public License v1.0 which accompanies this distribution,
-and is available at http://www.eclipse.org/legal/epl-v10.html
--->
-<features name="odl-route-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-          xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-    <repository>mvn:org.opendaylight.yangtools/features-yangtools/{{VERSION}}/xml/features</repository>
-    <repository>mvn:org.opendaylight.controller/features-mdsal/{{VERSION}}/xml/features</repository>
-    <repository>mvn:org.opendaylight.mdsal.model/features-mdsal-model/{{VERSION}}/xml/features</repository>
-    <repository>mvn:org.opendaylight.netconf/features-restconf/{{VERSION}}/xml/features</repository>
-    <repository>mvn:org.opendaylight.dlux/features-dlux/{{VERSION}}/xml/features</repository>
-    <feature name='odl-route' version='${project.version}' description='OpenDaylight :: route'>
-        <feature version="${restconf.version}">odl-mdsal-apidocs</feature>
-        <feature version="${mdsal.version}">odl-mdsal-xsql</feature>
-        <feature version="${dlux.version}">odl-dlux-yangui</feature>
-        <feature version='${mdsal.version}'>odl-mdsal-broker</feature>
-        <feature version='${mdsal.model.version}'>odl-mdsal-models</feature>
-        <feature version="${restconf.version}">odl-restconf</feature>
-        <bundle>mvn:net.iharder/base64/2.3.9</bundle>
-        <bundle>mvn:com.github.briandilley.jsonrpc4j/jsonrpc4j/1.2.0</bundle>
-        <bundle>mvn:org.opendaylight.mwtn/devicemodel/{{VERSION}}</bundle>
-        <bundle>mvn:com.highstreet.technologies.odl.app/route-api/{{VERSION}}</bundle>
-        <bundle>mvn:com.highstreet.technologies.odl.app/route-impl/{{VERSION}}</bundle>
-    </feature>
-</features>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/pom.xml
deleted file mode 100644 (file)
index b03b944..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright © 2017 ZTE and others. All rights reserved.
-
-This program and the accompanying materials are made available under the
-terms of the Eclipse Public License v1.0 which accompanies this distribution,
-and is available at http://www.eclipse.org/legal/epl-v10.html
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>org.opendaylight.mwtn</groupId>
-        <artifactId>config-parent</artifactId>
-        <version>0.5.1-SNAPSHOT</version>
-        <relativePath>../../commons/config-parent</relativePath>
-    </parent>
-
-    <groupId>com.highstreet.technologies.odl.app</groupId>
-    <artifactId>route-impl</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
-    <packaging>bundle</packaging>
-
-    <dependencies>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>route-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <!-- Testing Dependencies -->
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.mockito</groupId>
-            <artifactId>mockito-core</artifactId>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.mdsal.model</groupId>
-            <artifactId>ietf-topology</artifactId>
-            <version>${ietf.topology.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.netconf</groupId>
-            <artifactId>sal-netconf-connector</artifactId>
-            <version>${restconf.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-annotations</artifactId>
-        </dependency>
-    </dependencies>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/PathHolder.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/PathHolder.java
deleted file mode 100644 (file)
index 3365d59..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl;
-
-import com.highstreet.technologies.odl.app.impl.delegates.LtpInOdlCreator;
-import com.highstreet.technologies.odl.app.impl.delegates.PathDelegate;
-import com.highstreet.technologies.odl.app.impl.tools.NeExecutor;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-
-import java.util.ArrayList;
-
-/**
- * Created by odl on 17-6-2.
- */
-public class PathHolder
-{
-    public PathHolder(DataBroker dataBroker, Integer vlanId)
-    {
-        this.pathDelegate = new PathDelegate(dataBroker, vlanId);
-    }
-
-    private final PathDelegate pathDelegate;
-    private ArrayList<NeExecutor> list = new ArrayList<>();
-    private LtpInOdlCreator ltpCreator = new LtpInOdlCreator();
-
-    public void add(NeExecutor to)
-    {
-        list.add(to);
-        pathDelegate.add(to.getLtp());
-    }
-
-    public void commit() throws TransactionCommitFailedException
-    {
-        list.forEach(NeExecutor::commit);
-        pathDelegate.commit();
-    }
-
-    public void clear(int vlanId) throws TransactionCommitFailedException
-    {
-        list.forEach(neExecutor -> neExecutor.clear(vlanId));
-        pathDelegate.clear();
-    }
-
-    public LtpInOdlCreator getLtpCreator()
-    {
-        return ltpCreator;
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/RouteProvider.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/RouteProvider.java
deleted file mode 100644 (file)
index 5a89fd7..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright © 2017 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl;
-
-import com.highstreet.technologies.odl.app.impl.tools.DataBrokerHolder;
-import com.highstreet.technologies.odl.app.impl.tools.MountPointServiceHolder;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.MountPointService;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker;
-import org.opendaylight.controller.sal.binding.api.RpcProviderRegistry;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.RouteService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static com.highstreet.technologies.odl.app.impl.tools.RPCHolder.rpc;
-
-public class RouteProvider
-{
-    public RouteProvider(
-            final DataBroker dataBroker, final RpcProviderRegistry rpcRegistry, final MountPointService mountService)
-    {
-        this.dataBroker = dataBroker;
-        this.rpcRegistry = rpcRegistry;
-        this.mountService = mountService;
-    }
-
-    private static final Logger LOG = LoggerFactory.getLogger(RouteProvider.class);
-    private final DataBroker dataBroker;
-    private final RpcProviderRegistry rpcRegistry;
-    private final MountPointService mountService;
-    private BindingAwareBroker.RpcRegistration<RouteService> service;
-
-    /**
-     * Method called when the blueprint container is created.
-     */
-    public void init()
-    {
-        LOG.info("RouteProvider Session Initiated --- created at 16:29-0627-2017");
-        service = rpcRegistry.addRpcImplementation(
-                RouteService.class, rpc = new RouteRPC(dataBroker));
-        MountPointServiceHolder.setMountPointService(mountService);
-        DataBrokerHolder.setDataBroker(dataBroker);
-    }
-
-    /**
-     * Method called when the blueprint container is destroyed.
-     */
-    public void close()
-    {
-        LOG.info("RouteProvider Closed");
-        if (service != null)
-            service.close();
-    }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/RouteRPC.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/RouteRPC.java
deleted file mode 100644 (file)
index 51ec99b..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl;
-
-import com.highstreet.technologies.odl.app.impl.delegates.FC;
-import com.highstreet.technologies.odl.app.impl.delegates.PredefinePath;
-import com.highstreet.technologies.odl.app.impl.tools.FC2Executor;
-import com.highstreet.technologies.odl.app.impl.tools.JsonUtil;
-import com.highstreet.technologies.odl.app.impl.tools.MountPointServiceHolder;
-import com.highstreet.technologies.odl.app.impl.tools.NeExecutor;
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.air._interface.pac.AirInterfaceConfiguration;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.air._interface.pac.AirInterfaceStatus;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.*;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.fc_desc.Fc;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.concurrent.Future;
-
-import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
-import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL;
-import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.StatusG.Status;
-import static org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.StatusG.Status.Successful;
-
-/**
- * Created by olinchy on 5/22/17.
- */
-public class RouteRPC implements RouteService
-{
-    public RouteRPC(DataBroker dataBroker)
-    {
-        this.dataBroker = dataBroker;
-        fc2Executor = new FC2Executor();
-    }
-
-    private static final Logger LOG = LoggerFactory.getLogger(RouteRPC.class);
-    public static HashMap<String, NeExecutor> ne_map = new HashMap<>();
-    private static HashMap<Integer, PathHolder> toClear = new HashMap<>();
-    private static PredefinePath predefinePath;
-
-    static
-    {
-        predefinePath = JsonUtil.toObject(
-                RouteRPC.class.getClassLoader().getResource("topology.json"), PredefinePath.class);
-    }
-
-    private final DataBroker dataBroker;
-    private FC2Executor fc2Executor;
-
-    @Override
-    public Future<RpcResult<Void>> readAirInterface(
-            ReadAirInterfaceInput input)
-    {
-        String lpName = input.getLpId();
-        String nodeName = input.getNodeName();
-        NeExecutor executor = ne_map.computeIfAbsent(
-                nodeName, n -> new NeExecutor(MountPointServiceHolder.getMountPoint(n)));
-        try
-        {
-            AirInterfaceConfiguration airInterfaceConfiguration = executor.getUnderAirPac(
-                    lpName, AirInterfaceConfiguration.class, CONFIGURATION);
-            AirInterfaceStatus airInterfaceStatus = executor.getUnderAirPac(
-                    lpName, AirInterfaceStatus.class, OPERATIONAL);
-            LOG.info(airInterfaceConfiguration.toString());
-            LOG.info(airInterfaceStatus != null ? airInterfaceStatus.toString() : "airInterfaceStatus is null");
-        }
-        catch (Exception e)
-        {
-            LOG.warn("", e);
-        }
-
-        return null;
-    }
-
-    @Override
-    public Future<RpcResult<RestoreFollowTopoOutput>> restoreFollowTopo(
-            RestoreFollowTopoInput input)
-    {
-        RestoreFollowTopoOutputBuilder builder = new RestoreFollowTopoOutputBuilder();
-        builder.setStatus(switchTo(
-                input.getVlanid(),
-                Arrays.asList(predefinePath.paths.get(String.valueOf(input.getVlanid())).main_ltps)));
-        return RpcResultBuilder.success(builder.build()).buildFuture();
-    }
-
-    @Override
-    public Future<RpcResult<CreateFollowTopoOutput>> createFollowTopo(
-            CreateFollowTopoInput input)
-    {
-        CreateFollowTopoOutputBuilder builder = new CreateFollowTopoOutputBuilder();
-        int vlanId = input.getVlanid();
-        ArrayList<Fc> listFc = new ArrayList<>();
-        Arrays.stream(predefinePath.paths.get(String.valueOf(vlanId)).main_ltps).forEach(fc -> listFc.add(fc.toFc()));
-
-        builder.setStatus(this.create(vlanId, listFc));
-        LOG.info("creation follow the topology finished");
-        return RpcResultBuilder.success(builder.build()).buildFuture();
-    }
-
-    @Override
-    public Future<RpcResult<SwitchFollowTopoOutput>> switchFollowTopo(
-            SwitchFollowTopoInput input)
-    {
-        SwitchFollowTopoOutputBuilder builder = new SwitchFollowTopoOutputBuilder();
-        builder.setStatus(
-                switchTo(
-                        input.getVlanid(),
-                        Arrays.asList(predefinePath.paths.get(String.valueOf(input.getVlanid())).backup_ltps)));
-        LOG.info("switch follow the topology finished");
-        return RpcResultBuilder.success(builder.build()).buildFuture();
-    }
-
-    @Override
-    public Future<RpcResult<DeleteOutput>> delete(
-            DeleteInput input)
-    {
-        DeleteOutputBuilder builder = new DeleteOutputBuilder();
-        builder.setStatus(this.delete(input.getVlanid()));
-        LOG.info("delete finished");
-        return RpcResultBuilder.success(builder.build()).buildFuture();
-    }
-
-    @Override
-    public Future<RpcResult<CreateOutput>> create(
-            CreateInput input)
-    {
-        CreateOutputBuilder builder = new CreateOutputBuilder();
-        builder.setStatus(this.create(input.getVlanid(), input.getFc()));
-        return RpcResultBuilder.success(builder.build()).buildFuture();
-    }
-
-    private Status switchTo(int vlanId, List<FC> list)
-    {
-        this.delete(vlanId);
-        ArrayList<Fc> listFc = new ArrayList<>();
-        list.forEach(
-                fc -> listFc.add(fc.toFc()));
-        return this.create(vlanId, listFc);
-    }
-
-    public Status delete(int vlanId)
-    {
-        try
-        {
-            toClear.remove(vlanId).clear(vlanId);
-        }
-        catch (Exception e)
-        {
-            LOG.warn("execute delete caught exception", e);
-        }
-
-        return Successful;
-    }
-
-    private Status create(int vlanId, List<Fc> fcList)
-    {
-        PathHolder pathHolder = new PathHolder(dataBroker, vlanId);
-        try
-        {
-            fcList.forEach(
-                    fc ->
-                    {
-                        try
-                        {
-                            pathHolder.add(fc2Executor.to(fc, vlanId, pathHolder.getLtpCreator()));
-                        }
-                        catch (ReadFailedException e)
-                        {
-                            LOG.warn("read failed", e);
-                        }
-                    });
-            pathHolder.commit();
-        }
-        catch (Exception e)
-        {
-            LOG.warn("creating LtpPath caught exception", e);
-        }
-        toClear.put(vlanId, pathHolder);
-
-        return Successful;
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/FC.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/FC.java
deleted file mode 100644 (file)
index df4bb53..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.delegates;
-
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.fc_desc.Fc;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.fc_desc.FcBuilder;
-
-/**
- * Created by odl on 17-6-5.
- */
-public class FC
-{
-    public String node;
-    public String aEnd;
-    public String zEnd;
-
-    public Fc toFc()
-    {
-        FcBuilder fcBuilder = new FcBuilder();
-        fcBuilder.setNodeName(node);
-        fcBuilder.setAEnd(aEnd);
-        fcBuilder.setZEnd(zEnd);
-        return fcBuilder.build();
-    }
-
-    @Override
-    public String toString()
-    {
-        return "FC{" +
-                "node='" + node + '\'' +
-                ", aEnd='" + aEnd + '\'' +
-                ", zEnd='" + zEnd + '\'' +
-                '}';
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/LtpInOdlCreator.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/LtpInOdlCreator.java
deleted file mode 100644 (file)
index a764f85..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.delegates;
-
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.UniversalId;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.network.element.Ltp;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.ltp.path.list.LogicalTerminationPointList;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.ltp.path.list.LogicalTerminationPointListBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.ltp.path.list.LogicalTerminationPointListKey;
-
-/**
- * Created by odl on 17-5-30.
- */
-public class LtpInOdlCreator
-{
-    public LtpInOdlCreator()
-    {
-    }
-
-    private int index = 0;
-
-    public LogicalTerminationPointList create(String neName, String clientLtpName, Ltp serverLtp)
-    {
-        LogicalTerminationPointListBuilder builder = new LogicalTerminationPointListBuilder();
-        builder.setPhysicalPortReference(
-                serverLtp.getPhysicalPortReference() == null ? null : serverLtp.getPhysicalPortReference().get(0));
-        builder.setNodeReference(new UniversalId(neName));
-        builder.setLtpIndex(String.valueOf(index++));
-        builder.setKey(new LogicalTerminationPointListKey(builder.getLtpIndex()));
-        builder.setLtpReference(new UniversalId(clientLtpName));
-        return builder.build();
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/Path.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/Path.java
deleted file mode 100644 (file)
index 8d81d65..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.delegates;
-
-import java.util.Arrays;
-
-/**
- * Created by odl on 17-6-5.
- */
-public class Path
-{
-    public FC[] main_ltps;
-    public FC[] backup_ltps;
-
-    @Override
-    public String toString()
-    {
-        return "Path{" +
-                "main_ltps=" + Arrays.toString(main_ltps) +
-                ", backup_ltps=" + Arrays.toString(backup_ltps) +
-                '}';
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/PathDelegate.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/PathDelegate.java
deleted file mode 100644 (file)
index 096b9c8..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.delegates;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.ReadWriteTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.TransactionCommitFailedException;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.ForwardingDirection;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.LayerProtocolNameEnumeration;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.LtpPath;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.LtpPathList;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.LtpPathListBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.LtpPathListKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.ltp.path.list.LogicalTerminationPointList;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.UUID;
-
-import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
-
-/**
- * Created by odl on 17-5-30.
- */
-public class PathDelegate
-{
-    private static final Logger LOG = LoggerFactory.getLogger(PathDelegate.class);
-
-    public PathDelegate(DataBroker dataBroker, Integer vlanId)
-    {
-        this.dataBroker = dataBroker;
-        this.vlanId = vlanId;
-        initPathBuilder();
-    }
-
-    private void initPathBuilder()
-    {
-        this.pathBuilder = new LtpPathListBuilder();
-        pathBuilder.setForwardingDirection(ForwardingDirection.Bidirectional);
-        pathBuilder.setLayerProtocolName(LayerProtocolNameEnumeration.ETH);
-        String pathId;
-        pathBuilder.setKey(new LtpPathListKey(pathId = UUID.randomUUID().toString()));
-        pathBuilder.setPathId(pathId);
-    }
-
-    private static InstanceIdentifier<LtpPath> LTP_PATH_ID = InstanceIdentifier.create(LtpPath.class);
-    private final Integer vlanId;
-    private DataBroker dataBroker;
-    private LtpPathListBuilder pathBuilder;
-
-    public void add(List<LogicalTerminationPointList> ltpList)
-    {
-        if (pathBuilder.getLogicalTerminationPointList() == null)
-            pathBuilder.setLogicalTerminationPointList(new ArrayList<>());
-        pathBuilder.getLogicalTerminationPointList().addAll(ltpList);
-    }
-
-    public void commit() throws TransactionCommitFailedException
-    {
-        try
-        {
-            pathBuilder.setPathName(valueAt(pathBuilder.getLogicalTerminationPointList(), 0) + "_" + valueAt(
-                    pathBuilder.getLogicalTerminationPointList(), -1) + "_" + vlanId);
-            ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
-            transaction.put(
-                    CONFIGURATION, LTP_PATH_ID.child(LtpPathList.class, pathBuilder.getKey()),
-                    pathBuilder.build());
-
-            transaction.submit().checkedGet();
-        } catch (Exception e)
-        {
-            LOG.warn("caught exception when commit to ltpPath", e);
-        }
-    }
-
-    private String valueAt(List<LogicalTerminationPointList> listT, int index)
-    {
-        if (index == -1 || index >= listT.size())
-            index = listT.size() - 1;
-
-        return listT.get(index).getLtpReference().getValue();
-    }
-
-    public void clear() throws TransactionCommitFailedException
-    {
-        ReadWriteTransaction transaction = dataBroker.newReadWriteTransaction();
-        transaction.delete(
-                CONFIGURATION, LTP_PATH_ID.child(LtpPathList.class, pathBuilder.getKey()));
-
-        transaction.submit().checkedGet();
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/PredefinePath.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/delegates/PredefinePath.java
deleted file mode 100644 (file)
index cee373f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.delegates;
-
-import java.util.HashMap;
-
-/**
- * Created by odl on 17-6-5.
- */
-public class PredefinePath
-{
-    public HashMap<String, Path> paths;
-
-    @Override
-    public String toString()
-    {
-        return "PredefinePath{" +
-                "paths=" + paths +
-                '}';
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/listener/ACMListener.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/listener/ACMListener.java
deleted file mode 100644 (file)
index f30c694..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.listener;
-
-import com.highstreet.technologies.odl.app.impl.tools.BandwidthCalculator;
-import com.highstreet.technologies.odl.app.impl.tools.DataBrokerHolder;
-import com.highstreet.technologies.odl.app.impl.tools.NeExecutor;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170615.ThresholdOfPath;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170615.threshold.of.path.Threshold;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.*;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.air._interface.pac.AirInterfaceConfiguration;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.mw.air._interface.pac.AirInterfaceStatus;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
-import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.OPERATIONAL;
-
-/**
- * Created by odl on 17-6-6.
- */
-public class ACMListener implements MicrowaveModelListener
-{
-    public ACMListener(NeExecutor ne)
-    {
-        this.ne = ne;
-    }
-
-    private static final Logger LOG = LoggerFactory.getLogger(ACMListener.class);
-    private static Double bandwidth;
-
-    private final NeExecutor ne;
-
-    @Override
-    public void onAttributeValueChangedNotification(
-            AttributeValueChangedNotification notification)
-    {
-        new Thread(() ->
-        {
-            synchronized (ne)
-            {
-                if (bandwidth == null)
-                {
-                    readBandwidthThreshold();
-                }
-                try
-                {
-                    if (notification.getAttributeName().equalsIgnoreCase("modulationCur"))
-                    {
-                        LOG.info("received notification of value changed of modulationCur, changed to " + notification.getNewValue());
-                        String lpId_airInterface = notification.getObjectIdRef().getValue();
-                        if (ne.isLtpOfThisOnPath(lpId_airInterface))
-                        {
-                            AirInterfaceConfiguration airInterfaceConfiguration = ne.getUnderAirPac(
-                                    lpId_airInterface, AirInterfaceConfiguration.class, CONFIGURATION);
-                            AirInterfaceStatus airInterfaceStatus = ne.getUnderAirPac(
-                                    lpId_airInterface, AirInterfaceStatus.class, OPERATIONAL);
-
-                            Double txCapacity = new BandwidthCalculator(
-                                    airInterfaceConfiguration.getTxChannelBandwidth(),
-                                    airInterfaceStatus.getModulationCur(),
-                                    airInterfaceStatus.getCodeRateCur()).calc();
-                            LOG.info("new txCapacity is " + txCapacity);
-                            if (txCapacity < bandwidth)
-                            {
-                                LOG.info("new txCapacity is lower than bandwidth " + bandwidth);
-                                ne.reportSwitch();
-                            }
-                        }
-                    }
-                } catch (Exception e)
-                {
-                    LOG.warn("handling attribute change: " + notification + " caught exception!", e);
-                }
-            }
-        }).start();
-    }
-
-    private void readBandwidthThreshold()
-    {
-        ReadOnlyTransaction readOnlyTransaction = DataBrokerHolder.getDataBroker().newReadOnlyTransaction();
-        InstanceIdentifier<Threshold> instanceIdentifier = InstanceIdentifier.create(ThresholdOfPath.class).child(
-                Threshold.class);
-        try
-        {
-            Threshold threshold = readOnlyTransaction.read(CONFIGURATION, instanceIdentifier).get().get();
-            bandwidth = threshold.getMinimumBandwidth().doubleValue();
-        } catch (Exception e)
-        {
-            LOG.warn("", e);
-        } finally
-        {
-            readOnlyTransaction.close();
-        }
-    }
-
-    @Override
-    public void onObjectCreationNotification(
-            ObjectCreationNotification notification)
-    {
-    }
-
-    @Override
-    public void onObjectDeletionNotification(
-            ObjectDeletionNotification notification)
-    {
-    }
-
-    @Override
-    public void onProblemNotification(
-            ProblemNotification notification)
-    {
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/BandwidthCalculator.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/BandwidthCalculator.java
deleted file mode 100644 (file)
index f63a60d..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.tools;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.text.DecimalFormat;
-
-import static com.google.common.math.DoubleMath.log2;
-
-/**
- * Created by odl on 17-6-8.
- */
-public class BandwidthCalculator
-{
-    private static final Logger LOG = LoggerFactory.getLogger(BandwidthCalculator.class);
-
-    public BandwidthCalculator(Integer txChannelBandwidth, Short modulationCur, Byte codeRateCur)
-    {
-        LOG.info("bandwidth: " + txChannelBandwidth + " modulationCur: " + modulationCur + " codeRate: " + codeRateCur);
-        this.result = txChannelBandwidth * log2(modulationCur) * (0.8) / 1.15;
-    }
-
-    private static DecimalFormat df = new DecimalFormat("#.00");
-    private final double result;
-
-    public Double calc(Unit unit)
-    {
-        return Double.valueOf(df.format(unit.convert(result, Unit.k_bits_s)));
-    }
-
-    public Double calc()
-    {
-        return Double.valueOf(df.format(result));
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/DataBrokerHolder.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/DataBrokerHolder.java
deleted file mode 100644 (file)
index f586e34..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.tools;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-
-/**
- * Created by olinchy on 6/15/17.
- */
-public class DataBrokerHolder
-{
-    private static DataBroker dataBroker;
-
-    public static DataBroker getDataBroker()
-    {
-        return dataBroker;
-    }
-
-    public static void setDataBroker(DataBroker dataBroker)
-    {
-        DataBrokerHolder.dataBroker = dataBroker;
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/FC2Executor.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/FC2Executor.java
deleted file mode 100644 (file)
index 5b6ed88..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.tools;
-
-import com.highstreet.technologies.odl.app.impl.delegates.LtpInOdlCreator;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.fc_desc.Fc;
-
-/**
- * Created by odl on 17-6-3.
- */
-public class FC2Executor
-{
-    public NeExecutor to(Fc fc, Integer vlanid, LtpInOdlCreator ltpCreator) throws ReadFailedException
-    {
-        return new NeExecutor(fc, vlanid, ltpCreator);
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/JsonUtil.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/JsonUtil.java
deleted file mode 100644 (file)
index e69e4b6..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.tools;
-
-import com.fasterxml.jackson.databind.ObjectMapper;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.text.SimpleDateFormat;
-
-import static com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES;
-import static com.fasterxml.jackson.databind.DeserializationFeature.READ_ENUMS_USING_TO_STRING;
-import static com.fasterxml.jackson.databind.SerializationFeature.WRITE_ENUMS_USING_TO_STRING;
-
-/**
- * Created by olinchy on 6/18/14 for MO_JAVA.
- */
-public class JsonUtil
-{
-    private static final Logger LOG = LoggerFactory.getLogger(JsonUtil.class);
-    private static ObjectMapper mapper;
-
-    static
-    {
-        mapper = new ObjectMapper();
-        mapper.configure(WRITE_ENUMS_USING_TO_STRING, true);
-        mapper.configure(FAIL_ON_UNKNOWN_PROPERTIES, false);
-        mapper.configure(READ_ENUMS_USING_TO_STRING, true);
-        mapper.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
-    }
-
-    public static <T> T toObject(URL content, Class<T> clazz)
-    {
-        try
-        {
-            return mapper.readValue(content, clazz);
-        }
-        catch (IOException e)
-        {
-            LOG.warn("read value failed !", e);
-            return null;
-        }
-    }
-
-    public static <T> T toObject(File content, Class<T> clazz)
-    {
-        try
-        {
-            return mapper.readValue(content, clazz);
-        }
-        catch (IOException e)
-        {
-            LOG.warn("read value failed !", e);
-            return null;
-        }
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/MountPointServiceHolder.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/MountPointServiceHolder.java
deleted file mode 100644 (file)
index d13237d..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.tools;
-
-import com.google.common.base.Optional;
-import org.opendaylight.controller.md.sal.binding.api.MountPoint;
-import org.opendaylight.controller.md.sal.binding.api.MountPointService;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.netconf.node.topology.rev150114.network.topology.topology.topology.types.TopologyNetconf;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NodeId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.TopologyId;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node;
-import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.NodeKey;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Created by odl on 17-6-3.
- */
-public class MountPointServiceHolder
-{
-    private static MountPointService mountPointService;
-
-    public static void setMountPointService(MountPointService mountPointService)
-    {
-        MountPointServiceHolder.mountPointService = mountPointService;
-    }
-
-    private static final Logger LOG = LoggerFactory.getLogger(MountPointServiceHolder.class);
-
-    public static MountPoint getMountPoint(String nodeName)
-    {
-        try
-        {
-            Optional<MountPoint> opMountP = mountPointService.getMountPoint(
-                    InstanceIdentifier.create(NetworkTopology.class).child(Topology.class, new TopologyKey(
-                            new TopologyId(TopologyNetconf.QNAME.getLocalName()))).child(Node.class, new NodeKey(
-                            new NodeId(nodeName))));
-            return opMountP.get();
-        } catch (Exception e)
-        {
-            LOG.warn("mount " + nodeName + "failed!");
-            return null;
-        }
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/NeExecutor.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/NeExecutor.java
deleted file mode 100644 (file)
index 16049f9..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.tools;
-
-import com.google.common.base.Optional;
-import com.highstreet.technologies.odl.app.impl.delegates.LtpInOdlCreator;
-import com.highstreet.technologies.odl.app.impl.listener.ACMListener;
-import org.opendaylight.controller.md.sal.binding.api.*;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.*;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.local._class.g.LocalId;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.local._class.g.LocalIdBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.logical.termination.point.g.Lp;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.logical.termination.point.g.LpBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.logical.termination.point.g.LpKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.name.g.Name;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.name.g.NameBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.network.element.FdBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.network.element.Ltp;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.network.element.LtpBuilder;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.core.model.rev170320.network.element.LtpKey;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.ltp.path.rev170526.ltp.path.ltp.path.list.LogicalTerminationPointList;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwAirInterfacePac;
-import org.opendaylight.yang.gen.v1.urn.onf.params.xml.ns.yang.microwave.model.rev170324.MwAirInterfacePacKey;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.RestoreFollowTopoInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.SwitchFollowTopoInputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.route.rev150105.fc_desc.Fc;
-import org.opendaylight.yangtools.yang.binding.ChildOf;
-import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.*;
-import java.util.concurrent.ExecutionException;
-
-import static com.highstreet.technologies.odl.app.impl.tools.MountPointServiceHolder.getMountPoint;
-import static com.highstreet.technologies.odl.app.impl.tools.RPCHolder.rpc;
-import static org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType.CONFIGURATION;
-
-/**
- * Created by odl on 17-6-3.
- */
-public class NeExecutor
-{
-    private boolean isBroken = false;
-
-    public NeExecutor(Fc fc, Integer vlanid, LtpInOdlCreator ltpCreator)
-    {
-        this(getMountPoint(fc.getNodeName()));
-        this.vlanId = vlanid;
-        process(fc, vlanid, ltpCreator);
-    }
-
-    public NeExecutor(MountPoint mountPoint)
-    {
-        if (mountPoint != null)
-        {
-            this.dataBroker = mountPoint.getService(DataBroker.class).get();
-            mountPoint.getService(NotificationService.class).get().registerNotificationListener(new ACMListener(this));
-        } else
-        {
-            this.isBroken = true;
-            LOG.warn("mount point is null");
-        }
-    }
-
-    private List<LogicalTerminationPointList> process(Fc fc, Integer vlanId, LtpInOdlCreator ltpInOdlCreator)
-    {
-        try
-        {
-            if (isBroken)
-                return new ArrayList<>();
-            getNe();
-
-            // start the creation of fc
-            // add client ltps
-            ltp.add(addClientLtpTo(neBuilder, vlanId, fc.getAEnd(), ltpInOdlCreator));
-            ltp.add(addClientLtpTo(neBuilder, vlanId, fc.getZEnd(), ltpInOdlCreator));
-
-            // add fc into fd
-            FdBuilder fdBuilder = new FdBuilder(neBuilder.getFd().remove(0));
-            if (fdBuilder.getFc() == null)
-                fdBuilder.setFc(new ArrayList<>());
-
-            fdBuilder.getFc().add(new UniversalId(buildFcName(ltp)));
-
-            neBuilder.getFd().add(fdBuilder.build());
-        } catch (Throwable e)
-        {
-            LOG.warn(e.getMessage(), e);
-        }
-
-        return ltp;
-    }
-
-    private void getNe() throws ReadFailedException
-    {
-        InstanceIdentifier<NetworkElement> path = InstanceIdentifier.create(NetworkElement.class);
-        ReadOnlyTransaction networkElementTransaction = dataBroker.newReadOnlyTransaction();
-        try
-        {
-            Optional<NetworkElement> networkElementOpt = networkElementTransaction.read(
-                    CONFIGURATION, path).checkedGet();
-            if (networkElementOpt.isPresent())
-            {
-                this.neBuilder = new NetworkElementBuilder(oldNe = networkElementOpt.get());
-            }
-        } finally
-        {
-            networkElementTransaction.close();
-        }
-    }
-
-    private LogicalTerminationPointList addClientLtpTo(
-            NetworkElementBuilder ne, int vlanid, String ltpName,
-            LtpInOdlCreator ltpInOdlCreator)
-    {
-        String clientLtpName = nameFrom(ltpName, LAYER_PROTOCOL_NAME.getValue(), vlanid);
-        String lpName = nameFrom(clientLtpName, "LP", 1);
-
-        // add client ltp to ltp
-        Ltp serverLTP = null;
-        Iterator<Ltp> iterator = ne.getLtp().iterator();
-        while (iterator.hasNext())
-        {
-            Ltp temp = iterator.next();
-            if (temp.getUuid().getValue().equalsIgnoreCase(ltpName))
-            {
-                iterator.remove();
-                serverLTP = temp;
-                break;
-            }
-        }
-        if (serverLTP == null)
-        {
-            StringBuffer serverNames = new StringBuffer();
-            ne.getLtp().forEach(sltp -> serverNames.append(sltp.getKey().getUuid().getValue()).append(" | "));
-            throw new IllegalArgumentException(
-                    "no proper server ltp found, input name is: " + ltpName + " and ltps from NE are: " + serverNames);
-        }
-
-        LtpBuilder serverBuilder = new LtpBuilder(serverLTP);
-
-        if (serverBuilder.getClientLtp() == null)
-            serverBuilder.setClientLtp(new ArrayList<>());
-        serverBuilder.getClientLtp().add(new UniversalId(clientLtpName));
-
-        // add client ltp to ltps
-        LtpBuilder clientLtpBuilder = new LtpBuilder();
-        clientLtpBuilder.setKey(new LtpKey(new UniversalId(clientLtpName)));
-        clientLtpBuilder.setName(new ArrayList<>());
-        clientLtpBuilder.getName().add(toName(clientLtpName));
-        clientLtpBuilder.setServerLtp(Arrays.asList(new UniversalId(serverLTP.getKey().getUuid())));
-        // add lp to client ltp
-        LpBuilder lpBuilder = new LpBuilder();
-        lpBuilder.setKey(new LpKey(new UniversalId(lpName)));
-        lpBuilder.setLayerProtocolName(LAYER_PROTOCOL_NAME);
-        lpBuilder.setName(new ArrayList<>());
-        lpBuilder.getName().add(toName(lpName));
-
-        lpBuilder.setLocalId(new ArrayList<>());
-        lpBuilder.getLocalId().add(toLocalId(lpName));
-        lpBuilder.setTerminationState(TerminationState.LpCanNeverTerminate);
-        clientLtpBuilder.setLp(Arrays.asList(lpBuilder.build()));
-
-        ne.getLtp().add(clientLtpBuilder.build());
-        ne.getLtp().add(serverBuilder.build());
-
-        return ltpInOdlCreator.create(ne.getName().get(0).getValue(), clientLtpName, serverLTP);
-    }
-
-    private String buildFcName(ArrayList<LogicalTerminationPointList> clientLtpsInFC)
-    {
-//        String fcName = "LTP-ETY-1.1.1-ETH-23,LTP-ETC-1.3.1-ETH-23"
-        StringBuilder fcName = new StringBuilder("");
-        for (LogicalTerminationPointList ltp : clientLtpsInFC)
-        {
-            fcName.append(ltp.getLtpReference().getValue()).append(",");
-        }
-        return fcName.deleteCharAt(fcName.length() - 1).toString();
-    }
-
-    private String nameFrom(String ltpName, String mediator, int vlanId)
-    {
-        return String.format(ltpName + "-%1$s-%2$d", mediator, vlanId);
-    }
-
-    private Name toName(String name)
-    {
-        NameBuilder nameBuilder = new NameBuilder();
-        nameBuilder.setValue(name);
-        nameBuilder.setValueName("vName");
-        return nameBuilder.build();
-    }
-
-    private LocalId toLocalId(String name)
-    {
-        LocalIdBuilder builder = new LocalIdBuilder();
-        builder.setValue(name);
-        builder.setValueName("vLocalId");
-        return builder.build();
-    }
-
-    private static final Logger LOG = LoggerFactory.getLogger(NeExecutor.class);
-    private static final LayerProtocolName LAYER_PROTOCOL_NAME = new LayerProtocolName("ETH");
-    private static boolean IS_MAIN = true;
-    private DataBroker dataBroker;
-    private Integer vlanId;
-    private ArrayList<LogicalTerminationPointList> ltp = new ArrayList<>();
-    private NetworkElementBuilder neBuilder;
-    private NetworkElement oldNe;
-
-    public List<LogicalTerminationPointList> getLtp()
-    {
-        return ltp;
-    }
-
-    public void clear(int vlanId)
-    {
-        try
-        {
-            this.neBuilder = new NetworkElementBuilder(oldNe);
-
-            // remove fc in fd
-            FdBuilder fdBuilder = new FdBuilder(neBuilder.getFd().get(0));
-            fdBuilder.getFc().removeIf(fcName -> fcName.getValue().contains(LAYER_PROTOCOL_NAME.getValue() + "-" + vlanId));
-            neBuilder.setFd(Collections.singletonList(fdBuilder.build()));
-
-            // remove ltp created by vlan
-            neBuilder.getLtp().removeIf(
-                    ltp1 -> ltp1.getUuid().getValue().endsWith(LAYER_PROTOCOL_NAME.getValue() + "-" + vlanId));
-
-            // remove all client ltp
-            ArrayList<Ltp> ltpList = new ArrayList<>();
-            for (Ltp ltp : neBuilder.getLtp())
-            {
-                LtpBuilder ltpBuilder = new LtpBuilder(ltp);
-                if (ltpBuilder.getClientLtp() != null)
-                {
-                    ltpBuilder.getClientLtp().removeIf(
-                            uuid -> uuid.getValue().endsWith(LAYER_PROTOCOL_NAME.getValue() + "-" + vlanId));
-                    ltpBuilder.getLp().removeIf(
-                            lp -> lp.getKey().getUuid().getValue().contains(LAYER_PROTOCOL_NAME.getValue() + "-" + vlanId));
-                }
-                ltpList.add(ltpBuilder.build());
-            }
-
-            neBuilder.setLtp(ltpList);
-
-            commit();
-        } catch (Exception e)
-        {
-            LOG.warn("", e);
-        }
-    }
-
-    public void commit()
-    {
-        // submit to network element
-        try
-        {
-            ReadWriteTransaction neCommitTrans = dataBroker.newReadWriteTransaction();
-            neCommitTrans.put(CONFIGURATION, InstanceIdentifier.create(NetworkElement.class), neBuilder.build());
-
-            neCommitTrans.submit();
-        } catch (Exception e)
-        {
-            LOG.warn("caught exception when commit to ne, skip it", e);
-        }
-    }
-
-    public <T extends ChildOf<MwAirInterfacePac>> T getUnderAirPac(
-            String lpId_airInterface, Class<T> tClass,
-            LogicalDatastoreType type) throws ReadFailedException, ExecutionException, InterruptedException
-    {
-        try (ReadOnlyTransaction readOnlyTrans = dataBroker.newReadOnlyTransaction())
-        {
-            InstanceIdentifier<T> mwAirInterfaceConfigurationIID = InstanceIdentifier
-                    .builder(MwAirInterfacePac.class, new MwAirInterfacePacKey(new UniversalId(lpId_airInterface)))
-                    .child(tClass)
-                    .build();
-
-            Optional<T> op = readOnlyTrans.read(type, mwAirInterfaceConfigurationIID).get();
-            return op.isPresent() ? op.get() : null;
-        }
-    }
-
-    public boolean isLtpOfThisOnPath(String lpName)
-    {
-        for (LogicalTerminationPointList logicalTerminationPointList : ltp)
-        {
-            String ethLtpName = logicalTerminationPointList.getLtpReference().getValue();
-            Ltp airInterface = getLtpNameByLp(lpName);
-            if (belongTo(airInterface, ethLtpName))
-            {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private boolean belongTo(Ltp airInterface, String ethLtpName)
-    {
-        if (airInterface == null || airInterface.getClientLtp() == null)
-        {
-            return false;
-        }
-        for (UniversalId clientID : airInterface.getClientLtp())
-        {
-            if (clientID.getValue().equalsIgnoreCase(ethLtpName))
-                return true;
-            if (belongTo(getLtpByName(clientID), ethLtpName))
-            {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    private Ltp getLtpByName(UniversalId clientID)
-    {
-        for (Ltp ltp1 : neBuilder.getLtp())
-        {
-            if (ltp1.getKey().getUuid().equals(clientID))
-            {
-                return ltp1;
-            }
-        }
-        return null;
-    }
-
-    private Ltp getLtpNameByLp(String lpId_airInterface)
-    {
-        for (Ltp ltp1 : neBuilder.getLtp())
-        {
-            for (Lp lp : ltp1.getLp())
-            {
-                if (lp.getKey().getUuid().getValue().equalsIgnoreCase(lpId_airInterface))
-                {
-                    return ltp1;
-                }
-            }
-        }
-        return null;
-    }
-
-    public void reportSwitch()
-    {
-
-        if (IS_MAIN)
-        {
-            SwitchFollowTopoInputBuilder builder = new SwitchFollowTopoInputBuilder();
-            builder.setVlanid(vlanId);
-            rpc.switchFollowTopo(builder.build());
-        } else
-        {
-            RestoreFollowTopoInputBuilder builder = new RestoreFollowTopoInputBuilder();
-            builder.setVlanid(vlanId);
-            rpc.restoreFollowTopo(builder.build());
-        }
-
-        IS_MAIN = !IS_MAIN;
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/RPCHolder.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/RPCHolder.java
deleted file mode 100644 (file)
index 718b1b5..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.tools;
-
-import com.highstreet.technologies.odl.app.impl.RouteRPC;
-
-/**
- * Created by odl on 17-6-8.
- */
-public class RPCHolder
-{
-    public static RouteRPC rpc = null;
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/Unit.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/java/com/highstreet/technologies/odl/app/impl/tools/Unit.java
deleted file mode 100644 (file)
index a255c46..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package com.highstreet.technologies.odl.app.impl.tools;
-
-/**
- * Created by odl on 17-6-8.
- */
-public enum Unit
-{
-    k_bits_s, m_bits_s(1024, k_bits_s), m_byte_s(8 * 1024, k_bits_s);
-
-    Unit(int ratio, Unit last)
-    {
-        this.ratio = ratio;
-        this.last = last;
-    }
-
-    Unit()
-    {
-        this.ratio = 1;
-        this.last = this;
-    }
-
-    private final int ratio;
-    private final Unit last;
-
-    public Double convert(double result, Unit from)
-    {
-        return result * ((double) from.ratio / (double) this.ratio);
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml
deleted file mode 100644 (file)
index 0b01c28..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright © 2017 ZTE and others. All rights reserved.
-
-This program and the accompanying materials are made available under the
-terms of the Eclipse Public License v1.0 which accompanies this distribution,
-and is available at http://www.eclipse.org/legal/epl-v10.html
--->
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
-           xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
-           odl:use-default-for-reference-types="true">
-
-    <reference id="dataBroker"
-               interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"
-               odl:type="default"/>
-    <reference id="rpcRegistry" interface="org.opendaylight.controller.sal.binding.api.RpcProviderRegistry"/>
-    <reference id="mountService" interface="org.opendaylight.controller.md.sal.binding.api.MountPointService"/>
-
-    <bean id="provider"
-          class="com.highstreet.technologies.odl.app.impl.RouteProvider"
-          init-method="init" destroy-method="close">
-        <argument ref="dataBroker"/>
-        <argument ref="rpcRegistry"/>
-        <argument ref="mountService"/>
-    </bean>
-
-</blueprint>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/resources/topology.json b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/main/resources/topology.json
deleted file mode 100644 (file)
index fd4a874..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-{
-  "paths": {
-    "13": {
-      "main_ltps": [
-        {
-          "node": "ZTE-Z",
-          "aEnd": "LTP-ETY-GbE-1-1",
-          "zEnd": "LTP-ETC-AIR-5-1"
-        },
-        {
-          "node": "ZTE-A",
-          "aEnd": "LTP-ETC-AIR-5-1",
-          "zEnd": "LTP-ETY-GbE-1-2"
-        },
-        {
-          "node": "Ceragon-A",
-          "aEnd": "268443713",
-          "zEnd": "268562561"
-        },
-        {
-          "node": "Ceragon-Z",
-          "aEnd": "268562561",
-          "zEnd": "268443713"
-        },
-        {
-          "node": "Nokia-A",
-          "aEnd": "LTP-ETY-70101",
-          "zEnd": "LTP-ETC-541141"
-        },
-        {
-          "node": "Nokia-Z",
-          "aEnd": "LTP-ETC-551151",
-          "zEnd": "LTP-ETY-70103"
-        },
-        {
-          "node": "SIAE-A",
-          "aEnd": "LTP-ETY-TTP-LAN-4",
-          "zEnd": "LTP-ETC-TTP-ODU-A"
-        },
-        {
-          "node": "SIAE-Z",
-          "aEnd": "LTP-ETC-TTP-ODU-A",
-          "zEnd": "LTP-ETY-TTP-LAN-4"
-        },
-        {
-          "node": "ADVA-EthSwitch-1",
-          "aEnd": "ETY-1.1.NET.1",
-          "zEnd": "ETY-1.1.ACC.1"
-        },
-        {
-          "node": "ADVA-EthSwitch-2",
-          "aEnd": "ETY-1.1.NET.1",
-          "zEnd": "ETY-1.1.ACC.1"
-        }
-      ],
-      "backup_ltps": [
-        {
-          "node": "ZTE-Z",
-          "aEnd": "LTP-ETY-GbE-1-1",
-          "zEnd": "LTP-ETY-GbE-1-2"
-        },
-        {
-          "node": "ADVA-EthSwitch-1",
-          "aEnd": "ETY-1.1.NET.1",
-          "zEnd": "ETY-1.1.ACC.1"
-        },
-        {
-          "node": "ADVA-EthSwitch-2",
-          "aEnd": "ETY-1.1.NET.1",
-          "zEnd": "ETY-1.1.ACC.1"
-        }
-      ]
-    },
-    "24": {
-      "main_ltps": [
-        {
-          "node": "Ceragon-Z",
-          "aEnd": "268443714",
-          "zEnd": "268443713"
-        },
-        {
-          "node": "Nokia-A",
-          "aEnd": "LTP-ETY-70101",
-          "zEnd": "LTP-ETC-541141"
-        },
-        {
-          "node": "Nokia-Z",
-          "aEnd": "LTP-ETC-551151",
-          "zEnd": "LTP-ETY-70103"
-        },
-        {
-          "node": "SIAE-A",
-          "aEnd": "LTP-ETY-TTP-LAN-4",
-          "zEnd": "LTP-ETC-TTP-ODU-A"
-        },
-        {
-          "node": "SIAE-Z",
-          "aEnd": "LTP-ETC-TTP-ODU-A",
-          "zEnd": "LTP-ETY-TTP-LAN-2"
-        }
-      ],
-      "backup_ltps": [
-        {
-          "node": "Ceragon-Z",
-          "aEnd": "268443714",
-          "zEnd": "268562561"
-        },
-        {
-          "node": "Ceragon-A",
-          "aEnd": "268562561",
-          "zEnd": "268443713"
-        },
-        {
-          "node": "ZTE-A",
-          "aEnd": "LTP-ETY-GbE-1-2",
-          "zEnd": "LTP-ETC-AIR-5-1"
-        },
-        {
-          "node": "ZTE-Z",
-          "aEnd": "LTP-ETC-AIR-5-1",
-          "zEnd": "LTP-ETY-GbE-1-2"
-        },
-        {
-          "node": "ADVA-Y",
-          "aEnd": "ETY-1.1.NET.1",
-          "zEnd": "ETY-1.1.NET.2"
-        },
-        {
-          "node": "SIAE-Z",
-          "aEnd": "LTP-ETY-TTP-LAN-4",
-          "zEnd": "LTP-ETY-TTP-LAN-2"
-        }
-      ]
-    }
-  }
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/test/java/org/opendaylight/route/TestBandwidthCalculator.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/test/java/org/opendaylight/route/TestBandwidthCalculator.java
deleted file mode 100644 (file)
index 2763c48..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.route;
-
-import com.highstreet.technologies.odl.app.impl.tools.BandwidthCalculator;
-import com.highstreet.technologies.odl.app.impl.tools.Unit;
-import org.junit.Test;
-
-import static com.highstreet.technologies.odl.app.impl.tools.Unit.*;
-
-/**
- * Created by odl on 17-6-8.
- */
-public class TestBandwidthCalculator
-{
-    @Test
-    public void testCalc() throws Exception
-    {
-        BandwidthCalculator bc = new BandwidthCalculator(56000, (short) 64, (byte) 90);
-        System.out.println(bc.calc());
-        System.out.println(bc.calc(m_bits_s) + " " + m_bits_s.name());
-        System.out.println(bc.calc(Unit.m_byte_s) + " " + m_byte_s.name());
-        System.out.println(bc.calc(Unit.k_bits_s) + " " + k_bits_s.name());
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/test/java/org/opendaylight/route/TestJson.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/impl/src/test/java/org/opendaylight/route/TestJson.java
deleted file mode 100644 (file)
index 2f5d68d..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright © 2015 ZTE and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.route;
-
-import com.highstreet.technologies.odl.app.impl.delegates.PredefinePath;
-import com.highstreet.technologies.odl.app.impl.tools.JsonUtil;
-import org.junit.Test;
-
-import java.io.File;
-
-/**
- * Created by odl on 17-6-5.
- */
-public class TestJson
-{
-    @Test
-    public void test_to_object_given_json() throws Exception
-    {
-        String fileName = "/home/odl/workspace/CENTENNIAL/code/apps/route/impl/src/main/resources/topology.json";
-        PredefinePath path = JsonUtil.toObject(new File(fileName), PredefinePath.class);
-
-        System.out.println("");
-    }
-
-    @Test
-    public void test_to_obj_from_file()
-    {
-        PredefinePath path = JsonUtil.toObject(
-                new File(System.getenv().get("ODL_KARAF_HOME") + File.separator + "data" + File.separator + "topology.json"), PredefinePath.class);
-        System.out.println(path);
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/route/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/route/pom.xml
deleted file mode 100644 (file)
index 62b721f..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Copyright © 2017 ZTE and others. All rights reserved.
-This program and the accompanying materials are made available under the
-terms of the Eclipse Public License v1.0 which accompanies this distribution,
-and is available at http://www.eclipse.org/legal/epl-v10.html INTERNAL
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.opendaylight.odlparent</groupId>
-    <artifactId>odlparent</artifactId>
-    <version>1.8.1-Carbon</version>
-    <relativePath/>
-  </parent>
-
-  <groupId>com.highstreet.technologies.odl.app</groupId>
-  <artifactId>route-aggregator</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-  <name>route</name>
-  <packaging>pom</packaging>
-
-  <prerequisites>
-    <maven>3.1.1</maven>
-  </prerequisites>
-
-  <scm>
-    <connection>scm:git:ssh://git.opendaylight.org:29418/route.git</connection>
-    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/route.git</developerConnection>
-    <tag>HEAD</tag>
-    <url>https://wiki.opendaylight.org/view/route:Main</url>
-  </scm>
-
-  <modules>
-    <module>api</module>
-    <module>impl</module>
-    <module>features</module>
-  </modules>
-
-  <!-- DO NOT install or deploy the repo root pom as it's only needed to initiate a build -->
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-install-plugin</artifactId>
-        <configuration>
-          <skip>true</skip>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <profiles>
-    <profile>
-      <!--
-          This profile is to ensure we only build javadocs reports
-          when we plan to deploy Maven site for our project.
-      -->
-      <id>maven-site</id>
-      <activation>
-        <file>
-          <exists>${user.dir}/deploy-site.xml</exists>
-        </file>
-      </activation>
-
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-javadoc-plugin</artifactId>
-            <inherited>false</inherited>
-            <executions>
-              <execution>
-                <id>aggregate</id>
-                <goals>
-                  <goal>aggregate</goal>
-                </goals>
-                <phase>package</phase>
-            </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-
-  <!--
-      Maven Site Configuration
-
-      The following configuration is necessary for maven-site-plugin to
-      correctly identify the correct deployment path for OpenDaylight Maven
-      sites.
-  -->
-  <url>${odl.site.url}/${project.groupId}/${stream}/</url>
-
-  <distributionManagement>
-    <site>
-      <id>opendaylight-site</id>
-      <url>${nexus.site.url}/</url>
-    </site>
-  </distributionManagement>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/api/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/api/pom.xml
deleted file mode 100644 (file)
index 217f02d..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2015 Wipro Ltd. All rights reserved. This program and 
-       the accompanying materials are made available under the terms of the Eclipse 
-       Public License v1.0 which accompanies this distribution, and is available 
-       at http://www.eclipse.org/legal/epl-v10.html INTERNAL -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-       <parent>
-               <groupId>org.opendaylight.mwtn</groupId>
-               <artifactId>config-parent</artifactId>
-               <version>0.5.1-SNAPSHOT</version>
-               <relativePath>../../commons/config-parent</relativePath>
-       </parent>
-
-       <modelVersion>4.0.0</modelVersion>
-       <artifactId>websocketmanager-api</artifactId>
-       <packaging>bundle</packaging>
-
-       <properties>
-               <maven.javadoc.skip>true</maven.javadoc.skip>
-       </properties>
-</project>
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/api/src/main/yang/websocketmanager.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/api/src/main/yang/websocketmanager.yang
deleted file mode 100644 (file)
index dd02978..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-module websocketmanager {
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:websocketmanager";
-    prefix "websocketmanager";
-
-    revision "2015-01-05" {
-        description "Initial revision of websocketmanager model";
-    }
-
-     rpc websocket-event {
-        input {
-            leaf nodeName {
-               type string;
-            }
-
-            leaf eventType {
-               type string;
-            }
-
-            leaf xmlEvent {
-               type string;
-            }
-        }
-        output {
-            leaf response {
-                type string;
-            }
-        }
-    }
-
-    notification messagePushed {
-      leaf message {
-        type string;
-      }
-
-    }
-}
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/pom.xml
deleted file mode 100644 (file)
index 4bb6901..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Copyright (c) 2015 Wipro Ltd. All rights reserved. This program and 
-       the accompanying materials are made available under the terms of the Eclipse 
-       Public License v1.0 which accompanies this distribution, and is available 
-       at http://www.eclipse.org/legal/epl-v10.html INTERNAL -->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-       <parent>
-               <groupId>org.opendaylight.mwtn</groupId>
-               <artifactId>config-parent</artifactId>
-               <version>0.5.1-SNAPSHOT</version>
-               <relativePath>../../commons/config-parent</relativePath>
-       </parent>
-
-       <modelVersion>4.0.0</modelVersion>
-       <artifactId>websocketmanager-impl</artifactId>
-       <packaging>bundle</packaging>
-       <dependencies>
-               <dependency>
-                       <groupId>${project.groupId}</groupId>
-                       <artifactId>websocketmanager-api</artifactId>
-                       <version>${project.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>io.netty</groupId>
-                       <artifactId>netty-transport</artifactId>
-               </dependency>
-               <dependency>
-                       <groupId>io.netty</groupId>
-                       <artifactId>netty-all</artifactId>
-                       <version>${netty.version}</version>
-               </dependency>
-               <dependency>
-                       <groupId>org.json</groupId>
-                       <artifactId>json</artifactId>
-               </dependency>
-               <dependency>
-            <groupId>com.typesafe.akka</groupId>
-            <artifactId>akka-actor_2.11</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>com.typesafe.akka</groupId>
-            <artifactId>akka-cluster_2.11</artifactId>
-        </dependency>
-               <dependency>
-                       <groupId>org.java-websocket</groupId>
-                       <artifactId>Java-WebSocket</artifactId>
-                       <version>1.3.8</version>
-               </dependency>
-       </dependencies>
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-compiler-plugin</artifactId>
-                               <configuration>
-                                       <source>1.8</source>
-                                       <target>1.8</target>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.apache.felix</groupId>
-                               <artifactId>maven-bundle-plugin</artifactId>
-                               <extensions>true</extensions>
-                               <configuration>
-                                       <instructions>
-                                               <Import-Package>
-                                                       com.github.mustachejava;resolution:=optional,
-                                                       com.sun.jna.*;resolution:=optional,
-                                                       com.vividsolutions.jts.*;resolution:=optional,
-                                                       org.apache.log4j.helpers;resolution:=optional,
-                                                       org.noggit;resolution:=optional,
-                                                       org.apache.commons.jexl2;resolution:=optional,
-                                                       org.apache.commons.jxpath.*;resolution:=optional,
-                                                       org.apache.commons.vfs2.*;resolution:=optional,
-                                                       org.apache.commons.commons-codec;resolution:=optional,
-                                                       org.apache.xml.resolver.*;resolution:=optional,
-                                                       org.apache.log;resolution:=optional,
-                                                       *;resolution:=optional
-                                               </Import-Package>
-                                               <Embed-Dependency>Java-WebSocket</Embed-Dependency>
-                                               <Include-Resource>{maven-resources},{maven-dependencies},META-INF/git.properties=-target/classes/META-INF/git.properties</Include-Resource>
-                                               <Embed-Transitive>true</Embed-Transitive>
-                                       </instructions>
-                               </configuration>
-                       </plugin>
-               </plugins>
-       </build>
-</project>
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/config/default-config.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/config/default-config.xml
deleted file mode 100644 (file)
index 33cf8e2..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- vi: set et smarttab sw=4 tabstop=4: -->
-<!--
-Copyright © 2016 Wipro technologies and others. All rights reserved.
-
-This program and the accompanying materials are made available under the
-terms of the Eclipse Public License v1.0 which accompanies this distribution,
-and is available at http://www.eclipse.org/legal/epl-v10.html
--->
-<snapshot>
-  <required-capabilities>
-      <capability>urn:opendaylight:params:xml:ns:yang:websocketmanager:impl?module=websocketmanager-impl&amp;revision=2014-12-10</capability>
-      <capability>urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding?module=opendaylight-md-sal-binding&amp;revision=2013-10-28</capability>
-  </required-capabilities>
-  <configuration>
-
-    <data xmlns="urn:ietf:params:xml:ns:netconf:base:1.0">
-      <modules xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">
-        <module>
-          <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:websocketmanager:impl">prefix:websocketmanager</type>
-          <name>websocketmanager-default</name>
-          <broker>
-            <type xmlns:binding="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">binding:binding-broker-osgi-registry</type>
-            <name>binding-osgi-broker</name>
-          </broker>
-        </module>
-      </modules>
-    </data>
-  </configuration>
-</snapshot>
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/WebsocketImpl.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/WebsocketImpl.java
deleted file mode 100644 (file)
index 0a74856..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.impl;
-
-import java.util.concurrent.Future;
-
-import org.json.JSONObject;
-import org.opendaylight.mwtn.impl.websocket.WebSocketServerHandler;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventInput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventOutput;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketEventOutputBuilder;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketmanagerService;
-import org.opendaylight.yangtools.yang.common.RpcResult;
-import org.opendaylight.yangtools.yang.common.RpcResultBuilder;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class WebsocketImpl implements WebsocketmanagerService {
-
-       public interface EventInputCallback
-       {
-               void onMessagePushed(final String message) throws Exception;
-       }
-    private static final Logger LOG = LoggerFactory.getLogger(WebsocketImpl.class);
-
-    private final EventInputCallback cb;
-
-    public WebsocketImpl()
-    {
-       this(null);
-    }
-    public WebsocketImpl(EventInputCallback callback)
-    {
-       this.cb=callback;
-    }
-       @Override
-    public Future<RpcResult<WebsocketEventOutput>> websocketEvent(WebsocketEventInput input) {
-        LOG.debug("Send message '{}'", input);
-        try {
-            WebsocketEventOutputBuilder outputBuilder = new WebsocketEventOutputBuilder();
-            final String s=input.getXmlEvent();
-            WebSocketServerHandler.sendMessage(input.getNodeName(), input.getEventType(),s );
-            outputBuilder.setResponse("OK");
-            if(this.cb!=null)
-            try {
-               JSONObject o=new JSONObject();
-               o.put(WebSocketServerHandler.KEY_NODENAME, input.getNodeName());
-               o.put(WebSocketServerHandler.KEY_EVENTTYPE, input.getEventType());
-               o.put(WebSocketServerHandler.KEY_XMLEVENT, input.getXmlEvent());
-               this.cb.onMessagePushed(o.toString());
-            }
-            catch(Exception err)
-            {
-               LOG.warn("problem pushing messsage to other nodes: "+err.getMessage());
-            }
-            return RpcResultBuilder.success(outputBuilder.build()).buildFuture();
-        } catch (Exception e) {
-            LOG.warn("Socketproblem: {}", e);
-        }
-        return null;
-    }
-
-
-       /*
-       public void websocketSend(String message) {
-                LOG.debug("Send message '{}'", message);
-               try {
-                   WebsocketEventOutputBuilder outputBuilder = new WebsocketEventOutputBuilder();
-                   WebSocketServerHandler.sendMessage(message);
-                   outputBuilder.setResponse("OK");
-
-               } catch (Exception e) {
-                   LOG.warn("Socketproblem: {}", e);
-               }
-       }
-       */
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/WebsocketmanagerProvider.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/WebsocketmanagerProvider.java
deleted file mode 100644 (file)
index 31ac954..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.impl;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.ProviderContext;
-import org.opendaylight.controller.sal.binding.api.BindingAwareBroker.RpcRegistration;
-import org.opendaylight.controller.sal.binding.api.BindingAwareProvider;
-import org.opendaylight.mwtn.impl.WebsocketImpl.EventInputCallback;
-import org.opendaylight.mwtn.impl.utils.AkkaConfig;
-import org.opendaylight.mwtn.impl.utils.AkkaConfig.ClusterConfig;
-import org.opendaylight.mwtn.impl.utils.AkkaConfig.ClusterNodeInfo;
-import org.opendaylight.mwtn.impl.websocket.SyncWebSocketClient;
-import org.opendaylight.mwtn.impl.websocket.WebSocketServerInitializer;
-import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.rev150105.WebsocketmanagerService;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import io.netty.bootstrap.ServerBootstrap;
-import io.netty.channel.Channel;
-import io.netty.channel.EventLoopGroup;
-import io.netty.channel.nio.NioEventLoopGroup;
-import io.netty.channel.socket.nio.NioServerSocketChannel;
-
-public class WebsocketmanagerProvider implements BindingAwareProvider, AutoCloseable, Runnable {
-
-    private static final Logger LOG = LoggerFactory.getLogger(WebsocketmanagerProvider.class);
-    private static final int PORT = 8085;
-
-    private Thread webserverThread;
-    private final ServerBootstrap bootstrap = new ServerBootstrap();
-    private final EventLoopGroup bossGroup = new NioEventLoopGroup();
-    private final EventLoopGroup workerGroup = new NioEventLoopGroup();
-    private RpcRegistration<WebsocketmanagerService> websocketService;
-
-    private List<URI> clusterNodeClients=null;
-       private final EventInputCallback rpcEventInputCallback=new EventInputCallback() {
-
-               @Override
-               public void onMessagePushed(String message) throws Exception {
-
-                       LOG.debug("onMessagePushed: "+message);
-                       if(WebsocketmanagerProvider.this.clusterNodeClients!=null &&
-                                       WebsocketmanagerProvider.this.clusterNodeClients.size()>0)
-                       {
-                               SyncWebSocketClient client;
-                               for(URI clientURI : WebsocketmanagerProvider.this.clusterNodeClients)
-                               {
-                                       client=new SyncWebSocketClient(clientURI);
-                                       LOG.debug("try to push message to "+client.getURI());
-                                       client.openAndSendAndCloseSync(message);
-
-                                       //client.close();
-                               }
-                       }
-               }
-       };
-
-    @Override
-    public void onSessionInitiated(ProviderContext session) {
-        LOG.info("WebsocketmanagerProvider Session Initiated");
-        webserverThread = new Thread(this);
-        webserverThread.start();
-        websocketService = session.addRpcImplementation(WebsocketmanagerService.class, new WebsocketImpl(rpcEventInputCallback));
-        AkkaConfig cfg =null;
-        try {
-                        cfg=AkkaConfig.load();
-                       } catch (Exception e) {
-                       LOG.warn("problem loading akka config: "+e.getMessage());
-               }
-        if(cfg!=null && cfg.isCluster())
-               {
-                       this.initWSClients(cfg.getClusterConfig());
-               }
-    }
-
-    private void initWSClients(ClusterConfig clusterConfig) {
-       clusterNodeClients=new ArrayList<URI>();
-       for(ClusterNodeInfo nodeConfig:clusterConfig.getSeedNodes())
-       {
-               if(clusterConfig.isMe(nodeConfig))
-                       continue;
-               String url=String.format("ws://%s:%d/websocket", nodeConfig.getRemoteAddress(),PORT);
-               try {
-                       LOG.debug("registering ws client for "+url);
-                               clusterNodeClients.add(new URI(url));
-                       } catch (URISyntaxException e) {
-                               LOG.warn("problem instantiating wsclient for url: "+url);
-                       }
-       }
-       }
-
-       @Override
-    public void close() throws Exception {
-        LOG.info("WebsocketmanagerProvider Closed");
-        closeWebsocketServer();
-        if (websocketService != null) {
-            websocketService.close();
-        }
-    }
-
-    @Override
-    public void run() {
-        // TODO Auto-generated method stub
-        try {
-            startWebSocketServer();
-        } catch (Exception e) {
-            LOG.warn("Exception occured while starting webSocket server {}",e);
-        }
-    }
-
-    private void closeWebsocketServer() {
-        if (bossGroup != null) {
-            try {
-                bossGroup.shutdownGracefully();
-            } catch (Exception e) {
-                LOG.warn("Exception occured while starting webSocket server {}",e);
-            }
-        }
-        if (workerGroup != null) {
-            try {
-                workerGroup.shutdownGracefully();
-            } catch (Exception e) {
-                LOG.warn("Exception occured while starting webSocket server {}",e);
-            }
-        }
-    }
-
-    public void startWebSocketServer() throws Exception {
-        try {
-            bootstrap.group(bossGroup, workerGroup).channel(NioServerSocketChannel.class)
-                    .childHandler(new WebSocketServerInitializer());
-            Channel channel = bootstrap.bind(PORT).sync().channel();
-            LOG.info("Web socket server started at port " + PORT + '.');
-            LOG.info("Open your browser and navigate to http://localhost:" + PORT + '/');
-            channel.closeFuture().sync();
-        } catch (Exception e) {
-            LOG.warn("Exception in start websocket server ======== " + e.toString());
-        } finally {
-            bossGroup.shutdownGracefully();
-            workerGroup.shutdownGracefully();
-        }
-    }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/dto/UserDto.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/dto/UserDto.java
deleted file mode 100644 (file)
index 0939ea0..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.impl.dto;
-
-import java.util.HashMap;
-
-import org.json.JSONArray;
-import org.json.JSONException;
-import org.json.JSONObject;
-import org.opendaylight.mwtn.impl.utils.Utils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class UserDto {
-    private static final Logger LOG = LoggerFactory.getLogger(UserDto.class);
-
-       private String userId;
-       private HashMap<String, Boolean> hmScopes;
-
-       public String getUserId() {
-               return userId;
-       }
-
-       public void setUserId(String sessionId) {
-               this.userId = sessionId;
-       }
-
-       public HashMap<String, Boolean> getScopes() {
-               return hmScopes;
-       }
-
-       public void setScopes(JSONArray jsonScopes) {
-               hmScopes = new HashMap<>();
-               for (int i = 0; jsonScopes != null && i < jsonScopes.length(); i++) {
-                       try {
-                               hmScopes.put(jsonScopes.getString(i), true);
-                       } catch (JSONException e) {
-                               LOG.warn("Something wrong: {}", e);
-                       }
-               }
-       }
-
-       public JSONObject getScopedResponse(JSONObject jsonAllValue) {
-               JSONObject jsonResponse = new JSONObject();
-               try {
-                       JSONArray jsonArrayRes = new JSONArray();
-                       JSONArray jsonArray = jsonAllValue.getJSONArray(Utils.MSG_KEY_DATA);
-                       for (int i = 0; jsonArray != null && i < jsonArray.length(); i++) {
-                               JSONObject jsonObject = jsonArray.getJSONObject(i);
-                               String msgScope = jsonObject.getString(Utils.MSG_KEY_SCOPE);
-                               if (getScopes().get(msgScope) != null && getScopes().get(msgScope)) {
-                                       jsonArrayRes.put(jsonObject);
-                               }
-                       }
-                       if (jsonArrayRes.length() == 0) {
-                               return null;
-                       }
-                       jsonResponse.put(Utils.MSG_KEY_DATA, jsonArrayRes);
-               } catch (Exception e) {
-                       LOG.warn("Something wrong: {}", e);
-               }
-               return jsonResponse;
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/utils/AkkaConfig.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/utils/AkkaConfig.java
deleted file mode 100644 (file)
index aa51f6f..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-package org.opendaylight.mwtn.impl.utils;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import com.typesafe.config.Config;
-import com.typesafe.config.ConfigFactory;
-
-public class AkkaConfig{
-
-
-
-       public static class ClusterNodeInfo
-       {
-               @Override
-               public String toString() {
-                       return "ClusterNodeInfo [protocol=" + protocol + ", clusterName=" + clusterName + ", remoteAdr=" + remoteAdr
-                                       + ", port=" + port + "]";
-               }
-               private final String protocol;
-               private final String clusterName;
-               private final String remoteAdr;
-               private final int port;
-
-               public String getRemoteAddress() {return this.remoteAdr;}
-               public ClusterNodeInfo(String s) throws Exception
-               {
-                       final String regex ="([a-z.]*):\\/\\/([a-zA-Z0-9-]*)@([a-zA-Z0-9.-]*):([0-9]*)";
-                       final Pattern pattern = Pattern.compile(regex);
-                       final Matcher matcher = pattern.matcher(s);
-                       if(!matcher.find())
-                               throw new Exception("invalid seedNode format");
-                       this.protocol=matcher.group(1);
-                       this.clusterName=matcher.group(2);
-                       this.remoteAdr=matcher.group(3);
-                       this.port=Integer.parseInt(matcher.group(4));
-               }
-       }
-       public static class ClusterRoleInfo
-       {
-               @Override
-               public String toString() {
-                       return "ClusterRoleInfo [Role=" + Role + ", Index=" + Index + "]";
-               }
-
-               private final String Role;
-               private final int Index;
-               public ClusterRoleInfo(String s) throws Exception {
-                       final String regex = "([a-z]*)-([0-9]*)";
-                       final Pattern pattern = Pattern.compile(regex);
-                       final Matcher matcher = pattern.matcher(s);
-                       if(!matcher.find())
-                               throw new Exception("invalid role format");
-                       this.Role=matcher.group(1);
-                       this.Index=Integer.parseInt(matcher.group(2));
-               }
-
-       }
-       public static class ClusterConfig
-       {
-               @Override
-               public String toString() {
-                       return "ClusterConfig [seedNodes=" + seedNodes + ", roles=" + roles + "]";
-               }
-               private final List<ClusterNodeInfo> seedNodes;
-               private final List<ClusterRoleInfo> roles;
-               private final ClusterNodeInfo ismeInfo;
-               public ClusterConfig(Config o) throws Exception {
-                       {
-                       this.seedNodes = new ArrayList<ClusterNodeInfo>();
-                       List<String> a= o.getStringList("seed-nodes");
-                       for(int i=0;i<a.size();i++)
-                       {
-                               ClusterNodeInfo info=new ClusterNodeInfo(a.get(i));
-                               this.seedNodes.add(info);
-                       }
-                       this.roles=new ArrayList<ClusterRoleInfo>();
-                       a=o.getStringList("roles");
-                       for(int i=0;i<a.size();i++)
-                       {
-                               ClusterRoleInfo s=new ClusterRoleInfo(a.get(i));
-                               this.roles.add(s);
-                       }
-                       int idx=this.roles.get(0).Index-1;
-                       if(idx>=0 && idx<this.seedNodes.size())
-                               this.ismeInfo=this.seedNodes.get(idx);
-                       else
-                               this.ismeInfo=null;
-               }
-
-       }
-               public boolean isCluster() {
-                       return this.seedNodes!=null?this.seedNodes.size()>1:false;
-               }
-               public boolean isMe(ClusterNodeInfo i) {
-                       return this.ismeInfo!=null?this.ismeInfo.equals(i):false;
-               }
-               public List<ClusterNodeInfo> getSeedNodes() {
-                       return this.seedNodes;
-               }
-       }
-
-       private static final String DEFAULT_FILENAME = "configuration/initial/akka.conf";
-       private final String filename;
-       private ClusterConfig cluserConfig;
-       public ClusterConfig getClusterConfig() {return this.cluserConfig;}
-
-       private AkkaConfig(String filename) {
-               this.filename = filename;
-       }
-       @Override
-       public String toString() {
-               return "AkkaConfig [filename=" + filename + ", cluserConfig=" + cluserConfig + "]";
-       }
-
-       private void loadFromFile() throws Exception {
-               Config cfg=ConfigFactory.parseFile(new File(this.filename));
-               this.cluserConfig=new ClusterConfig(cfg.getConfig("odl-cluster-data").getConfig("akka").getConfig("cluster"));
-       }
-
-       public boolean isCluster()
-       {
-               return this.cluserConfig!=null?this.cluserConfig.isCluster():false;
-       }
-       public static AkkaConfig load() throws Exception
-       {
-               return load(DEFAULT_FILENAME);
-       }
-
-       public static AkkaConfig load(String filename) throws Exception
-       {
-               AkkaConfig cfg=new AkkaConfig(filename);
-               cfg.loadFromFile();
-
-               return cfg;
-       }
-
-
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/utils/Utils.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/utils/Utils.java
deleted file mode 100644 (file)
index 98e58fc..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.impl.utils;
-
-import java.util.HashMap;
-
-import org.opendaylight.mwtn.impl.dto.UserDto;
-
-import io.netty.channel.ChannelHandlerContext;
-
-public class Utils {
-
-       public static final String MSG_KEY_DATA = "data";
-       public static final String MSG_KEY_SCOPES = "scopes";
-       public static final String MSG_KEY_PARAM = "param";
-       public static final String MSG_KEY_VALUE = "value";
-       public static final String MSG_KEY_SCOPE = "scope";
-       public static HashMap<String, UserDto> hmClientScopes = new HashMap<String, UserDto>();
-       public static HashMap<String, ChannelHandlerContext> hmChannelContexts = new HashMap<String, ChannelHandlerContext>();
-
-       public static enum SCOPE {
-               ObjectCreationNotification, ObjectDeletionNotification, AttributeValueChangedNotification, ProblemNotification
-       };
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/websocket/SyncWebSocketClient.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/websocket/SyncWebSocketClient.java
deleted file mode 100644 (file)
index 53246de..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-package org.opendaylight.mwtn.impl.websocket;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import org.java_websocket.client.WebSocketClient;
-import org.java_websocket.handshake.ServerHandshake;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class SyncWebSocketClient extends WebSocketClient {
-
-       private static final Logger LOG = LoggerFactory.getLogger(SyncWebSocketClient.class.getName());
-       private String messageToSend;
-
-       public SyncWebSocketClient(URI serverUri) {
-               super(serverUri);
-               // TODO Auto-generated constructor stub
-       }
-
-       public SyncWebSocketClient(String uri) throws URISyntaxException {
-               this(new URI(uri));
-       }
-
-       @Override
-       public void onClose(int arg0, String arg1, boolean arg2) {
-               // TODO Auto-generated method stub
-
-       }
-
-       @Override
-       public void onError(Exception arg0) {
-               // TODO Auto-generated method stub
-
-       }
-
-       @Override
-       public void onMessage(String arg0) {
-               // TODO Auto-generated method stub
-
-       }
-
-       @Override
-       public void onOpen(ServerHandshake arg0) {
-               LOG.debug("ws opened");
-               if(this.messageToSend!=null)
-               {
-                       LOG.debug("try to send: "+this.messageToSend);
-                       this.send(this.messageToSend);
-                       this.messageToSend=null;
-               }
-
-       }
-
-       public void openAndSendAsync(String message)
-       {
-               this.messageToSend=message;
-               this.connect();
-       }
-       public void openAndSendAndCloseSync(String message)
-       {
-               try {
-                       this.connectBlocking();
-               } catch (InterruptedException e) {
-                       LOG.warn("problem connecting:"+e.getMessage());
-               }
-               this.send(message);
-               try {
-                       this.closeBlocking();
-               } catch (InterruptedException e) {
-                       LOG.warn("problem disconnecting:"+e.getMessage());
-
-               }
-       }
-
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/websocket/WebSocketServerHandler.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/websocket/WebSocketServerHandler.java
deleted file mode 100644 (file)
index 910886c..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.impl.websocket;
-
-import static io.netty.handler.codec.http.HttpHeaders.isKeepAlive;
-import static io.netty.handler.codec.http.HttpHeaders.setContentLength;
-import static io.netty.handler.codec.http.HttpHeaders.Names.HOST;
-import static io.netty.handler.codec.http.HttpMethod.GET;
-import static io.netty.handler.codec.http.HttpResponseStatus.BAD_REQUEST;
-import static io.netty.handler.codec.http.HttpResponseStatus.FORBIDDEN;
-import static io.netty.handler.codec.http.HttpVersion.HTTP_1_1;
-import static org.opendaylight.mwtn.impl.utils.Utils.hmChannelContexts;
-import static org.opendaylight.mwtn.impl.utils.Utils.hmClientScopes;
-
-import java.util.Map;
-
-import org.json.JSONObject;
-import org.opendaylight.mwtn.impl.dto.UserDto;
-import org.opendaylight.mwtn.impl.utils.Utils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import io.netty.buffer.ByteBuf;
-import io.netty.buffer.Unpooled;
-import io.netty.channel.ChannelFuture;
-import io.netty.channel.ChannelFutureListener;
-import io.netty.channel.ChannelHandlerContext;
-import io.netty.channel.SimpleChannelInboundHandler;
-import io.netty.handler.codec.http.DefaultFullHttpResponse;
-import io.netty.handler.codec.http.FullHttpRequest;
-import io.netty.handler.codec.http.FullHttpResponse;
-import io.netty.handler.codec.http.websocketx.CloseWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.PingWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.PongWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.TextWebSocketFrame;
-import io.netty.handler.codec.http.websocketx.WebSocketFrame;
-import io.netty.handler.codec.http.websocketx.WebSocketServerHandshaker;
-import io.netty.handler.codec.http.websocketx.WebSocketServerHandshakerFactory;
-import io.netty.util.CharsetUtil;
-
-public class WebSocketServerHandler extends SimpleChannelInboundHandler<Object> {
-       private static final Logger LOG = LoggerFactory.getLogger(WebSocketServerHandler.class.getName());
-
-       private static final String WEBSOCKET_PATH = "/websocket";
-
-       public static final String KEY_NODENAME = "nodename";
-       public static final String KEY_EVENTTYPE = "eventtype";
-       public static final String KEY_XMLEVENT = "xmlevent";
-
-       private WebSocketServerHandshaker handshaker;
-
-       @Override
-       public void channelRegistered(ChannelHandlerContext ctx) throws Exception {
-               super.channelRegistered(ctx);
-               hmChannelContexts.put(String.valueOf(ctx.hashCode()), ctx);
-               LOG.info("Channel registered " + ctx.channel().toString());
-       }
-
-       @Override
-       public void channelUnregistered(ChannelHandlerContext ctx) throws Exception {
-               super.channelUnregistered(ctx);
-               if (ctx != null) {
-                       String channelHashCode = String.valueOf(ctx.hashCode());
-                       hmChannelContexts.remove(channelHashCode);
-                       LOG.info("Channel unregistered " + ctx.channel().toString());
-               }
-       }
-
-       @Override
-       public void channelRead0(ChannelHandlerContext ctx, Object msg) throws Exception {
-               if (msg instanceof FullHttpRequest) {
-                       handleHttpRequest(ctx, (FullHttpRequest) msg);
-               } else if (msg instanceof WebSocketFrame) {
-                       handleWebSocketFrame(ctx, (WebSocketFrame) msg);
-               }
-       }
-
-       public static void sendMessage(String nodeName, String eventType, String xmlEvent) {
-               if (hmChannelContexts != null && hmChannelContexts.size() > 0) {
-                       for (Map.Entry<String, ChannelHandlerContext> entry : hmChannelContexts.entrySet()) {
-                               ChannelHandlerContext ctx = entry.getValue();
-
-                               try {
-                                       UserDto clientDto = hmClientScopes.get(String.valueOf(ctx.hashCode()));
-                                       if (clientDto.getScopes().get(eventType) != null) {
-                                               sendBroadcast(ctx, xmlEvent);
-                                       }
-                               } catch (Exception ioe) {
-                                       LOG.warn(ioe.getMessage());
-                               }
-                       }
-               }
-       }
-       public static void sendMessage(String xmlEvent) {
-               if (hmChannelContexts != null && hmChannelContexts.size() > 0) {
-                       for (Map.Entry<String, ChannelHandlerContext> entry : hmChannelContexts.entrySet()) {
-                               ChannelHandlerContext ctx = entry.getValue();
-
-                               try {
-                                       sendBroadcast(ctx, xmlEvent);
-
-                               } catch (Exception ioe) {
-                                       LOG.warn(ioe.getMessage());
-                               }
-                       }
-               }
-       }
-       private static void sendBroadcast(ChannelHandlerContext ctx, String message) {
-               try {
-                       ctx.channel().write(new TextWebSocketFrame(message));
-               } catch (Exception e) {
-                       LOG.warn(e.getMessage());
-               }
-               ctx.channel().flush();
-       }
-
-       @Override
-       public void channelReadComplete(ChannelHandlerContext ctx) throws Exception {
-               ctx.flush();
-       }
-
-       private void handleHttpRequest(ChannelHandlerContext ctx, FullHttpRequest req) throws Exception {
-               // Handle a bad request.
-               if (!req.getDecoderResult().isSuccess()) {
-                       sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, BAD_REQUEST));
-                       return;
-               }
-
-               // Allow only GET methods.
-               if (req.getMethod() != GET) {
-                       sendHttpResponse(ctx, req, new DefaultFullHttpResponse(HTTP_1_1, FORBIDDEN));
-                       return;
-               }
-
-               // Handshake
-               WebSocketServerHandshakerFactory wsFactory = new WebSocketServerHandshakerFactory(getWebSocketLocation(req),
-                               null, false);
-               handshaker = wsFactory.newHandshaker(req);
-               if (handshaker == null) {
-                       WebSocketServerHandshakerFactory.sendUnsupportedWebSocketVersionResponse(ctx.channel());
-               } else {
-                       handshaker.handshake(ctx.channel(), req);
-               }
-       }
-
-       private void handleWebSocketFrame(ChannelHandlerContext ctx, WebSocketFrame frame) {
-
-               // Check for closing frame
-               if (frame instanceof CloseWebSocketFrame) {
-                       handshaker.close(ctx.channel(), (CloseWebSocketFrame) frame.retain());
-                       return;
-               }
-               if (frame instanceof PingWebSocketFrame) {
-                       ctx.channel().write(new PongWebSocketFrame(frame.content().retain()));
-                       return;
-               }
-               if (!(frame instanceof TextWebSocketFrame)) {
-                       throw new UnsupportedOperationException(
-                                       String.format("%s frame types not supported", frame.getClass().getName()));
-               }
-
-               String request = ((TextWebSocketFrame) frame).text();
-               LOG.info(String.format("%s received %s", ctx.channel(), request));
-               if(!manageClientRequest(ctx, request));
-                       manageClientRequest2(ctx, request);
-               }
-
-       /*
-        * broadcast message to all your clients
-        */
-       private void manageClientRequest2(ChannelHandlerContext ctx, String request) {
-               try {
-                       JSONObject o=new JSONObject(request);
-                       if(o.has(KEY_NODENAME) && o.has(KEY_EVENTTYPE) && o.has(KEY_EVENTTYPE))
-                               sendMessage(o.getString(KEY_NODENAME),o.getString(KEY_EVENTTYPE),o.getString(KEY_XMLEVENT));
-               } catch (Exception e) {
-                       LOG.warn("handle ws request failed:"+e.getMessage());
-               }
-       }
-       private boolean manageClientRequest(ChannelHandlerContext ctx, String request) {
-               boolean ret=false;
-               try {
-                       JSONObject jsonMessage = new JSONObject(request);
-                       if(jsonMessage.has(Utils.MSG_KEY_DATA))
-                       {
-                               String data = jsonMessage.getString(Utils.MSG_KEY_DATA);
-                               if (data.equals(Utils.MSG_KEY_SCOPES)) {
-                                       ret=true;
-                                       String sessionId = String.valueOf(ctx.hashCode());
-                                       UserDto clientDto = new UserDto();
-                                       clientDto.setScopes(jsonMessage.getJSONArray(Utils.MSG_KEY_SCOPES));
-                                       clientDto.setUserId(sessionId);
-                                       hmClientScopes.put(sessionId, clientDto);
-                                       ctx.channel().write(new TextWebSocketFrame(
-                                                       "You are connected to the Opendaylight Websocket server and scopes are : " + request + ""));
-                               }
-                       }
-               } catch (Exception e) {
-                       LOG.warn("problem set scope: "+e.getMessage());
-                       ctx.channel().write(new TextWebSocketFrame("Your request to the Opendaylight Websocket server is >> "
-                                       + request + " << which failed because of following exception >> " + e.toString()));
-               }
-               return ret;
-       }
-
-       private static void sendHttpResponse(ChannelHandlerContext ctx, FullHttpRequest req, FullHttpResponse res) {
-               // Generate an error page if response getStatus code is not OK (200).
-               if (res.getStatus().code() != 200) {
-                       ByteBuf buf = Unpooled.copiedBuffer(res.getStatus().toString(), CharsetUtil.UTF_8);
-                       res.content().writeBytes(buf);
-                       buf.release();
-                       setContentLength(res, res.content().readableBytes());
-               }
-
-               // Send the response and close the connection if necessary.
-               ChannelFuture f = ctx.channel().writeAndFlush(res);
-               if (!isKeepAlive(req) || res.getStatus().code() != 200) {
-                       f.addListener(ChannelFutureListener.CLOSE);
-               }
-       }
-
-       @Override
-       public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) throws Exception {
-               LOG.info("Exception caught {}");
-               ctx.close();
-       }
-
-       private static String getWebSocketLocation(FullHttpRequest req) {
-               return "ws://" + req.headers().get(HOST) + WEBSOCKET_PATH;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/websocket/WebSocketServerInitializer.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/mwtn/impl/websocket/WebSocketServerInitializer.java
deleted file mode 100644 (file)
index 8cdc1d7..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.mwtn.impl.websocket;
-
-import io.netty.channel.ChannelInitializer;
-import io.netty.channel.ChannelPipeline;
-import io.netty.channel.socket.SocketChannel;
-import io.netty.handler.codec.http.HttpObjectAggregator;
-import io.netty.handler.codec.http.HttpServerCodec;
-
-public class WebSocketServerInitializer extends ChannelInitializer<SocketChannel> {
-       @Override
-       public void initChannel(SocketChannel ch) throws Exception {
-               ChannelPipeline pipeline = ch.pipeline();
-               pipeline.addLast("codec-http", new HttpServerCodec());
-               pipeline.addLast("aggregator", new HttpObjectAggregator(65536));
-               pipeline.addLast("handler", new WebSocketServerHandler());
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/websocketmanager/impl/rev141210/WebsocketmanagerModule.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/websocketmanager/impl/rev141210/WebsocketmanagerModule.java
deleted file mode 100644 (file)
index 0cab279..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
-* Copyright (c) 2016 Wipro Ltd. and others. All rights reserved.
-*
-* This program and the accompanying materials are made available under the
-* terms of the Eclipse Public License v1.0 which accompanies this distribution,
-* and is available at http://www.eclipse.org/legal/epl-v10.html
-*/
-
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.impl.rev141210;
-
-import org.opendaylight.mwtn.impl.WebsocketmanagerProvider;
-
-public class WebsocketmanagerModule extends
-               org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.impl.rev141210.AbstractWebsocketmanagerModule {
-       public WebsocketmanagerModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier,
-                       org.opendaylight.controller.config.api.DependencyResolver dependencyResolver) {
-               super(identifier, dependencyResolver);
-       }
-
-       public WebsocketmanagerModule(org.opendaylight.controller.config.api.ModuleIdentifier identifier,
-                       org.opendaylight.controller.config.api.DependencyResolver dependencyResolver,
-                       org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.impl.rev141210.WebsocketmanagerModule oldModule,
-                       java.lang.AutoCloseable oldInstance) {
-               super(identifier, dependencyResolver, oldModule, oldInstance);
-       }
-
-       @Override
-       public void customValidation() {
-               // add custom validation form module attributes here.
-       }
-
-       @Override
-       public java.lang.AutoCloseable createInstance() {
-               WebsocketmanagerProvider provider = new WebsocketmanagerProvider();
-               getBrokerDependency().registerProvider(provider);
-               return provider;
-       }
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/websocketmanager/impl/rev141210/WebsocketmanagerModuleFactory.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/java/org/opendaylight/yang/gen/v1/urn/opendaylight/params/xml/ns/yang/websocketmanager/impl/rev141210/WebsocketmanagerModuleFactory.java
deleted file mode 100644 (file)
index ecf0ff3..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
-+* Generated file
-*
-* Generated from: yang module name: websocketmanager yang module local name: websocketmanager
-* Generated by: org.opendaylight.controller.config.yangjmxgenerator.plugin.JMXGenerator
-* Generated at: Fri Jan 02 13:49:24 CST 2015
-*
-* Do not modify this file unless it is present under src/main directory
-*/
-package org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.impl.rev141210;
-public class WebsocketmanagerModuleFactory extends org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.websocketmanager.impl.rev141210.AbstractWebsocketmanagerModuleFactory {
-
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/test/AkkaConfigTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/test/AkkaConfigTest.java
deleted file mode 100644 (file)
index 63f9a36..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-import org.opendaylight.mwtn.impl.utils.AkkaConfig;
-
-public class AkkaConfigTest {
-
-       public static void main(String[] args) {
-
-               try {
-                       AkkaConfig cfg = AkkaConfig
-                                       .load("/home/herbert/odl/distribution-karaf-0.6.1-Carbon/configuration/initial/akka.conf");
-                       System.out.println("config loaded successfully");
-                       System.out.println("==========================");
-                       System.out.println(cfg.toString());
-                       System.out.println("==========================");
-                       for(AkkaConfig.ClusterNodeInfo info:cfg.getClusterConfig().getSeedNodes())
-                               System.out.println("isme="+cfg.getClusterConfig().isMe(info));
-
-               } catch (Exception e) {
-
-                       e.printStackTrace();
-               }
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/test/WebsocketClientTest.java b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/test/WebsocketClientTest.java
deleted file mode 100644 (file)
index f96656a..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-import org.opendaylight.mwtn.impl.websocket.SyncWebSocketClient;
-
-public class WebsocketClientTest {
-
-       private static final int PORT = 8085;
-
-       public static void main(String[] args)
-       {
-
-               String remoteAddress="192.168.178.142";
-               String message="hier könnte ihre werbung stehen";
-               SyncWebSocketClient wsclient=null;
-               try {
-                       wsclient=new SyncWebSocketClient(String.format("ws://%s:%d/websocket", remoteAddress,PORT));
-                       if(!wsclient.isOpen())
-                               wsclient.openAndSendAsync(message);
-                       System.out.println("sending succeeded");
-               } catch (Exception e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               }
-               finally
-               {
-
-               }
-               System.out.println("finished");
-
-       }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/yang/websocketmanager-impl.yang b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/impl/src/main/yang/websocketmanager-impl.yang
deleted file mode 100644 (file)
index 2f95a27..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-module websocketmanager-impl {
-    yang-version 1;
-    namespace "urn:opendaylight:params:xml:ns:yang:websocketmanager:impl";
-    prefix "websocketmanager-impl";
-
-    import config { prefix config; revision-date 2013-04-05; }
-    import opendaylight-md-sal-binding { prefix md-sal-binding; revision-date 2013-10-28;}
-
-    description
-        "Service definition for websocketmanager project";
-
-    revision "2014-12-10" {
-        description
-            "Initial revision";
-    }
-    
-    identity websocketmanager {
-        base config:module-type;
-        config:java-name-prefix Websocketmanager;
-    }
-    
-    augment "/config:modules/config:module/config:configuration" {
-        case websocketmanager {
-            when "/config:modules/config:module/config:type = 'websocketmanager'";
-            container broker {
-                uses config:service-ref {
-                    refine type {
-                        mandatory true;
-                        config:required-identity md-sal-binding:binding-broker-osgi-registry;
-                    }
-                }
-            }
-        }
-    }
-    
-    
-}
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/apps/websocketmanager/pom.xml
deleted file mode 100644 (file)
index 3be337b..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-       <modelVersion>4.0.0</modelVersion>
-
-       <parent>
-               <groupId>org.opendaylight.odlparent</groupId>
-               <artifactId>odlparent</artifactId>
-               <version>1.8.1-Carbon</version>
-               <relativePath />
-       </parent>
-
-       <groupId>org.opendaylight.mwtn</groupId>
-       <artifactId>websocketmanager</artifactId>
-       <name>websocketmanager</name>
-       <version>0.5.1-SNAPSHOT</version>
-       <packaging>pom</packaging>
-
-       <modules>
-               <module>api</module>
-               <module>impl</module>
-       </modules>
-
-       <build>
-               <plugins>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-deploy-plugin</artifactId>
-                               <configuration>
-                                       <skip>true</skip>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-install-plugin</artifactId>
-                               <configuration>
-                                       <skip>true</skip>
-                               </configuration>
-                       </plugin>
-                       <plugin>
-                               <groupId>org.apache.maven.plugins</groupId>
-                               <artifactId>maven-compiler-plugin</artifactId>
-                               <configuration>
-                                       <source>1.8</source>
-                                       <target>1.8</target>
-                               </configuration>
-                       </plugin>
-               </plugins>
-       </build>
-</project>
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/docs/README2CreateApp4Carbon.md b/sdnr/wireless-transport/code-Carbon-SR1/docs/README2CreateApp4Carbon.md
deleted file mode 100644 (file)
index e21b3aa..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-# Create app for ODL Boron and some backgrounds
-
-## Common information and workshop tasks
-
-### Overall
-
-  - Demo ODL, GUI and Simulators
-  - [Opendaylight](http://5g-crosshaul.eu/wp-content/uploads/2016/10/UC3M_5tonic_SdnOdlDay_19Oct2016.pdf)
-    - Three slides: 6:MDSAL, 8:AppDev, 11:Karaf
-  - Demo Eclipse
-  - User's home and the tools to use
-  - Git/ Maven &co mvn command, .m2
-  - HANDS-ON: Setup Single server development environment
-    - Follow [DevEnv](READMEInstallDevelopmentEnvironment.md)
-
-### Karaf
-
-   - OSGi and what does Karaf do
-     - [osgi](https://en.wikipedia.org/wiki/OSGi)
-     - [karaf](https://stackoverflow.com/questions/17350281/what-exactly-is-apache-karaf)
-   - How does it come and the directory structure
-     - Opendaylight karaf [odlkaraf](https://nexus.opendaylight.org/content/groups/public/org/opendaylight/integration/distribution-karaf/)
-     - show setup
-         - Repository
-         - data log
-   - Bundles and Features
-     - related xml files
-   - clean start
-   - Start&stop
-     - commands start/stop/client
-     - command karaf
-   - command line
-     - start and list features and bundles
-   - Debug and log files
-     - see read me
-   - Problems
-     - Startup timing
-
-### Network applications
-
-   - commons bundle and parents
-     - See CENTENNIAL/code/features (features-parent)
-     - binding-parent => Access of MDSAL
-     - config-parent => Push config xml file
-   - Karaf / Yang and the device model
-   - DLUX, Angular JS, Chromium
-   - Clone myapp
-   - ODL Datamodel, Access the database and the Netconf model
-   - [Documentation Boron](http://docs.opendaylight.org/en/stable-boron/)
-   - [ArchetypeRPCHelloWorld](https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Startup_Project_Archetype)
-
-
-## 1. Create app for ODL Boron
-
-### 1.1. Prerequirements
-
-- Development environment for ODL Boron according to Description "InstallDevelopmentEnvironment".
-- Clone from git the projects CENTENNIAL and WirelessTranportEmulator to get the following structure
-    ```
-    odl
-    ├── CENTENNIAL
-    ├── WirelessTransportEmulator
-    └── distribution-karaf-0.6.1-Carbon
-    ```
-
-### 1.2. Create the app
-
-Approach is to copy the template application in the CENTENNIAL repository apps directory and adapt it to the needs.<br/>
-  - Northbound: Provide RPC northbound
-  - Southbound: Monitors mountpoints connected to netconf devices.
-
-The template app is located here:
-
-    CENTENNIAL/code/apps/template/
-    ├── api
-    │   ├── pom.xml
-    │   └── src
-    ├── impl
-    │   ├── pom.xml
-    │   └── src
-    ├── features
-    │   ├── pom.xml
-    │   └── src
-    └── pom.xml
-
-Use the commandline and copy template to a new directory and modify with vi
-
-    cd ~/odl/CENTENNIAL/code/apps
-    cp -r template myapp
-
-### 1.3. Adapt myapp
-
-Remove files which are recreated later
-
-    cd myapp
-    rm -r target api/target impl/target
-    rm -r .settings/ api/.settings/ impl/.settings/
-    rm -r .project api/.project impl/.project
-
-Change with eclipse editor (or vi) within the directory tree the four pom.xml files from<br/>
-template_something to myapp_something
-
-  Example:
-
-      <artifactId>myapp</artifactId>
-      <name>myapp</name>
-
-Adapt in the impl/pom.xml and the features/pom.xml the dependency to the myapps-api project.
-
-Import into eclipse under the apps working set, that you see the new projects:
-  - myapp
-  - myapp-api
-  - myapp-impl
-  - myapp-features
-
-Using eclipse do rename
-
-  - filename or partial filenames from "template" to "myapp"
-    - .yang file in myapp-api
-    - .yang file in myapp-impl
-  - bundle name in myapp-impl/src/main/java to org.opendaylight.mwtn.myapp
-
-Modify module name, namespace, prefix revision date of myapp-api yang file:
-
-    module myapp {
-        yang-version 1;
-        namespace "urn:opendaylight:params:xml:ns:yang:myapp";
-        prefix "myapp";
-
-        revision "2018-01-23" {
-            description "Initial revision of myapp model";
-        }
-
-        rpc hello-world {
-            input {
-                leaf name {
-                    type string;
-                }
-            }
-            output {
-                leaf greeting {
-                    type string;
-                }
-            }
-        }
-    }
-
-Similar with myapp-impl yang file. Adapt module name, namespace, prefix, revision date, java-name-prefix.
-
-    module myapp-impl {
-        yang-version 1;
-        namespace "urn:opendaylight:params:xml:ns:yang:myapp:impl";
-        prefix "myapp-impl";
-
-        import config { prefix config; revision-date 2013-04-05; }
-        import opendaylight-md-sal-binding { prefix md-sal-binding; revision-date 2013-10-28;}
-
-        description
-            "Service definition for myapp project";
-
-        revision "2018-01-23" {
-            description
-                "Initial myapp revision";
-        }
-
-        identity myapp {
-            base config:module-type;
-            config:java-name-prefix MyappImpl;
-        }
-
-        augment "/config:modules/config:module/config:configuration" {
-            case myapp {
-                when "/config:modules/config:module/config:type = 'myapp'";
-                container broker {
-                    uses config:service-ref {
-                        refine type {
-                            mandatory true;
-                            config:required-identity md-sal-binding:binding-broker-osgi-registry;
-                        }
-                    }
-                }
-            }
-        }
-    }
-
-Adapt Java classes using eclipse refactor
-
-  - TemplateAppProvider -> MyAppProvider
-  - TemplateServiceImpl -> MyAppServiceImpl
-
-HINT1: The enabled *eclipse -> project -> Build Automatically* option interferes with external Maven builds in the command line. You can see strange errors during maven build. If this is the case than disable it and try again. Basically handling is easier if option is switched on, but disable it before you use cli/maven.
-
-HINT2: After cli/maven build is done use F5 to see all generated files files.
-
-HINT3: If you feel that errors are all corrected, but the errors will not go away in eclipse use *eclipse -> projects -> clean* for the project.
-
-Enable  *eclipse -> project -> Build Automatically* or use maven build command below to build the app.<br/>
-
-    cd myapp
-    mvn clean install -DskipTests -Dmaven.javadoc.skip=true
-
-You see the new created sources with the timestamp in the package name.<br/>
-Open "MyAppImplModule" and fill the implementation with addapted code similar to the code in the "TemplateImplModule.java" in the function "createInstance()". The eclipse refactor has already renamed the code snippet to the right class name.
-
-Next steps:
-
-  - Remove the old package.
-  - Correct the imports where necessary
-
-If all errors are corrected, do a cli maven build. If you see this you are ready with this section.
-
-    [INFO] Reactor Summary:
-    [INFO]
-    [INFO] myapp-api .......................................... SUCCESS [ 10.130 s]
-    [INFO] myapp-impl ......................................... SUCCESS [  4.644 s]
-    [INFO] ONF :: Wireless :: myapp-features .................. SUCCESS [  8.811 s]
-    [INFO] myapp .............................................. SUCCESS [  3.727 s]
-    [INFO] ------------------------------------------------------------------------
-    [INFO] BUILD SUCCESS
-    [INFO] ------------------------------------------------------------------------
-
-In case of errors:
-
-  - Remove all targets
-    rm -r target api/target impl/target features/target
-  - Grep for all string "template" and replace
-    grep -r template
-  - Activate enough logging
-  - (!)Remove in the karaf the xml config file: rm $ODL_KARAF_HOME/etc/opendaylight/karaf/myapp.xml. New install of the feature/bundle is required to re-create this file.
-
-
-### 1.4 Test it
-
-HINT1: At this point your .m2 repository needs to contain all jars of the applications in apps, features and ux. If not done before you need to compile everything with the following command:
-
-    cd ~/odl/CENTENNIAL/code
-    mvn clean install -DskipTests
-
-HINT2: If karaf container is already running you get a feedback that start is not possible. Use the stop command to stop it:
-
-    cd ~/odl/CENTENNIAL/code
-    ./install.sh stop
-
-HIN3: In new environment you should use the the ```./odl``` command insteadt of ```./install.sh```
-Change to the code directory and start the karaf container using the *imd* option:
-
-    cd ~/odl/CENTENNIAL/code
-    ./install.sh imd
-
-To **Test it** step into to the karaf cli:
-
-    ./karafcmd.sh
-
-Add the new feature in the karaf command line:
-
-    feature:repo-add mvn:org.opendaylight.mwtn/myapp-features/0.4.0-SNAPSHOT/xml/features
-    feature:install odl-mwt-myapp
-    bundle:list
-
-You are done with this test if you see something like this, especially the last line is important!
-
-    herbert@vm2-herbert:~/odl/distribution-karaf-0.5.3-Boron-SR3/data/log$ grep -ia "session i" *
-    2018-01-23 20:24:18,651 | INFO  | config-pusher    | TemplateProvider                 | 331 - org.opendaylight.mwtn.template-impl - 0.4.0.SNAPSHOT | TemplateProvider Session Initiated
-    2018-01-23 20:24:18,760 | INFO  | config-pusher    | WebsocketmanagerProvider         | 329 - org.opendaylight.mwtn.websocketmanager-impl - 0.4.0.SNAPSHOT | WebsocketmanagerProvider Session Initiated
-    2018-01-23 20:26:39,218 | INFO  | config-pusher    | MyAppProvider                    | 337 - org.opendaylight.mwtn.myapp-impl - 0.4.0.SNAPSHOT | TemplateProvider Session Initiated
-
-Nect test is to access the RPC via restonf. This is done via ODLs APIDOC explorer.
-Use this link to open the application, enter login credentials admin, admin <br/>
-[odl apidoc](http://127.0.0.1:8181/apidoc/explorer/index.html)
-
-
-### 1.5. Change higher-level POM files
-
-  - code/feature.xml
-  - code/pom.xml
-
-### 1.6. Adapt install.sh script
-
-  - code/install.sh
-
-## 2.0 Test and debug app
-
-### 2.1 Setup and connect netconf simulator
-
-
-### 2.2 Setup ODL debug level
-
-
-### Remarks
-
-  - Karaf Intro and Install
-  - Simulators
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/docs/README2CreateTarBundle.md b/sdnr/wireless-transport/code-Carbon-SR1/docs/README2CreateTarBundle.md
deleted file mode 100644 (file)
index 2439684..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-# Create a delivery Tar bundle
-
-Comprehensive How-to-create list for a ODL/Karaf bundle that can be used to be installed as "Choice 1" refering to the README.MD.
-In the CENTENNIAL/bin directory the script *createTarBundle.sh* bases on this description.
-
-#### Start configuration
-
-Setup a server
-  - ubuntu 16.04
-  - odl-karaf boron
-
-Setup OpenDaylight
-  - All ODL-Setup steps executed from README.MD Choice 2 Steps #1 - #3.1
-
-During step #2.3 enable logging within karaf command line:
-
-    log:set DEBUG com.highstreet.technologies
-    log:set TRACE org.opendaylight.netconf
-
-
-#### build applications
-
-    mvn clean install -DskipTests
-
-#### some checks
-
-    echo $JAVA_HOME
-    echo $JAVA_MAX_MEM
-    echo $ODL_KARAF_HOME
-
-
-#### clean
-
-    rm -rf ~/.m2/repository/com/highstreet/technologies/odl/app/closedLoopAutomation-karaf/
-    rm -rf ~/.m2/repository/com/highstreet/technologies/odl/app/spectrum/scheduler-karaf/
-    find ~/.m2/repository/org/opendaylight/mwtn/* -type d -name "*-module" -exec rm -rf {} \;
-    find ~/.m2/repository/com/hcl/* -type d -name "*-module" -exec rm -rf {} \;
-    find ~/.m2/repository/com/highstreet/* -type d -name "*-module" -exec rm -rf {} \;
-    rm -rf $ODL_KARAF_HOME/cache/schema/tailf*.yang
-    rm -rf $ODL_KARAF_HOME/cache/schema/yuma*.yang
-
-#### remove
-
-    rm $ODL_KARAF_HOME/etc/org.ops4j.pax.web.cfg
-    rm -rf $ODL_KARAF_HOME/data/*
-    rm -rf $ODL_KARAF_HOME/system/org/opendaylight/mwtn
-    rm -rf $ODL_KARAF_HOME/system/com/hcl
-    rm -rf $ODL_KARAF_HOME/system/com/highstreet
-
-#### deploy
-
-    mkdir -p $ODL_KARAF_HOME/system/cn
-    mkdir -p $ODL_KARAF_HOME/system/cn/com
-    cp -R ~/.m2/repository/org/opendaylight/mwtn $ODL_KARAF_HOME/system/org/opendaylight
-    cp -R ~/.m2/repository/cn/com/zte $ODL_KARAF_HOME/system/cn/com
-    cp -R ~/.m2/repository/com/hcl $ODL_KARAF_HOME/system/com
-    cp -R ~/.m2/repository/com/highstreet $ODL_KARAF_HOME/system/com
-
-#### Copy into new directory and create tar file
-
-    TARDIR=onf-wireless-4th-poc-karaf-0.5.3-Boron-SR3-2017-06-22
-    mkdir $TARDIR
-    cp -r distribution-karaf-0.5.3-Boron-SR3/* $TARDIR
-    tar -czvf "$TARDIR.tar.gz" $TARDIR
-
-
-#### install in karaf console
-
-    cd $ODL_KARAF_HOME
-    ./bin/karaf clean
-
-    feature:install odl-netconf-topology
-    feature:install odl-netconf-connector-all
-    feature:install odl-restconf-all
-    feature:install odl-mdsal-apidocs
-    feature:install odl-dlux-all
-    feature:repo-add mvn:org.opendaylight.mwtn/mwtn-parent/0.4.0-SNAPSHOT/xml/features
-    feature:install elasticsearch
-    feature:install odl-mwtn-all
-    feature:repo-add mvn:com.highstreet.technologies.odl.app/route-features/0.4.0-SNAPSHOT/xml/features
-    feature:install odl-route
-
-#### perform tests with DLUX UI
-
--> if test successfully done deliver already created TAR package
--> Link in Centennial anpassen
-
-#### Appendix
-..........................
-
-    # remove all required nes
-    # unmount all devices
-    # close DLUX UI
-
-    # delete logs in ElasticSearch using delete plug in
-
-    http://localhost:9200/mwtn/log/
-    http://localhost:9200/sdnevents/
-    http://localhost:9200/sdnperformance/
-
-
-    # shutdown karaf
-    logout
-
-
-    # clear karaf
-
-    ./bin/karaf clean
-    logout
-    rm -rf $ODL_KARAF_HOME/cache/schema/tailf*.yang
-    rm -rf $ODL_KARAF_HOME/cache/schema/yuma*.yang
-    rm -rf $ODL_KARAF_HOME/data/log/*
-
-
-    # IMPORTANT!!!
-    # make sure that no hardcoded references are in karaf
-
-    rm $ODL_KARAF_HOME/etc/org.ops4j.pax.web.cfg
-
-    cd ..
-
-    mv onf-wireless-4th-poc-karaf-0.5.3-Boron-SR3-2017-06-22
-
-    tar -czvf onf-wireless-4th-poc-karaf-0.5.3-Boron-SR3-2017-06-22.tar.gz onf-wireless-4th-poc-karaf-0.5.3-Boron-SR3-2017-06-22
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment.md b/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment.md
deleted file mode 100644 (file)
index be6f2f5..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-## 1. Setup ODL network app development environment
-
-Description of how to get an development environment for creating network applications on top of opendaylight.
-The development environment is a single server solution with graphical front-end for the developer.
-The ODL Boron release is used as basis.
-
-### 1.1. Server setup
-
-Server setup for a development server with eclipse as IDE, ODL Boron Karaf container and NE Simulators.
-Remote Desktop is used to access the server via a VPN connection.
-  - From Windows PC: MS Remote Desktop
-  - From Ubuntu PC: There are some. Example: Remmina Remote Desktop Client (sudo apt install remmina)
-
-Capacity of the VM Server should be about 4 CPUs and 8 Gig of RAM and 50 Gig of HDD.
-
-#### Base software:
-
-  - ubuntu server edition (16.04.03 LTS)
-  - xfce desktop
-  - xrdp : remote management GUI
-    - For setup that supports copy and paste use the PPA Version 0.9.x
-    - version standard repository version 0.6.x is basically also working.
-  - chromium
-
-#### xrdp PPA install
-
-Do the following steps and restart server if done.
-
-1. Answer yes, if asked about overwriting etc/xrdp/xrdp.ini
-
-    ```
-    sudo add-apt-repository ppa:hermlnx/xrdp
-    sudo apt-get update
-    sudo apt-get install xrdp
-    sudo apt-get upgrade
-    ```
-
-2. Switch of extensive gui features. In ubuntu desktop goto menu on the left right corner <br/>
-   to **Applications-> Settings -> Windows Manager Tweaks**, select folder Compositor and
-   disable it by unchecking the option.
-
-3. Improve performance (if required)
-
-  Change configuration in /etc/xrdp/xrdp.ini
-      - Security level high to none
-
-4. Change sudo vi /etc/xrdp/sessman.ini and add change to '.thinclient_drives' (see the dot)
-
-    [Chansrv]
-    ; drive redirection, defaults to xrdp_client if not set
-    FuseMountName=.thinclient_drives
-
-
-4. reboot server to activate xrdp configuration
-
-5. Login with RPC application connect to server. Use defaults and enter existing user an password.
-
-
-#### Adaption for Windows Client:
-  - Adapt TAB key handling ([details askubuntu](https://askubuntu.com/questions/352121/bash-auto-completion-with-xubuntu-and-xrdp-from-windows)):<br/>
-    edit the `~/.config/xfce4/xfconf/xfce-perchannel-xml/xfce4-keyboard-shortcuts.xml` file to unset the following mapping
-    ```
-    <       <property name="&lt;Super&gt;Tab" type="string" value="switch_window_key"/>
-    ---
-    >       <property name="&lt;Super&gt;Tab" type="string" value="empty"/>
-    ```
-    NOTE: There may be two entries, and the first already has the value "empty". If this is the case, edit the second entry.
-
-#### Adding further tools
-
-Add chromium as browser
-    - See [details askubuntu](https://wiki.ubuntuusers.de/Chromium/Installation/)
-
-    sudo apt-get install chromium-browser chromium-browser-l10n chromium-codecs-ffmpeg
-
-### 1.2 Directory structure
-
-home
-  - eclipse (Eclipse installation directory)
-  - odl (Workspace)
-    - CENTENNIAL (network application)
-    - other projects go here
-    - distribution-karaf-0.6.1-Carbon (opendaylight karaf run-time environment)
-
-Prereq:
-    - Access to highstreet technologies gitlab server and to project "CENTENNIAL"
-    - Gerrit account [Create account](https://wiki.opendaylight.org/view/OpenDaylight_Controller:Gerrit_Setup)
-
-
-### 1.3 Install setup ODL_KARAF_HOME, Java, eclipse, mvn, draw and tools
-
-  Setup in home directory .bashrc like follows and logout/login to activate.
-
-     export ODL_KARAF_DIST="distribution-karaf-0.6.1-Carbon"
-     export ODL_KARAF_HOME="$HOME/odl/$ODL_KARAF_DIST"
-     export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
-
-  Verify
-
-      echo $ODL_KARAF_HOME
-
-  According to step 2.2 [CENTENNIAL/code/README.md](../README.md#step-22---download-CENTENNIAL-applications)
-  - openjdk (sudo apt-get install)
-  - mvn, configure maven for ODL
-  - bower
-  - ODL Boron distribution
-
-  And this software
-  - libre office draw  (sudo apt-get install libreoffice-draw)
-  - eclipse via oomph for ODL Development
-
-  Example eclipse configuration for user "Herbert"
-
-  ![eclipse parameters](READMEInstallDevelopmentEnvironment_1_eclipseinst.png?raw=true "Eclipse parameters")
-
-  After install .. change setting below for Secure Store:
-
-  ![eclipse adaption](READMEInstallDevelopmentEnvironment_2_secureStore.png?raw=true "Secure store option")
-
-  Add plugins from eclipse marketplace
-    - "GitHub Flavored Markdown viewer plugin 1.8.3" (GFM)
-    - Elcipse YANG editor
-
-
-### 2. Create app
-
-See the documentation [create app documentation](READMECreateApp4Carbon.md)
-
-
-### 3. Remarks
-
-  - Karaf Intro and Install
-  - Simulators (Three times)
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment_1_eclipseinst.png b/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment_1_eclipseinst.png
deleted file mode 100644 (file)
index bfb752f..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment_1_eclipseinst.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment_2_secureStore.png b/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment_2_secureStore.png
deleted file mode 100644 (file)
index aeeabc8..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEInstallDevelopmentEnvironment_2_secureStore.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEMigrateBoronSR1-2-SR3.md b/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEMigrateBoronSR1-2-SR3.md
deleted file mode 100644 (file)
index ac20776..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-# Change ODL version from "Boron-SR1" to "Boron-SR3"
-
-## Update ~/.profile
-Change the Environment variables ODL_KARAF_HOME and ODL_KARAF_DIST.
-
-```
-sed -i 's/1-Boron-SR1/3-Boron-SR3/g' ~/.profile
-source ~/.profile
-```
-
-## Download the distribution
-Download the required disctribution into the Download folder.
-
-```
-cd $HOME/Downloads/
-wget https://nexus.opendaylight.org/content/repositories/public/org/opendaylight/integration/distribution-karaf/0.5.3-Boron-SR3/distribution-karaf-0.5.3-Boron-SR3.tar.gz
-```
-
-## Create the DLUX patch
-For updating DLUX with newer anagular-bootstrap version and small modification in css, the ODL DLUX project must be cloned modified and build.
-
-```
-mkdir $HOME/dlux-patch-boron-sr3
-cd $HOME/dlux-patch-boron-sr3
-git clone https://git.opendaylight.org/gerrit/dlux
-cd dlux
-git checkout tags/release/boron-sr3
-
-# modify anchor color (must not always be dark)
-sed -i 's/\tcolor: #414042 !important;/\tcolor: #414042;/' dlux-web/src/less/design.less
-
-# select new versions for angular-bootstrap and font-awesome
-sed -i 's/"angular-bootstrap": "~0.13.0",/"angular-bootstrap": "~2.1.3",/' dlux-web/bower.json
-sed -i 's/"font-awesome": "~4.0.3",/"font-awesome": "~4.7.0",/' dlux-web/bower.json
-
-# build dlux - ignore all errors ;) or update ODL DLUX project - it may take 5 to 15min
-mvn clean install -DskipTests
-
-# deploy ($ODL_KARAF_HOME does not exits yet - deploy later)
-# cp $HOME/dlux-patch-boron-sr3/dlux/loader/impl/target/loader.implementation-0.4.3-Boron-SR3.jar $ODL_KARAF_HOME/system/org/opendaylight/dlux/loader.implementation/0.4.3-Boron-SR3/
-cp $HOME/dlux-patch/dlux/loader/impl/target/loader.implementation-0.4.3-Boron-SR3.jar $HOME/workspace/ht/SDN-Projects-Boron/code/apps/dlux/
-```
-
-## Prepare OpenDaylight karaf
-```
-cd $HOME/workspace/ht/SDN-Projects-Boron/code
-find . -name \pom.xml -exec sed -i "s/1-Boron-SR1/3-Boron-SR3/g" {} \;
-find . -name \mwtnCommons.services.js -exec sed -i "s/Boron-SR1/Boron-SR3/g" {} \;
-./install.sh prepare
-./install.sh a
-cp $HOME/dlux-patch-boron-sr3/dlux/loader/impl/target/loader.implementation-0.4.3-Boron-SR3.jar $ODL_KARAF_HOME/system/org/opendaylight/dlux/loader.implementation/0.4.3-Boron-SR3/
-```
-
-## Start the engines!
-```
-cd $ODL_KARAF_HOME
-./bin/karaf clean
-```
-
-## Install karaf features
-```
-# pure OpenDaylight
-feature:install odl-netconf-topology
-feature:install odl-restconf-all 
-feature:install odl-mdsal-apidocs 
-feature:install odl-dlux-all 
-
-# persistent database (ElasticSearch)
-feature:repo-add mvn:org.apache.karaf.decanter/apache-karaf-decanter/1.1.0/xml/features
-feature:install elasticsearch
-
-# Wireless (mwtn: microwave transport network)
-feature:repo-add mvn:org.opendaylight.mwtn/mwtn-parent/0.4.0-SNAPSHOT/xml/features
-feature:install odl-mwtn-all
-
-# Logging settings
-log:set DEBUG org.opendaylight.mwtn
-log:set TRACE org.opendaylight.netconf
-
-# check
-info
-log:list
-```
-
-
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEOperateAndDebugODL.md b/sdnr/wireless-transport/code-Carbon-SR1/docs/READMEOperateAndDebugODL.md
deleted file mode 100644 (file)
index 40ec62c..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-## Operate and debug ODL for testing
-
-### Debug ODL
-
-#### Activate or deactivate log point
-
-Getting Log info about a specific service:
-
-    log:set DEBUG com.highstreet.technologies
-
-Getting all NETCONF/YANG traffic (Hint: huge amount of data, only for test purpose):
-
-    log:set TRACE org.opendaylight.netconf
-
-For switching off logging set level to INFO to see the log point
-
-    log:set INFO org.opendaylight.netconf
-
-For deleting the log point for a package
-
-    log:set DEFAULT org.opendaylight.netconf
-
-Configuration of logging is done here:
-
-    vi $ODL_KARAF_HOME/etc/org.ops4j.pax.logging.cfg
-
-#### View the log
-
-A good option is to cd into the log directory and use grep and vi to view into the logs.
-
-    cd $ODL_KARAF_HOME/bin/data/log
-
-A second option is within the karaf command line to use the command *log:display* in combination with grep.
-
-    log:display | grep
-
-
-### Operate ODL
-
-#### In shell or background
-
-There are two way to start and run ODL. The command are available in the $ODL_KARAF_HOME/bin directory.
-
-  1. In the karaf shell
-   - Using *./bin/karaf* command to run ODL in a shell.
-   - In this way of operation ODL is running if the shell is running.
-   - If you leave the shell by shutdown or logout command ODL is stopped.
-
-  2. In the background
-   - Use command *./bin/start*, *./bin/stop* to run and stop ODL.
-   - Attaching to the command line with *client*
-   - In this way of operation ODL is running in the background.
-
-#### Check if ODL is running
-
-A good way to check if ODL is running is to use the command
-
-    ps -ef | grep karaf
-
-The feedback of *status* is not always true during startup or shutdown.
-In some cases ODL run two times in a JVM what needs to be avoided.
-
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/docs/dist.conf b/sdnr/wireless-transport/code-Carbon-SR1/docs/dist.conf
deleted file mode 100644 (file)
index 78c6030..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-#Example configuration
-ODL_KARAF_DIST="distribution-karaf-0.6.1-Carbon"
-ODL_KARAF_HOME=$HOME/odl/$ODL_KARAF_DIST
-ODL_KARAF_DISTGZ="$HOME/Downloads/"$ODL_KARAF_DIST".tar.gz"
-#ODL_KARAF_AFTERCMD_DELAY_SECONDS="0"
-export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/docs/installServiceExample.sh b/sdnr/wireless-transport/code-Carbon-SR1/docs/installServiceExample.sh
deleted file mode 100644 (file)
index e83c350..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/bin/bash
-# Install feature powercontroll / FRINX
-# Example for script based setup of KARAF container
-
-karafcmd() {
-  echo $1
-  ./bin/client "$1"
-}
-
-echo pull from git
-cd ~/apps/CENTENNIAL/code/apps/wirelessPowerControl/impl
-git pull
-echo compile
-mvn clean install -DskipTests
-
-
-echo copy the files
-cp -R ~/.m2/repository/com/highstreet/technologies/odl/app/wi* $ODL_KARAF_HOME/system/com/highstreet/technologies/odl/app
-
-cd $ODL_KARAF_HOME
-echo stop
-./bin/stop
-sleep 30
-
-echo start clean
-./bin/start clean
-
-sleep 30
-echo install
-karafcmd "feature:install odl-netconf-topology"
-karafcmd "feature:install odl-netconf-connector-all"
-karafcmd "feature:install odl-restconf-all"
-karafcmd "feature:install odl-mdsal-apidocs"
-karafcmd "feature:install odl-dlux-all"
-karafcmd "feature:repo-add mvn:org.opendaylight.mwtn/mwtn-parent/0.4.0-SNAPSHOT/xml/features"
-karafcmd "feature:install elasticsearch"
-karafcmd "feature:repo-add mvn:com.highstreet.technologies.odl.app/wirelessPowerControl-features/0.4.0-SNAPSHOT/xml/features"
-karafcmd "feature:install odl-wirelessPowerControl"
-karafcmd "feature:install odl-mwtn-all"
-karafcmd "feature:repo-add mvn:com.highstreet.technologies.odl.app/route-features/0.4.0-SNAPSHOT/xml/features"
-karafcmd "feature:install odl-route"
-
-./bin/stop
-sleep 30
-./bin/start
-
-echo "Ready"
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/docs/software_architecture.png b/sdnr/wireless-transport/code-Carbon-SR1/docs/software_architecture.png
deleted file mode 100755 (executable)
index 3f59963..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/docs/software_architecture.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/features/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/features/pom.xml
deleted file mode 100644 (file)
index 5d54fd1..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.opendaylight.odlparent</groupId>
-        <artifactId>features-parent</artifactId>
-        <version>1.8.1-Carbon</version>
-        <relativePath />
-    </parent>
-
-    <groupId>org.opendaylight.mwtn</groupId>
-    <artifactId>mwtn-parent</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
-    <name>ONF :: Wireless :: ${project.artifactId}</name>
-
-    <prerequisites>
-        <maven>3.3.3</maven>
-    </prerequisites>
-
-    <properties>
-        <dlux.version>0.5.1-Carbon</dlux.version>
-        <decanter.version>1.1.0</decanter.version>
-        <elasticsearch.version>2.2.0</elasticsearch.version>
-        <mdsal.version>1.5.1-Carbon</mdsal.version>
-        <mdsal.model.version>0.10.1-Carbon</mdsal.model.version>
-        <restconf.version>1.5.1-Carbon</restconf.version>
-        <yangtools.version>1.1.1-Carbon</yangtools.version>
-        <openflow.plugin.version>0.4.1-Carbon</openflow.plugin.version>
-        <configfile.directory>etc/opendaylight/karaf</configfile.directory>
-        <netconf.version>1.2.1-Carbon</netconf.version>
-        <jackson.version>2.4.2</jackson.version>
-        <jersey.version>1.17</jersey.version>
-        <xerces.version>2.11.0</xerces.version>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>xerces</groupId>
-            <artifactId>xercesImpl</artifactId>
-            <version>${xerces.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.opendaylight.yangtools</groupId>
-            <artifactId>features-yangtools</artifactId>
-            <classifier>features</classifier>
-            <type>xml</type>
-            <scope>runtime</scope>
-            <version>${yangtools.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.controller</groupId>
-            <artifactId>features-mdsal</artifactId>
-            <classifier>features</classifier>
-            <version>${mdsal.version}</version>
-            <type>xml</type>
-            <scope>runtime</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.netconf</groupId>
-            <artifactId>features-restconf</artifactId>
-            <classifier>features</classifier>
-            <version>${mdsal.version}</version>
-            <type>xml</type>
-            <scope>runtime</scope>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.netconf</groupId>
-            <artifactId>features-netconf-connector</artifactId>
-            <classifier>features</classifier>
-            <version>${netconf.version}</version>
-            <scope>runtime</scope>
-            <type>xml</type>
-        </dependency>
-        <dependency>
-            <groupId>org.opendaylight.openflowplugin</groupId>
-            <artifactId>features-openflowplugin</artifactId>
-            <classifier>features</classifier>
-            <version>${openflow.plugin.version}</version>
-            <type>xml</type>
-        </dependency>
-
-        <!-- Mwt Dependencies -->
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>configuration</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>devicemodel</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>websocketmanager-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>websocketmanager-impl</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>websocketmanager-impl</artifactId>
-            <version>${project.version}</version>
-            <type>xml</type>
-            <classifier>config</classifier>
-        </dependency>
-            <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>devicemanager-api</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>devicemanager-impl</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>${project.groupId}</groupId>
-            <artifactId>devicemanager-impl</artifactId>
-            <version>${project.version}</version>
-            <type>xml</type>
-            <classifier>config</classifier>
-        </dependency>
-
-        <!-- <dependency> <groupId>${project.groupId}</groupId> <artifactId>nediscovery-api</artifactId>
-            <version>${project.version}</version> </dependency> <dependency> <groupId>${project.groupId}</groupId>
-            <artifactId>nediscovery-impl</artifactId> <version>${project.version}</version>
-            </dependency> <dependency> <groupId>${project.groupId}</groupId> <artifactId>nediscovery-impl</artifactId>
-            <version>${project.version}</version> <type>xml</type> <classifier>config</classifier>
-            </dependency> -->
-    </dependencies>
-
-
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/features/src/main/features/features.xml b/sdnr/wireless-transport/code-Carbon-SR1/features/src/main/features/features.xml
deleted file mode 100644 (file)
index 10b06b9..0000000
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-       Top level feature bundling of network apps. Only in this file the APPS and UX/DLUX components are bundled.
-       * Due to startup timing problems the base packages are installed manually or by script as pre-requisite
-       * The features already loaded before loading of network apps are (loading again within feature is OK):
-                 ./karafcmd.sh  "feature:install odl-netconf-topology"
-                        ./karafcmd.sh  "feature:install odl-restconf-all"
-                            ./karafcmd.sh  "feature:install odl-mdsal-apidocs"
-                 ./karafcmd.sh  "feature:install odl-dlux-all"
-                 ./karafcmd.sh  "feature:repo-add mvn:org.apache.karaf.decanter/apache-karaf-decanter/1.1.0/xml/features"
-                 ./karafcmd.sh  "feature:install elasticsearch"
- -->
-
-<features name="odl-mwtn-${project.version}"
-                       xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-                       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                       xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-
-<!-- Other repositories -->
-  <repository>mvn:com.highstreet.technologies.odl.dlux/mwtnFeatures/${project.version}/xml/features</repository>
-  <repository>mvn:com.highstreet.technologies.apigateway/apigateway-features/${project.version}/xml/features</repository>
-  <repository>mvn:com.highstreet.technologies.info/info-features/${project.version}/xml/features</repository>
-  <repository>mvn:com.highstreet.technologies.helpserver/helpserver-features/${project.version}/xml/features</repository>
-  <repository>mvn:com.highstreet.technologies.odl.app/route-features/${project.version}/xml/features</repository>
-  <repository>mvn:org.opendaylight.dlux/features-dlux/${dlux.version}/xml/features</repository>
-  <repository>mvn:org.opendaylight.dluxapps/features-dluxapps/${dlux.version}/xml/features</repository>
-
-<!--
-       Section 1: Customer and test features of highstreet network applications
- -->
-
-  <feature name="sdnr-wt-all" version="${project.version}" description="ONAP :: OpenDaylight :: SDN-R :: All">
-    <feature version="${mdsal.version}">odl-mdsal-clustering</feature>
-    <feature version="${netconf.version}">odl-netconf-clustered-topology</feature>
-    <feature version="${restconf.version}">odl-restconf-all</feature>
-    <feature version="${mdsal.version}">odl-mdsal-apidocs</feature>
-
-    <feature version="${project.version}">sdnr-wt-apps-all</feature>
-    <feature version="${project.version}">sdnr-wt-ux-all</feature>
-  </feature>
-
-  <feature name="onap-sdnr-all" version="${project.version}" description="ONAP :: OpenDaylight :: SDN-R :: All">
-    <feature version="${project.version}">odl-mwtn-apps-all</feature>
-    <feature version="${project.version}">onap-sdnr-ux-all</feature>
-    <!-- <feature version="${project.version}">sdnr-ran-all</feature> -->
-  </feature>
-
-  <feature name="sdnr-wt-apps-all" version="${project.version}" description="ONAP :: SDN-R :: WT :: All apps">
-    <feature version="${project.version}">odl-mwt-models</feature>
-    <feature version="${project.version}">odl-mwt-websocketmanager</feature>
-    <feature version="${project.version}">odl-mwt-devicemanager</feature>
-    <!-- <feature version="${project.version}">odl-mwt-event</feature> -->
-  </feature>
-
-<!-- PoC Specific feature for "poc180628" delivery -->
-  <feature name="odl-mwtn-poc180628" version="${project.version}" description="MicrowaveTransportNetwork :: 180628">
-    <feature>odl-dlux-preparation</feature>
-    <feature version="${project.version}">odl-mwtn-apps-all</feature>
-    <feature version="${project.version}">ht-mwtn-ux-poc180628</feature>
-  </feature>
-
-  <!-- Used by install script.
-       Prereq: ODL basis for cluster or single.
-       Starts: All MWTN apps, and all UX GUIs -->
-  <feature name="odl-dev-all" version="${project.version}" description="MicrowaveTransportNetwork :: All">
-    <feature>odl-dlux-preparation</feature>
-    <feature version="${project.version}">odl-mwtn-apps-all</feature>
-    <feature version="${project.version}">odl-mwtn-ux-all</feature>
-  </feature>
-
-<!--
-       Section 2: Intermediate bundles
- -->
-
-  <!-- Startup basis for cluster, without DLUX. Have to be started before MWTN -->
-  <feature name="odl-mwtn-cluster-preparation" version="${project.version}" description="ONAP :: OpenDaylight :: SDN-R :: Cluster-All">
-    <feature version="${mdsal.version}">odl-mdsal-clustering</feature>
-    <feature version="${netconf.version}">odl-netconf-clustered-topology</feature>
-    <feature version="${restconf.version}">odl-restconf-all</feature>
-    <feature version="${mdsal.version}">odl-mdsal-apidocs</feature>
-  </feature>
-
-  <!-- Startup basis for single node, without DLUX. Have to be started before MWTN -->
-  <feature name="odl-mwtn-single-preparation" version="${project.version}" description="ONAP :: OpenDaylight :: SDN-R :: Single-All">
-    <feature version="${netconf.version}">odl-netconf-topology</feature>
-    <feature version="${netconf.version}">odl-netconf-connector</feature>
-    <feature version="${restconf.version}">odl-restconf-all</feature>
-    <feature version="${mdsal.version}">odl-mdsal-apidocs</feature>
-  </feature>
-
-  <!-- DLUX Core packages. Have to be started before MWTN -->
-  <feature name="odl-dlux-preparation" description="MicrowaveTransportNetwork :: Dlux preparation">
-    <feature>odl-dlux-core</feature>
-    <feature>odl-dluxapps-nodes</feature>
-  </feature>
-
-  <!-- All apps, but no UX GUI. -->
-  <feature name="odl-mwtn-apps-all" version="${project.version}" description="MicrowaveTransportNetwork :: All apps">
-    <feature version="${project.version}">odl-ht-apigateway</feature>
-    <feature version="${project.version}">odl-mwt-models</feature>
-    <feature version="${project.version}">odl-mwt-websocketmanager</feature>
-    <feature version="${project.version}">odl-mwt-devicemanager</feature>
-    <feature version="${project.version}">odl-ht-helpserver</feature>
-    <feature version="${project.version}">odl-ht-info</feature>
-  </feature>
-
-<!--
-       Section 3: Per app feature
- -->
-
-  <feature name="odl-mwt-models" version="${project.version}" description="MicrowaveTransportNetwork :: Device model">
-    <bundle>mvn:org.opendaylight.mwtn/devicemodel/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwt-websocketmanager" version="${project.version}" description="MicrowaveTransportNetwork :: Websocket manager">
-    <bundle>mvn:org.opendaylight.mwtn/websocketmanager-api/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.mwtn/websocketmanager-impl/{{VERSION}}</bundle>
-    <configfile finalname="${configfile.directory}/websocketmgr.xml">mvn:org.opendaylight.mwtn/websocketmanager-impl/${project.version}/xml/config</configfile>
-  </feature>
-
-  <feature name="odl-mwt-devicemanager" version="${project.version}" description="MicrowaveTransportNetwork :: Device manager">
-    <feature version="${mdsal.version}">odl-mdsal-broker</feature>
-    <feature version="${project.version}">odl-mwt-models</feature>
-    <feature version="${project.version}">odl-mwt-websocketmanager</feature>
-    <bundle>mvn:org.opendaylight.mwtn/devicemanager-api/{{VERSION}}</bundle>
-    <bundle>mvn:org.opendaylight.mwtn/devicemanager-impl/{{VERSION}}</bundle>
-    <configfile finalname="${configfile.directory}/devicemanager.xml">mvn:org.opendaylight.mwtn/devicemanager-impl/${project.version}/xml/config</configfile>
-  </feature>
-
-</features>
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/odl b/sdnr/wireless-transport/code-Carbon-SR1/odl
deleted file mode 100755 (executable)
index 3dc8c08..0000000
+++ /dev/null
@@ -1,925 +0,0 @@
-#!/bin/bash
-# (c) 2016 highstreet technologies
-# History
-#   2.1 Modify to use config/active directory
-#   2.2 Correct problems
-#   2.3 Shift config/active to code/apps/persistentDatabase/activConfig
-#   2.4 Update to Boron
-#   2.5 One feature to start apps
-#   2.6 New variant of install.sh
-#   2.12 CMDBIN, switch of DLUX for prepare
-#   2.13 Adapt ODLBIN to odl.sh and buildv2.sh,
-#        Fix "yes" answer for cluster distremove
-#        introduce cluster push
-#        kill command
-#   2.14 add compile command
-#   2.15 move im install script to odl.cmd
-#   2.16 Add $ODL_KARAF_STARTUP_SCRIPT_CLUSTER for cluster command
-#        cp for filecopy
-#   2.17 odl.cmd moved back into bin/odl.sh
-#        Added prepare with copy of etc/preload.cache.schema to cache/schema into startup
-#        status command delivers version information
-#   2.18 Add loop for cluster commands
-#   2.19 Change startup feature
-#        Add parent version variable ODLPARENT
-#   2.20 Added parameter KARAFSLEEPFORSTART
-#   2.21 Typos fixed
-Version=2.21
-
-# ----- Constants not depending on variables specified by $CONFIG
-ODLPARENT="0.5.1-SNAPSHOT"
-STARTFEATURE="odl-dev-all"
-KARAFSLEEPFORSTART=30
-ODLBIN=../bin
-
-CONFIG=dist.conf
-
-# ----- Functions to startup Vanilla ODL
-
-karaf_prepare() {
-    echo "Prepare"
-    echo $ODL_KARAF_HOME
-    ODLCACHESCHEMADIR="$ODL_KARAF_HOME/cache/schema"
-    ETCCACHESCHEMADIR="$ODL_KARAF_HOME/etc/preload.cache.schema"
-
-    if [ -d "$ETCCACHESCHEMADIR" ] ; then
-       echo "Handle YANG preload"
-       if [ -d "$ODLCACHESCHEMADIR" ] ; then
-                echo "Remove all files in YANG cache/schema directory"
-                rm $ODLCACHESCHEMADIR/*
-       else
-                echo "YANG cache/schema directory created"
-                mkdir -p $ODLCACHESCHEMADIR
-       fi
-       cp $ETCCACHESCHEMADIR/* $ODLCACHESCHEMADIR
-    fi
-}
-
-# Startup of single node (no clustering)
-karaf_startup_all() {
-    # Prepare
-    karaf_prepare
-    # Base
-    karafcmd  "feature:install odl-netconf-topology"
-    karafcmd  "feature:install odl-netconf-connector"
-    karafcmd  "feature:install odl-restconf-all"
-    karafcmd  "feature:install odl-mdsal-apidocs"
-
-    # Logs and apps
-    karaf_enable_logs
-    karaf_startup_apps
-}
-
-# Startup of clustered nodes (no clustering)
-karaf_startup_cluster_all() {
-    # Prepare
-    karaf_prepare
-    # Base
-    karafcmd "feature:repo-add mvn:org.opendaylight.mwtn/mwtn-parent/$ODLPARENT/xml/features"
-    karafcmd  "feature:install odl-mwtn-cluster-preparation"
-
-    # Logs and apps
-    karaf_enable_logs DEBUG
-    karaf_startup_apps
-}
-
-# Sub functions
-
-karaf_startup_apps() {
-    # Wireless (mwtn: microwave transport network)
-    karafcmd "feature:repo-add mvn:org.opendaylight.mwtn/mwtn-parent/$ODLPARENT/xml/features"
-    karafcmd "feature:install $STARTFEATURE"
-
-    #If restart is required set RESTART to true
-    # RESTART="true"
-}
-
-karaf_enable_logs() {
-    if [ -z "$1" ] ; then
-      LOGLEVEL="INFO"
-    else
-      LOGLEVEL="$1"
-    fi
-    karafcmd "log:set $LOGLEVEL com.highstreet.technologies"
-    karafcmd "log:set $LOGLEVEL org.opendaylight.mwtn"
-    karafcmd "log:set $LOGLEVEL org.opendaylight.netconf"
-}
-
-karafcmd() {
-   echo "$@"
-   $ODL_KARAF_HOME/bin/client -u karaf "$@" 2> /dev/null
-   if [ ! -z "$ODL_KARAF_AFTERCMD_DELAY_SECONDS" ] ; then
-     echo "Pause $ODL_KARAF_AFTERCMD_DELAY_SECONDS seconds"
-     sleep "$ODL_KARAF_AFTERCMD_DELAY_SECONDS"
-   fi
-}
-
-install_originM2() {
-    #Network apps
-    cp -r ~/.m2/repository/org/opendaylight/mwtn $ODL_KARAF_HOME/system/org/opendaylight
-    cp -r ~/.m2/repository/com/highstreet $ODL_KARAF_HOME/system/com
-    #Additional package for feature odl-ht-info
-    mkdir -p $ODL_KARAF_HOME/system/org/apache/commons/commons-compress
-    cp -r ~/.m2/repository/org/apache/commons/commons-compress/1.14 $ODL_KARAF_HOME/system/org/apache/commons/commons-compress
-}
-
-# ----- Functions of script to implement commands
-
-#check if tool is installed as prereq
-
-tool_check_installed() {
-   hash $1 2>/dev/null || { echo >&2 "I require $1 but it's not installed.  Please install. Aborting."; exit 1; }
-}
-
-#check if karaf instance is running
-karaf_checkrunning() {
-   NETSTATRESULT=$(netstat -ant | grep 8101)
-   if [ -n "$NETSTATRESULT" ] ; then
-      reason="$NETSTATRESULT"
-      running="true"
-   else
-     running1=$(ps -ef | grep -c karaf.jar)
-     sleep 1
-     running2=$(ps -ef | grep -c karaf.jar)
-
-     reason="psResults: $running1 $running2"
-     if [ "$running1" = "2" -o "$running2" = "2" ] ; then
-        running="true"
-     else
-        running="false"
-   fi
-  fi
-  #echo "Test running: $running indication:$reason"
-}
-
-karaf_status() {
-   echo "Version information"
-   cat $ODL_KARAF_HOME/networkAppVersion.txt
-   karaf_checkrunning
-   echo "Karaf is running: $running"
-}
-
-karaf_waittillstopped() {
-    KARAF_WAITFORSTOP="5"
-    anzahl=0
-
-    echo -n "Wait for stop "
-
-    karaf_checkrunning
-    while [ "$running" = "true" -a "$anzahl" -lt 30 ]
-    do
-       (( anzahl++ ))
-       # echo "Wait ($anzahl) for karaf stop. Wait $KARAF_WAITFORSTOP seconds"
-       echo -n "."
-       sleep $KARAF_WAITFORSTOP
-       karaf_checkrunning
-    done
-    echo
-
-    if [ "$running" = "true" ]
-    then
-       echo "Exceeded wait counter. Waited $anzahl * $KARAF_WITFORSTOP seconds. Karaf still running. Reason is $reason"
-    else
-       echo "Karaf reached stop status with $reason"
-    fi
-}
-
-karaf_startifnotrunning() {
-
-    karaf_checkrunning
-    if [ "$running" = "true" ]
-    then
-       echo "Can not start, karaf is already running. Reason: $reason"
-    else
-       if [ "$1" = "clean" ] ; then
-          $ODL_KARAF_HOME/bin/start clean
-          echo "Started with clean"
-       else
-          $ODL_KARAF_HOME/bin/start
-          echo "Started"
-       fi
-    fi
-}
-
-
-# Start all servies
-# see beginning of this script
-
-#Param1 Optional Param2 Optional
-karaf_cleanstart() {
-    echo "start karaf clean with parameters $1 $2"
-    if [ -f "$ODL_KARAF_HOME/etc/opendaylight" ]
-    then
-       echo "Remove old ODL configuration"
-       rm -r $ODL_KARAF_HOME/etc/opendaylight
-    fi
-    echo "Start karaf"
-    $ODL_KARAF_HOME/bin/start clean
-    echo "Wait $KARAFSLEEPFORSTART s till karaf and ssh is in a working level"
-    sleep $KARAFSLEEPFORSTART
-    netstat -ant | grep 8101
-    echo "Provisioning $1"
-    if [ -z "$ODL_KARAF_STARTUP_SCRIPT" ] ; then  #Old scripting names
-      if [ "$1" = "1b" ] ; then
-        karaf_startup_1b
-      else
-        karaf_startup_all
-      fi
-    else #Use startup script according to configuration
-      if [ "$1"="cluster" ] ; then
-        echo "Cluster start command"
-        if [ -z "$ODL_KARAF_STARTUP_SCRIPT_CLUSTER" ] ; then
-           echo "Using normal startup script"
-               $ODL_KARAF_STARTUP_SCRIPT
-        else
-           echo "Using cluster startup script"
-               $ODL_KARAF_STARTUP_SCRIPT_CLUSTER
-         fi
-      else
-         $ODL_KARAF_STARTUP_SCRIPT
-      fi
-    fi
-    if [ "$1" = "x" -o "$2" = "x" -o "$RESTART" = "true" ] ; then
-      echo "Executed with restart option .."
-      sleep 5
-      $ODL_KARAF_HOME/bin/stop
-      echo "Re-starting Karaf to finish setup"
-      karaf_waittillstopped
-      if [ "$1" = "d" -o "$2" = "d" ] ; then
-        rp=$ODL_KARAF_HOME/data/log
-        echo "Remove all logs from $rp"
-        rm "$rp"/*
-      fi
-      karaf_startifnotrunning
-    fi
-    echo "Ready"
-}
-
-# Install from dir $1 all subs with mask $2.
-# Example:   install_originM2Range "com/highstreet/technologies/solutions" "sdn4*"
-install_originM2Range() {
-    mkdir -p $ODL_KARAF_HOME/system/$1
-    cp -R $HOME/.m2/repository/$1/$2 $ODL_KARAF_HOME/system/$1
-}
-
-install_tarFile() {
-   if [ ! -e "$1" ] ; then
-     echo "No tar file $1"
-     exit 4
-   else
-     echo "Do install file $1 to karaf container"
-     tar -xf "$1" -C "$ODL_KARAF_HOME"
-     echo "Done"
-   fi
-}
-
-install_originBuild() {
-
-   if [ -z "$ODL_BUILD_HOME" ] ; then
-     echo "No ODL_BUILD_HOME defined. Terminate" ; exit 2
-   fi
-   echo "Build home at $ODL_BUILD_HOME"
-   if [ ! -e $ODL_BUILD_HOME/builds/version.txt ] ; then
-     echo "No builds available Terminate." ; exit 2
-   fi
-
-   source $ODL_BUILD_HOME/builds/version.txt
-   echo "Install Version $LASTBUILDTAR"
-   tar -xf "$ODL_BUILD_HOME/builds/$LASTBUILDTAR" -C "$ODL_KARAF_HOME"
-   echo "Version info"
-   cat $ODL_KARAF_HOME/networkAppVersion.txt
-}
-
-clean_repository() {
-   echo Clean repository .m2 and karaf/system
-   rm -r ~/.m2/repository/org/opendaylight/mwtn
-   rm -r ~/.m2/repository/org/opendaylight/apigateway
-   rm -r ~/.m2/repository/cn/com/zte
-   rm -r ~/.m2/repository/com/hcl
-   rm -r ~/.m2/repository/com/highstreet
-   rm -r $ODL_KARAF_HOME/system/com/highstreet
-   rm -r $ODL_KARAF_HOME/system/com/hcl
-   rm -r $ODL_KARAF_HOME/system/cn/com/zte
-   rm -r $ODL_KARAF_HOME/system/org/opendaylight/mwtn
-   rm -r $ODL_KARAF_HOME/system/org/opendaylight/apigateway
-}
-
-# Parameter1 nodlux
-prepare() {
-    #tool_check_installed unzip
-    #tool_check_installed sshpass
-    KARAFDISTBASENAME=$ODL_KARAF_DIST
-    KARAFGZ=$ODL_KARAF_DISTGZ
-    NODLUX="nodlux"
-
-    if [ ! -f "$KARAFGZ" ] ; then
-      echo "ERROR: Could not find tar file with karaf distribution: $KARAFGZ"
-    else
-      if [ "$1" != "$NODLUX" -a  ! -f "$TARFILE_DLUXLOADER" ] ; then
-         echo "WARN: Could not find tar with DLUX patch $TARFILE_DLUXLOADER. .. proceeding without Patching"
-      fi
-      if [ -d "$ODL_KARAF_HOME" ] ; then
-         echo "Found existing Karaf distribution at $ODL_KARAF_HOME. Can not proceed. Please remove or rename."
-      else
-         echo "Start installation $KARAFDISTBASENAME"
-         echo "Unpack karaf distribution"
-         cd $HOME
-         cd Downloads
-         tar -xzf $KARAFDISTBASENAME".tar.gz"
-         mv "$KARAFDISTBASENAME" "$ODL_KARAF_HOME"
-         cd "$here"
-
-         if ! [ -d "$ODL_KARAF_HOME" ] ; then
-            echo "ERROR: Could not find ODL_KARAF_HOME. Can not proceed if not existing."
-         else
-            echo "READY, create link dist"
-            ln -s $ODL_KARAF_HOME dist
-            if [ "$1" != "$NODLUX" ] ; then
-               echo "Install DLUX patch"
-               installDluxPatch tar
-            fi
-         fi
-      fi
-    fi
-}
-
-show_env() {
-    echo "ENV settings:"
-    echo "   ODL_KARAF_DIST: $ODL_KARAF_DIST"
-    echo "   ODL_KARAF_HOME: $ODL_KARAF_HOME"
-    echo "   JAVA_HOME: $JAVA_HOME"
-}
-
-#Param1: Mandatory Param2:optional Param3:optional
-do_install() {
-
-    echo "Install from $1 to Karaf"
-       if [ ! -d "$ODL_KARAF_HOME" ] ; then
-               echo "ERROR: Karaf not installed at $ODL_KARAF_HOME. Stop execution."
-               exit 2
-       fi
-    sleep 2
-    karaf_checkrunning
-    if [ "$running" = "true" ]
-    then
-       echo "karaf instance is running. Stop first. Indication '$reason'"
-    else
-       echo "Start install to karaf"
-       case "$1" in
-          build)
-             install_originBuild
-             karaf_cleanstart $2 $3
-             ;;
-          m2)
-             if [ "$(type -t install_originM2)" == "function" ] ; then
-               install_originM2
-               karaf_cleanstart $2 $3
-             else
-                echo "Error: Install function not defined. Exit."
-                fi
-             ;;
-          tar)
-             install_tarFile $2
-             shift
-             karaf_cleanstart $3 $4
-             ;;
-          *)
-             echo "Script error: missing installation command"
-             ;;
-       esac
-    fi
-}
-
-karaf_distremove() {
-    echo "Remove karaf installation"
-    karaf_checkrunning
-    if [ "$running" = "true" ]
-    then
-       echo "karaf instance is running. Stop first"
-    else
-       if [ "$1" = "force" ] ; then
-          answer=yes
-       else
-          read -p "Delete karaf installation. if you are sure type yes<enter> " answer
-       fi
-       if [ "$answer" == "yes" ] ; then
-          echo "Remove ..."
-          rm -r $ODL_KARAF_HOME
-          echo "Remove link"
-          rm dist
-          echo "removed"
-       else
-          echo "Did nothing"
-       fi
-    fi
-}
-
-# Par1 Install command
-installDluxPatch() {
-   #Default is the tar file
-   DLUXAPPHOME="apps/dlux"
-   TARGETDIR="$DLUXAPPHOME/loader/impl/target"
-   LOADERREPO="org/opendaylight/dlux"
-   LOADERNAME="loader.implementation"
-
-   case "$1" in
-     m2)
-       if [ -d $TARGETDIR ] ; then
-         echo "Copy DLUX Patch from repository"
-         cp -r "$HOME/.m2/repository/$LOADERREPO/loader.implementation" "$ODL_KARAF_HOME/system/$LOADERREPO"
-       else
-         echo "ERROR No compiled DLUX Version or tarfile for repositiory found. "
-         echo " - Please compile dlux."
-         echo " - Install DLUX Patch with $ODL/odl.sh dlux m2"
-       fi
-     ;;
-     tar)
-       if [ -f "$TARFILE_DLUXLOADER" ] ; then
-         echo "Install DLUX Patch from existing tar"
-         tar -xzf "$TARFILE_DLUXLOADER" -C "$ODL_KARAF_HOME/system"
-         echo "Done"
-       else
-         echo "DLUX tar file not found: $TARFILE_DLUXLOADER"
-       fi
-     ;;
-     create)
-       echo "Create tar file"
-       if [ -d $TARGETDIR ] ; then
-         HERE=$(pwd)
-
-         stringa=($(cd $TARGETDIR ; ls $LOADERNAME*jar))
-         if [[ ${stringa[0]} =~ $LOADERNAME-(.*).jar ]] ; then
-               version="${BASH_REMATCH[1]}"
-            echo $version
-            M2INPUTNAME="$LOADERREPO/$LOADERNAME/$version"
-            TAROUTPUTNAME="$HERE/$DLUXAPPHOME/$ODL_KARAF_DIST.dluxloader.tar.gz"
-            echo "Creating file: $TAROUTPUTNAME"
-            echo "Reading from: $M2INPUTNAME"
-            cd "$HOME/.m2/repository"
-            tar -czf "$TAROUTPUTNAME" "$M2INPUTNAME"
-            echo Done
-         fi
-         cd $HERE
-       else
-         echo "ERROR No compiled DLUX Version for repositiory found. "
-         echo " - Please compile dlux."
-       fi
-     ;;
-     *)
-      echo "use $ODLBIN/odl.sh dlux [m2|tar|create] to install from m2-repository or install tar file or create tar file"
-     ;;
-   esac
-}
-
-# -----------------------------------------------------
-# -----  Cluster commands
-
-# P1: Passwd P2: Username P3:ServerIP P4, P5: Remote commands
-karafclustercmd() {
-  rcmd="cd $here ; $ODLBIN/odl.sh $4 $5"
-  cmd="sshpass -p$1 ssh -o StrictHostKeyChecking=no $2@$3 $rcmd"
-  echo "--------- Begin at node: $3 -----------"
-  $cmd
-  echo "--------- Ende at node: $3 ------------"
-}
-
-# P1: Passwd P2: Username P3:ServerIP P4, P5: Remote commands
-karafclustercmdnohup() {
-  #Template: nohup myprogram > foo.out 2> foo.err < /dev/null &
-  echo " Start install for node $3"
-  rcmd="cd $here ; nohup $ODLBIN/odl.sh $4 $5 &> odl.log < /dev/null &"
-  cmd="sshpass -p$1 ssh -o StrictHostKeyChecking=no $2@$3 $rcmd"
-  $cmd
-  echo "Command executed in background. Result see odl.log."
-}
-
-karafclustercreate() {
-
-  if [ -z "$1" ] ; then
-    read -p "Please enter password for user $USER: " -r -s USERPWD
-    echo
-  fi
-
-  for i in ${!ODL_CLUSTER_ARRAY[@]} ; do
-     rcmd="cd $here ; $ODL_KARAF_HOME/bin/configure_cluster.sh $((i+1)) ${ODL_CLUSTER_ARRAY[@]}"
-     cmd="sshpass -p$USERPWD ssh -o StrictHostKeyChecking=no $USER@${ODL_CLUSTER_ARRAY[$i]} $rcmd"
-     echo "--------- Start Node: ${ODL_CLUSTER_ARRAY[$i]} ----------- CMD: $rcmd"
-     $cmd
-     echo "--------- Ende Node: ${ODL_CLUSTER_ARRAY[$i]}------------"
-  done
-
-}
-
-pause() {
-      read -p "($1) Hit enter ..." -r -s TMP
-      echo
-}
-
-#Destination is $ODL_BUILD_HOME
-#Source is $ODL_CLUSTER_REPO
-pushbuildinfo() {
-  if [ -z $ODL_CLUSTER_REPO ] ; then
-    echo "No cluster repository specified by ODL_CLUSTER_REPO. Can not proceed."
-  else
-    if [ -z "$ODL_BUILD_HOME" ] ; then
-      echo "No ODL_BUILD_HOME defined. Terminate" ; exit 2
-    fi
-    echo "Build home at $ODL_CLUSTER_REPO"
-    ODL_VERSION_FILE="$ODL_CLUSTER_REPO/builds/version.txt"
-    if [ ! -e $ODL_VERSION_FILE ] ; then
-      echo "No builds available Terminate." ; exit 2
-    fi
-
-    #Read version information
-    source $ODL_VERSION_FILE
-    echo "Prepare cluster with $BUILDTAG and prepare configuration files."
-    echo "Destination repository: $ODL_BUILD_HOME Source repository: $ODL_CLUSTER_REPO"
-    if [ -z "$1" ] ; then
-      read -p "Please enter password for user $USER: " -r -s USERPWD
-      echo
-    fi
-    for i in ${ODL_CLUSTER_ARRAY[@]} ; do
-       echo "Copy to $i:$ODL_BUILD_HOME"
-               sshpass -p$USERPWD ssh -o StrictHostKeyChecking=no $USER@$i "mkdir -p $ODL_BUILD_HOME/builds"
-       sshpass -p$USERPWD scp "$ODL_CLUSTER_REPO/builds/$LASTBUILDTAR" "$i:$ODL_BUILD_HOME/builds"
-       sshpass -p$USERPWD scp "$ODL_VERSION_FILE" "$i:$ODL_BUILD_HOME/builds"
-       sshpass -p$USERPWD scp -r "$ODL_CLUSTER_REPO/bin" "$i:$ODL_BUILD_HOME"
-               sshpass -p$USERPWD ssh -o StrictHostKeyChecking=no $USER@$i "mkdir -p $here"
-               sshpass -p$USERPWD scp "$here/$CONFIG" "$i:$here"
-               # sshpass -p$USERPWD scp "$here/$ODLCMD" "$i:$here"
-               sshpass -p$USERPWD ssh -o StrictHostKeyChecking=no $USER@$i "cd $here ; chmod 755 $ODL_BUILD_HOME/bin/odl.sh ; if [ ! -e odl ] ; then ln -s $ODL_BUILD_HOME/bin/odl.sh odl ; fi"
-    done
-  fi
-}
-
-#Destination is $here/dist
-#Parameter $1 is sourcedirectory
-clusterfilecopy() {
-    if [ -z "$1" ] ; then
-      echo "ERROR: Need a path as parameter"
-    else
-      echo "Copy all files from directory $1/* to $here/dist/$1 on each node."
-      read -p "Please enter password for user $USER: " -r -s USERPWD
-      echo
-      for i in ${ODL_CLUSTER_ARRAY[@]} ; do
-         destpath="$i:$here/dist"
-         echo "Copy $here/$1 to $destpath"
-         sshpass -p$USERPWD scp -r "$1" "$destpath"
-      done
-       fi
-}
-
-karafclusterinfo() {
-  echo "Using user $USER"
-  echo "Cluster: ${ODL_CLUSTER_ARRAY[@]}"
-}
-
-karafcluster() {
-
- CLUSTERCLI="TRUE"
-
- while [ $CLUSTERCLI = "TRUE" ] ; do
-
-   if [ -z "$ODL_CLUSTER_ARRAY" ] ; then
-      echo "No cluster in '$ODL_CLUSTER_ARRAY' specified"
-   else
-      tool_check_installed sshpass
-      echo "Cluster: ${ODL_CLUSTER_ARRAY[@]}"
-
-      if [ -z "$1" ] ; then
-                read -p "cluster cmd> " answer
-         set -- $answer
-      else
-         CLUSTERCLI="FALSE"
-      fi
-
-      case "$1" in
-       cp)
-          clusterfilecopy $2
-          ;;
-        create)
-           karafclustercreate
-           ;;
-        distremove)
-                  read -p "Confirm karaf cluster installation deletion. If you are sure type yes<enter> " answer
-           if [ "$answer" = "yes" ] ; then
-              echo "Change to forced mode."
-              set -- distremove force
-              function="karafclustercmd"
-           else
-                 echo "Terminated by user"
-           fi
-           ;;
-        "" | exit)
-           CLUSTERCLI="FALSE"
-           function=""
-           ;;
-        info)
-           karafclusterinfo
-           ;;
-        im* | ib*)
-           echo "Started on each node in background. See odl.log"
-           function="karafclustercmdnohup"
-           set -- $1 cluster
-           ;;
-        push)
-           pushbuildinfo
-           ;;
-        *)
-           function="karafclustercmd"
-           ;;
-      esac
-
-      if [ ! -z "$function" ] ; then
-        read -p "Please enter password for user $USER: " -r -s USERPWD
-        echo
-        for i in "${ODL_CLUSTER_ARRAY[@]}" ; do
-          $function $USERPWD $USER $i $1 $2
-        done
-        if [ "$1" = "prepare" ] ; then
-           read -p "Proceed with create (y/n): " answer
-           case "$answer" in
-                 y*) karafclustercreate $USERPWD
-                 ;;
-           esac
-        fi
-      fi
-   fi
-   if [ $CLUSTERCLI = "TRUE" ] ; then
-         set -- ""
-   fi
-
-done
-}
-
-# -----------------------------------------------------
-# ----- Script body
-
-echo "AppToODL installer $Version"
-
-if [ -f $CONFIG ] ; then
-   echo "Load configuration"
-   source "$CONFIG"
-else
-   script_command="Error: No $CONFIG file .. can not proceed. Create this file and specify the right versions:"
-   echo $script_command
-   echo 'ODL_KARAF_DIST="distribution-karaf-0.6.1-Carbon"'
-   echo 'ODL_KARAF_HOME=$HOME/odl/$ODL_KARAF_DIST'
-   echo 'ODL_KARAF_DISTGZ="$HOME/Downloads/"$ODL_KARAF_DIST".tar.gz"'
-   echo 'ODL_BUILD_HOME="$HOME/build/acme"'
-   echo 'ODL_KARAF_STARTUP_SCRIPT="karaf_startup_all"'
-   echo 'export JAVA_HOME="/usr/lib/jvm/java-8-openjdk-amd64"'
-   echo
-   echo "Example for downloading the distribution:"
-   echo 'wget https://nexus.opendaylight.org/content/repositories/opendaylight.release/org/opendaylight/integration/distribution-karaf/0.6.1-Carbon/distribution-karaf-0.6.1-Carbon.tar.gz'
-
-   exit 1
-fi
-#Since 2.17 moved back to script
-#if [ -f $ODLCMD ] ; then
-#   source $ODLCMD
-#else
-#   script_command="Error: No $ODLCMD file .. can not proceed"
-#   echo $script_command
-#   exit 1
-#fi
-
-TARFILE_DLUXLOADER="apps/dlux/$ODL_KARAF_DIST.dluxloader.tar.gz"
-echo "Karaf home: $ODL_KARAF_HOME"
-
-here=$(pwd)
-echo "Executed here: $here"
-echo ""
-
-if [ -z "$ODL_KARAF_HOME" -o -z "$ODL_KARAF_DIST" ]
-then
-  echo "Missing ENV setting ODL_KARAF_HOME or ODL_KARAF_DIST. Can not execute."
-  show_env
-  script_command="Error Incomplete ENV"
-else
-  script_command="ok"
-fi
-
-#echo "Command: $script_command"
-
-if [ "$script_command" = "ok" ] ; then
-
-case "$1" in
-
-  build)
-    if [ -z "$ODL_BUILD_HOME" ] ; then
-      echo "No build configuration found. Specify '$ODL_BUILD_HOME'."
-    else
-      echo "Enter build subsystem at location $ODL_BUILD_HOME"
-      shift
-      $ODLBIN/buildv2.sh $@
-    fi
-    ;;
-
-  cli)
-    shift
-    karafcmd $@
-    ;;
-
-  clu*)
-    shift
-    karafcluster $@
-    ;;
-
-  dlux)
-    echo "Install DLUX Patch"
-    shift
-    installDluxPatch $@
-    ;;
-
-  env)
-    show_env
-    ;;
-  kill)
-    echo "Kill ODL instance"
-    pkill -e -f "Dkaraf.home=.home.herbert.odl.$ODL_KARAF_DIST"
-    ;;
-  test)
-    echo "Test a little bit"
-    here=$(pwd)
-    echo "Path: $here"
-    cd $HOME
-    echo "List1"
-    ls
-    cd $here
-    echo "List2"
-    ls
-
-    karaf_prepare
-    ;;
-  v)
-    echo "List app versions"
-    mvn --version
-    git --version
-    echo "node: " ; node --version
-    echo "npm: " ; npm --version
-    echo "jq: " ; jq --version
-    echo "bower" ; bower --version
-    ;;
-  restart)
-    echo "restart command"
-    karaf_checkrunning
-    if [ "$running" = "true" ] ; then
-       $ODL_KARAF_HOME/bin/stop
-       karaf_waittillstopped
-       karaf_startifnotrunning $2
-    else
-       echo "Already stopped .. do start"
-       karaf_startifnotrunning $2
-    fi
-    ;;
-
-  stop)
-    echo "stop command"
-    karaf_checkrunning
-    if [ "$running" = "true" ] ; then
-       $ODL_KARAF_HOME/bin/stop
-       karaf_waittillstopped
-    else
-       echo "Already stopped"
-    fi
-    ;;
-  start)
-    echo "start command"
-    karaf_startifnotrunning $2
-    ;;
-  bower)
-    echo "Install bower"
-    cd ./ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/
-    ./bowerInstall.sh
-    cd $here
-    ;;
-
-  dbclean)
-    database_cleansetup
-    ;;
-
-  untar)
-    echo "Extract karaf"
-    prepare nodlux
-    ;;
-
-  prepare)
-    echo "Prepare prepare"
-    prepare $2
-    ;;
-
-  a)
-    echo "Compile all"
-    mvn clean install -DskipTests
-    if [[ $? -ne 0 ]] ; then
-       echo "could not complete"
-    else
-       do_install m2
-    fi
-    ;;
-
-  d)
-    app="devicemanager"
-    echo "Compile $app"
-    cd apps/$app
-    mvn clean install -DskipTests
-    rc=$?
-    cd $here
-    if [[ $rc -ne 0 ]] ; then
-       echo "could not complete"
-    else
-       do_install m2 d
-    fi
-    ;;
-
-  distremove)
-    karaf_distremove $2
-    ;;
-
-  ib)
-    do_install build $2
-    ;;
-
-  imd)
-    do_install m2 d $2
-    ;;
-
-  im)
-    do_install m2 $2
-    ;;
-
-  it)
-    do_install tar $2
-    ;;
-
-  karafclean)
-    karaf_cleanstart
-    ;;
-
-  log)
-   vi dist/data/log/karaf.log
-   ;;
-
-  migrate)
-    echo "Migrate index$2 to index$3"
-    elasticdump --input=http://localhost:9200/sdnevents_$2 --output=http://localhost:9200/sdnevents_$3 --type=data --limit=100000
-    ;;
-  mvn)
-    echo "try to compile $2"
-    here=`pwd`
-    cd "$2"
-    mvn clean install -DskipTests
-    cd "$here"
-    ;;
-  status)
-    karaf_status
-    ;;
-
-  debug)
-    karaf_enable_logs $2
-    ;;
-
-  *)
-    if [ ! "$1" == "help" ] ; then
-      echo "ERROR Unknown command $1"
-    fi
-    echo "Commands:"
-    echo " a           for build all and install from M2"
-    echo " build       enter build subsystem"
-    echo "                build, deliver"
-    echo " bower       for install bower"
-    echo " cli         start karaf command line"
-    echo " cluster xx  cluster commands and all other commands"
-    echo "                status, ib, im, stop, push, distremove, cp"
-    echo " env         List environment variables"
-    echo " d           for devicemanager and install from M2"
-    echo " dbclean     clean db and load with initial data"
-    echo " debug       activate debug for netconf and mwtn"
-    echo " distremove  remove existing karaf distribution"
-    echo " dlux        install DLUX patch. Use dlux [m2|tar|create] to install from m2-repository or install tar file or create tar file"
-    echo " help        List this help"
-    echo " ib          for install from Build-directory"
-    echo " im          for install from M2-directory"
-    echo " imd         for install from M2-directory. Delete logs before start command"
-    echo " it fn       install tar file to container"
-    echo " karafclean  start clean and install apps on karaf"
-    echo " kill        hard termination of ODL instance"
-    echo " log         vi karaf.log"
-    echo " migrate     migrate Param1 Param2 Migrate on localhost"
-    echo " mvn [folder]  compile folder with maven with parameter -DskipTests"
-    echo " prepare [nodlux]  to install and prepare a karaf. tar version expected in Downloads."
-    echo " untar       to extract karaf."
-    echo " test        do some testing"
-    echo " start       start karaf"
-    echo " status      display karaf status"
-    echo " stop        stop and wait karaf"
-    echo " restart     stop and start karaf"
-    echo " repoclean   clean the repositories"
-    echo " v           get Versions"
-    ;;
-esac
-fi
-
-unset install_err
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/pom.xml
deleted file mode 100644 (file)
index 7cf7327..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>org.opennetworking.otwg.wtp</groupId>
-  <artifactId>wtp-carbon</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-
-  <name>ONF :: Wireless :: 4th POC</name>
-  <packaging>pom</packaging>
-
-  <prerequisites>
-    <maven>3.3.3</maven>
-  </prerequisites>
-
-  <modules>
-    <module>apps</module>
-    <module>ux</module>
-    <module>features</module>
-    <!-- <module>karaf</module> -->
-  </modules>
-
-</project>
-
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-bundle/pom.xml
deleted file mode 100644 (file)
index d0850de..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <artifactId>ethService-bundle</artifactId>
- <packaging>bundle</packaging>
- <name>${prefix} ${project.artifactId}</name>
-
- <parent>
-  <artifactId>ethService</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
-
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>ethService-module</artifactId>
-   <version>${project.version}</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>ethService-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index b92ee91..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="ethService"/>
-        <property name="url" value="/src/app/ethService"/>
-        <property name="directory" value="/ethService"/>
-        <property name="requireJs" value="app/ethService/ethService.module"/>
-        <property name="angularJs" value="app.ethService"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/ethService/ethService-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/pom.xml
deleted file mode 100644 (file)
index 6a99723..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>ethService-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-    <parent>
-        <artifactId>ethService</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService-custom.css
deleted file mode 100644 (file)
index fed4402..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- *  Add your application related css here
- */
-.ethServiceGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.ethServiceGrid span {
-  color: #393939;
-}
-.ht-pagination span {
-  color: #393939;
-}
-.ht-pagination span.dark {
-  color: #393939;
-}
-.dark {
-  color: #393939;
-}
-
-
-
-.ethServiceGrid div.debug {
-  color: #393939;
-  background-color: white;
-}
-.ethServiceGrid div.error {
-  color: #ff0000;
-  background-color: #ffeeee;
-  font-weight: bold;
-}
-
-.ethServiceGrid div.info {
-  color: #3276b1;
-  background-color: #eeeeff;
-}
-
-.ethServiceGrid div.warning {
-  color: #ffa500;
-  background-color: #ffeedd;
-}
-
-.rotated {
-    transform: rotate(180deg);
-    -webkit-transform: rotate(180deg);
-    -ms-transform: rotate(180deg);
-    -moz-transform: rotate(180deg);
-    -o-transform: rotate(180deg);
-}
-
-h3.modal-title {
-  color: #393939;
-}
-
-.modal-body span {
-  color: #393939;
-} 
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.controller.js
deleted file mode 100644 (file)
index 080aa33..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/ethService/ethService.module',
-  'app/ethService/ethService.services'],
-  function (ethServiceApp) {
-
-    ethServiceApp.register.controller('ethServiceCtrl', ['uiGridConstants', '$uibModal', '$scope', '$rootScope', '$window', '$timeout', '$ethService', '$mwtnLog',
-      function (uiGridConstants, $uibModal, $scope, $rootScope, $window, $timeout, $ethService, $mwtnLog) {
-
-        var COMPONENT = 'ethServiceCtrl';
-        $mwtnLog.info({ component: COMPONENT, message: 'ethServiceCtrl started!' });
-
-        $rootScope.section_logo = 'src/app/ethService/images/ethService.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-        $scope.highlightFilteredHeader = $ethService.highlightFilteredHeader;
-
-      }]);
-
-  });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.module.js
deleted file mode 100644 (file)
index 1472945..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var ethServiceApp = angular.module('app.ethService', ['ui.grid', 'ui.bootstrap', 'app.core',
-      'ui.router.state', 'config', 'ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns', 'ui.grid.infiniteScroll','ui.grid.pagination' ]);
-
-  ethServiceApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    ethServiceApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/ethService/ethService.controller');
-    NavHelperProvider.addToMenu('ethService', {
-     "link" : "#/ethService/",
-     "active" : "main.ethService",
-     "title" : "ETH Service",
-     "icon" : "fa fa-arrows-h",  // Add navigation icon css class here
-     "page" : {
-        "title" : "ETH Service",
-        "description" : "Ethernet Service Provisioning"
-    }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.ethService', {
-        url: 'ethService/:nodeId',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/ethService/ethService.tpl.html',
-                controller: 'ethServiceCtrl'
-            }
-        }
-    });
-
-  });
-
-  return ethServiceApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.services.js
deleted file mode 100644 (file)
index fa8ef2f..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/ethService/ethService.module', 'app/mwtnCommons/mwtnCommons.services'], function (ethServiceApp) {
-
-  ethServiceApp.register.factory('$ethService', function ($q, $http, Base64, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-
-    var service = {};
-
-    service.checkModules = $mwtnCommons.checkModules;
-    
-
-    return service;
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/ethService.tpl.html
deleted file mode 100644 (file)
index b5f022f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<ht-header help-link='sdnr/ethService/0.4.0/README.md'></ht-header>
-
-<h1 style="color: red; transform: rotate(-30deg);">Under Construction</h1>
-<br/><br/><br/><br/><br/>
-
-<hr />
-<div class="owl">
-  <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/images/ethService.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/images/ethService.png
deleted file mode 100755 (executable)
index 9cca24f..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/ethService-module/src/main/resources/ethService/images/ethService.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/ethService/pom.xml
deleted file mode 100644 (file)
index ba49da7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
-
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <artifactId>ethService</artifactId>
-  <name>${prefix} ${project.artifactId}</name>
-  <packaging>pom</packaging>
-
-  <parent>
-    <artifactId>mwtn</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-  </parent>
-
- <modules>
-  <module>ethService-module</module>
-  <module>ethService-bundle</module>
- </modules>
-
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/features/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/features/pom.xml
deleted file mode 100644 (file)
index 13eba24..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <artifactId>mwtnFeatures</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-  <name>ONF :: Wireless :: ${project.artifactId}</name>
-
-  <parent>
-    <groupId>org.opendaylight.odlparent</groupId>
-    <artifactId>features-parent</artifactId>
-    <version>1.8.1-Carbon</version>
-  </parent>
-
-  <properties>
-    <prefix>ONF :: Wireless :: </prefix>
-
-    <apache.felix.compendium>1.4.0</apache.felix.compendium>
-    <decanter.version>1.1.0</decanter.version>
-    <elasticsearch.version>2.2.0</elasticsearch.version>
-    <osgi.core.version>5.0.0</osgi.core.version>
-
-    <dlux.version>0.5.1-Carbon</dlux.version>
-    <mdsal.version>1.5.1-Carbon</mdsal.version>
-    <mdsal.model.version>0.10.1-Carbon</mdsal.model.version>
-    <restconf.version>1.5.1-Carbon</restconf.version>
-    <yangtools.version>1.1.1-Carbon</yangtools.version>
-    <openflow.plugin.version>0.4.1-Carbon</openflow.plugin.version>
-    <netconf.version>1.2.1-Carbon</netconf.version>
-    <l2switch.version>0.5.1-Carbon</l2switch.version>
-    <dlux.loader.version>0.5.1-Carbon</dlux.loader.version>
-    <securityproject.version>0.5.1</securityproject.version>
-    <configfile.directory>etc/opendaylight/karaf</configfile.directory>
-  </properties>
-
-  <!-- <dependencyManagement> <dependencies> <dependency> <groupId>org.opendaylight.controller</groupId>
-    <artifactId>mdsal-artifacts</artifactId> <version>${mdsal.version}</version>
-    <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> -->
-  <dependencies>
-
-    <dependency>
-      <groupId>org.opendaylight.dlux</groupId>
-      <artifactId>features-dlux</artifactId>
-      <classifier>features</classifier>
-      <type>xml</type>
-      <scope>runtime</scope>
-      <version>0.5.3-Carbon</version>
-    </dependency>
-    <!-- <dependency> <groupId>org.opendaylight.yangtools</groupId> <artifactId>features-yangtools</artifactId>
-      <classifier>features</classifier> <type>xml</type> <scope>runtime</scope>
-      <version>${yangtools.version}</version> </dependency> <dependency> <groupId>org.opendaylight.controller</groupId>
-      <artifactId>features-mdsal</artifactId> <classifier>features</classifier>
-      <type>xml</type> <scope>runtime</scope> </dependency> <dependency> <groupId>org.opendaylight.controller</groupId>
-      <artifactId>features-restconf</artifactId> <classifier>features</classifier>
-      <type>xml</type> <scope>runtime</scope> </dependency> -->
-
-    <!-- WTN app dependencies - -> <dependency> <groupId>${project.groupId}</groupId>
-      <artifactId>mwtnCommons</artifactId> <version>${project.version}</version>
-      </dependency> -->
-    <!-- <dependency> <groupId>com.highstreet.technologies.odl.dlux</groupId>
-      <artifactId>mwtnTopology</artifactId> <version>0.5.1-SNAPSHOT</version> </dependency> -->
-  </dependencies>
-
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/features/src/main/features/features.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/features/src/main/features/features.xml
deleted file mode 100644 (file)
index 5fe7965..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<features name="odl-mwtn-${project.version}" xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://karaf.apache.org/xmlns/features/v1.2.0 http://karaf.apache.org/xmlns/features/v1.2.0">
-
-<!--
-  => Only to be placed into feature-parents
-  <repository>mvn:org.apache.karaf.decanter/apache-karaf-decanter/${decanter.version}/xml/features</repository>
- -->
-
-<!--
-    Section 2: UX basis feature, used by all features in section 3
- -->
-
-  <feature name="sdnr-wt-ux-all" version="${project.version}" description="ONAP :: SDN-R :: WT :: UX :: All">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/onapAai-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnFault-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnBrowser-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnInventory-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnMediator-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/help-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="onap-sdnr-ux-all" version="${project.version}" description="ONAP :: OpenDaylight :: SDN-R :: UX :: All">
-    <feature version="${project.version}">odl-mwtn-ux-connect</feature>
-
-    <feature version="${project.version}">onap-sdnr-aai-ux</feature>
-    <feature version="${project.version}">onap-sdnr-dcae-ux</feature>
-    <feature version="${project.version}">onap-sdnr-so-ux</feature>
-
-    <!--
-    <feature version="${project.version}">odl-eth-ux-service</feature>
-    <feature version="${project.version}">odl-otn-ux-config</feature> -->
-
-    <feature version="${project.version}">odl-mwtn-ux-fault</feature>
-    <feature version="${project.version}">odl-mwtn-ux-config</feature>
-    <feature version="${project.version}">odl-mwtn-ux-performance</feature>
-    <feature version="${project.version}">odl-mwtn-ux-inventory</feature>
-    <feature version="${project.version}">odl-mwtn-ux-topology</feature>
-    <!-- sko not ready yet
-    <feature version="${project.version}">odl-mwtn-ux-compare</feature>
-    <feature version="${project.version}">odl-mwtn-ux-spectrum</feature>
-    <feature version="${project.version}">odl-mwtn-ux-closed-loop</feature> -->
-    <feature version="${project.version}">odl-mwtn-ux-mediator</feature>
-    <feature version="${project.version}">odl-help-core</feature>
-
-    <!-- not needed
-    <feature version="${project.version}">odl-mwtn-ux-events</feature>
-    <feature version="${project.version}">odl-mwtn-ux-test</feature>
-    <feature version="${project.version}">odl-mwtn-ux-log</feature>
-    <feature version="${project.version}">odl-mwtn-ux-chat</feature> -->
-  </feature>
-
-<!-- PoC Specific feature for "poc180628" delivery -->
-  <feature name="ht-mwtn-ux-poc180628" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Release1806">
-    <feature version="${project.version}">odl-mwtn-ux-connect</feature>
-    <feature version="${project.version}">onap-sdnr-so-ux</feature>
-    <feature version="${project.version}">onap-sdnr-dcae-ux</feature>
-    <feature version="${project.version}">onap-sdnr-aai-ux</feature>
-    <feature version="${project.version}">odl-mwtn-ux-fault</feature>
-    <feature version="${project.version}">odl-mwtn-ux-config</feature>
-    <feature version="${project.version}">odl-mwtn-ux-performance</feature>
-    <bundle>mvn:org.onap.sdnc.dluxapps/security-bundle/${securityproject.version}</bundle>
-    <feature version="${project.version}">odl-mwtn-ux-inventory</feature>
-    <feature version="${project.version}">odl-mwtn-ux-topology</feature>
-    <feature version="${project.version}">odl-mwtn-ux-mediator</feature>
-    <feature version="${project.version}">odl-mwtn-ux-log</feature>
-    <feature version="${project.version}">odl-ux-help</feature>
-  </feature>
-
-<!-- All UC features for test purpose -->
-  <feature name="odl-mwtn-ux-all" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: All">
-    <feature version="${project.version}">odl-mwtn-ux-connect</feature>
-
-    <feature version="${project.version}">onap-sdnr-aai-ux</feature>
-    <feature version="${project.version}">onap-sdnr-dcae-ux</feature>
-    <feature version="${project.version}">onap-sdnr-so-ux</feature>
-
-    <feature version="${project.version}">odl-mwtn-ux-fault</feature>
-    <feature version="${project.version}">odl-mwtn-ux-performance</feature>
-    <feature version="${project.version}">odl-mwtn-ux-config</feature>
-    <feature version="${project.version}">odl-mwtn-ux-topology</feature>
-    <feature version="${project.version}">odl-mwtn-ux-inventory</feature>
-    <!-- sko not ready yet
-    <feature version="${project.version}">odl-mwtn-ux-compare</feature>
-    <feature version="${project.version}">odl-mwtn-ux-spectrum</feature>
-    <feature version="${project.version}">odl-mwtn-ux-closed-loop</feature> -->
-    <feature version="${project.version}">odl-mwtn-ux-mediator</feature>
-    <feature version="${project.version}">odl-mwtn-ux-events</feature>
-    <feature version="${project.version}">odl-mwtn-ux-test</feature>
-    <feature version="${project.version}">odl-mwtn-ux-log</feature>
-    <feature version="${project.version}">odl-mwtn-ux-chat</feature>
-    <feature version="${project.version}">odl-ux-help</feature>
-  </feature>
-
-<!--
-    Section 2: UX basis feature, used by all features in section 3
- -->
-
-  <feature name="odl-ux-commons" version="${project.version}" description="OpenDaylight :: UX :: Commons">
-    <bundle>mvn:com.highstreet.technologies.apigateway/apigateway-impl/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnCommons-bundle/${project.version}</bundle>
-  </feature>
-
-<!--
-    Section 3: Entry per GUI element/project
- -->
-
-  <feature name="odl-mwtn-ux-connect" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Connect">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="onap-sdnr-aai-ux" version="${project.version}" description="ONAP :: AAI :: SDN-R :: UX">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/onapAai-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="onap-sdnr-dcae-ux" version="${project.version}" description="ONAP :: DCAE :: SDN-R :: UX">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/onapDcae-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="onap-sdnr-so-ux" version="${project.version}" description="ONAP :: SO :: SDN-R :: UX">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/onapSo-bundle/${project.version}</bundle>
-  </feature>
-
-  <!-- sko not needed
-  <feature name="odl-eth-ux-service" version="${project.version}" description="OpenDaylight :: ETH :: UX :: Service">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/ethService-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-otn-ux-config" version="${project.version}" description="OpenDaylight :: OTN :: UX :: Configuration">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/otnBrowser-bundle/${project.version}</bundle>
-  </feature>
-  -->
-
-  <feature name="odl-mwtn-ux-fault" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Fault">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnFault-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-config" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Configuration">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnBrowser-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-performance" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Performance">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnPerformanceCurrent-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnPerformanceHistory-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnPerformanceLink-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-inventory" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Inventory">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnInventory-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-topology" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Topology">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnTopology-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-tdm" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: TDM">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnTdm-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-ux-help" version="${project.version}" description="OpenDaylight :: UX :: Help">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/help-bundle/${project.version}</bundle>
-  </feature>
-
-<!--
-  <feature name="odl-mwtn-ux-compare" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Comparision">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnCompare-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-spectrum" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Spectrum Management">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:cn.com.zte.odl.dlux/mwtnSpectrum-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-closed-loop" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Closed Loop Automation">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnClosedLoop-bundle/${project.version}</bundle>
-  </feature>
--->
-  <feature name="odl-mwtn-ux-events" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Events">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnEvents-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-test" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Test">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/${project.version}</bundle>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnTest-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-mediator" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Mediator">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnMediator-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-log" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Log">
-    <feature version="${project.version}">odl-ux-commons</feature>
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/mwtnLog-bundle/${project.version}</bundle>
-  </feature>
-
-  <feature name="odl-mwtn-ux-chat" version="${project.version}" description="OpenDaylight :: MWTN :: UX :: Chat">
-    <bundle>mvn:com.highstreet.technologies.odl.dlux/odlChat-bundle/${project.version}</bundle>
-  </feature>
-
-</features>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-bundle/pom.xml
deleted file mode 100644 (file)
index 06081c2..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>help</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>help-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>help-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>help-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 490a230..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="help"/>
-        <property name="url" value="/src/app/help"/>
-        <property name="directory" value="/help"/>
-        <property name="requireJs" value="app/help/help.module"/>
-        <property name="angularJs" value="app.help"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/help/help.custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/pom.xml
deleted file mode 100644 (file)
index dd744b3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>help</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>help-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.controller.js
deleted file mode 100644 (file)
index c82464a..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-var __assign = (this && this.__assign) || Object.assign || function(t) {
-    for (var s, i = 1, n = arguments.length; i < n; i++) {
-        s = arguments[i];
-        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
-            t[p] = s[p];
-    }
-    return t;
-};
-define("help.tree", ["require", "exports", "angularAMD"], function (require, exports, angular) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var help = angular.module('app.help');
-    // class HelpTreeController implements ng.IController {
-    //   constructor(private $scope: ng.IScope & { rootNode: Node, data: Node[]}) {
-    //     $scope.$watch("rootNode", (n, o) => {
-    //       $scope.data = Object.keys($scope.rootNode).map(key => $scope.rootNode[key]);
-    //     });
-    //   }
-    // }
-    // help.controller("treeCtrl", ["$scope", HelpTreeController]);
-    var helpTree = function ($compile) {
-        return {
-            restrict: "E",
-            transclude: true,
-            scope: { rootNode: '=' },
-            //controller: 'treeCtrl',
-            template: '<ul>' +
-                '<li ng-transclude></li>' +
-                '<li ng-repeat="child in rootNode.nodes">' +
-                '<tree root-node="child"><div ng-transclude></div></tree>' +
-                '</li>' +
-                '</ul>',
-            compile: function (tElement, tAttr, transclude) {
-                var contents = tElement.contents().remove();
-                var compiledContents;
-                return function (scope, iElement, iAttr) {
-                    if (!compiledContents) {
-                        compiledContents = $compile(contents, transclude);
-                    }
-                    compiledContents(scope, function (clone, scope) {
-                        iElement.append(clone);
-                    });
-                };
-            }
-        };
-    };
-    help.directive("tree", ["$compile", helpTree]);
-});
-define("help.service", ["require", "exports", "angularAMD"], function (require, exports, angular) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var help = angular.module('app.help');
-    var Helpservice = /** @class */ (function () {
-        function Helpservice($q, $http, env) {
-            this.$q = $q;
-            this.$http = $http;
-            this.env = env;
-            this.tocNodeCollection = null;
-            this.documents = {};
-        }
-        Helpservice.prototype.getTableOfContents = function () {
-            var _this = this;
-            if (this.tocNodeCollection) {
-                return this.$q.resolve(this.tocNodeCollection);
-            }
-            return this.$http({
-                method: "GET",
-                url: window.location.origin + "/help/?meta"
-            }).then(function (result) {
-                if (result.status === 200) {
-                    _this.tocNodeCollection = result.data;
-                    return result.data;
-                }
-            });
-        };
-        Helpservice.prototype.getDocument = function (path) {
-            var _this = this;
-            if (this.documents[path] != null) {
-                return this.$q.resolve(this.documents[path]);
-            }
-            return this.$http({
-                method: "GET",
-                url: window.location.origin + "/help/" + path
-            }).then(function (result) {
-                if (result.status === 200) {
-                    return _this.documents[path] = {
-                        basePath: result.config && result.config.url && result.config.url,
-                        document: result.data
-                    };
-                }
-            });
-        };
-        return Helpservice;
-    }());
-    help.service('helpService', ['$q', '$http', Helpservice]);
-});
-define("help.utilities", ["require", "exports"], function (require, exports) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.resolvePath = function () {
-        var paths = [];
-        for (var _i = 0; _i < arguments.length; _i++) {
-            paths[_i] = arguments[_i];
-        }
-        console.log(paths);
-        function resolve(pathA, pathB) {
-            //  ‘a’     => ['a']
-            //  'a/b'   => ['a', 'b']
-            //  '/a/b'  => ['', 'a', 'b']
-            //  '/a/b/' => ['', 'a', 'b', '']
-            pathB = pathB.split('/');
-            if (pathB[0] === '') {
-                return pathB.join('/');
-            }
-            pathA = pathA.split('/');
-            var aLastIndex = pathA.length - 1;
-            if (pathA[aLastIndex] !== '') {
-                pathA[aLastIndex] = '';
-            }
-            var part;
-            var i = 0;
-            while (typeof (part = pathB[i]) === 'string') {
-                switch (part) {
-                    case '..':
-                        pathA.pop();
-                        pathA.pop();
-                        pathA.push('');
-                        break;
-                    case '.':
-                        pathA.pop();
-                        pathA.push('');
-                        break;
-                    default:
-                        pathA.pop();
-                        pathA.push(part);
-                        pathA.push('');
-                        break;
-                }
-                i++;
-            }
-            if (pathB[pathB.length - 1] !== '')
-                pathA.pop();
-            return pathA.join('/');
-        }
-        var i = 0;
-        var path;
-        var r = location.pathname;
-        var urlRegex = /^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i;
-        var multiSlashReg = /\/\/+/g;
-        while (typeof (path = paths[i]) === 'string') {
-            // debugger;
-            var matches = path && path.match(urlRegex);
-            if (matches || !i) {
-                r = path;
-            }
-            else {
-                path = path.replace(multiSlashReg, '/');
-                r = resolve(r, path);
-            }
-            i++;
-        }
-        return r;
-    };
-});
-define( ["require", "exports", "./lib/marked", "help.utilities", "help.tree", "help.service"], function (require, exports, marked, help_utilities_1) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var currentPath = '/help';
-    var currentDoc = '';
-    var renderer = new marked.Renderer();
-    renderer.link = function (href, title, text) {
-        // check if href is rel or abs
-        var absUrlMatch = href.trim().match(/^https?:\/\//i);
-        return "<a "+(absUrlMatch ? "target=\"_blank\"":"")+" href=\"" + (absUrlMatch ? href : help_utilities_1.resolvePath('#/help/', currentDoc, href)) + "\" title=\"" + title + "\" >" + text + "</a>";
-    };
-    renderer.image = function (href, title, text) {
-        return "<img src=\"" + help_utilities_1.resolvePath(currentPath, href) + "\" alt=\"" + title + "\" />";
-    };
-    marked.setOptions({
-        renderer: renderer,
-        gfm: true,
-        tables: true,
-        breaks: false,
-        pedantic: false,
-        sanitize: false,
-        smartLists: true,
-        smartypants: false,
-        xhtml: false
-    });
-    var help = angular.module('app.help');
-    var HelpDirective = function () {
-        return {
-            restrict: 'AE',
-            template: "<div class=\"global-help\" ><a href=\"{{ '#/help/'+ link }}\"><i class=\"fa fa-question-circle\"></i> Help</a></div>",
-            scope: {
-                link: '@'
-            },
-            replace: true
-        };
-    };
-    help.directive('help', [HelpDirective]);
-    var MarkdownItDirective = function ($sanitize) {
-        var attribute = 'markdownIt';
-        var render = function (value) {
-            var md2html = (marked instanceof Function) ? marked : marked.default;
-            return value
-                ? $sanitize(md2html(value.trim()))
-                : '';
-        };
-        return {
-            restrict: 'AE',
-            scope: {
-                markdownIt: '='
-            },
-            replace: true,
-            link: function (scope, element, attrs) {
-                if (attrs[attribute]) {
-                    scope.$watch(attribute, function (value) {
-                        element.html(render(value));
-                    });
-                }
-                else {
-                    element.html(render(element.text()));
-                }
-            }
-        };
-    };
-    help.directive('markdownIt', ['$sanitize', MarkdownItDirective]);
-    var mapNode = function (tocNode) {
-        return tocNode && Object.keys(tocNode).map(function (key) {
-            return __assign({}, tocNode[key], { href: "#/help/" + tocNode[key]['versions']['current']['path'], nodes: mapNode(tocNode[key].nodes) });
-        });
-    };
-    var HelpController = /** @class */ (function () {
-        function HelpController($scope, $rootScope, $state, $timeout, helpService) {
-            var _this = this;
-            this.$scope = $scope;
-            this.$state = $state;
-            this.$timeout = $timeout;
-            this.helpService = helpService;
-            this._content = "## Loading";
-            this._path = '';
-            this._toc = {};
-
-            $rootScope.section_logo = 'src/app/help/images/help.png';
-
-            helpService.getTableOfContents().then(function (toc) {
-                _this._toc = { nodes: mapNode(toc) };
-                if (!$state.params.path) {
-                    $state.go('main.help', { path: toc['sdnr']['versions']['current']['path'] });
-                }
-                else {
-                    _this.navigateTo($state.params.path);
-                }
-            });
-        }
-        Object.defineProperty(HelpController.prototype, "content", {
-            get: function () { return this._content; },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(HelpController.prototype, "path", {
-            get: function () { return this._path; },
-            enumerable: true,
-            configurable: true
-        });
-        Object.defineProperty(HelpController.prototype, "toc", {
-            get: function () { return this._toc; },
-            enumerable: true,
-            configurable: true
-        });
-        HelpController.prototype.navigateTo = function (path) {
-            var _this = this;
-            this.helpService.getDocument(path).then(function (result) {
-                currentDoc = path;
-                currentPath = result.basePath;
-                _this._content = result.document;
-            });
-        };
-        return HelpController;
-    }());
-    help.controller('helpCtrl', ['$scope', '$rootScope', '$state', '$timeout', 'helpService', HelpController]);
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2FwcC9oZWxwL2hlbHAudHJlZS50cyIsInNyYy9hcHAvaGVscC9oZWxwLnNlcnZpY2UudHMiLCJzcmMvYXBwL2hlbHAvaGVscC51dGlsaXRpZXMudHMiLCJzcmMvYXBwL2hlbHAvaGVscC5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBY0EsSUFBTSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUV4Qyx1REFBdUQ7SUFDdkQsK0VBQStFO0lBQy9FLDRDQUE0QztJQUM1QyxxRkFBcUY7SUFDckYsVUFBVTtJQUNWLE1BQU07SUFDTixJQUFJO0lBRUosK0RBQStEO0lBRS9ELElBQU0sUUFBUSxHQUFHLFVBQVUsUUFBUTtRQUNqQyxNQUFNLENBQUM7WUFDTCxRQUFRLEVBQUUsR0FBRztZQUNiLFVBQVUsRUFBRSxJQUFJO1lBQ2hCLEtBQUssRUFBRSxFQUFFLFFBQVEsRUFBRSxHQUFHLEVBQUU7WUFDeEIseUJBQXlCO1lBQ3pCLFFBQVEsRUFDTixNQUFNO2dCQUNOLHlCQUF5QjtnQkFDekIsMENBQTBDO2dCQUMxQywwREFBMEQ7Z0JBQzFELE9BQU87Z0JBQ1AsT0FBTztZQUNULE9BQU8sRUFBRSxVQUFVLFFBQVEsRUFBRSxLQUFLLEVBQUUsVUFBVTtnQkFDNUMsSUFBSSxRQUFRLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDO2dCQUM1QyxJQUFJLGdCQUFnQixDQUFDO2dCQUNyQixNQUFNLENBQUMsVUFBVSxLQUFLLEVBQUUsUUFBUSxFQUFFLEtBQUs7b0JBQ3JDLEVBQUUsQ0FBQyxDQUFDLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxDQUFDO3dCQUN0QixnQkFBZ0IsR0FBRyxRQUFRLENBQUMsUUFBUSxFQUFFLFVBQVUsQ0FBQyxDQUFDO29CQUNwRCxDQUFDO29CQUNELGdCQUFnQixDQUFDLEtBQUssRUFBRSxVQUFVLEtBQUssRUFBRSxLQUFLO3dCQUM1QyxRQUFRLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO29CQUN6QixDQUFDLENBQUMsQ0FBQztnQkFDTCxDQUFDLENBQUM7WUFDSixDQUFDO1NBQ0YsQ0FBQztJQUNKLENBQUMsQ0FBQztJQUVGLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUFFLENBQUMsVUFBVSxFQUFFLFFBQVEsQ0FBQyxDQUFDLENBQUM7Ozs7O0lDcEQvQyxJQUFNLElBQUksR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBMkN4QztRQUtDLHFCQUFvQixFQUFxQixFQUFVLEtBQTJCLEVBQVUsR0FBUztZQUE3RSxPQUFFLEdBQUYsRUFBRSxDQUFtQjtZQUFVLFVBQUssR0FBTCxLQUFLLENBQXNCO1lBQVUsUUFBRyxHQUFILEdBQUcsQ0FBTTtZQUM5RixJQUFJLENBQUMsaUJBQWlCLEdBQUcsSUFBSSxDQUFDO1lBQzlCLElBQUksQ0FBQyxTQUFTLEdBQUcsRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFFTSx3Q0FBa0IsR0FBekI7WUFBQSxpQkFjQztZQWJDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7Z0JBQzNCLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsaUJBQWlCLENBQUMsQ0FBQztZQUNuRCxDQUFDO1lBRUQsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2QsTUFBTSxFQUFFLEtBQUs7Z0JBQ2hCLEdBQUcsRUFBSyxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsZ0JBQWE7YUFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLE1BQWdEO2dCQUN2RCxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzlCLEtBQUksQ0FBQyxpQkFBaUIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDO29CQUNyQyxNQUFNLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQztnQkFDakIsQ0FBQztZQUNILENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVNLGlDQUFXLEdBQWxCLFVBQW1CLElBQVk7WUFBL0IsaUJBaUJDO1lBaEJDLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQztnQkFDakMsTUFBTSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztZQUMvQyxDQUFDO1lBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUM7Z0JBQ2YsTUFBTSxFQUFFLEtBQUs7Z0JBQ2IsR0FBRyxFQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxjQUFTLElBQU07YUFDckQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLE1BQXFDO2dCQUM1QyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLENBQUM7b0JBQzFCLE1BQU0sQ0FBQyxLQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxHQUFHO3dCQUM1QixRQUFRLEVBQUUsTUFBTSxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUcsSUFBSSxNQUFNLENBQUMsTUFBTSxDQUFDLEdBQUc7d0JBQ2pFLFFBQVEsRUFBRSxNQUFNLENBQUMsSUFBSTtxQkFDdEIsQ0FBQztnQkFDSixDQUFDO1lBQ0gsQ0FBQyxDQUFDLENBQUM7UUFFTCxDQUFDO1FBQ0gsa0JBQUM7SUFBRCxDQUFDLEFBNUNELElBNENDO0lBRUQsSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLEtBQUssRUFBRyxXQUFXLENBQUMsQ0FBQyxDQUFDOzs7OztJQzNGdkQsUUFBQSxXQUFXLEdBQUc7UUFBVSxlQUFrQjthQUFsQixVQUFrQixFQUFsQixxQkFBa0IsRUFBbEIsSUFBa0I7WUFBbEIsMEJBQWtCOztRQUNuRCxPQUFPLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ25CLGlCQUFpQixLQUFLLEVBQUUsS0FBSztZQUMzQixvQkFBb0I7WUFDcEIseUJBQXlCO1lBQ3pCLDZCQUE2QjtZQUM3QixpQ0FBaUM7WUFDakMsS0FBSyxHQUFHLEtBQUssQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDekIsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7Z0JBQ3BCLE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3pCLENBQUM7WUFDRCxLQUFLLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUN6QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQztZQUNsQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBVSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDN0IsS0FBSyxDQUFDLFVBQVUsQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUN6QixDQUFDO1lBRUQsSUFBSSxJQUFJLENBQUM7WUFDVCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDVixPQUFPLE9BQU8sQ0FBQyxJQUFJLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLEtBQUssUUFBUSxFQUFFLENBQUM7Z0JBQzdDLE1BQU0sQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ2IsS0FBSyxJQUFJO3dCQUNQLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDWixLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ1osS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDZixLQUFLLENBQUM7b0JBQ1IsS0FBSyxHQUFHO3dCQUNOLEtBQUssQ0FBQyxHQUFHLEVBQUUsQ0FBQzt3QkFDWixLQUFLLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO3dCQUNmLEtBQUssQ0FBQztvQkFDUjt3QkFDRSxLQUFLLENBQUMsR0FBRyxFQUFFLENBQUM7d0JBQ1osS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt3QkFDakIsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQzt3QkFDZixLQUFLLENBQUM7Z0JBQ1YsQ0FBQztnQkFDRCxDQUFDLEVBQUUsQ0FBQztZQUNOLENBQUM7WUFDRCxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQUMsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQ2hELE1BQU0sQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ3pCLENBQUM7UUFFRCxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDVixJQUFJLElBQUksQ0FBQztRQUNULElBQUksQ0FBQyxHQUFHLFFBQVEsQ0FBQyxRQUFRLENBQUM7UUFFMUIsSUFBTSxRQUFRLEdBQUcsc0NBQXNDLENBQUM7UUFDeEQsSUFBTSxhQUFhLEdBQUcsUUFBUSxDQUFDO1FBRS9CLE9BQU8sT0FBTyxDQUFDLElBQUksR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsS0FBSyxRQUFRLEVBQUUsQ0FBQztZQUM3QyxRQUFRLENBQUM7WUFDVCxJQUFNLE9BQU8sR0FBRyxJQUFJLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUM3QyxFQUFFLENBQUMsQ0FBQyxPQUFPLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixDQUFDLEdBQUcsSUFBSSxDQUFDO1lBQ1gsQ0FBQztZQUFDLElBQUksQ0FBQyxDQUFDO2dCQUNOLElBQUksR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDeEMsQ0FBQyxHQUFHLE9BQU8sQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdkIsQ0FBQztZQUNELENBQUMsRUFBRSxDQUFDO1FBQ04sQ0FBQztRQUVELE1BQU0sQ0FBQyxDQUFDLENBQUM7SUFDWCxDQUFDLENBQUM7Ozs7O0lDbkRGLElBQUksV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUMxQixJQUFJLFVBQVUsR0FBRyxFQUFFLENBQUM7SUFFcEIsSUFBTSxRQUFRLEdBQUcsSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7SUFFdkMsUUFBUSxDQUFDLElBQUksR0FBRyxVQUFDLElBQVksRUFBRSxLQUFhLEVBQUUsSUFBWTtRQUN4RCw4QkFBOEI7UUFDOUIsSUFBTSxXQUFXLEdBQUcsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUN2RCxNQUFNLENBQUMsZ0JBQVksV0FBVyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLDRCQUFXLENBQUMsU0FBUyxFQUFFLFVBQVUsRUFBRSxJQUFJLENBQUMsb0JBQVksS0FBSyxZQUFNLElBQUksU0FBTSxDQUFBO0lBQ25ILENBQUMsQ0FBQztJQUVGLFFBQVEsQ0FBQyxLQUFLLEdBQUcsVUFBQyxJQUFZLEVBQUUsS0FBYSxFQUFFLElBQVk7UUFDekQsTUFBTSxDQUFDLGdCQUFhLDRCQUFXLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxpQkFBVSxLQUFLLFVBQU0sQ0FBQTtJQUN6RSxDQUFDLENBQUM7SUFFRixNQUFNLENBQUMsVUFBVSxDQUFDO1FBQ2hCLFFBQVEsRUFBRSxRQUFRO1FBQ2xCLEdBQUcsRUFBRSxJQUFJO1FBQ1QsTUFBTSxFQUFFLElBQUk7UUFDWixNQUFNLEVBQUUsS0FBSztRQUNiLFFBQVEsRUFBRSxLQUFLO1FBQ2YsUUFBUSxFQUFFLEtBQUs7UUFDZixVQUFVLEVBQUUsSUFBSTtRQUNoQixXQUFXLEVBQUUsS0FBSztRQUNsQixLQUFLLEVBQUUsS0FBSztLQUNiLENBQUMsQ0FBQztJQUVILElBQU0sSUFBSSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsVUFBVSxDQUFDLENBQUM7SUFFeEMsSUFBTSxhQUFhLEdBQUc7UUFFcEIsTUFBTSxDQUFDO1lBQ0wsUUFBUSxFQUFFLElBQUk7WUFDZCxRQUFRLEVBQUUsNEhBQXNIO1lBQ2hJLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUUsR0FBRzthQUNWO1lBQ0QsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDO0lBQ0osQ0FBQyxDQUFBO0lBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDO0lBRXhDLElBQU0sbUJBQW1CLEdBQUcsVUFBQyxTQUE0QztRQUN2RSxJQUFNLFNBQVMsR0FBRyxZQUFZLENBQUM7UUFFL0IsSUFBTSxNQUFNLEdBQUcsVUFBVSxLQUFLO1lBQzVCLElBQU0sT0FBTyxHQUFHLENBQUMsTUFBTSxZQUFZLFFBQVEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUM7WUFDdkUsTUFBTSxDQUFDLEtBQUs7Z0JBQ1YsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7Z0JBQ2xDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDVCxDQUFDLENBQUM7UUFFRixNQUFNLENBQUM7WUFDTCxRQUFRLEVBQUUsSUFBSTtZQUNkLEtBQUssRUFBRTtnQkFDTCxVQUFVLEVBQUUsR0FBRzthQUNoQjtZQUNELE9BQU8sRUFBRSxJQUFJO1lBQ2IsSUFBSSxFQUFFLFVBQVUsS0FBSyxFQUFFLE9BQU8sRUFBRSxLQUFLO2dCQUNuQyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO29CQUNyQixLQUFLLENBQUMsTUFBTSxDQUFDLFNBQVMsRUFBRSxVQUFVLEtBQUs7d0JBQ3JDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7b0JBQzlCLENBQUMsQ0FBQyxDQUFDO2dCQUNMLENBQUM7Z0JBQUMsSUFBSSxDQUFDLENBQUM7b0JBQ04sT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQztnQkFDdkMsQ0FBQztZQUNILENBQUM7U0FDRixDQUFDO0lBQ0osQ0FBQyxDQUFBO0lBRUQsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLENBQUMsQ0FBQyxDQUFDO0lBTWpFLElBQU0sT0FBTyxHQUFHLFVBQUMsT0FBMEI7UUFDekMsTUFBTSxDQUFDLE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLEdBQUc7WUFDNUMsTUFBTSxjQUNELE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFDZixJQUFJLEVBQUUsWUFBVSxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsTUFBTSxDQUFHLEVBQzdELEtBQUssRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUNsQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDO0lBRUY7UUFLRSx3QkFBb0IsTUFBa0IsRUFBVSxNQUFNLEVBQVUsUUFBaUMsRUFBVSxXQUF5QjtZQUFwSSxpQkFVQztZQVZtQixXQUFNLEdBQU4sTUFBTSxDQUFZO1lBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBQTtZQUFVLGFBQVEsR0FBUixRQUFRLENBQXlCO1lBQVUsZ0JBQVcsR0FBWCxXQUFXLENBQWM7WUFKNUgsYUFBUSxHQUFHLFlBQVksQ0FBQztZQUN4QixVQUFLLEdBQUcsRUFBRSxDQUFDO1lBQ1gsU0FBSSxHQUFVLEVBQUcsQ0FBQztZQUl4QixXQUFXLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxJQUFJLENBQUMsVUFBQSxHQUFHO2dCQUN2QyxLQUFJLENBQUMsSUFBSSxHQUFHLEVBQUUsS0FBSyxFQUFFLE9BQU8sQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFFO2dCQUNyQyxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDeEIsTUFBTSxDQUFDLEVBQUUsQ0FBQyxXQUFXLEVBQUUsRUFBRSxJQUFJLEVBQUUsR0FBRyxDQUFDLGNBQWMsQ0FBQyxDQUFDLFVBQVUsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQTtnQkFDdEYsQ0FBQztnQkFBQyxJQUFJLENBQUMsQ0FBQztvQkFDTixLQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7Z0JBQ3RDLENBQUM7WUFDSCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxzQkFBVyxtQ0FBTztpQkFBbEIsY0FBdUIsTUFBTSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDOzs7V0FBQTtRQUM5QyxzQkFBVyxnQ0FBSTtpQkFBZixjQUFvQixNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7OztXQUFBO1FBQ3hDLHNCQUFXLCtCQUFHO2lCQUFkLGNBQW1CLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQzs7O1dBQUE7UUFFOUIsbUNBQVUsR0FBbEIsVUFBbUIsSUFBWTtZQUEvQixpQkFNQztZQUxDLElBQUksQ0FBQyxXQUFXLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLE1BQU07Z0JBQzdDLFVBQVUsR0FBRyxJQUFJLENBQUM7Z0JBQ2xCLFdBQVcsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDO2dCQUM5QixLQUFJLENBQUMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUM7WUFDbEMsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUgscUJBQUM7SUFBRCxDQUFDLEFBN0JELElBNkJDO0lBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxRQUFRLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsY0FBYyxDQUFFLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFuZ3VsYXIgZnJvbSAnYW5ndWxhckFNRCc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgTm9kZSB7XG4gIGxhYmVsPzogc3RyaW5nLFxuICBub2Rlcz86IE5vZGVbXSxcbiAgdmVyc2lvbnM/OiB7XG4gICAgW3ZlcnNpb246IHN0cmluZ106IHsgXG4gICAgICBsYWJlbDogc3RyaW5nLFxuICAgICAgZGF0ZTogc3RyaW5nLFxuICAgICAgcGF0aDogc3RyaW5nXG4gICAgfVxuICB9IFxufVxuXG5jb25zdCBoZWxwID0gYW5ndWxhci5tb2R1bGUoJ2FwcC5oZWxwJyk7XG5cbi8vIGNsYXNzIEhlbHBUcmVlQ29udHJvbGxlciBpbXBsZW1lbnRzIG5nLklDb250cm9sbGVyIHtcbi8vICAgY29uc3RydWN0b3IocHJpdmF0ZSAkc2NvcGU6IG5nLklTY29wZSAmIHsgcm9vdE5vZGU6IE5vZGUsIGRhdGE6IE5vZGVbXX0pIHtcbi8vICAgICAkc2NvcGUuJHdhdGNoKFwicm9vdE5vZGVcIiwgKG4sIG8pID0+IHtcbi8vICAgICAgICRzY29wZS5kYXRhID0gT2JqZWN0LmtleXMoJHNjb3BlLnJvb3ROb2RlKS5tYXAoa2V5ID0+ICRzY29wZS5yb290Tm9kZVtrZXldKTtcbi8vICAgICB9KTtcbi8vICAgfVxuLy8gfVxuXG4vLyBoZWxwLmNvbnRyb2xsZXIoXCJ0cmVlQ3RybFwiLCBbXCIkc2NvcGVcIiwgSGVscFRyZWVDb250cm9sbGVyXSk7XG5cbmNvbnN0IGhlbHBUcmVlID0gZnVuY3Rpb24gKCRjb21waWxlKSB7XG4gIHJldHVybiB7XG4gICAgcmVzdHJpY3Q6IFwiRVwiLFxuICAgIHRyYW5zY2x1ZGU6IHRydWUsXG4gICAgc2NvcGU6IHsgcm9vdE5vZGU6ICc9JyB9LFxuICAgIC8vY29udHJvbGxlcjogJ3RyZWVDdHJsJyxcbiAgICB0ZW1wbGF0ZTpcbiAgICAgICc8dWw+JyArXG4gICAgICAnPGxpIG5nLXRyYW5zY2x1ZGU+PC9saT4nICtcbiAgICAgICc8bGkgbmctcmVwZWF0PVwiY2hpbGQgaW4gcm9vdE5vZGUubm9kZXNcIj4nICtcbiAgICAgICc8dHJlZSByb290LW5vZGU9XCJjaGlsZFwiPjxkaXYgbmctdHJhbnNjbHVkZT48L2Rpdj48L3RyZWU+JyArXG4gICAgICAnPC9saT4nICtcbiAgICAgICc8L3VsPicsXG4gICAgY29tcGlsZTogZnVuY3Rpb24gKHRFbGVtZW50LCB0QXR0ciwgdHJhbnNjbHVkZSkge1xuICAgICAgdmFyIGNvbnRlbnRzID0gdEVsZW1lbnQuY29udGVudHMoKS5yZW1vdmUoKTtcbiAgICAgIHZhciBjb21waWxlZENvbnRlbnRzO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uIChzY29wZSwgaUVsZW1lbnQsIGlBdHRyKSB7XG4gICAgICAgIGlmICghY29tcGlsZWRDb250ZW50cykge1xuICAgICAgICAgIGNvbXBpbGVkQ29udGVudHMgPSAkY29tcGlsZShjb250ZW50cywgdHJhbnNjbHVkZSk7XG4gICAgICAgIH1cbiAgICAgICAgY29tcGlsZWRDb250ZW50cyhzY29wZSwgZnVuY3Rpb24gKGNsb25lLCBzY29wZSkge1xuICAgICAgICAgIGlFbGVtZW50LmFwcGVuZChjbG9uZSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9XG4gIH07XG59O1xuXG5oZWxwLmRpcmVjdGl2ZShcInRyZWVcIiwgW1wiJGNvbXBpbGVcIiwgaGVscFRyZWVdKTsiLCJpbXBvcnQgKiBhcyBhbmd1bGFyIGZyb20gJ2FuZ3VsYXJBTUQnO1xuXG5jb25zdCBoZWxwID0gYW5ndWxhci5tb2R1bGUoJ2FwcC5oZWxwJyk7XG5cbmV4cG9ydCBpbnRlcmZhY2UgVmVyc2lvbkluZm8ge1xuICBsYWJlbDogc3RyaW5nLFxuICBwYXRoOiBzdHJpbmcsXG4gIGRhdGU6IHN0cmluZ1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRvY05vZGUge1xuICBsYWJlbDogc3RyaW5nOyBcbiAgdmVyc2lvbnM6IHtcbiAgICBbdmVyc2lvbktleTogc3RyaW5nXTogVmVyc2lvbkluZm9cbiAgfTtcbiAgbm9kZXM/OiBUb2NOb2RlQ29sbGVjdGlvbjtcbn1cblxuZXhwb3J0IHR5cGUgVG9jTm9kZUNvbGxlY3Rpb24gPSB7IFt0b2NOb2RlS2V5OiBzdHJpbmddOiBUb2NOb2RlIH07XG5cblxuaW50ZXJmYWNlIElFbnYge1xuICBnZXRCYXNlVVJMOiAoc2FsVHlwZTogJ0FEX1NBTCcgfCAnTURfU0FMJykgPT4gc3RyaW5nO1xufVxuXG4vKiogUmVwcmVzZW50cyBhIHNlcnZpY2UgdXNlZCBmb3IgdGhlIGhlbHAgYXBwbGljYXRpb24uICovXG5leHBvcnQgaW50ZXJmYWNlIElIZWxwU2VydmljZSB7XG5cbiAgLyoqXG4gICAqIFF1ZXJpZXMgdGhlIHRhYmxlIG9mIGNvbnRlbnRzIGZvciBhIHNwZWNpZmljIHZlcnNpb24uXG4gICAqIEBwYXJhbSB2ZXJzaW9uIFRoZSB2ZXJzaW9uIHRoZSB0YWJsZSBvZiBjb250ZW50cyBzaGFsbCBiZSByZXF1ZXN0ZWQgZm9yLlxuICAgKiBAcmV0dXJucyBBIFByb21pc2UgY29udGFpbmluZyB0aGUgcmVxdWVzdGVkIHRhYmxlIG9mIGNvbnRlbnRzLlxuICAgKiBcbiAgICovXG4gIGdldFRhYmxlT2ZDb250ZW50cyh2ZXJzaW9uPzogc3RyaW5nKTogYW5ndWxhci5JUHJvbWlzZTxUb2NOb2RlQ29sbGVjdGlvbj47XG5cbiAgLyoqXG4gICAqIEdldCBhIHNwZWNpdGljIGRvY3VtZW50IGJ5IGl0cyBwYXRoLlxuICAgKiBAcGFyYW0gcGF0aCBUaGUgcGF0aCBvZiB0aGUgZG9jdW1lbnQgdG8gZ2V0LlxuICAgKiBAcmV0dXJucyBBIFByb21pc2UgY29udGFpbmluZyB0aGUgcmVxdWVzdGVkIGRvY3VtZW50LlxuICAgKiBcbiAgICovXG4gIGdldERvY3VtZW50KHBhdGg6IHN0cmluZyk6IGFuZ3VsYXIuSVByb21pc2U8eyBiYXNlUGF0aDogc3RyaW5nLCBkb2N1bWVudDogc3RyaW5nIH0+O1xufVxuXG5jbGFzcyBIZWxwc2VydmljZSBpbXBsZW1lbnRzIElIZWxwU2VydmljZSB7XG5cbiAgcHJpdmF0ZSB0b2NOb2RlQ29sbGVjdGlvbjogVG9jTm9kZUNvbGxlY3Rpb247XG4gIHByaXZhdGUgZG9jdW1lbnRzOiB7IFtwYXRoOiBzdHJpbmddOiB7IGJhc2VQYXRoOiBzdHJpbmcsIGRvY3VtZW50OiBzdHJpbmcgfSB9O1xuXG5cdGNvbnN0cnVjdG9yKHByaXZhdGUgJHE6IGFuZ3VsYXIuSVFTZXJ2aWNlLCBwcml2YXRlICRodHRwOiBhbmd1bGFyLklIdHRwU2VydmljZSwgcHJpdmF0ZSBlbnY6IElFbnYpIHtcbiAgICB0aGlzLnRvY05vZGVDb2xsZWN0aW9uID0gbnVsbDtcbiAgICB0aGlzLmRvY3VtZW50cyA9IHt9O1xuICB9XG4gXG4gIHB1YmxpYyBnZXRUYWJsZU9mQ29udGVudHMoKTogYW5ndWxhci5JUHJvbWlzZTxUb2NOb2RlQ29sbGVjdGlvbj4ge1xuICAgIGlmICh0aGlzLnRvY05vZGVDb2xsZWN0aW9uKSB7XG4gICAgICByZXR1cm4gdGhpcy4kcS5yZXNvbHZlKHRoaXMudG9jTm9kZUNvbGxlY3Rpb24pO1xuXHRcdH1cblxuXHRcdHJldHVybiB0aGlzLiRodHRwKHtcbiAgICAgIG1ldGhvZDogXCJHRVRcIixcblx0XHRcdHVybDogYCR7dGhpcy5lbnYuZ2V0QmFzZVVSTCgnTURfU0FMJyl9L2hlbHAvP21ldGFgXG4gICAgfSkudGhlbigocmVzdWx0OiBhbmd1bGFyLklIdHRwUmVzcG9uc2U8VG9jTm9kZUNvbGxlY3Rpb24+KSA9PiB7XG4gICAgICBpZiAocmVzdWx0LnN0YXR1cyA9PT0gMjAwKSB7XG5cdFx0XHRcdHRoaXMudG9jTm9kZUNvbGxlY3Rpb24gPSByZXN1bHQuZGF0YTtcblx0XHRcdFx0cmV0dXJuIHJlc3VsdC5kYXRhO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldERvY3VtZW50KHBhdGg6IHN0cmluZyk6IGFuZ3VsYXIuSVByb21pc2U8e2Jhc2VQYXRoOiBzdHJpbmcsIGRvY3VtZW50OiBzdHJpbmd9PiB7XG4gICAgaWYgKHRoaXMuZG9jdW1lbnRzW3BhdGhdICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLiRxLnJlc29sdmUodGhpcy5kb2N1bWVudHNbcGF0aF0pO1xuICAgIH1cblxuICAgcmV0dXJuIHRoaXMuJGh0dHAoe1xuICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgdXJsOiBgJHt0aGlzLmVudi5nZXRCYXNlVVJMKCdNRF9TQUwnKX0vaGVscC8ke3BhdGh9YFxuICAgIH0pLnRoZW4oKHJlc3VsdDogYW5ndWxhci5JSHR0cFJlc3BvbnNlPHN0cmluZz4pID0+IHtcbiAgICAgIGlmIChyZXN1bHQuc3RhdHVzID09PSAyMDApIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZG9jdW1lbnRzW3BhdGhdID0ge1xuICAgICAgICAgIGJhc2VQYXRoOiByZXN1bHQuY29uZmlnICYmIHJlc3VsdC5jb25maWcudXJsICYmIHJlc3VsdC5jb25maWcudXJsLFxuICAgICAgICAgIGRvY3VtZW50OiByZXN1bHQuZGF0YVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuXG4gIH0gXG59XG5cbmhlbHAuc2VydmljZSgnaGVscFNlcnZpY2UnLCBbJyRxJywgJyRodHRwJywgJ0VOVicsICBIZWxwc2VydmljZV0pOyIsImV4cG9ydCB2YXIgcmVzb2x2ZVBhdGggPSBmdW5jdGlvbiAoLi4ucGF0aHM6IHN0cmluZ1tdKTogc3RyaW5nIHtcbiAgY29uc29sZS5sb2cocGF0aHMpO1xuICBmdW5jdGlvbiByZXNvbHZlKHBhdGhBLCBwYXRoQikge1xuICAgIC8vICDigJhh4oCZICAgICA9PiBbJ2EnXVxuICAgIC8vICAnYS9iJyAgID0+IFsnYScsICdiJ11cbiAgICAvLyAgJy9hL2InICA9PiBbJycsICdhJywgJ2InXVxuICAgIC8vICAnL2EvYi8nID0+IFsnJywgJ2EnLCAnYicsICcnXVxuICAgIHBhdGhCID0gcGF0aEIuc3BsaXQoJy8nKTtcbiAgICBpZiAocGF0aEJbMF0gPT09ICcnKSB7XG4gICAgICByZXR1cm4gcGF0aEIuam9pbignLycpO1xuICAgIH1cbiAgICBwYXRoQSA9IHBhdGhBLnNwbGl0KCcvJyk7XG4gICAgdmFyIGFMYXN0SW5kZXggPSBwYXRoQS5sZW5ndGggLSAxO1xuICAgIGlmIChwYXRoQVthTGFzdEluZGV4XSAhPT0gJycpIHtcbiAgICAgIHBhdGhBW2FMYXN0SW5kZXhdID0gJyc7XG4gICAgfVxuXG4gICAgdmFyIHBhcnQ7XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlICh0eXBlb2YgKHBhcnQgPSBwYXRoQltpXSkgPT09ICdzdHJpbmcnKSB7XG4gICAgICBzd2l0Y2ggKHBhcnQpIHtcbiAgICAgICAgY2FzZSAnLi4nOlxuICAgICAgICAgIHBhdGhBLnBvcCgpO1xuICAgICAgICAgIHBhdGhBLnBvcCgpO1xuICAgICAgICAgIHBhdGhBLnB1c2goJycpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBjYXNlICcuJzpcbiAgICAgICAgICBwYXRoQS5wb3AoKTtcbiAgICAgICAgICBwYXRoQS5wdXNoKCcnKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICBwYXRoQS5wb3AoKTtcbiAgICAgICAgICBwYXRoQS5wdXNoKHBhcnQpO1xuICAgICAgICAgIHBhdGhBLnB1c2goJycpO1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgICAgaSsrO1xuICAgIH1cbiAgICBpZiAocGF0aEJbcGF0aEIubGVuZ3RoIC0gMV0gIT09ICcnKSBwYXRoQS5wb3AoKTsgXG4gICAgcmV0dXJuIHBhdGhBLmpvaW4oJy8nKTtcbiAgfVxuXG4gIHZhciBpID0gMDtcbiAgdmFyIHBhdGg7XG4gIHZhciByID0gbG9jYXRpb24ucGF0aG5hbWU7XG5cbiAgY29uc3QgdXJsUmVnZXggPSAvXmh0dHBzP1xcOlxcL1xcLyhbXlxcLz8jXSspKD86W1xcLz8jXXwkKS9pO1xuICBjb25zdCBtdWx0aVNsYXNoUmVnID0gL1xcL1xcLysvZztcblxuICB3aGlsZSAodHlwZW9mIChwYXRoID0gcGF0aHNbaV0pID09PSAnc3RyaW5nJykge1xuICAgIGRlYnVnZ2VyO1xuICAgIGNvbnN0IG1hdGNoZXMgPSBwYXRoICYmIHBhdGgubWF0Y2godXJsUmVnZXgpO1xuICAgIGlmIChtYXRjaGVzIHx8ICFpKSB7XG4gICAgICByID0gcGF0aDtcbiAgICB9IGVsc2Uge1xuICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZShtdWx0aVNsYXNoUmVnLCAnLycpO1xuICAgICAgciA9IHJlc29sdmUociwgcGF0aCk7XG4gICAgfVxuICAgIGkrKztcbiAgfVxuXG4gIHJldHVybiByO1xufTsiLCJkZWNsYXJlIHZhciBhbmd1bGFyOiBhbmd1bGFyLklBbmd1bGFyU3RhdGljO1xuXG5pbXBvcnQgKiBhcyBtYXJrZWQgZnJvbSBcIi4vbGliL21hcmtlZFwiOyAgXG5cbmltcG9ydCBcIi4vaGVscC50cmVlXCI7XG5pbXBvcnQgXCIuL2hlbHAuc2VydmljZVwiO1xuXG5pbXBvcnQgeyBJSGVscFNlcnZpY2UgLCBUb2NOb2RlQ29sbGVjdGlvbiB9IGZyb20gXCIuL2hlbHAuc2VydmljZVwiO1xuaW1wb3J0IHsgcmVzb2x2ZVBhdGggfSBmcm9tICcuL2hlbHAudXRpbGl0aWVzJztcbmltcG9ydCB7IE5vZGUgfSBmcm9tICBcIi4vaGVscC50cmVlXCI7XG5cbmxldCBjdXJyZW50UGF0aCA9ICcvaGVscCc7XG5sZXQgY3VycmVudERvYyA9ICcnO1xuXG5jb25zdCByZW5kZXJlciA9IG5ldyBtYXJrZWQuUmVuZGVyZXIoKTtcblxucmVuZGVyZXIubGluayA9IChocmVmOiBzdHJpbmcsIHRpdGxlOiBzdHJpbmcsIHRleHQ6IHN0cmluZykgPT4ge1xuICAvLyBjaGVjayBpZiBocmVmIGlzIHJlbCBvciBhYnNcbiAgY29uc3QgYWJzVXJsTWF0Y2ggPSBocmVmLnRyaW0oKS5tYXRjaCgvXmh0dHBzPzpcXC9cXC8vaSk7XG4gIHJldHVybiBgPGEgaHJlZj1cIiR7YWJzVXJsTWF0Y2ggPyBocmVmIDogcmVzb2x2ZVBhdGgoJyMvaGVscC8nLCBjdXJyZW50RG9jLCBocmVmKX1cIiB0aXRsZT1cIiR7dGl0bGV9XCIgPiR7dGV4dH08L2E+YFxufTtcblxucmVuZGVyZXIuaW1hZ2UgPSAoaHJlZjogc3RyaW5nLCB0aXRsZTogc3RyaW5nLCB0ZXh0OiBzdHJpbmcpID0+IHtcbiAgcmV0dXJuIGA8aW1nIHNyYz1cIiR7cmVzb2x2ZVBhdGgoY3VycmVudFBhdGgsIGhyZWYpfVwiIGFsdD1cIiR7dGl0bGV9XCIgLz5gXG59O1xuXG5tYXJrZWQuc2V0T3B0aW9ucyh7XG4gIHJlbmRlcmVyOiByZW5kZXJlcixcbiAgZ2ZtOiB0cnVlLFxuICB0YWJsZXM6IHRydWUsXG4gIGJyZWFrczogZmFsc2UsXG4gIHBlZGFudGljOiBmYWxzZSxcbiAgc2FuaXRpemU6IGZhbHNlLFxuICBzbWFydExpc3RzOiB0cnVlLFxuICBzbWFydHlwYW50czogZmFsc2UsXG4gIHhodG1sOiBmYWxzZVxufSk7XG5cbmNvbnN0IGhlbHAgPSBhbmd1bGFyLm1vZHVsZSgnYXBwLmhlbHAnKTtcblxuY29uc3QgSGVscERpcmVjdGl2ZSA9ICgpID0+IHtcblxuICByZXR1cm4ge1xuICAgIHJlc3RyaWN0OiAnQUUnLFxuICAgIHRlbXBsYXRlOiBgPGRpdiBjbGFzcz1cImdsb2JhbC1oZWxwXCIgPjxhIGhyZWY9XCJ7eyAnIy9oZWxwLycrJHNjb3BlLmxpbmsgfX1cIj48aSBjbGFzcz1cImZhIGZhLXF1ZXN0aW9uLWNpcmNsZVwiPjwvaT4gSGVscDwvYT48L2Rpdj5gLFxuICAgIHNjb3BlOiB7XG4gICAgICBsaW5rOiAnQCdcbiAgICB9LFxuICAgIHJlcGxhY2U6IHRydWVcbiAgfTtcbn1cblxuaGVscC5kaXJlY3RpdmUoJ2hlbHAnLCBbSGVscERpcmVjdGl2ZV0pO1xuXG5jb25zdCBNYXJrZG93bkl0RGlyZWN0aXZlID0gKCRzYW5pdGl6ZTogYW5ndWxhci5zYW5pdGl6ZS5JU2FuaXRpemVTZXJ2aWNlKSA9PiB7XG4gIGNvbnN0IGF0dHJpYnV0ZSA9ICdtYXJrZG93bkl0JztcbiAgXG4gIGNvbnN0IHJlbmRlciA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGNvbnN0IG1kMmh0bWwgPSAobWFya2VkIGluc3RhbmNlb2YgRnVuY3Rpb24pID8gbWFya2VkIDogbWFya2VkLmRlZmF1bHQ7XG4gICAgcmV0dXJuIHZhbHVlXG4gICAgICA/ICRzYW5pdGl6ZShtZDJodG1sKHZhbHVlLnRyaW0oKSkpXG4gICAgICA6ICcnO1xuICB9O1xuXG4gIHJldHVybiB7XG4gICAgcmVzdHJpY3Q6ICdBRScsXG4gICAgc2NvcGU6IHtcbiAgICAgIG1hcmtkb3duSXQ6ICc9J1xuICAgIH0sXG4gICAgcmVwbGFjZTogdHJ1ZSxcbiAgICBsaW5rOiBmdW5jdGlvbiAoc2NvcGUsIGVsZW1lbnQsIGF0dHJzKSB7XG4gICAgICBpZiAoYXR0cnNbYXR0cmlidXRlXSkge1xuICAgICAgICBzY29wZS4kd2F0Y2goYXR0cmlidXRlLCBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICBlbGVtZW50Lmh0bWwocmVuZGVyKHZhbHVlKSk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZWxlbWVudC5odG1sKHJlbmRlcihlbGVtZW50LnRleHQoKSkpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuaGVscC5kaXJlY3RpdmUoJ21hcmtkb3duSXQnLCBbJyRzYW5pdGl6ZScsIE1hcmtkb3duSXREaXJlY3RpdmVdKTtcblxuaW50ZXJmYWNlIElIZWxwU2NvcGUgZXh0ZW5kcyBhbmd1bGFyLklTY29wZSB7XG4gIHRvYzogVG9jTm9kZUNvbGxlY3Rpb25cbn1cblxuY29uc3QgbWFwTm9kZSA9ICh0b2NOb2RlOiBUb2NOb2RlQ29sbGVjdGlvbik6IE5vZGVbXSA9PiB7XG4gIHJldHVybiB0b2NOb2RlICYmIE9iamVjdC5rZXlzKHRvY05vZGUpLm1hcChrZXkgPT4ge1xuICAgIHJldHVybiB7XG4gICAgICAuLi50b2NOb2RlW2tleV0sXG4gICAgICBocmVmOiBgIy9oZWxwLyR7dG9jTm9kZVtrZXldWyd2ZXJzaW9ucyddWydjdXJyZW50J11bJ3BhdGgnXX1gLFxuICAgICAgbm9kZXM6IG1hcE5vZGUodG9jTm9kZVtrZXldLm5vZGVzKVxuICAgIH07XG4gIH0pO1xufTtcblxuY2xhc3MgSGVscENvbnRyb2xsZXIge1xuICBwcml2YXRlIF9jb250ZW50ID0gXCIjIyBMb2FkaW5nXCI7XG4gIHByaXZhdGUgX3BhdGggPSAnJztcbiAgcHJpdmF0ZSBfdG9jIDogTm9kZSA9IHsgfTsgXG5cbiAgY29uc3RydWN0b3IocHJpdmF0ZSAkc2NvcGU6IElIZWxwU2NvcGUsIHByaXZhdGUgJHN0YXRlLCBwcml2YXRlICR0aW1lb3V0OiBhbmd1bGFyLklUaW1lb3V0U2VydmljZSwgcHJpdmF0ZSBoZWxwU2VydmljZTogSUhlbHBTZXJ2aWNlKSB7XG4gIFxuICAgIGhlbHBTZXJ2aWNlLmdldFRhYmxlT2ZDb250ZW50cygpLnRoZW4odG9jID0+IHtcbiAgICAgIHRoaXMuX3RvYyA9IHsgbm9kZXM6IG1hcE5vZGUodG9jKSB9IDtcbiAgICAgIGlmICghJHN0YXRlLnBhcmFtcy5wYXRoKSB7XG4gICAgICAgICRzdGF0ZS5nbygnbWFpbi5oZWxwJywgeyBwYXRoOiB0b2NbJ29wZW5kYXlsaWdodCddWyd2ZXJzaW9ucyddWydjdXJyZW50J11bJ3BhdGgnXSB9KVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5uYXZpZ2F0ZVRvKCRzdGF0ZS5wYXJhbXMucGF0aCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IGNvbnRlbnQoKSB7IHJldHVybiB0aGlzLl9jb250ZW50OyB9XG4gIHB1YmxpYyBnZXQgcGF0aCgpIHsgcmV0dXJuIHRoaXMuX3BhdGg7IH1cbiAgcHVibGljIGdldCB0b2MoKSB7IHJldHVybiB0aGlzLl90b2M7IH1cblxuICBwcml2YXRlIG5hdmlnYXRlVG8ocGF0aDogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5oZWxwU2VydmljZS5nZXREb2N1bWVudChwYXRoKS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgIGN1cnJlbnREb2MgPSBwYXRoO1xuICAgICAgY3VycmVudFBhdGggPSByZXN1bHQuYmFzZVBhdGg7XG4gICAgICB0aGlzLl9jb250ZW50ID0gcmVzdWx0LmRvY3VtZW50O1xuICAgIH0pO1xuICB9XG5cbn1cblxuaGVscC5jb250cm9sbGVyKCdoZWxwQ3RybCcsIFsnJHNjb3BlJywgJyRzdGF0ZScsICckdGltZW91dCcsICdoZWxwU2VydmljZScsIEhlbHBDb250cm9sbGVyIF0pOyJdfQ==
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.controller.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.controller.ts
deleted file mode 100644 (file)
index 5a12bbf..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-declare var angular: angular.IAngularStatic;
-
-import * as marked from "./lib/marked";  
-
-import "./help.tree";
-import "./help.service";
-
-import { IHelpService , TocNodeCollection } from "./help.service";
-import { resolvePath } from './help.utilities';
-import { Node } from  "./help.tree";
-
-let currentPath = '/help';
-let currentDoc = '';
-
-const renderer = new marked.Renderer();
-
-renderer.link = (href: string, title: string, text: string) => {
-  // check if href is rel or abs
-  const absUrlMatch = href.trim().match(/^https?:\/\//i);
-  return `<a href="${absUrlMatch ? href : resolvePath('#/help/', currentDoc, href)}" title="${title}" >${text}</a>`
-};
-
-renderer.image = (href: string, title: string, text: string) => {
-  return `<img src="${resolvePath(currentPath, href)}" alt="${title}" />`
-};
-
-marked.setOptions({
-  renderer: renderer,
-  gfm: true,
-  tables: true,
-  breaks: false,
-  pedantic: false,
-  sanitize: false,
-  smartLists: true,
-  smartypants: false,
-  xhtml: false
-});
-
-const help = angular.module('app.help');
-
-const HelpDirective = () => {
-
-  return {
-    restrict: 'AE',
-    template: `<div class="global-help" ><a href="{{ '#/help/'+ link }}"><i class="fa fa-question-circle"></i> Help</a></div>`,
-    scope: {
-      link: '@'
-    },
-    replace: true
-  };
-}
-
-help.directive('help', [HelpDirective]);
-
-const MarkdownItDirective = ($sanitize: angular.sanitize.ISanitizeService) => {
-  const attribute = 'markdownIt';
-  
-  const render = function (value) {
-    const md2html = (marked instanceof Function) ? marked : marked.default;
-    return value
-      ? $sanitize(md2html(value.trim()))
-      : '';
-  };
-
-  return {
-    restrict: 'AE',
-    scope: {
-      markdownIt: '='
-    },
-    replace: true,
-    link: function (scope, element, attrs) {
-      if (attrs[attribute]) {
-        scope.$watch(attribute, function (value) {
-          element.html(render(value));
-        });
-      } else {
-        element.html(render(element.text()));
-      }
-    }
-  };
-}
-
-help.directive('markdownIt', ['$sanitize', MarkdownItDirective]);
-
-interface IHelpScope extends angular.IScope {
-  toc: TocNodeCollection
-}
-
-const mapNode = (tocNode: TocNodeCollection): Node[] => {
-  return tocNode && Object.keys(tocNode).map(key => {
-    return {
-      ...tocNode[key],
-      href: `#/help/${tocNode[key]['versions']['current']['path']}`,
-      nodes: mapNode(tocNode[key].nodes)
-    };
-  });
-};
-
-class HelpController {
-  private _content = "## Loading";
-  private _path = '';
-  private _toc : Node = { }; 
-
-  constructor(private $scope: IHelpScope, private $state, private $timeout: angular.ITimeoutService, private helpService: IHelpService) {
-  
-    helpService.getTableOfContents().then(toc => {
-      this._toc = { nodes: mapNode(toc) } ;
-      if (!$state.params.path) {
-        $state.go('main.help', { path: toc['sdnr']['versions']['current']['path'] })
-      } else {
-        this.navigateTo($state.params.path);
-      }
-    });
-  }
-
-  public get content() { return this._content; }
-  public get path() { return this._path; }
-  public get toc() { return this._toc; }
-
-  private navigateTo(path: string): void {
-    this.helpService.getDocument(path).then((result) => {
-      currentDoc = path;
-      currentPath = result.basePath;
-      this._content = result.document;
-    });
-  }
-
-}
-
-help.controller('helpCtrl', ['$scope', '$state', '$timeout', 'helpService', HelpController ]);
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.custom.css
deleted file mode 100644 (file)
index d54b5c2..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-.app-help {
-  color:azure; 
-}
-
-.global-help {
-  float: left;
-  margin: 5px;
-  margin-left: 8px;
-}
-
-.app-help th {
-  padding: 3px;
-  border-bottom: #eeeeee solid 1px;
-}
-
-.app-help td {
-  padding: 2px;
-}
-
-.app-help tbody {
-  padding: 2px;
-  border-bottom: #eeeeee solid 1px;
-  margin-bottom: 20px;
-}
-
-.app-help .toc {
-  padding-left: 0;
-  padding-top: 25px;
-  max-width: 170px;
-}
-
-.app-help a[href^="http://"]:after {
-  content: "\f08e";
-  display: inline-block;
-  font-family: FontAwesome;
-  font-weight: normal;
-  font-style: normal;
-  text-decoration: none;
-  padding-left: 3px;
-}
-
-.app-help a[href^="https://"]:after {
-  content: "\f08e";
-  display: inline-block;
-  font-family: FontAwesome;
-  font-weight: normal;
-  font-style: normal;
-  text-decoration: none;
-  padding-left: 3px;
-}
-
-.app-help a, .global-help a {
-  color:azure; 
-  text-decoration: none;
-}
-
-.app-help a:visited, .global-help a:visited {
-  color:azure; 
-   text-decoration: none;
-}
-
-.app-help a:hover, .global-help a:hover {
-  color:bisque; 
-}
-
-.app-help .toc ul {
-  margin: 0;
-  padding: 0;
-  list-style: none; 
-  border: none;
-  overflow: hidden;
-}
-
-.app-help .toc li {
-  line-height: 1.5em;
-  position: relative;
-  padding: 0 0 0 20px;
-}
-
-.app-help .toc > tree > ul > li {
-  padding: 0
-}
-
-.app-help .toc li a {
-  color:azure; 
-  text-decoration: none;
-}
-
-.app-help .toc li a:visited {
-  color:azure; 
-  text-decoration: none;
-}
-
-.app-help .toc li a:hover {
-  color:bisque; 
-  text-decoration: none;
-}
-
-.app-help > .help {
-  color:azure;
-}
-
-.app-help > .help img {
-  width: 100%
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.module.js
deleted file mode 100644 (file)
index 71d43be..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-define( ["require", "exports"], function (require, exports) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.help = angular.module('app.help', ['app.core']);
-    exports.help.config(function ($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $httpProvider, $translateProvider, $translatePartialLoaderProvider) {
-        //$translatePartialLoaderProvider.addPart('app/help/locale/locale');
-        NavHelperProvider.addControllerUrl('app/help/help.controller');
-        NavHelperProvider.addToMenu('help', {
-            "link": "#/help/",
-            "active": "main.help",
-            "title": "Help",
-            "icon": "fa fa-question-circle",
-            "page": {
-                "title": "Help",
-                "description": "help"
-            }
-        });
-        $stateProvider.state('main.help', {
-            url: 'help/*path',
-            access: 2,
-            views: {
-                'content': {
-                    templateUrl: 'src/app/help/help.tpl.html',
-                    controller: 'helpCtrl as vm'
-                }
-            }
-        });
-    });
-});
-/* non ES6 export */
-// export = help;   
-// export default help;
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVscC5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvYXBwL2hlbHAvaGVscC5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0lBRWEsUUFBQSxJQUFJLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxVQUFVLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBRTdELFlBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSwrQkFBK0I7UUFFMUssb0VBQW9FO1FBRXBFLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLDBCQUEwQixDQUFDLENBQUM7UUFDL0QsaUJBQWlCLENBQUMsU0FBUyxDQUFDLE1BQU0sRUFBRTtZQUNsQyxNQUFNLEVBQUUsU0FBUztZQUNqQixRQUFRLEVBQUUsV0FBVztZQUNyQixPQUFPLEVBQUUsTUFBTTtZQUNmLE1BQU0sRUFBRSx1QkFBdUI7WUFDL0IsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxXQUFXO2dCQUNwQixhQUFhLEVBQUUsTUFBTTthQUN0QjtTQUNGLENBQUMsQ0FBQztRQUVILGNBQWMsQ0FBQyxLQUFLLENBQUMsV0FBVyxFQUFFO1lBQ2hDLEdBQUcsRUFBRSxZQUFZO1lBQ2pCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsS0FBSyxFQUFFO2dCQUNMLFNBQVMsRUFBRTtvQkFDVCxXQUFXLEVBQUUsNEJBQTRCO29CQUN6QyxVQUFVLEVBQUUsZ0JBQWdCO2lCQUM3QjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7O0FBRUgsb0JBQW9CO0FBQ3BCLG9CQUFvQjtBQUNwQix1QkFBdUIiLCJzb3VyY2VzQ29udGVudCI6WyJkZWNsYXJlIHZhciBhbmd1bGFyOiBhbmd1bGFyLklBbmd1bGFyU3RhdGljO1xuXG5leHBvcnQgY29uc3QgaGVscCA9IGFuZ3VsYXIubW9kdWxlKCdhcHAuaGVscCcsIFsnYXBwLmNvcmUnXSk7XG5cbmhlbHAuY29uZmlnKGZ1bmN0aW9uICgkc3RhdGVQcm92aWRlciwgJGNvbXBpbGVQcm92aWRlciwgJGNvbnRyb2xsZXJQcm92aWRlciwgJHByb3ZpZGUsIE5hdkhlbHBlclByb3ZpZGVyLCAkaHR0cFByb3ZpZGVyLCAkdHJhbnNsYXRlUHJvdmlkZXIsICR0cmFuc2xhdGVQYXJ0aWFsTG9hZGVyUHJvdmlkZXIpIHtcblxuICAvLyR0cmFuc2xhdGVQYXJ0aWFsTG9hZGVyUHJvdmlkZXIuYWRkUGFydCgnYXBwL2hlbHAvbG9jYWxlL2xvY2FsZScpO1xuXG4gIE5hdkhlbHBlclByb3ZpZGVyLmFkZENvbnRyb2xsZXJVcmwoJ2FwcC9oZWxwL2hlbHAuY29udHJvbGxlcicpO1xuICBOYXZIZWxwZXJQcm92aWRlci5hZGRUb01lbnUoJ2hlbHAnLCB7XG4gICAgXCJsaW5rXCI6IFwiIy9oZWxwL1wiLFxuICAgIFwiYWN0aXZlXCI6IFwibWFpbi5oZWxwXCIsXG4gICAgXCJ0aXRsZVwiOiBcIkhlbHBcIixcbiAgICBcImljb25cIjogXCJmYSBmYS1xdWVzdGlvbi1jaXJjbGVcIiwgIC8vIEFkZCBuYXZpZ2F0aW9uIGljb24gY3NzIGNsYXNzIGhlcmVcbiAgICBcInBhZ2VcIjoge1xuICAgICAgXCJ0aXRsZVwiOiBcIk1XVE4gRGVtb1wiLFxuICAgICAgXCJkZXNjcmlwdGlvblwiOiBcImhlbHBcIlxuICAgIH1cbiAgfSk7XG5cbiAgJHN0YXRlUHJvdmlkZXIuc3RhdGUoJ21haW4uaGVscCcsIHtcbiAgICB1cmw6ICdoZWxwLypwYXRoJyxcbiAgICBhY2Nlc3M6IDIsXG4gICAgdmlld3M6IHtcbiAgICAgICdjb250ZW50Jzoge1xuICAgICAgICB0ZW1wbGF0ZVVybDogJ3NyYy9hcHAvaGVscC9oZWxwLnRwbC5odG1sJyxcbiAgICAgICAgY29udHJvbGxlcjogJ2hlbHBDdHJsIGFzIHZtJ1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG59KTtcblxuLyogbm9uIEVTNiBleHBvcnQgKi9cbi8vIGV4cG9ydCA9IGhlbHA7ICAgXG4vLyBleHBvcnQgZGVmYXVsdCBoZWxwOyJdfQ==
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.module.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.module.ts
deleted file mode 100644 (file)
index d3acc64..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-declare var angular: angular.IAngularStatic;
-
-export const help = angular.module('app.help', ['app.core']);
-
-help.config(function ($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $httpProvider, $translateProvider, $translatePartialLoaderProvider) {
-
-  //$translatePartialLoaderProvider.addPart('app/help/locale/locale');
-
-  NavHelperProvider.addControllerUrl('app/help/help.controller');
-  NavHelperProvider.addToMenu('help', {
-    "link": "#/help/",
-    "active": "main.help",
-    "title": "Help",
-    "icon": "fa fa-question-circle",  // Add navigation icon css class here
-    "page": {
-      "title": "MWTN Demo",
-      "description": "help"
-    }
-  });
-
-  $stateProvider.state('main.help', {
-    url: 'help/*path',
-    access: 2,
-    views: {
-      'content': {
-        templateUrl: 'src/app/help/help.tpl.html',
-        controller: 'helpCtrl as vm'
-      }
-    }
-  });
-});
-
-/* non ES6 export */
-// export = help;   
-// export default help;
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.service.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.service.ts
deleted file mode 100644 (file)
index f09ec7b..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-import * as angular from 'angularAMD';
-
-const help = angular.module('app.help');
-
-export interface VersionInfo {
-  label: string,
-  path: string,
-  date: string
-}
-
-export interface TocNode {
-  label: string; 
-  versions: {
-    [versionKey: string]: VersionInfo
-  };
-  nodes?: TocNodeCollection;
-}
-
-export type TocNodeCollection = { [tocNodeKey: string]: TocNode };
-
-
-interface IEnv {
-  getBaseURL: (salType: 'AD_SAL' | 'MD_SAL') => string;
-}
-
-/** Represents a service used for the help application. */
-export interface IHelpService {
-
-  /**
-   * Queries the table of contents for a specific version.
-   * @param version The version the table of contents shall be requested for.
-   * @returns A Promise containing the requested table of contents.
-   * 
-   */
-  getTableOfContents(version?: string): angular.IPromise<TocNodeCollection>;
-
-  /**
-   * Get a specitic document by its path.
-   * @param path The path of the document to get.
-   * @returns A Promise containing the requested document.
-   * 
-   */
-  getDocument(path: string): angular.IPromise<{ basePath: string, document: string }>;
-}
-
-class Helpservice implements IHelpService {
-
-  private tocNodeCollection: TocNodeCollection;
-  private documents: { [path: string]: { basePath: string, document: string } };
-
-       constructor(private $q: angular.IQService, private $http: angular.IHttpService, private env: IEnv) {
-    this.tocNodeCollection = null;
-    this.documents = {};
-  }
-  public getTableOfContents(): angular.IPromise<TocNodeCollection> {
-    if (this.tocNodeCollection) {
-      return this.$q.resolve(this.tocNodeCollection);
-               }
-
-               return this.$http({
-      method: "GET",
-                       url: `${this.env.getBaseURL('MD_SAL')}/help/?meta`
-    }).then((result: angular.IHttpResponse<TocNodeCollection>) => {
-      if (result.status === 200) {
-                               this.tocNodeCollection = result.data;
-                               return result.data;
-      }
-    });
-  }
-
-  public getDocument(path: string): angular.IPromise<{basePath: string, document: string}> {
-    if (this.documents[path] != null) {
-      return this.$q.resolve(this.documents[path]);
-    }
-
-   return this.$http({
-      method: "GET",
-      url: `${this.env.getBaseURL('MD_SAL')}/help/${path}`
-    }).then((result: angular.IHttpResponse<string>) => {
-      if (result.status === 200) {
-        return this.documents[path] = {
-          basePath: result.config && result.config.url && result.config.url,
-          document: result.data
-        };
-      }
-    });
-
-  } 
-}
-
-help.service('helpService', ['$q', '$http', 'ENV',  Helpservice]);
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.tpl.html
deleted file mode 100644 (file)
index 6c2970c..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-<ht-header help-link='sdnr/0.4.0/README.md'></ht-header>
-
-<div class="app-help">
-
-       <div class="toc col-sm-12 col-md-2">
-               <tree root-node= "vm.toc" >
-                       <a href="{{rootNode.href}}" >{{ rootNode.label }}</a>
-               </tree>
-       </div>
-
-       <div markdown-it="vm.content" class="help  col-sm-12 col-md-10" ></div>
-
-</div>
-<hr class="col-sm-12"/>
-<div class="owl col-sm-12">
-       <span class="white">ONAP SDN-R | ONF Wireless - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.tree.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.tree.html
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.tree.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.tree.ts
deleted file mode 100644 (file)
index 3d14280..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-import * as angular from 'angularAMD';
-
-export interface Node {
-  label?: string,
-  nodes?: Node[],
-  versions?: {
-    [version: string]: { 
-      label: string,
-      date: string,
-      path: string
-    }
-  } 
-}
-
-const help = angular.module('app.help');
-
-// class HelpTreeController implements ng.IController {
-//   constructor(private $scope: ng.IScope & { rootNode: Node, data: Node[]}) {
-//     $scope.$watch("rootNode", (n, o) => {
-//       $scope.data = Object.keys($scope.rootNode).map(key => $scope.rootNode[key]);
-//     });
-//   }
-// }
-
-// help.controller("treeCtrl", ["$scope", HelpTreeController]);
-
-const helpTree = function ($compile) {
-  return {
-    restrict: "E",
-    transclude: true,
-    scope: { rootNode: '=' },
-    //controller: 'treeCtrl',
-    template:
-      '<ul>' +
-      '<li ng-transclude></li>' +
-      '<li ng-repeat="child in rootNode.nodes">' +
-      '<tree root-node="child"><div ng-transclude></div></tree>' +
-      '</li>' +
-      '</ul>',
-    compile: function (tElement, tAttr, transclude) {
-      var contents = tElement.contents().remove();
-      var compiledContents;
-      return function (scope, iElement, iAttr) {
-        if (!compiledContents) {
-          compiledContents = $compile(contents, transclude);
-        }
-        compiledContents(scope, function (clone, scope) {
-          iElement.append(clone);
-        });
-      };
-    }
-  };
-};
-
-help.directive("tree", ["$compile", helpTree]);
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.utilities.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/help.utilities.ts
deleted file mode 100644 (file)
index ec34b62..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-export var resolvePath = function (...paths: string[]): string {
-  console.log(paths);
-  function resolve(pathA, pathB) {
-    //  ‘a’     => ['a']
-    //  'a/b'   => ['a', 'b']
-    //  '/a/b'  => ['', 'a', 'b']
-    //  '/a/b/' => ['', 'a', 'b', '']
-    pathB = pathB.split('/');
-    if (pathB[0] === '') {
-      return pathB.join('/');
-    }
-    pathA = pathA.split('/');
-    var aLastIndex = pathA.length - 1;
-    if (pathA[aLastIndex] !== '') {
-      pathA[aLastIndex] = '';
-    }
-
-    var part;
-    var i = 0;
-    while (typeof (part = pathB[i]) === 'string') {
-      switch (part) {
-        case '..':
-          pathA.pop();
-          pathA.pop();
-          pathA.push('');
-          break;
-        case '.':
-          pathA.pop();
-          pathA.push('');
-          break;
-        default:
-          pathA.pop();
-          pathA.push(part);
-          pathA.push('');
-          break;
-      }
-      i++;
-    }
-    if (pathB[pathB.length - 1] !== '') pathA.pop(); 
-    return pathA.join('/');
-  }
-
-  var i = 0;
-  var path;
-  var r = location.pathname;
-
-  const urlRegex = /^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i;
-  const multiSlashReg = /\/\/+/g;
-
-  while (typeof (path = paths[i]) === 'string') {
-    // debugger;
-    const matches = path && path.match(urlRegex);
-    if (matches || !i) {
-      r = path;
-    } else {
-      path = path.replace(multiSlashReg, '/');
-      r = resolve(r, path);
-    }
-    i++;
-  }
-
-  return r;
-};
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/images/help.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/images/help.png
deleted file mode 100755 (executable)
index 5ca1f1c..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/images/help.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/lib/marked.d.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/lib/marked.d.ts
deleted file mode 100644 (file)
index 74a11ae..0000000
+++ /dev/null
@@ -1,284 +0,0 @@
-// Type definitions for Marked 0.3
-// Project: https://github.com/chjj/marked
-// Definitions by: William Orr <https://github.com/worr>
-//                 BendingBender <https://github.com/BendingBender>
-// Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped
-
-declare var marked : marked.markedStatic;
-
-export as namespace marked;
-
-export = marked;
-
-declare namespace marked {
-    /**
-     * Compiles markdown to HTML.
-     *
-     * @param src String of markdown source to be compiled
-     * @param callback Function called when the markdownString has been fully parsed when using async highlighting
-     * @return String of compiled HTML
-     */
-    function markedStatic(src: string, callback: (error: any | undefined, parseResult: string) => void): string;
-
-    /**
-     * Compiles markdown to HTML.
-     *
-     * @param src String of markdown source to be compiled
-     * @param options Hash of options
-     * @param callback Function called when the markdownString has been fully parsed when using async highlighting
-     * @return String of compiled HTML
-     */
-    function markedStatic(src: string, options?: marked.MarkedOptions, callback?: (error: any | undefined, parseResult: string) => void): string;
-
-    /**
-     * @param src String of markdown source to be compiled
-     * @param options Hash of options
-     */
-    function lexer(src: string, options?: MarkedOptions): TokensList;
-
-    /**
-     * Compiles markdown to HTML.
-     *
-     * @param src String of markdown source to be compiled
-     * @param callback Function called when the markdownString has been fully parsed when using async highlighting
-     * @return String of compiled HTML
-     */
-    function parse(src: string, callback: (error: any | undefined, parseResult: string) => void): string;
-
-    /**
-     * Compiles markdown to HTML.
-     *
-     * @param src String of markdown source to be compiled
-     * @param options Hash of options
-     * @param callback Function called when the markdownString has been fully parsed when using async highlighting
-     * @return String of compiled HTML
-     */
-    function parse(src: string, options?: MarkedOptions, callback?: (error: any | undefined, parseResult: string) => void): string;
-
-    /**
-     * @param src Tokenized source as array of tokens
-     * @param options Hash of options
-     */
-    function parser(src: TokensList, options?: MarkedOptions): string;
-
-    /**
-     * Sets the default options.
-     *
-     * @param options Hash of options
-     */
-    function setOptions(options: MarkedOptions): typeof marked;
-
-    class Renderer {
-        constructor(options?: MarkedOptions);
-        code(code: string, language: string, isEscaped: boolean): string;
-        blockquote(quote: string): string;
-        html(html: string): string;
-        heading(text: string, level: number, raw: string): string;
-        hr(): string;
-        list(body: string, ordered: boolean): string;
-        listitem(text: string): string;
-        paragraph(text: string): string;
-        table(header: string, body: string): string;
-        tablerow(content: string): string;
-        tablecell(content: string, flags: {
-            header: boolean;
-            align: 'center' | 'left' | 'right' | null;
-        }): string;
-        strong(text: string): string;
-        em(text: string): string;
-        codespan(code: string): string;
-        br(): string;
-        del(text: string): string;
-        link(href: string, title: string, text: string): string;
-        image(href: string, title: string, text: string): string;
-        text(text: string): string;
-    }
-
-    class Lexer {
-        rules: Rules;
-        tokens: TokensList;
-        constructor(options?: MarkedOptions);
-        lex(src: string): TokensList;
-    }
-
-    interface Rules {
-        [ruleName: string]: RegExp | Rules;
-    }
-
-    type TokensList = Token[] & {
-        links: {
-            [key: string]: { href: string; title: string; }
-        }
-    };
-
-    type Token =
-        Tokens.Space
-        | Tokens.Code
-        | Tokens.Heading
-        | Tokens.Table
-        | Tokens.Hr
-        | Tokens.BlockquoteStart
-        | Tokens.BlockquoteEnd
-        | Tokens.ListStart
-        | Tokens.LooseItemStart
-        | Tokens.ListItemStart
-        | Tokens.ListItemEnd
-        | Tokens.ListEnd
-        | Tokens.Paragraph
-        | Tokens.HTML
-        | Tokens.Text;
-
-    namespace Tokens {
-        interface Space {
-            type: 'space';
-        }
-
-        interface Code {
-            type: 'code';
-            lang?: string;
-            text: string;
-        }
-
-        interface Heading {
-            type: 'heading';
-            depth: number;
-            text: string;
-        }
-
-        interface Table {
-            type: 'table';
-            header: string[];
-            align: Array<'center' | 'left' | 'right' | null>;
-            cells: string[][];
-        }
-
-        interface Hr {
-            type: 'hr';
-        }
-
-        interface BlockquoteStart {
-            type: 'blockquote_start';
-        }
-
-        interface BlockquoteEnd {
-            type: 'blockquote_end';
-        }
-
-        interface ListStart {
-            type: 'list_start';
-            ordered: boolean;
-        }
-
-        interface LooseItemStart {
-            type: 'loose_item_start';
-        }
-
-        interface ListItemStart {
-            type: 'list_item_start';
-        }
-
-        interface ListItemEnd {
-            type: 'list_item_end';
-        }
-
-        interface ListEnd {
-            type: 'list_end';
-        }
-
-        interface Paragraph {
-            type: 'paragraph';
-            pre?: boolean;
-            text: string;
-        }
-
-        interface HTML {
-            type: 'html';
-            pre: boolean;
-            text: string;
-        }
-
-        interface Text {
-            type: 'text';
-            text: string;
-        }
-    }
-
-    interface MarkedOptions {
-        /**
-         * Type: object Default: new Renderer()
-         *
-         * An object containing functions to render tokens to HTML.
-         */
-        renderer?: Renderer;
-
-        /**
-         * Enable GitHub flavored markdown.
-         */
-        gfm?: boolean;
-
-        /**
-         * Enable GFM tables. This option requires the gfm option to be true.
-         */
-        tables?: boolean;
-
-        /**
-         * Enable GFM line breaks. This option requires the gfm option to be true.
-         */
-        breaks?: boolean;
-
-        /**
-         * Conform to obscure parts of markdown.pl as much as possible. Don't fix any of the original markdown bugs or poor behavior.
-         */
-        pedantic?: boolean;
-
-        /**
-         * Sanitize the output. Ignore any HTML that has been input.
-         */
-        sanitize?: boolean;
-
-        /**
-         * Optionally sanitize found HTML with a sanitizer function.
-         */
-        sanitizer?(html: string): string;
-
-        /**
-         * Mangle autolinks (<email@domain.com>).
-         */
-        mangle?: boolean;
-
-        /**
-         * Use smarter list behavior than the original markdown. May eventually be default with the old behavior moved into pedantic.
-         */
-        smartLists?: boolean;
-
-        /**
-         * Shows an HTML error message when rendering fails.
-         */
-        silent?: boolean;
-
-        /**
-         * A function to highlight code blocks. The function takes three arguments: code, lang, and callback.
-         */
-        highlight?(code: string, lang: string, callback?: (error: any | undefined, code: string) => void): string;
-
-        /**
-         * Set the prefix for code block classes.
-         */
-        langPrefix?: string;
-
-        /**
-         * Use "smart" typograhic punctuation for things like quotes and dashes.
-         */
-        smartypants?: boolean;
-
-        /**
-         * Set the prefix for header tag ids.
-         */
-        headerPrefix?: string;
-
-        /**
-         * Generate closing slash for self-closing tags (<br/> instead of <br>)
-         */
-        xhtml?: boolean;
-    }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/lib/marked.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/help-module/src/main/resources/help/lib/marked.js
deleted file mode 100644 (file)
index 04386a6..0000000
+++ /dev/null
@@ -1,1320 +0,0 @@
-/**
- * marked - a markdown parser
- * Copyright (c) 2011-2014, Christopher Jeffrey. (MIT Licensed)
- * https://github.com/chjj/marked
- */
-
-; (function () {
-  'use strict';
-
-  /**
-   * Block-Level Grammar
-   */
-
-  var block = {
-    newline: /^\n+/,
-    code: /^( {4}[^\n]+\n*)+/,
-    fences: noop,
-    hr: /^( *[-*_]){3,} *(?:\n+|$)/,
-    heading: /^ *(#{1,6}) *([^\n]+?) *#* *(?:\n+|$)/,
-    nptable: noop,
-    lheading: /^([^\n]+)\n *(=|-){2,} *(?:\n+|$)/,
-    blockquote: /^( *>[^\n]+(\n(?!def)[^\n]+)*\n*)+/,
-    list: /^( *)(bull) [\s\S]+?(?:hr|def|\n{2,}(?! )(?!\1bull )\n*|\s*$)/,
-    html: /^ *(?:comment *(?:\n|\s*$)|closed *(?:\n{2,}|\s*$)|closing *(?:\n{2,}|\s*$))/,
-    def: /^ *\[([^\]]+)\]: *<?([^\s>]+)>?(?: +["(]([^\n]+)[")])? *(?:\n+|$)/,
-    table: noop,
-    paragraph: /^((?:[^\n]+\n?(?!hr|heading|lheading|blockquote|tag|def))+)\n*/,
-    text: /^[^\n]+/
-  };
-
-  block.bullet = /(?:[*+-]|\d+\.)/;
-  block.item = /^( *)(bull) [^\n]*(?:\n(?!\1bull )[^\n]*)*/;
-  block.item = replace(block.item, 'gm')
-    (/bull/g, block.bullet)
-    ();
-
-  block.list = replace(block.list)
-    (/bull/g, block.bullet)
-    ('hr', '\\n+(?=\\1?(?:[-*_] *){3,}(?:\\n+|$))')
-    ('def', '\\n+(?=' + block.def.source + ')')
-    ();
-
-  block.blockquote = replace(block.blockquote)
-    ('def', block.def)
-    ();
-
-  block._tag = '(?!(?:'
-    + 'a|em|strong|small|s|cite|q|dfn|abbr|data|time|code'
-    + '|var|samp|kbd|sub|sup|i|b|u|mark|ruby|rt|rp|bdi|bdo'
-    + '|span|br|wbr|ins|del|img)\\b)\\w+(?!:/|[^\\w\\s@]*@)\\b';
-
-  block.html = replace(block.html)
-    ('comment', /<!--[\s\S]*?-->/)
-    ('closed', /<(tag)[\s\S]+?<\/\1>/)
-    ('closing', /<tag(?:"[^"]*"|'[^']*'|[^'">])*?>/)
-    (/tag/g, block._tag)
-    ();
-
-  block.paragraph = replace(block.paragraph)
-    ('hr', block.hr)
-    ('heading', block.heading)
-    ('lheading', block.lheading)
-    ('blockquote', block.blockquote)
-    ('tag', '<' + block._tag)
-    ('def', block.def)
-    ();
-
-  /**
-   * Normal Block Grammar
-   */
-
-  block.normal = merge({}, block);
-
-  /**
-   * GFM Block Grammar
-   */
-
-  block.gfm = merge({}, block.normal, {
-    fences: /^ *(`{3,}|~{3,})[ \.]*(\S+)? *\n([\s\S]*?)\s*\1 *(?:\n+|$)/,
-    paragraph: /^/,
-    heading: /^ *(#{1,6}) +([^\n]+?) *#* *(?:\n+|$)/
-  });
-
-  block.gfm.paragraph = replace(block.paragraph)
-    ('(?!', '(?!'
-    + block.gfm.fences.source.replace('\\1', '\\2') + '|'
-    + block.list.source.replace('\\1', '\\3') + '|')
-    ();
-
-  /**
-   * GFM + Tables Block Grammar
-   */
-
-  block.tables = merge({}, block.gfm, {
-    nptable: /^ *(\S.*\|.*)\n *([-:]+ *\|[-| :]*)\n((?:.*\|.*(?:\n|$))*)\n*/,
-    table: /^ *\|(.+)\n *\|( *[-:]+[-| :]*)\n((?: *\|.*(?:\n|$))*)\n*/
-  });
-
-  /**
-   * Block Lexer
-   */
-
-  function Lexer(options) {
-    this.tokens = [];
-    this.tokens.links = {};
-    this.options = options || marked.defaults;
-    this.rules = block.normal;
-
-    if (this.options.gfm) {
-      if (this.options.tables) {
-        this.rules = block.tables;
-      } else {
-        this.rules = block.gfm;
-      }
-    }
-  }
-
-  /**
-   * Expose Block Rules
-   */
-
-  Lexer.rules = block;
-
-  /**
-   * Static Lex Method
-   */
-
-  Lexer.lex = function (src, options) {
-    var lexer = new Lexer(options);
-    return lexer.lex(src);
-  };
-
-  /**
-   * Preprocessing
-   */
-
-  Lexer.prototype.lex = function (src) {
-    src = src
-      .replace(/\r\n|\r/g, '\n')
-      .replace(/\t/g, '    ')
-      .replace(/\u00a0/g, ' ')
-      .replace(/\u2424/g, '\n');
-
-    return this.token(src, true);
-  };
-
-  /**
-   * Lexing
-   */
-
-  Lexer.prototype.token = function (src, top, bq) {
-    var src = src.replace(/^ +$/gm, '')
-      , next
-      , loose
-      , cap
-      , bull
-      , b
-      , item
-      , space
-      , i
-      , l;
-
-    while (src) {
-      // newline
-      if (cap = this.rules.newline.exec(src)) {
-        src = src.substring(cap[0].length);
-        if (cap[0].length > 1) {
-          this.tokens.push({
-            type: 'space'
-          });
-        }
-      }
-
-      // code
-      if (cap = this.rules.code.exec(src)) {
-        src = src.substring(cap[0].length);
-        cap = cap[0].replace(/^ {4}/gm, '');
-        this.tokens.push({
-          type: 'code',
-          text: !this.options.pedantic
-            ? cap.replace(/\n+$/, '')
-            : cap
-        });
-        continue;
-      }
-
-      // fences (gfm)
-      if (cap = this.rules.fences.exec(src)) {
-        src = src.substring(cap[0].length);
-        this.tokens.push({
-          type: 'code',
-          lang: cap[2],
-          text: cap[3] || ''
-        });
-        continue;
-      }
-
-      // heading
-      if (cap = this.rules.heading.exec(src)) {
-        src = src.substring(cap[0].length);
-        this.tokens.push({
-          type: 'heading',
-          depth: cap[1].length,
-          text: cap[2]
-        });
-        continue;
-      }
-
-      // table no leading pipe (gfm)
-      if (top && (cap = this.rules.nptable.exec(src))) {
-        src = src.substring(cap[0].length);
-
-        item = {
-          type: 'table',
-          header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
-          align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
-          cells: cap[3].replace(/\n$/, '').split('\n')
-        };
-
-        for (i = 0; i < item.align.length; i++) {
-          if (/^ *-+: *$/.test(item.align[i])) {
-            item.align[i] = 'right';
-          } else if (/^ *:-+: *$/.test(item.align[i])) {
-            item.align[i] = 'center';
-          } else if (/^ *:-+ *$/.test(item.align[i])) {
-            item.align[i] = 'left';
-          } else {
-            item.align[i] = null;
-          }
-        }
-
-        for (i = 0; i < item.cells.length; i++) {
-          item.cells[i] = item.cells[i].split(/ *\| */);
-        }
-
-        this.tokens.push(item);
-
-        continue;
-      }
-
-      // lheading
-      if (cap = this.rules.lheading.exec(src)) {
-        src = src.substring(cap[0].length);
-        this.tokens.push({
-          type: 'heading',
-          depth: cap[2] === '=' ? 1 : 2,
-          text: cap[1]
-        });
-        continue;
-      }
-
-      // hr
-      if (cap = this.rules.hr.exec(src)) {
-        src = src.substring(cap[0].length);
-        this.tokens.push({
-          type: 'hr'
-        });
-        continue;
-      }
-
-      // blockquote
-      if (cap = this.rules.blockquote.exec(src)) {
-        src = src.substring(cap[0].length);
-
-        this.tokens.push({
-          type: 'blockquote_start'
-        });
-
-        cap = cap[0].replace(/^ *> ?/gm, '');
-
-        // Pass `top` to keep the current
-        // "toplevel" state. This is exactly
-        // how markdown.pl works.
-        this.token(cap, top, true);
-
-        this.tokens.push({
-          type: 'blockquote_end'
-        });
-
-        continue;
-      }
-
-      // list
-      if (cap = this.rules.list.exec(src)) {
-        src = src.substring(cap[0].length);
-        bull = cap[2];
-
-        this.tokens.push({
-          type: 'list_start',
-          ordered: bull.length > 1
-        });
-
-        // Get each top-level item.
-        cap = cap[0].match(this.rules.item);
-
-        next = false;
-        l = cap.length;
-        i = 0;
-
-        for (; i < l; i++) {
-          item = cap[i];
-
-          // Remove the list item's bullet
-          // so it is seen as the next token.
-          space = item.length;
-          item = item.replace(/^ *([*+-]|\d+\.) +/, '');
-
-          // Outdent whatever the
-          // list item contains. Hacky.
-          if (~item.indexOf('\n ')) {
-            space -= item.length;
-            item = !this.options.pedantic
-              ? item.replace(new RegExp('^ {1,' + space + '}', 'gm'), '')
-              : item.replace(/^ {1,4}/gm, '');
-          }
-
-          // Determine whether the next list item belongs here.
-          // Backpedal if it does not belong in this list.
-          if (this.options.smartLists && i !== l - 1) {
-            b = block.bullet.exec(cap[i + 1]) [0];
-            if (bull !== b && !(bull.length > 1 && b.length > 1)) {
-              src = cap.slice(i + 1).join('\n') + src;
-              i = l - 1;
-            }
-          }
-
-          // Determine whether item is loose or not.
-          // Use: /(^|\n)(?! )[^\n]+\n\n(?!\s*$)/
-          // for discount behavior.
-          loose = next || /\n\n(?!\s*$)/.test(item);
-          if (i !== l - 1) {
-            next = item.charAt(item.length - 1) === '\n';
-            if (!loose) loose = next;
-          }
-
-          this.tokens.push({
-            type: loose
-              ? 'loose_item_start'
-              : 'list_item_start'
-          });
-
-          // Recurse.
-          this.token(item, false, bq);
-
-          this.tokens.push({
-            type: 'list_item_end'
-          });
-        }
-
-        this.tokens.push({
-          type: 'list_end'
-        });
-
-        continue;
-      }
-
-      // html
-      if (cap = this.rules.html.exec(src)) {
-        src = src.substring(cap[0].length);
-        this.tokens.push({
-          type: this.options.sanitize
-            ? 'paragraph'
-            : 'html',
-          pre: !this.options.sanitizer
-            && (cap[1] === 'pre' || cap[1] === 'script' || cap[1] === 'style'),
-          text: cap[0]
-        });
-        continue;
-      }
-
-      // def
-      if ((!bq && top) && (cap = this.rules.def.exec(src))) {
-        src = src.substring(cap[0].length);
-        this.tokens.links[cap[1].toLowerCase()] = {
-          href: cap[2],
-          title: cap[3]
-        };
-        continue;
-      }
-
-      // table (gfm)
-      if (top && (cap = this.rules.table.exec(src))) {
-        src = src.substring(cap[0].length);
-
-        item = {
-          type: 'table',
-          header: cap[1].replace(/^ *| *\| *$/g, '').split(/ *\| */),
-          align: cap[2].replace(/^ *|\| *$/g, '').split(/ *\| */),
-          cells: cap[3].replace(/(?: *\| *)?\n$/, '').split('\n')
-        };
-
-        for (i = 0; i < item.align.length; i++) {
-          if (/^ *-+: *$/.test(item.align[i])) {
-            item.align[i] = 'right';
-          } else if (/^ *:-+: *$/.test(item.align[i])) {
-            item.align[i] = 'center';
-          } else if (/^ *:-+ *$/.test(item.align[i])) {
-            item.align[i] = 'left';
-          } else {
-            item.align[i] = null;
-          }
-        }
-
-        for (i = 0; i < item.cells.length; i++) {
-          item.cells[i] = item.cells[i]
-            .replace(/^ *\| *| *\| *$/g, '')
-            .split(/ *\| */);
-        }
-
-        this.tokens.push(item);
-
-        continue;
-      }
-
-      // top-level paragraph
-      if (top && (cap = this.rules.paragraph.exec(src))) {
-        src = src.substring(cap[0].length);
-        this.tokens.push({
-          type: 'paragraph',
-          text: cap[1].charAt(cap[1].length - 1) === '\n'
-            ? cap[1].slice(0, -1)
-            : cap[1]
-        });
-        continue;
-      }
-
-      // text
-      if (cap = this.rules.text.exec(src)) {
-        // Top-level should never reach here.
-        src = src.substring(cap[0].length);
-        this.tokens.push({
-          type: 'text',
-          text: cap[0]
-        });
-        continue;
-      }
-
-      if (src) {
-        throw new
-          Error('Infinite loop on byte: ' + src.charCodeAt(0));
-      }
-    }
-
-    return this.tokens;
-  };
-
-  /**
-   * Inline-Level Grammar
-   */
-
-  var inline = {
-    escape: /^\\([\\`*{}\[\]()#+\-.!_>])/,
-    autolink: /^<([^ <>]+(@|:\/)[^ <>]+)>/,
-    url: noop,
-    tag: /^<!--[\s\S]*?-->|^<\/?\w+(?:"[^"]*"|'[^']*'|[^<'">])*?>/,
-    link: /^!?\[(inside)\]\(href\)/,
-    reflink: /^!?\[(inside)\]\s*\[([^\]]*)\]/,
-    nolink: /^!?\[((?:\[[^\]]*\]|[^\[\]])*)\]/,
-    strong: /^__([\s\S]+?)__(?!_)|^\*\*([\s\S]+?)\*\*(?!\*)/,
-    em: /^\b_((?:[^_]|__)+?)_\b|^\*((?:\*\*|[\s\S])+?)\*(?!\*)/,
-    code: /^(`+)([\s\S]*?[^`])\1(?!`)/,
-    br: /^ {2,}\n(?!\s*$)/,
-    del: noop,
-    text: /^[\s\S]+?(?=[\\<!\[_*`]| {2,}\n|$)/
-  };
-
-  inline._inside = /(?:\[[^\]]*\]|\\[\[\]]|[^\[\]]|\](?=[^\[]*\]))*/;
-  inline._href = /\s*<?([\s\S]*?)>?(?:\s+['"]([\s\S]*?)['"])?\s*/;
-
-  inline.link = replace(inline.link)
-    ('inside', inline._inside)
-    ('href', inline._href)
-    ();
-
-  inline.reflink = replace(inline.reflink)
-    ('inside', inline._inside)
-    ();
-
-  /**
-   * Normal Inline Grammar
-   */
-
-  inline.normal = merge({}, inline);
-
-  /**
-   * Pedantic Inline Grammar
-   */
-
-  inline.pedantic = merge({}, inline.normal, {
-    strong: /^__(?=\S)([\s\S]*?\S)__(?!_)|^\*\*(?=\S)([\s\S]*?\S)\*\*(?!\*)/,
-    em: /^_(?=\S)([\s\S]*?\S)_(?!_)|^\*(?=\S)([\s\S]*?\S)\*(?!\*)/
-  });
-
-  /**
-   * GFM Inline Grammar
-   */
-
-  inline.gfm = merge({}, inline.normal, {
-    escape: replace(inline.escape)('])', '~|])')(),
-    url: /^(https?:\/\/[^\s<]+[^<.,:;"')\]\s])/,
-    del: /^~~(?=\S)([\s\S]*?\S)~~/,
-    text: replace(inline.text)
-      (']|', '~]|')
-      ('|', '|https?://|')
-      ()
-  });
-
-  /**
-   * GFM + Line Breaks Inline Grammar
-   */
-
-  inline.breaks = merge({}, inline.gfm, {
-    br: replace(inline.br)('{2,}', '*')(),
-    text: replace(inline.gfm.text)('{2,}', '*')()
-  });
-
-  /**
-   * Inline Lexer & Compiler
-   */
-
-  function InlineLexer(links, options) {
-    this.options = options || marked.defaults;
-    this.links = links;
-    this.rules = inline.normal;
-    this.renderer = this.options.renderer || new Renderer;
-    this.renderer.options = this.options;
-
-    if (!this.links) {
-      throw new
-        Error('Tokens array requires a `links` property.');
-    }
-
-    if (this.options.gfm) {
-      if (this.options.breaks) {
-        this.rules = inline.breaks;
-      } else {
-        this.rules = inline.gfm;
-      }
-    } else if (this.options.pedantic) {
-      this.rules = inline.pedantic;
-    }
-  }
-
-  /**
-   * Expose Inline Rules
-   */
-
-  InlineLexer.rules = inline;
-
-  /**
-   * Static Lexing/Compiling Method
-   */
-
-  InlineLexer.output = function (src, links, options) {
-    var inline = new InlineLexer(links, options);
-    return inline.output(src);
-  };
-
-  /**
-   * Lexing/Compiling
-   */
-
-  InlineLexer.prototype.output = function (src) {
-    var out = ''
-      , link
-      , text
-      , href
-      , cap;
-
-    while (src) {
-      // escape
-      if (cap = this.rules.escape.exec(src)) {
-        src = src.substring(cap[0].length);
-        out += cap[1];
-        continue;
-      }
-
-      // autolink
-      if (cap = this.rules.autolink.exec(src)) {
-        src = src.substring(cap[0].length);
-        if (cap[2] === '@') {
-          text = escape(
-            cap[1].charAt(6) === ':'
-              ? this.mangle(cap[1].substring(7))
-              : this.mangle(cap[1])
-          );
-          href = this.mangle('mailto:') + text;
-        } else {
-          text = escape(cap[1]);
-          href = text;
-        }
-        out += this.renderer.link(href, null, text);
-        continue;
-      }
-
-      // url (gfm)
-      if (!this.inLink && (cap = this.rules.url.exec(src))) {
-        src = src.substring(cap[0].length);
-        text = escape(cap[1]);
-        href = text;
-        out += this.renderer.link(href, null, text);
-        continue;
-      }
-
-      // tag
-      if (cap = this.rules.tag.exec(src)) {
-        if (!this.inLink && /^<a /i.test(cap[0])) {
-          this.inLink = true;
-        } else if (this.inLink && /^<\/a>/i.test(cap[0])) {
-          this.inLink = false;
-        }
-        src = src.substring(cap[0].length);
-        out += this.options.sanitize
-          ? this.options.sanitizer
-            ? this.options.sanitizer(cap[0])
-            : escape(cap[0])
-          : cap[0]
-        continue;
-      }
-
-      // link
-      if (cap = this.rules.link.exec(src)) {
-        src = src.substring(cap[0].length);
-        this.inLink = true;
-        out += this.outputLink(cap, {
-          href: cap[2],
-          title: cap[3]
-        });
-        this.inLink = false;
-        continue;
-      }
-
-      // reflink, nolink
-      if ((cap = this.rules.reflink.exec(src))
-        || (cap = this.rules.nolink.exec(src))) {
-        src = src.substring(cap[0].length);
-        link = (cap[2] || cap[1]).replace(/\s+/g, ' ');
-        link = this.links[link.toLowerCase()];
-        if (!link || !link.href) {
-          out += cap[0].charAt(0);
-          src = cap[0].substring(1) + src;
-          continue;
-        }
-        this.inLink = true;
-        out += this.outputLink(cap, link);
-        this.inLink = false;
-        continue;
-      }
-
-      // strong
-      if (cap = this.rules.strong.exec(src)) {
-        src = src.substring(cap[0].length);
-        out += this.renderer.strong(this.output(cap[2] || cap[1]));
-        continue;
-      }
-
-      // em
-      if (cap = this.rules.em.exec(src)) {
-        src = src.substring(cap[0].length);
-        out += this.renderer.em(this.output(cap[2] || cap[1]));
-        continue;
-      }
-
-      // code
-      if (cap = this.rules.code.exec(src)) {
-        src = src.substring(cap[0].length);
-        out += this.renderer.codespan(escape(cap[2].trim(), true));
-        continue;
-      }
-
-      // br
-      if (cap = this.rules.br.exec(src)) {
-        src = src.substring(cap[0].length);
-        out += this.renderer.br();
-        continue;
-      }
-
-      // del (gfm)
-      if (cap = this.rules.del.exec(src)) {
-        src = src.substring(cap[0].length);
-        out += this.renderer.del(this.output(cap[1]));
-        continue;
-      }
-
-      // text
-      if (cap = this.rules.text.exec(src)) {
-        src = src.substring(cap[0].length);
-        out += this.renderer.text(escape(this.smartypants(cap[0])));
-        continue;
-      }
-
-      if (src) {
-        throw new
-          Error('Infinite loop on byte: ' + src.charCodeAt(0));
-      }
-    }
-
-    return out;
-  };
-
-  /**
-   * Compile Link
-   */
-
-  InlineLexer.prototype.outputLink = function (cap, link) {
-    var href = escape(link.href)
-      , title = link.title ? escape(link.title) : null;
-
-    return cap[0].charAt(0) !== '!'
-      ? this.renderer.link(href, title, this.output(cap[1]))
-      : this.renderer.image(href, title, escape(cap[1]));
-  };
-
-  /**
-   * Smartypants Transformations
-   */
-
-  InlineLexer.prototype.smartypants = function (text) {
-    if (!this.options.smartypants) return text;
-    return text
-      // em-dashes
-      .replace(/---/g, '\u2014')
-      // en-dashes
-      .replace(/--/g, '\u2013')
-      // opening singles
-      .replace(/(^|[-\u2014/(\[{"\s])'/g, '$1\u2018')
-      // closing singles & apostrophes
-      .replace(/'/g, '\u2019')
-      // opening doubles
-      .replace(/(^|[-\u2014/(\[{\u2018\s])"/g, '$1\u201c')
-      // closing doubles
-      .replace(/"/g, '\u201d')
-      // ellipses
-      .replace(/\.{3}/g, '\u2026');
-  };
-
-  /**
-   * Mangle Links
-   */
-
-  InlineLexer.prototype.mangle = function (text) {
-    if (!this.options.mangle) return text;
-    var out = ''
-      , l = text.length
-      , i = 0
-      , ch;
-
-    for (; i < l; i++) {
-      ch = text.charCodeAt(i);
-      if (Math.random() > 0.5) {
-        ch = 'x' + ch.toString(16);
-      }
-      out += '&#' + ch + ';';
-    }
-
-    return out;
-  };
-
-  /**
-   * Renderer
-   */
-
-  function Renderer(options) {
-    this.options = options || {};
-  }
-
-  Renderer.prototype.code = function (code, lang, escaped) {
-    if (this.options.highlight) {
-      var out = this.options.highlight(code, lang);
-      if (out != null && out !== code) {
-        escaped = true;
-        code = out;
-      }
-    }
-
-    if (!lang) {
-      return '<pre><code>'
-        + (escaped ? code : escape(code, true))
-        + '\n</code></pre>';
-    }
-
-    return '<pre><code class="'
-      + this.options.langPrefix
-      + escape(lang, true)
-      + '">'
-      + (escaped ? code : escape(code, true))
-      + '\n</code></pre>\n';
-  };
-
-  Renderer.prototype.blockquote = function (quote) {
-    return '<blockquote>\n' + quote + '</blockquote>\n';
-  };
-
-  Renderer.prototype.html = function (html) {
-    return html;
-  };
-
-  Renderer.prototype.heading = function (text, level, raw) {
-    return '<h'
-      + level
-      + ' id="'
-      + this.options.headerPrefix
-      + raw.toLowerCase().replace(/[^\w]+/g, '-')
-      + '">'
-      + text
-      + '</h'
-      + level
-      + '>\n';
-  };
-
-  Renderer.prototype.hr = function () {
-    return this.options.xhtml ? '<hr/>\n' : '<hr>\n';
-  };
-
-  Renderer.prototype.list = function (body, ordered) {
-    var type = ordered ? 'ol' : 'ul';
-    return '<' + type + '>\n' + body + '</' + type + '>\n';
-  };
-
-  Renderer.prototype.listitem = function (text) {
-    return '<li>' + text + '</li>\n';
-  };
-
-  Renderer.prototype.paragraph = function (text) {
-    return '<p>' + text + '</p>\n';
-  };
-
-  Renderer.prototype.table = function (header, body) {
-    return '<table>\n'
-      + '<thead>\n'
-      + header
-      + '</thead>\n'
-      + '<tbody>\n'
-      + body
-      + '</tbody>\n'
-      + '</table>\n';
-  };
-
-  Renderer.prototype.tablerow = function (content) {
-    return '<tr>\n' + content + '</tr>\n';
-  };
-
-  Renderer.prototype.tablecell = function (content, flags) {
-    var type = flags.header ? 'th' : 'td';
-    var tag = flags.align
-      ? '<' + type + ' style="text-align:' + flags.align + '">'
-      : '<' + type + '>';
-    return tag + content + '</' + type + '>\n';
-  };
-
-  // span level renderer
-  Renderer.prototype.strong = function (text) {
-    return '<strong>' + text + '</strong>';
-  };
-
-  Renderer.prototype.em = function (text) {
-    return '<em>' + text + '</em>';
-  };
-
-  Renderer.prototype.codespan = function (text) {
-    return '<code>' + text + '</code>';
-  };
-
-  Renderer.prototype.br = function () {
-    return this.options.xhtml ? '<br/>' : '<br>';
-  };
-
-  Renderer.prototype.del = function (text) {
-    return '<del>' + text + '</del>';
-  };
-
-  Renderer.prototype.link = function (href, title, text) {
-    if (this.options.sanitize) {
-      try {
-        var prot = decodeURIComponent(unescape(href))
-          .replace(/[^\w:]/g, '')
-          .toLowerCase();
-      } catch (e) {
-        return text;
-      }
-      if (prot.indexOf('javascript:') === 0 || prot.indexOf('vbscript:') === 0 || prot.indexOf('data:') === 0) {
-        return text;
-      }
-    }
-    if (this.options.baseUrl && !originIndependentUrl.test(href)) {
-      href = resolveUrl(this.options.baseUrl, href);
-    }
-    var out = '<a href="' + href + '"';
-    if (title) {
-      out += ' title="' + title + '"';
-    }
-    out += '>' + text + '</a>';
-    return out;
-  };
-
-  Renderer.prototype.image = function (href, title, text) {
-    if (this.options.baseUrl && !originIndependentUrl.test(href)) {
-      href = resolveUrl(this.options.baseUrl, href);
-    }
-    var out = '<img src="' + href + '" alt="' + text + '"';
-    if (title) {
-      out += ' title="' + title + '"';
-    }
-    out += this.options.xhtml ? '/>' : '>';
-    return out;
-  };
-
-  Renderer.prototype.text = function (text) {
-    return text;
-  };
-
-  /**
-   * Parsing & Compiling
-   */
-
-  function Parser(options) {
-    this.tokens = [];
-    this.token = null;
-    this.options = options || marked.defaults;
-    this.options.renderer = this.options.renderer || new Renderer;
-    this.renderer = this.options.renderer;
-    this.renderer.options = this.options;
-  }
-
-  /**
-   * Static Parse Method
-   */
-
-  Parser.parse = function (src, options, renderer) {
-    var parser = new Parser(options, renderer);
-    return parser.parse(src);
-  };
-
-  /**
-   * Parse Loop
-   */
-
-  Parser.prototype.parse = function (src) {
-    this.inline = new InlineLexer(src.links, this.options, this.renderer);
-    this.tokens = src.reverse();
-
-    var out = '';
-    while (this.next()) {
-      out += this.tok();
-    }
-
-    return out;
-  };
-
-  /**
-   * Next Token
-   */
-
-  Parser.prototype.next = function () {
-    return this.token = this.tokens.pop();
-  };
-
-  /**
-   * Preview Next Token
-   */
-
-  Parser.prototype.peek = function () {
-    return this.tokens[this.tokens.length - 1] || 0;
-  };
-
-  /**
-   * Parse Text Tokens
-   */
-
-  Parser.prototype.parseText = function () {
-    var body = this.token.text;
-
-    while (this.peek().type === 'text') {
-      body += '\n' + this.next().text;
-    }
-
-    return this.inline.output(body);
-  };
-
-  /**
-   * Parse Current Token
-   */
-
-  Parser.prototype.tok = function () {
-    switch (this.token.type) {
-      case 'space': {
-        return '';
-      }
-      case 'hr': {
-        return this.renderer.hr();
-      }
-      case 'heading': {
-        return this.renderer.heading(
-          this.inline.output(this.token.text),
-          this.token.depth,
-          this.token.text);
-      }
-      case 'code': {
-        return this.renderer.code(this.token.text,
-          this.token.lang,
-          this.token.escaped);
-      }
-      case 'table': {
-        var header = ''
-          , body = ''
-          , i
-          , row
-          , cell
-          , flags
-          , j;
-
-        // header
-        cell = '';
-        for (i = 0; i < this.token.header.length; i++) {
-          flags = { header: true, align: this.token.align[i] };
-          cell += this.renderer.tablecell(
-            this.inline.output(this.token.header[i]),
-            { header: true, align: this.token.align[i] }
-          );
-        }
-        header += this.renderer.tablerow(cell);
-
-        for (i = 0; i < this.token.cells.length; i++) {
-          row = this.token.cells[i];
-
-          cell = '';
-          for (j = 0; j < row.length; j++) {
-            cell += this.renderer.tablecell(
-              this.inline.output(row[j]),
-              { header: false, align: this.token.align[j] }
-            );
-          }
-
-          body += this.renderer.tablerow(cell);
-        }
-        return this.renderer.table(header, body);
-      }
-      case 'blockquote_start': {
-        var body = '';
-
-        while (this.next().type !== 'blockquote_end') {
-          body += this.tok();
-        }
-
-        return this.renderer.blockquote(body);
-      }
-      case 'list_start': {
-        var body = ''
-          , ordered = this.token.ordered;
-
-        while (this.next().type !== 'list_end') {
-          body += this.tok();
-        }
-
-        return this.renderer.list(body, ordered);
-      }
-      case 'list_item_start': {
-        var body = '';
-
-        while (this.next().type !== 'list_item_end') {
-          body += this.token.type === 'text'
-            ? this.parseText()
-            : this.tok();
-        }
-
-        return this.renderer.listitem(body);
-      }
-      case 'loose_item_start': {
-        var body = '';
-
-        while (this.next().type !== 'list_item_end') {
-          body += this.tok();
-        }
-
-        return this.renderer.listitem(body);
-      }
-      case 'html': {
-        var html = !this.token.pre && !this.options.pedantic
-          ? this.inline.output(this.token.text)
-          : this.token.text;
-        return this.renderer.html(html);
-      }
-      case 'paragraph': {
-        return this.renderer.paragraph(this.inline.output(this.token.text));
-      }
-      case 'text': {
-        return this.renderer.paragraph(this.parseText());
-      }
-    }
-  };
-
-  /**
-   * Helpers
-   */
-
-  function escape(html, encode) {
-    return html
-      .replace(!encode ? /&(?!#?\w+;)/g : /&/g, '&amp;')
-      .replace(/</g, '&lt;')
-      .replace(/>/g, '&gt;')
-      .replace(/"/g, '&quot;')
-      .replace(/'/g, '&#39;');
-  }
-
-  function unescape(html) {
-    // explicitly match decimal, hex, and named HTML entities
-    return html.replace(/&(#(?:\d+)|(?:#x[0-9A-Fa-f]+)|(?:\w+));?/ig, function (_, n) {
-      n = n.toLowerCase();
-      if (n === 'colon') return ':';
-      if (n.charAt(0) === '#') {
-        return n.charAt(1) === 'x'
-          ? String.fromCharCode(parseInt(n.substring(2), 16))
-          : String.fromCharCode(+n.substring(1));
-      }
-      return '';
-    });
-  }
-
-  function replace(regex, opt) {
-    regex = regex.source;
-    opt = opt || '';
-    return function self(name, val) {
-      if (!name) return new RegExp(regex, opt);
-      val = val.source || val;
-      val = val.replace(/(^|[^\[])\^/g, '$1');
-      regex = regex.replace(name, val);
-      return self;
-    };
-  }
-
-  function resolveUrl(base, href) {
-    if (!baseUrls[' ' + base]) {
-      // we can ignore everything in base after the last slash of its path component,
-      // but we might need to add _that_
-      // https://tools.ietf.org/html/rfc3986#section-3
-      if (/^[^:]+:\/*[^/]*$/.test(base)) {
-        baseUrls[' ' + base] = base + '/';
-      } else {
-        baseUrls[' ' + base] = base.replace(/[^/]*$/, '');
-      }
-    }
-    base = baseUrls[' ' + base];
-
-    if (href.slice(0, 2) === '//') {
-      return base.replace(/:[\s\S]*/, ':') + href;
-    } else if (href.charAt(0) === '/') {
-      return base.replace(/(:\/*[^/]*)[\s\S]*/, '$1') + href;
-    } else {
-      return base + href;
-    }
-  }
-  var baseUrls = {};
-  var originIndependentUrl = /^$|^[a-z][a-z0-9+.-]*:|^[?#]/i;
-
-  function noop() { }
-  noop.exec = noop;
-
-  function merge(obj) {
-    var i = 1
-      , target
-      , key;
-
-    for (; i < arguments.length; i++) {
-      target = arguments[i];
-      for (key in target) {
-        if (Object.prototype.hasOwnProperty.call(target, key)) {
-          obj[key] = target[key];
-        }
-      }
-    }
-
-    return obj;
-  }
-
-
-  /**
-   * Marked
-   */
-
-  function marked(src, opt, callback) {
-    if (callback || typeof opt === 'function') {
-      if (!callback) {
-        callback = opt;
-        opt = null;
-      }
-
-      opt = merge({}, marked.defaults, opt || {});
-
-      var highlight = opt.highlight
-        , tokens
-        , pending
-        , i = 0;
-
-      try {
-        tokens = Lexer.lex(src, opt)
-      } catch (e) {
-        return callback(e);
-      }
-
-      pending = tokens.length;
-
-      var done = function (err) {
-        if (err) {
-          opt.highlight = highlight;
-          return callback(err);
-        }
-
-        var out;
-
-        try {
-          out = Parser.parse(tokens, opt);
-        } catch (e) {
-          err = e;
-        }
-
-        opt.highlight = highlight;
-
-        return err
-          ? callback(err)
-          : callback(null, out);
-      };
-
-      if (!highlight || highlight.length < 3) {
-        return done();
-      }
-
-      delete opt.highlight;
-
-      if (!pending) return done();
-
-      for (; i < tokens.length; i++) {
-        (function (token) {
-          if (token.type !== 'code') {
-            return --pending || done();
-          }
-          return highlight(token.text, token.lang, function (err, code) {
-            if (err) return done(err);
-            if (code == null || code === token.text) {
-              return --pending || done();
-            }
-            token.text = code;
-            token.escaped = true;
-            --pending || done();
-          });
-        })(tokens[i]);
-      }
-
-      return;
-    }
-    try {
-      if (opt) opt = merge({}, marked.defaults, opt);
-      return Parser.parse(Lexer.lex(src, opt), opt);
-    } catch (e) {
-      e.message += '\nPlease report this to https://github.com/chjj/marked.';
-      if ((opt || marked.defaults).silent) {
-        return '<p>An error occurred:</p><pre>'
-          + escape(e.message + '', true)
-          + '</pre>';
-      }
-      throw e;
-    }
-  }
-
-  /**
-   * Options
-   */
-
-  marked.options =
-    marked.setOptions = function (opt) {
-      merge(marked.defaults, opt);
-      return marked;
-    };
-
-  marked.defaults = {
-    gfm: true,
-    tables: true,
-    breaks: false,
-    pedantic: false,
-    sanitize: false,
-    sanitizer: null,
-    mangle: true,
-    smartLists: false,
-    silent: false,
-    highlight: null,
-    langPrefix: 'lang-',
-    smartypants: false,
-    headerPrefix: '',
-    renderer: new Renderer,
-    xhtml: false,
-    baseUrl: null
-  };
-
-  /**
-   * Expose
-   */
-
-  marked.Parser = Parser;
-  marked.parser = Parser.parse;
-
-  marked.Renderer = Renderer;
-
-  marked.Lexer = Lexer;
-  marked.lexer = Lexer.lex;
-
-  marked.InlineLexer = InlineLexer;
-  marked.inlineLexer = InlineLexer.output;
-
-  marked.parse = marked;
-
-  if (typeof module !== 'undefined' && typeof exports === 'object') {
-    module.exports = marked;
-  } else if (typeof define === 'function' && define.amd) {
-    define(function () { return marked; });
-  } else {
-    this.marked = marked;
-  }
-
-}).call(function () {
-  return this || (typeof window !== 'undefined' ? window : global);
-}());
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/help/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/help/pom.xml
deleted file mode 100644 (file)
index 91fc77b..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-    <artifactId>mwtn</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-  <relativePath>..</relativePath>
-  </parent>
-    <packaging>pom</packaging>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <artifactId>help</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
-    <name>${prefix} ${project.artifactId}</name>
-
-    <prerequisites>
-        <maven>3.0</maven>
-    </prerequisites>
-
-  <modules>
-    <module>help-module</module>
-    <module>help-bundle</module>
-  </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-bundle/pom.xml
deleted file mode 100644 (file)
index 7499a98..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnBrowser</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnBrowser-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnBrowser-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnBrowser-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 383b124..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnBrowser"/>
-        <property name="url" value="/src/app/mwtnBrowser"/>
-        <property name="directory" value="/mwtnBrowser"/>
-        <property name="requireJs" value="app/mwtnBrowser/mwtnBrowser.module"/>
-        <property name="angularJs" value="app.mwtnBrowser"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnBrowser/mwtnBrowser-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/pom.xml
deleted file mode 100644 (file)
index 7c33ed8..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <artifactId>mwtnBrowser-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-    <parent>
-        <artifactId>mwtnBrowser</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/images/mwtnBrowser.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/images/mwtnBrowser.png
deleted file mode 100755 (executable)
index ae596db..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/images/mwtnBrowser.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/images/mwtnConfig.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/images/mwtnConfig.png
deleted file mode 100755 (executable)
index ae596db..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/images/mwtnConfig.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser-custom.css
deleted file mode 100644 (file)
index 15c398c..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- *  Add your application related css here
- */
-
-.json-formatter-row .constructor-name {
-    cursor: pointer;
-    color: #333333;
-}
-
-.json-formatter-row .toggler:after {
-    color: darkgreen;
-    font-weight: bold;
-    display: inline-block;
-    transition: transform .1s ease-in;
-    content: ">"
-}
-
-.owl span.key-text {
-    color: #333333;
-}
-
-.owl span.colon {
-    color: #333333;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser.controller.js
deleted file mode 100644 (file)
index 76d3148..0000000
+++ /dev/null
@@ -1,1090 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * @license 
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnBrowser/mwtnBrowser.module',
-        'app/mwtnBrowser/mwtnBrowser.services'],
-        function(mwtnBrowserApp) {
-
-    var getControlType = function(type) {
-      var result = 'text'
-      switch (type) {
-        case 'boolean':
-          result = 'checkbox';
-          break;
-        case 'number':
-          result = 'number';
-          break;
-        case 'string':
-        case 'array':
-        case 'object':
-          break;
-        default:
-          var message = 'Check control type for ' + type;
-          $mwtnLog.warning({ component: COMPONENT, message: message });
-      }
-      return result;
-    };
-
-    mwtnBrowserApp.register.controller('ptpDefaultDsViewController', ['$scope', '$uibModalInstance', '$mwtnGlobal', '$mwtnCommons', '$mwtnDatabase', '$mwtnLog', 'defaultDs', 
-      function ($scope, $uibModalInstance, $mwtnGlobal, $mwtnCommons, $mwtnDatabase, $mwtnLog, defaultDs) {
-
-      var vm = this;
-      var COMPONENT = 'ptpDefaultDsViewController';
-      $scope.data = defaultDs;
-
-      $scope.getType = $mwtnGlobal.getType;
-
-
-      $mwtnCommons.getPtpDefaultDs(defaultDs).then(function (success) {
-
-        $scope.configuredData = success;
-        $scope.viewData = $mwtnGlobal.getViewData($scope.configuredData['default-ds']);
-
-        $mwtnDatabase.getSchema().then(function(schema){
-          var ordered = {};
-          var clone = JSON.parse(JSON.stringify($scope.viewData));
-          var keys = Object.keys(clone).map(function(key){
-            if ($mwtnGlobal.getType(key) !== 'string') {
-              console.log('key', key);
-              return;
-            }
-            var item = clone[key];
-            if (!schema[key]) {
-              var message = 'No schema information for ' + key;
-              $mwtnLog.warning({ component: COMPONENT, message: message });
-              item['order-number'] = $mwtnCommons.getOrderNumber(97, item);
-              item.description = 'No description available.';
-              item.visible = true;
-              return key;
-            }
-            if (schema[key].controlType === undefined) {
-              item.controlType = getControlType(item.type);
-            } else {
-              item.controlType = schema[key].controlType;
-            }
-            item.unit = schema[key].unit;
-            item['is-read-only'] = schema[key]['is-read-only'];
-            if (schema[key].min) {
-              item.min = schema[key].min;
-            }
-            if (schema[key].max) {
-              item.max = schema[key].max;
-              if (item.unit) {
-                item.unit = schema[key].min + '..' + schema[key].max + ' ' + item.unit;
-              } else {
-                item.unit = schema[key].min + '..' + schema[key].max;
-              }
-            }
-
-
-            item['order-number'] = $mwtnCommons.getOrderNumber(schema[key]['order-number'], item);
-            item.description = schema[key].description;
-            if (item.description === undefined || item.description === '') {
-              item.description = 'No description available.';
-            }
-            // hide complex types for now -> TODO
-            if (item.type === 'array' || item.type === 'object') {
-              item.visible = false;
-            }
-            return key;
-          }).sort(function(a,b){
-            if (clone[a]['order-number'] < clone[b]['order-number']) return -1;
-            if (clone[a]['order-number'] > clone[b]['order-number']) return 1;
-            return 0;
-          }).map(function(key){
-            ordered[key] = clone[key];
-          });
-          $scope.viewData = ordered;
-        }, function(error){
-          $scope.empty = true;
-        });
-                  
-      }, function (error) {
-        $scope.configuredData = undefined;
-        $mwtnLog.error({ component: COMPONENT, message: 'Requesting PTP default ds ' + JSON.stringify($scope.data) + ' failed!' });
-      });
-
-      $scope.$watch('viewData', function(newValue, oldValue) {
-        if (oldValue && newValue !== oldValue) {
-          Object.keys(newValue).filter(function(key){
-            return newValue[key]['is-read-only'] !== true && newValue[key].controlType === 'number' ;
-          }).map(function(key){
-            if (newValue[key].value < newValue[key].min) newValue[key].value = newValue[key].min;
-            if (newValue[key].value > newValue[key].max) newValue[key].value = newValue[key].max;
-            if (!newValue[key].value) newValue[key].value = newValue[key].min;
-          });
-        }
-      }, true);
-
-      $scope.newData = {};
-      $scope.ok = function () {
-        $scope.processing = true;
-        $scope.newData = {};
-        Object.keys($scope.viewData).map(function(key){
-          $scope.newData[key] = $scope.viewData[key].value;
-        });
-
-        $mwtnCommons.setPtpDefaultDs($scope.data, $scope.newData).then(function(success){
-          $scope.applied = {text: 'Applied: ' + new Date().toISOString(), class:'mwtnSuccess'};
-          $scope.processing = false;
-        }, function(error){
-          $scope.applied = {text: 'Error: ' + new Date().toISOString(), class:'mwtnError'};
-          $scope.processing = false;
-          $mwtnLog.error({component: COMPONENT, message: JSON.stringify(error)});
-        });
-
-      };
-    
-      $scope.cancel = function () {
-        $uibModalInstance.close($scope.newData);
-      };
-
-      // events
-
-
-    }]);
-
-    mwtnBrowserApp.register.controller('ptpPortConfigViewController', ['$scope', '$uibModalInstance', '$mwtnGlobal', '$mwtnCommons', '$mwtnDatabase', '$mwtnLog', 'valueData', 
-      function ($scope, $uibModalInstance, $mwtnGlobal, $mwtnCommons, $mwtnDatabase, $mwtnLog, data) {
-
-      var vm = this;
-      var COMPONENT = 'ptpPortConfigViewController';
-
-      $scope.data = data;
-
-      $scope.getType = $mwtnGlobal.getType;
-      console.warn(JSON.stringify(data));
-      $mwtnCommons.getPtpPort(data).then(function (success) {
-        
-        $scope.configuredData = success;
-        
-        $scope.viewData = $mwtnGlobal.getViewData($scope.configuredData['port-ds-list'][0]);
-        $mwtnDatabase.getSchema().then(function(schema){
-          var ordered = {};
-          var clone = JSON.parse(JSON.stringify($scope.viewData));
-          var keys = Object.keys(clone).map(function(key){
-            if ($mwtnGlobal.getType(key) !== 'string') {
-              console.log('key', key);
-              return;
-            }
-            var item = clone[key];
-            if (!schema[key]) {
-              var message = 'No schema information for ' + key;
-              $mwtnLog.warning({ component: COMPONENT, message: message });
-              item['order-number'] = $mwtnCommons.getOrderNumber(97, item);
-              item.description = 'No description available.';
-              item.visible = true;
-              return key;
-            }
-            if (schema[key].controlType === undefined) {
-              item.controlType = getControlType(item.type);
-            } else {
-              item.controlType = schema[key].controlType;
-            }
-            item.unit = schema[key].unit;
-            console.warn(key, schema[key]['is-read-only']);
-            item['is-read-only'] = schema[key]['is-read-only'];
-            if (schema[key].min) {
-              item.min = schema[key].min;
-            }
-            if (schema[key].max) {
-              item.max = schema[key].max;
-              if (item.unit) {
-                item.unit = schema[key].min + '..' + schema[key].max + ' ' + item.unit;
-              } else {
-                item.unit = schema[key].min + '..' + schema[key].max;
-              }
-            }
-
-
-            item['order-number'] = $mwtnCommons.getOrderNumber(schema[key]['order-number'], item);
-            item.description = schema[key].description;
-            if (item.description === undefined || item.description === '') {
-              item.description = 'No description available.';
-            }
-            // hide complex types for now -> TODO
-            if (item.type === 'array' || item.type === 'object') {
-              item.visible = false;
-            }
-            return key;
-          }).sort(function(a,b){
-            if (clone[a]['order-number'] < clone[b]['order-number']) return -1;
-            if (clone[a]['order-number'] > clone[b]['order-number']) return 1;
-            return 0;
-          }).map(function(key){
-            ordered[key] = clone[key];
-          });
-          $scope.viewData = ordered;
-        }, function(error){
-          $scope.empty = true;
-        });
-                  
-      }, function (error) {
-        $scope.configuredData = undefined;
-        $mwtnLog.error({ component: COMPONENT, message: 'Requesting PTP port ' + JSON.stringify($scope.data) + ' failed!' });
-      });
-
-      $scope.$watch('viewData', function(newValue, oldValue) {
-        if (oldValue && newValue !== oldValue) {
-          Object.keys(newValue).filter(function(key){
-            return newValue[key]['is-read-only'] !== true && newValue[key].controlType === 'number' ;
-          }).map(function(key){
-            if (newValue[key].value < newValue[key].min) newValue[key].value = newValue[key].min;
-            if (newValue[key].value > newValue[key].max) newValue[key].value = newValue[key].max;
-            if (!newValue[key].value) newValue[key].value = newValue[key].min;
-          });
-        }
-      }, true);
-
-      $scope.newData = {};
-      $scope.ok = function () {
-        $scope.processing = true;
-        $scope.newData = {};
-        Object.keys($scope.viewData).map(function(key){
-          $scope.newData[key] = $scope.viewData[key].value;
-        });
-
-        $mwtnCommons.setPtpPort($scope.data, $scope.newData).then(function(success){
-          $scope.applied = {text: 'Applied: ' + new Date().toISOString(), class:'mwtnSuccess'};
-          $scope.processing = false;
-        }, function(error){
-          $scope.applied = {text: 'Error: ' + new Date().toISOString(), class:'mwtnError'};
-          $scope.processing = false;
-          $mwtnLog.error({component: COMPONENT, message: JSON.stringify(error)});
-        });
-
-      };
-    
-      $scope.cancel = function () {
-        $uibModalInstance.close($scope.newData);
-      };
-
-      // events
-
-
-    }]);
-
-    mwtnBrowserApp.register.controller('mwtnPtpPortsController', ['$scope', '$filter', '$uibModal', '$mwtnGlobal', '$mwtnCommons', '$mwtnLog',
-      function ($scope, $filter, $uibModal, $mwtnGlobal, $mwtnCommons, $mwtnLog) {
-        var vm = this;
-        var COMPONENT = 'mwtnPtpPortsController';
-
-        $scope.info = false;
-        var data = JSON.parse(JSON.stringify($scope.data));
-        if (!data) {
-          var message = 'No data to be displayed!";'
-          $mwtnLog.info({ component: COMPONENT, message: message });
-          data = [{'message':message}];
-        }
-
-        if ($mwtnGlobal.getType(data) !== 'array')  {
-          var message = 'Data must be of type "array"!';
-          $mwtnLog.info({ component: COMPONENT, message: message });
-          data = [{'message':message}];
-        }
-
-        if (data.length === 0)  {
-          var message = 'Data list must have at least one entry!';
-          $mwtnLog.info({ component: COMPONENT, message: message });
-          data = [{'message':message}];
-        }
-
-        if ($mwtnGlobal.getType(data[0]) !== 'object')  {
-          data = data.map(function(item){
-            return {value: item};
-          });
-        }
-
-        $scope.ptpPorts = [];
-
-        $scope.gridOptions = JSON.parse(JSON.stringify($mwtnCommons.gridOptions));
-        $scope.gridOptions.data = 'ptpPorts';
-        $scope.highlightFilteredHeader = $mwtnCommons.highlightFilteredHeader;
-
-        // $scope.getTableHeight = function() {
-        //   var rowHeight = 30; 
-        //   var headerHeight = 40; 
-        //   var maxCount = 12;
-        //   var rowCount = $scope.gridOptions.data.length + 2;
-        //   if (rowCount > maxCount) {
-        //     return {
-        //         height: (maxCount * rowHeight + headerHeight) + 'px'
-        //     };
-        //   }
-        //   return {}; // use auto-resize feature
-        // };
-
-        var getCellTemplate = function(field) {
-          var object = ['transmission-mode-list', 'performance-data'];
-          if (object.contains(field)) {
-            return ['<div class="ui-grid-cell-contents">',
-                    '<i class="fa fa-info-circle pointer" aria-hidden="true"',
-                    ' ng-click="grid.appScope.show(grid.getCellValue(row, col))"></i> ',
-                    '{{grid.getCellValue(row, col)}}</div>'].join('');
-          } else if (field === 'action') {
-            return [
-              '<a class="vCenter" ng-class="{attention: grid.appScope.hover, hidden: onfAirInterfaceRevision}" >',
-              '  <i class="fa fa-pencil-square-o pointer" aria-hidden="true"  ng-click="grid.appScope.show(row.entity)"></i>',
-              '</a>' ].join('<span>&nbsp;</span>');
-          } else {
-            return '<div class="ui-grid-cell-contents">{{grid.getCellValue(row, col)}}</div>';
-          }
-        };
-
-        $scope.show = function(value){
-          var type = $mwtnGlobal.getType(value);
-          // if (type === 'object')
-          var modalInstance = $uibModal.open({
-            animation: true,
-            ariaLabelledBy: 'modal-title',
-            ariaDescribedBy: 'modal-body',
-            templateUrl: 'src/app/mwtnBrowser/templates/ptpPortConfigView.tpl.html',
-            controller: 'ptpPortConfigViewController',
-            size: 'huge',
-            resolve: {
-              valueData: function () {
-                return {networkElement: $scope.networkElement, value:value};
-              }
-            }
-          });
-          modalInstance.result.then(function(object) {
-            console.warn(JSON.stringify(object));
-            $scope.ptpPorts.map(function(row, index){
-              if (row['port-number'] === object['port-number']) {
-                console.log($scope.ptpPorts[index]['onf-ptp-dataset:master-only']);
-                $scope.ptpPorts[index] = object;
-                console.log($scope.ptpPorts[index]['onf-ptp-dataset:master-only']);
-              };
-            });
-          }, function () {
-              // ignore;
-          });
-        };
-
-        var enable = data.length > 10;
-        $scope.gridOptions.columnDefs = Object.keys(data[0]).map(function (field) {
-          var type = $mwtnGlobal.getType(data[0][field]);
-          var labelId = $mwtnGlobal.getLabelId(field);
-          var displayName = $filter('translate')(labelId);
-          var visible = $mwtnGlobal.getVisibilityOf(field);
-          if (labelId.contains('$$') || labelId === 'MWTN_SPEC') {
-            visible = false;
-          }
-          return {
-            field: field,
-            type: type,
-            displayName: displayName,
-            enableSorting: true,
-            enableFiltering: enable,
-            headerCellClass: $scope.highlightFilteredHeader,
-            cellTemplate: getCellTemplate(field),
-            cellClass: type,
-            visible: visible
-          };
-        });
-        $scope.gridOptions.columnDefs.push({
-            field: 'action',
-            displayName: 'Action',
-            enableSorting: false,
-            enableFiltering: false,
-            headerCellClass: $scope.highlightFilteredHeader,
-            cellTemplate: getCellTemplate('action'),
-            width: 100,
-            visible: true,  
-            pinnedRight : true
-
-          });
-        if ($scope.gridOptions.data.length < 10) {
-          $scope.gridOptions.minRowsToShow =  data.length; // 10 is default
-        } 
-        $scope.ptpPorts = data.map(function(item){
-          item.action = '';
-          return item;
-        });
-        // .sort(function(a, b){
-        //           if (a.type === 'object') return -1;
-        //           if (a.type === 'array' ) return -2;
-        //           return 0;
-        //         })
-
-        $scope.myClipboard = {
-          data: $scope.data,
-          supported: true,
-          getJson: function () {
-            return JSON.stringify(this.data, null, ' ');
-          },
-          copyToClipboard: function () {
-            var message = 'Copied to clipboard! ' + this.getJson();
-            $mwtnLog.info({ component: COMPONENT, message: message });
-          },
-          error: function (err) {
-            $mwtnLog.error({ component: COMPONENT, message: err });
-          }
-        };
-    }]);
-
-    mwtnBrowserApp.register.directive('mwtnPtpPorts', function () {
-      return {
-        restrict: 'E',
-        scope: {
-          data: '=',
-          path: '=',
-          networkElement: '='
-        },
-        controller: 'mwtnPtpPortsController',
-        controllerAs: 'vm',
-        templateUrl: 'src/app/mwtnBrowser/templates/mwtnPtpPorts.tpl.html'
-      };
-    });
-
-    mwtnBrowserApp.register.controller('mwtnPtpClockViewerController', ['$scope', '$timeout', '$uibModal', '$mwtnGlobal', '$mwtnCommons', '$mwtnDatabase', '$mwtnLog', '$mwtnBrowser',
-      function ($scope, $timeout, $uibModal, $mwtnGlobal, $mwtnCommons, $mwtnDatabase, $mwtnLog, $mwtnBrowser) {
-        var vm = this;
-        var COMPONENT = 'mwtnPtpClockViewerController';
-        if ($scope.data) {
-          $scope.replace = false;
-          if ($scope.path && $scope.path.endsWith('-configuration') ) {
-            $scope.replace = true;
-          }
-          $scope.viewData = $mwtnGlobal.getViewData($scope.data, $scope.ne);
-          var path = [undefined, undefined, undefined];
-          if ($scope.path) {
-            path = $scope.path.split($mwtnCommons.separator);
-          }
-
-          var processData = function(schema) {
-            var ordered = {};
-            var clone = JSON.parse(JSON.stringify($scope.viewData));
-            var keys = Object.keys(clone).map(function(key){
-              if ($mwtnGlobal.getType(key) !== 'string') {
-                console.log('key', key);
-                return;
-              }
-              var item = clone[key];
-              if (!schema[key]) {
-                var message = 'No schema information for ' + key;
-                $mwtnLog.warning({ component: COMPONENT, message: message });
-                item['order-number'] = $mwtnCommons.getOrderNumber(97, item);
-                item.description = 'No description available.';
-                item.visible = true;
-                return key;
-              }
-              item.unit = schema[key].unit;
-              item.description = schema[key].description;
-              item['order-number'] = $mwtnCommons.getOrderNumber(schema[key]['order-number'], item);
-              if (item.description === undefined || item.description === '') {
-                item.description = 'No description available.';
-              }
-              return key;
-            }).sort(function(a,b){
-              if (clone[a]['order-number'] < clone[b]['order-number']) return -1;
-              if (clone[a]['order-number'] > clone[b]['order-number']) return 1;
-              return 0;
-            }).map(function(key){
-              if ($mwtnGlobal.getType( clone[key].value ) === 'object') {
-                Object.keys(clone[key].value).filter(function(subKey){
-                  return subKey.endsWith('-identity');
-                }).map(function(subKey){
-                  var clockId = clone[key].value[subKey];
-                  if ($mwtnGlobal.getType(clockId) === 'object') {
-                    if (clockId['clock-identity']) {
-                      var ascii = clockId['clock-identity'].base64ToHex();
-                      clone[key].value[subKey]['clock-identity'] = [clone[key].value[subKey]['clock-identity'], '(ascii:', ascii, ')'].join(' ');
-                    }
-                  } else {
-                    var ascii = clone[key].value[subKey].base64ToHex();
-                    clone[key].value[subKey] = [clone[key].value[subKey], '(ascii:', ascii, ')'].join(' ');
-                  }
-                });
-                ordered[key] = clone[key];
-              } else {
-                ordered[key] = clone[key];
-              }
-            });
-            $scope.info = false;
-            if (Object.keys(ordered).length === 0) {
-              $scope.info = 'An empty object is displayed. Please check if the NetConf server has send an empty object.';
-            }
-            return ordered;
-          };
-
-
-          $mwtnDatabase.getSchema().then(function(schema){
-            $scope.schema = schema;
-            $scope.viewData = processData($scope.schema);
-          }, function(error){
-            // ignore;
-          });
-        }
-
-        $scope.show = function(value){
-          var type = $mwtnGlobal.getType(value);
-          var modalInstance = $uibModal.open({
-            animation: true,
-            ariaLabelledBy: 'modal-title',
-            ariaDescribedBy: 'modal-body',
-            templateUrl: 'src/app/mwtnBrowser/templates/ptpDefaultDsConfigView.tpl.html',
-            controller: 'ptpDefaultDsViewController',
-            size: 'huge',
-            resolve: {
-              defaultDs: function () {
-                return {networkElement: $scope.networkElement, value:value};
-              }
-            }
-          });
-          modalInstance.result.then(function(object) {
-            $mwtnBrowser.refreshPTP();
-          }, function () {
-              // ignore;
-          });
-        };
-    }]);
-    
-    mwtnBrowserApp.register.directive('mwtnPtpClockViewer', function () {
-      return {
-        restrict: 'E',
-        scope: {
-          data: '=',
-          path: '=',
-          ne: '=', // flag if ne class
-          networkElement: '='
-        },
-        controller: 'mwtnPtpClockViewerController',
-        controllerAs: 'vm',
-        templateUrl: 'src/app/mwtnBrowser/templates/mwtnPtpClockViewer.tpl.html'
-      };
-    });
-
-
-  mwtnBrowserApp.register.controller('mwtnBrowserCtrl', ['$scope', '$rootScope', '$mwtnLog', '$mwtnCommons', '$mwtnEthernet', '$mwtnBrowser', '$translate', 'OnfNetworkElement', 'PtpClock', 'LogicalTerminationPoint', 
-    function($scope, $rootScope, $mwtnLog, $mwtnCommons, $mwtnEthernet, $mwtnBrowser, $translate, OnfNetworkElement, PtpClock, LogicalTerminationPoint) {
-
-    var COMPONENT = 'mwtnBrowserCtrl';
-    $mwtnLog.info({component: COMPONENT, message: 'mwtnBrowserCtrl started!'});
-    $rootScope.section_logo = 'src/app/mwtnBrowser/images/mwtnBrowser.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-    var pacTemplate = {
-        'layer-protocol': 'unknown'           
-    };
-
-    $scope.fcDeletion = {
-      nodeId: $scope.networkElementId, 
-      ltp:'', 
-      info: 'handle with care, no further warning, qualified user expected ;)'
-    };
-    $scope.deleteForwardingConstruct = function() {
-      $scope.fcDeletion.nodeId = $scope.networkElementId;
-      $scope.fcDeletion.info = 'Processing ...';
-      $scope.fcDeletion.error = undefined;
-      if ($scope.fcDeletion.ltp === undefined || $scope.fcDeletion.ltp === '') {
-        $scope.fcDeletion.error = 'Please select a valid LTP#1.!';
-        return;
-      }
-      $mwtnEthernet.deleteForwardingConstruct($scope.fcDeletion).then(function(success){
-        console.log(success);
-        $scope.fcDeletion.info = success;
-      }, function(error){
-        console.log(error);
-        $scope.fcDeletion.error = error;
-      });
-    }
-
-    $scope.fcCreation = {
-      nodeId: $scope.networkElementId, 
-      ltp1:'', 
-      ltp2:'', 
-      vlan:42, 
-      info:'handle with care, no further warning, qualified user expected ;)'
-    };
-    $scope.createForwardingConstruct = function() {
-      console.warn(JSON.stringify($scope.networkElementId));
-      console.warn(JSON.stringify($scope.networkElement));
-      $scope.fcCreation.nodeId = $scope.networkElementId;
-      $scope.fcCreation.info = 'Processing ...';
-      $scope.fcCreation.error = undefined;
-      if ($scope.fcCreation.ltp1 === undefined || $scope.fcCreation.ltp1 === '') {
-        $scope.fcCreation.error = 'Please select a valid LTP#1!';
-        return;
-      }
-      if ($scope.fcCreation.ltp2 === undefined || $scope.fcCreation.ltp2 === '') {
-        $scope.fcCreation.error = 'Please select a valid LTP#2!';
-        return;
-      }
-      if ($scope.fcCreation.vlan === undefined) {
-        $scope.fcCreation.error = 'Please select a valid vlan-id!';
-        return;
-      }
-      if ($scope.fcCreation.ltp1 === $scope.fcCreation.ltp2) {
-        $scope.fcCreation.error = 'Please select different LTPs. Loopback is not supported yet!';
-        return;
-      }
-      $mwtnEthernet.createForwardingConstruct($scope.fcCreation).then(function(success){
-        console.log(success);
-        $scope.fcCreation.info = success;
-      }, function(error){
-        console.log(error);
-        $scope.fcCreation.error = error;
-      });
-    }
-
-    // get important infromation from yang modules
-    console.error('help');
-    $mwtnBrowser.getModules().then(function(success){
-
-      var pacOrder = [
-        'onf-otn-odu-conditional-packages:otn-odu-termination-pac',
-        'onf-otn-odu-conditional-packages:otn-odu-connection-pac',
-        'onf-ethernet-conditional-packages:ethernet-pac',
-        'microwave-model:mw-air-interface-diversity-pac',
-        'microwave-model:mw-air-interface-hsb-end-point-pac',
-        'microwave-model:mw-air-interface-hsb-fc-switch-pac',
-        'onf-core-model-conditional-packages:holder-pac',
-        'onf-core-model-conditional-packages:connector-pac',
-        'onf-core-model-conditional-packages:equipment-pac',
-        'microwave-model:mw-ethernet-container-pac',
-        'MicrowaveModel-ObjectClasses-EthernetContainer:MW_EthernetContainer_Pac',
-        'microwave-model:mw-ethernet-container-pac',
-        'microwave-model:mw-tdm-container-pac',
-        'microwave-model:mw-pure-ethernet-structure-pac',
-        'microwave-model:mw-hybrid-mw-structure-pac',
-        'MicrowaveModel-ObjectClasses-PureEthernetStructure:MW_PureEthernetStructure_Pac',
-        'microwave-model:mw-air-interface-pac',
-        'MicrowaveModel-ObjectClasses-AirInterface:MW_AirInterface_Pac'
-      ];
-
-      $scope.modules = success;
-      $scope.orderedPacs = [];
-      $scope.parts = [];
-      Object.keys(success).map(function(module){
-        Object.keys(success[module]).filter(function(key){
-          return key.endsWith('-pac') || key.endsWith('_Pac');
-        }).map(function(pacName){
-          $scope.orderedPacs.push([module, pacName].join(':'));
-          // sort 
-          $scope.orderedPacs.sort(function(a, b) {
-            if (!pacOrder.indexOf(a)) console.warn(a);
-            if (!pacOrder.indexOf(b)) console.warn(b);
-            if(pacOrder.indexOf(a) > pacOrder.indexOf(b)) return 1;
-            if(pacOrder.indexOf(a) < pacOrder.indexOf(b)) return -1;
-            return 0;
-          })
-
-          if (pacName === 'mw-air-interface-pac') {
-            $scope.parts = Object.keys(success[module][pacName]).filter(function(conditionalPackage){
-              return success[module][pacName][conditionalPackage]['local-name'];
-            }).map(function(conditionalPackage){
-              return success[module][pacName][conditionalPackage]['local-name'];
-            });
-          }
-        });
-      });
-    }, function(error){
-      $scope.modules = undefined;
-      $scope.orderedPacs = undefined;
-      $scope.parts = undefined;
-    });
-            
-    /**
-     * @function updateNe 
-     * A function, which updates onfNetworkElement by new data.
-     * @param {*} data New data recieved from OpenDaylight via RestConf
-     */
-    var updateNe = function(data) {
-      if (!data) return;
-      // update onfNetworkElement
-      switch ($scope.mountpoint.onfCoreModelRevision) {
-        case '2016-03-23':
-          $scope.onfNetworkElement = JSON.parse(JSON.stringify(data['network-element'][0]));
-          $scope.onfLtps = data['network-element'][0].ltp;
-          $scope.onfNetworkElement.ltp = undefined;
-          break;
-        case '2016-08-09':
-        case '2016-08-11':
-        case '2017-02-17':
-        case '2017-03-20':
-        case '2017-10-20':
-        // console.log(JSON.stringify(data));        
-          $scope.onfNetworkElement = new OnfNetworkElement(data['network-element']);
-          var fd = $scope.onfNetworkElement.getForwardingDomain();
-          $scope.forwardingDomain = undefined;
-          $scope.forwardingConstructs = undefined;
-          if (fd && fd.length > 0) {
-            $scope.forwardingDomain = fd[0]; // $mwtnBrowser.getViewData(fd[0]);
-            $scope.forwardingConstructs = [];
-            if (fd[0].fc) {
-              fd[0].fc.map(function(id){
-                $mwtnBrowser.getForwardingConstruct($scope.networkElement, id).then(function(fc){
-
-                  // TODO make robust
-                  if (fc['forwarding-construct'] && fc['forwarding-construct'][0]) {
-                    var item = fc['forwarding-construct'][0];
-                    if (item['fc-port'] && 
-                        item['fc-port'][0] && item['fc-port'][0].ltp && item['fc-port'][0].ltp[0]  && 
-                        item['fc-port'][1] && item['fc-port'][1].ltp && item['fc-port'][1].ltp[0]) {
-                      $scope.forwardingConstructs.push( {
-                        uuid: item.uuid,
-                        'fc-port#1': $scope.onfNetworkElement.getLtp( item['fc-port'][0].ltp[0] ).getLabel(),
-                        'fc-port#2': $scope.onfNetworkElement.getLtp( item['fc-port'][1].ltp[0] ).getLabel()
-                      });
-                    }
-                  }
-                });
-              });
-            }
-          }
-          $scope.onfLtps = $scope.onfNetworkElement.getLogicalTerminationPoints();
-          // $scope.onfNetworkElement.ltp = undefined;
-          break;
-        default:
-          $mwtnLog.info({component: COMPONENT, message: ['The ONF CoreModel revision', $scope.mountpoint.onfCoreModelRevision, ' is not supported (yet)!'].join(' ')});
-          $scope.onfNetworkElement = {};
-          $scope.onfLtps = {};
-      }
-      
-      var order = $mwtnBrowser.layerProtocolNameOrder;
-      // update onfLTPs
-      $scope.onfLtps.sort(function(a, b){
-        if(order[a.getLayer()] < order[b.getLayer()]) return -1;
-        if(order[a.getLayer()] > order[b.getLayer()]) return 1;
-        if(a.getId() < b.getId()) return -1;
-        if(a.getId() > b.getId()) return 1;
-        return 0;
-      });
-      
-      // calculate conditional packages
-      $scope.pacs = {};
-      $scope.onfLtps.map(function(ltp) {
-        ltp.getLayerProtocols().map(
-          /**
-           * A function processing a layer-protocol object
-           * @param {LayerProtocol} lp A layer-protocol object
-           */
-          function(lp) {
-            var template = JSON.parse(JSON.stringify(pacTemplate));
-            template['layer-protocol'] = lp.getId();
-            var conditionalPackage = lp.getConditionalPackage(true);
-            // console.log(conditionalPackage);
-            if (conditionalPackage !== '') {
-              if ($scope.pacs[conditionalPackage] === undefined) {
-                // create missing pac array
-                $scope.pacs[conditionalPackage] = [];
-              }
-              $scope.pacs[conditionalPackage].push(template);
-              console.error(conditionalPackage, JSON.stringify(template));
-            } else {
-              $mwtnLog.info({component: COMPONENT, message: 'No conditional package for  ' + ltp.getLabel() });
-            }
-        });
-      });
-      
-      // sort the conditional packages
-      if ($scope.orderedPacs) {
-        $scope.orderedPacs.filter(function(item){
-          return $scope.pacs[item] !== undefined;
-        }).map(function(item){
-          $scope.pacs[item].sort(function(a, b){
-            if(a['layer-protocol'] < b['layer-protocol']) return -1;
-            if(a['layer-protocol'] > b['layer-protocol']) return 1;
-            return 0;
-          });
-        });
-      }
-      data.revision = undefined;
-    };
-
-    var updateNetworkElementCurrentProblems = function(data) {
-      if (data && data['network-element-current-problems'] && data['network-element-current-problems']['current-problem-list'] ) {
-          data.revision = undefined;
-          $scope.neCurrentProblems = data['network-element-current-problems']['current-problem-list'];
-      } else {
-          $scope.neCurrentProblems = [];
-      }
-    };
-
-    var updateLtp = function(data) {
-      $scope.onfLtps.map(function(ltp){
-        if (ltp.getData().uuid === data.data.ltp[0].uuid) {
-          ltp = new LogicalTerminationPoint(data.data.ltp[0]);
-        }
-      });
-    };
-
-    /**
-     * @deprecated since all conditaional packages are handle the same way even for
-     *             3rd and 4th PoC model - 2nd PoC model not supported any more.
-     * @param {*} lpId 
-     * @param {*} part 
-     * @param {*} data 
-     */
-    var updateAirInterface = function(lpId, part, data) {
-      // console.log(JSON.stringify(data), lpId);
-      $scope.airinterfaces.map(function(airinterface){
-        // console.log(JSON.stringify(airinterface));
-        if (airinterface['layer-protocol'] === lpId) {
-          if (Object.keys(data)[0].startsWith('air-interface')) {
-            airinterface[part] = data;            
-          } else if (part === 'Capability') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            airinterface[part] = data['mw-air-interface-pac'][0]['air-interface-capability-list'];            
-          } else if (part === 'CurrentProblems') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            airinterface[part] = data['mw-air-interface-pac'][0]['air-interface-current-problem-list'];            
-          }
-        }
-      });
-      data.revision = undefined;
-    };
-
-    /**
-     * @deprecated since all conditaional packages are handle the same way even for
-     *             3rd and 4th PoC model - 2nd PoC model not supported any more.
-     * @param {*} lpId 
-     * @param {*} part 
-     * @param {*} data 
-     */
-    var updateStructure = function(lpId, part, data) {
-      // console.log(JSON.stringify(data), lpId);
-      $scope.structures.map(function(structure){
-        // console.log(JSON.stringify(structure));
-        if (structure['layer-protocol'] === lpId) {
-          if (Object.keys(data)[0].contains('tructure')) {
-            structure[part] = data;            
-          } else if (part === 'Capability') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            structure[part] = data['mw-structure-pac'][0]['structure.capability-list'];            
-          } else if (part === 'CurrentProblems') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            structure[part] = data['mw-structure-pac'][0]['structure-current-problem-list'];            
-          }
-        }
-      });
-      data.revision = undefined;
-    };
-
-    /**
-     * @deprecated since all conditaional packages are handle the same way even for
-     *             3rd and 4th PoC model - 2nd PoC model not supported any more.
-     * @param {*} lpId 
-     * @param {*} part 
-     * @param {*} data 
-     */
-    var updateContainer = function(lpId, part, data) {
-      // console.log(JSON.stringify(data), lpId);
-      $scope.containers.map(function(container){
-        // console.log(JSON.stringify(container));
-        if (container['layer-protocol'] === lpId) {
-          if (Object.keys(data)[0].contains('ontainer') ) {
-            container[part] = data;            
-          } else if (part === 'Capability') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            container[part] = data['mw-container-pac'][0]['container-capability-list'];            
-          } else if (part === 'CurrentProblems') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            container[part] = data['mw-container-pac'][0]['container-current-problem-list'];            
-          }
-        }
-      });
-      data.revision = undefined;
-    };
-
-    /**
-     * Creates a template of a conditional packages with its subclasses
-     * @param {{pacId: string, layerProtocolId: string, partId:string}} spec - Specification object of a conditional package subclass
-     */
-    var initPac = function(spec) {
-      $scope.pacs[spec.pacId].filter(function(conditionalPackage){
-        return conditionalPackage['layer-protocol'] === spec.layerProtocolId;
-      }).map(function(pac){
-        $scope.parts.map(function(localName){
-          pac[localName] = {id:$mwtnBrowser.getPartGlobalId(spec, localName),localName: localName, data:'No data available'}
-        });
-      });
-    };
-
-    /**
-     * Updates an existing template of a conditional packages with its subclasses
-     * @param {{pacId: string, layerProtocolId: string, partId:string}} spec - Specification object of a conditional package subclass
-     */
-    var updateSubClassData = function(spec, data) {
-      $scope.pacs[spec.pacId].filter(function(conditionalPackage){
-        return conditionalPackage['layer-protocol'] === spec.layerProtocolId;
-      }).map(function(conditionalPackage){
-        conditionalPackage[$mwtnBrowser.getPartLocalId(spec)].data = data[$mwtnBrowser.yangify(spec.partId)];
-      });
-    };
-
-    var updatePart = function(spec, data) {
-      switch (spec.pacId) {
-        case 'ne':
-          updateNe(data);
-          break;
-        case 'forwardingDomain':
-          // TODO $scope.forwardingDomain = new ForwardingDomain(data);
-          break;
-        case 'neCurrentProblems':
-          updateNetworkElementCurrentProblems(data);
-          break;
-        case 'clock':
-          if (data) {
-            $scope.clock = new PtpClock(data);
-          } else {
-            $scope.clock = undefined;
-          }
-          break;
-        case 'ltp':
-          updateLtp(data);
-          break;
-        case 'airinterface':
-          console.warn(JSON.stringify(spec, JSON.stringify(data)));
-          updateAirInterface(spec.layerProtocolId, spec.partId, data);
-          break;
-        case 'structure':
-          console.warn(JSON.stringify(data));
-          updateStructure(spec.layerProtocolId, spec.partId, data);
-          break;
-        case 'container':
-          console.warn(JSON.stringify(data));
-          updateContainer(spec.layerProtocolId, spec.partId, data);
-          break;  
-        // 3rd Poc
-        case 'MicrowaveModel-ObjectClasses-AirInterface:MW_AirInterface_Pac':
-        case 'MicrowaveModel-ObjectClasses-PureEthernetStructure:MW_PureEthernetStructure_Pac':
-        case 'MicrowaveModel-ObjectClasses-EthernetContainer:MW_EthernetContainer_Pac':
-        // 4th Poc
-        case 'microwave-model:mw-air-interface-pac':
-        case 'microwave-model:mw-air-interface-diversity-pac':
-        case 'microwave-model:mw-pure-ethernet-structure-pac':
-        case 'microwave-model:mw-hybrid-mw-structure-pac':
-        case 'microwave-model:mw-tdm-container-pac':
-        case 'microwave-model:mw-ethernet-container-pac':
-        case 'onf-ethernet-conditional-packages:ethernet-pac':
-          if (!spec.partId) {
-            initPac(spec);
-          } else {
-            updateSubClassData(spec, data);
-          }
-          break;  
-      }
-    };
-    
-    // events
-    $scope.status = {ne:false};
-    $scope.spinner = {ne:false};
-    $scope.separator = $mwtnBrowser.separator; //'&nbsp;'
-
-    $scope.collapseAll = function() {
-      // close all groups
-      Object.keys($scope.status).map(function(group){
-        $scope.status[group] = false;
-      });
-      Object.keys($scope.spinner).map(function(group){
-        $scope.spinner[group] = false;
-      });
-    };
-
-    $scope.$watch('status', function(status, oldValue) {
-      Object.keys(status).filter(function(key){
-        return $scope.networkElementId && status[key] && status[key] !== oldValue[key];
-      }).map(function(key){
-        $scope.spinner[key] = true;
-        var info = key.split($scope.separator);
-        var spec = {
-          nodeId: $scope.networkElementId,
-          revision: $scope.revision,
-          pacId: info[0],
-          layerProtocolId: info[1],
-          partId: info[2]
-        };
-        $mwtnBrowser.getPacParts(spec).then(function(success){
-          success = $mwtnBrowser.yangifyObject(success)
-          updatePart(spec, success);
-          $scope.spinner[key] = false;
-        }, function(error){
-          updatePart(spec, error);
-          $scope.spinner[key] = false;
-        });
-      });
-    }, true);
-
-    $scope.$watch('networkElement', function(neId, oldValue) {
-      if (neId && neId !== '' && neId !== oldValue) {
-
-        $scope.collapseAll();
-        
-        // clear old data
-        $scope.airinterfaces = [];
-        $scope.structures = [];
-        $scope.containers = [];
-        $scope.onfLtps = [];
-        $scope.clock = undefined;
-
-        $scope.networkElementId = neId;
-        $scope.revision = $scope.mountPoints.filter(function(mountpoint){
-          return mountpoint['node-id'] === neId;
-        }).map(function(mountpoint){
-          $scope.mountpoint = mountpoint;
-          return mountpoint.onfCoreModelRevision;
-        })[0];
-
-        var spec = {
-          nodeId: $scope.networkElementId,
-          revision: $scope.revision,
-          pacId: 'ne'
-        };
-        $mwtnBrowser.getPacParts(spec).then(function(success){
-          updatePart(spec, $mwtnBrowser.yangifyObject(success));
-        }, function(error){
-          updatePart(spec, error);
-        });
-
-        // network element alarms
-        var neAlarms = $scope.mountPoints.filter(function(mountpoint){
-          return mountpoint['node-id'] === neId;
-        }).map(function(mountpoint){
-          return mountpoint.onfCapabilities.filter(function(cap){
-            return cap.module === 'MicrowaveModel-NetworkElement-CurrentProblemList' || cap.module === 'onf-core-model-conditional-packages';
-          });
-        });
-        
-        if (neAlarms.length === 1 && neAlarms[0].length === 1 ) {
-          $translate('MWTN_LOADING').then(function (translation) {
-            $scope.neCurrentProblems = translation;
-          });
-        } else {
-          $scope.neCurrentProblems = undefined;
-        }
-
-        // ptp-clock
-        var ptpClock = $scope.mountPoints.filter(function(mountpoint){
-          return mountpoint['node-id'] === neId;
-        }).map(function(mountpoint){
-          return mountpoint.onfCapabilities.filter(function(cap){
-            return cap.module === 'onf-ptp-dataset';
-          });
-        });
-        if (ptpClock.length === 1 && ptpClock[0].length === 1 ) {
-          $translate('MWTN_LOADING').then(function (translation) {
-            $scope.clock = {'translation': translation};
-          });
-        } else {
-          $scope.clock = undefined;
-        }
-        
-      }
-    });
-
-  }]);
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser.module.js
deleted file mode 100644 (file)
index d529ca2..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module',
-        'app/mwtnCommons/bower_components/angular-clipboard/angular-clipboard'], function(ng) {
-  var mwtnBrowserApp = angular.module('app.mwtnBrowser', ['ui.grid', 'ui.bootstrap', 'app.core', 'ui.router.state', 'config', 'angular-clipboard']);
-
-  mwtnBrowserApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnBrowserApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-    NavHelperProvider.addControllerUrl('app/mwtnBrowser/mwtnBrowser.controller');
-    NavHelperProvider.addToMenu('mwtnBrowser', {
-     "link" : "#/pnfBrowser/",
-     "active" : "main.mwtnBrowser",
-     "title" : "pnf Config",
-     "icon" : "fa fa-cogs",  // Add navigation icon css class here
-     "page" : {
-        "title" : "pnf Config",
-        "description" : "mwtnBrowser"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnBrowser', {
-        url: 'pnfBrowser/:nodeId',
-        access: access.admin,
-        views : {
-            content : {
-                templateUrl: 'src/app/mwtnBrowser/templates/frame.tpl.html',
-                controller: 'mwtnBrowserCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnBrowserApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/mwtnBrowser.services.js
deleted file mode 100644 (file)
index 7cd9dc0..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCommons/mwtnCommons.module', 'app/mwtnBrowser/mwtnBrowser.module'],function(mwtnBrowserApp) {
-
-  mwtnBrowserApp.register.factory('$mwtnBrowser', function($mwtnCommons, $mwtnDatabase, $mwtnLog) {
-
-    var COMPONENT = '$mwtnBrowser';
-    $mwtnLog.info({component: COMPONENT, message: '$mwtnBrowser started!'});
-
-    var service = {};
-    
-    service.separator = $mwtnCommons.separator;
-    
-    service.parts = $mwtnCommons.parts;
-    service.getPacParts = $mwtnCommons.getPacParts;
-    service.getModules = $mwtnDatabase.getModules;
-    service.getPartGlobalId = $mwtnCommons.getPartGlobalId;
-    service.getPartLocalId = $mwtnCommons.getPartLocalId;
-    service.getViewData = $mwtnCommons.getViewData;
-    service.getForwardingConstruct = $mwtnCommons.getForwardingConstruct;
-    service.layerProtocolNameOrder = $mwtnCommons.layerProtocolNameOrder;
-    service.yangify = $mwtnCommons.yangify;
-    service.yangifyObject = $mwtnCommons.yangifyObject;
-    
-    service.refreshPTP = function() {
-      console.error('refresh ptp');
-    }
-    return service;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/frame.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/frame.tpl.html
deleted file mode 100644 (file)
index 6d43dbd..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-<ht-header help-link='sdnr/pnfConfig/0.4.0/README.md'></ht-header>
-<mwtn-select-network-element></mwtn-select-network-element>
-
-<div class="owl container" ng-if="networkElements.length !== 0 && networkElement" style="width: 100%;">
-  <div class="row">
-    <uib-accordion close-others="oneAtATime">
-      <div class="col-md-12">
-        <div uib-accordion-group class="panel-primary" is-open="status.ne">
-          <uib-accordion-heading>
-            <i class="fa" ng-class="{'fa-chevron-down': status.ne, 'fa-chevron-right': !status.ne}"></i>
-            <span>{{'MWTN_NETWORKELEMENT' | translate}} '{{onfNetworkElement.getName()}}' </span>
-            <span> (#{{'MWTN_LTPS' | translate}}: {{onfNetworkElement.getLogicalTerminationPoints().length}})</span>
-            <i class="fa fa-spinner fa-pulse" ng-show="spinner.ne"></i>
-          </uib-accordion-heading>
-          <mwtn-json-viewer network-element="networkElement" data="onfNetworkElement.getData()" ne="true" ng-if="status.ne"></mwtn-json-viewer>
-          <br/>
-
-          <uib-accordion close-others="oneAtATime">
-            <div uib-accordion-group class="panel-default" is-open="status.neCurrentProblems" ng-if="neCurrentProblems">
-              <uib-accordion-heading>
-                <i class="fa" ng-class="{'fa-chevron-down': status.neCurrentProblems, 'fa-chevron-right': !status.neCurrentProblems}"></i>
-                <span>{{'MWTN_CURRENT_PROBLEM_LIST' | translate}}</span>
-                <i class="fa fa-spinner fa-pulse" ng-show="spinner.neCurrentProblems"></i>
-              </uib-accordion-heading>
-
-              <mwtn-grid network-element="networkElement" data="neCurrentProblems" ng-if="neCurrentProblems && !spinner.neCurrentProblems"></mwtn-grid>
-            </div>
-
-            <div uib-accordion-group class="panel-default" is-open="status.forwardingDomain" ng-show="forwardingDomain">
-              <uib-accordion-heading>
-                <i class="fa" ng-class="{'fa-chevron-down': status.forwardingDomain, 'fa-chevron-right': !status.forwardingDomain}"></i>
-                <span>{{'MWTN_FORWARDING_DOMAIN' | translate}}</span>
-                <i class="fa fa-spinner fa-pulse" ng-show="spinner.forwardingDomain"></i>
-              </uib-accordion-heading>
-
-              <mwtn-json-viewer network-element="networkElement" data="forwardingDomain" ng-if="status.forwardingDomain"></mwtn-json-viewer>
-            </div>
-
-            <div uib-accordion-group class="panel-default" is-open="status.forwardingConstructs" ng-show="forwardingConstructs">
-              <uib-accordion-heading>
-                <i class="fa" ng-class="{'fa-chevron-down': status.forwardingConstructs, 'fa-chevron-right': !status.forwardingConstructs}"></i>
-                <span>{{'MWTN_FORWARDING_CONSTRUCTS' | translate}}</span>
-                <i class="fa fa-spinner fa-pulse" ng-show="spinner.forwardingConstructs"></i>
-              </uib-accordion-heading>
-
-              <mwtn-grid network-element="networkElement" data="forwardingConstructs" ng-if="forwardingConstructs && !spinner.forwardingConstructs"></mwtn-grid>
-            
-              <!-- create fc -->
-              <div class="row">
-                <div class="col col-md-3">
-                  <label class="owl-dark" for="vlan">{{'MWTN_LTP1' | translate}}</label><br/>
-                  <select class="form-control" ng-model="fcCreation.ltp1">
-                    <option ng-repeat="ltp in forwardingDomain.ltp" value="{{ltp}}">{{ltp}}</option>
-                  </select>
-                </div>
-                <div class="col col-md-3">
-                  <label class="owl-dark" for="vlan">{{'MWTN_LTP2' | translate}}</label><br/>
-                  <select class="form-control" ng-model="fcCreation.ltp2">
-                    <option ng-repeat="ltp in forwardingDomain.ltp" value="{{ltp}}">{{ltp}}</option>
-                  </select>
-                </div>
-                <div class="col col-md-1 form-group">
-                  <label class="owl-dark" for="vlan">{{'MWTN_SERVICE_ID' | translate}}</label><br/>
-                  <input class="form-control" type="number" value="42" id="example-number-input" ng-model="fcCreation.vlan">
-                </div>
-                <div class="col col-md-2">
-                  <label style="color:white;" for="create">create</label><br/>
-                  <button type="button" class="btn btn-warning" ng-click="createForwardingConstruct()">
-                      <i class="fa fa-plus" aria-hidden="true"></i>
-                      <span style="color:white;">{{'MWTN_CREATE' | translate}}</span>
-                  </button>     
-                </div>
-                <div class="col col-md-3">
-                  <span class="owl-dark" ng-if="!fcCreation.error">{{fcCreation.info}}</span>
-                  <span class="error" ng-if="fcCreation.error">{{fcCreation.error}}</span>
-                </div>
-              </div>
-
-              <!-- delete fc -->
-              <div class="row">
-                <div class="col col-md-6 form-group">
-                  <label class="owl-dark" for="vlan">{{'MWTN_FC_UUID' | translate}}</label><br/>
-                  <select class="form-control" ng-model="fcDeletion.ltp">
-                    <option ng-repeat="fc in forwardingConstructs" value="{{fc.uuid}}">{{fc.uuid}}</option>
-                  </select>
-                </div>
-                <div class="col col-md-2 col-md-offset-1" >
-                  <label style="color:white;" for="delete">delete</label><br/>
-                  <button type="button" class="btn btn-danger" ng-click="deleteForwardingConstruct()">
-                      <i class="fa fa-times" aria-hidden="true"></i>
-                      <span style="color:white;">{{'MWTN_DELETE' | translate}}</span>
-                  </button>
-                </div>
-                <div class="col col-md-3">
-                  <span class="owl-dark" ng-if="!fcDeletion.error">{{fcDeletion.info}}</span>
-                  <span class="error" ng-if="fcDeletion.error">{{fcDeletion.error}}</span>
-                </div>
-              </div>
-        
-            </div>
-
-            <div ng-repeat="ltp in onfLtps" ng-show="status.ne" uib-accordion-group class="panel-default" is-open="status['ltp' + separator + ltp.getData().uuid]">
-              <uib-accordion-heading>
-                <i class="fa" ng-class="{'fa-chevron-down': status['ltp' + separator + ltp.getData().uuid], 'fa-chevron-right': !status['ltp' + separator + ltp.getData().uuid]}"></i>
-                <span>{{'MWTN_LTP' | translate}}(</span>
-                <b>{{ltp.getLayerProtocols()[0].getItuLabel().toUpperCase()}}</b>
-                <span>): {{ltp.getName()}} (ID: {{ltp.getId()}})</span>
-              </uib-accordion-heading>
-
-              <mwtn-json-viewer network-element="networkElement" data="ltp.getData()" ng-if="status['ltp' + separator + ltp.getData().uuid]"></mwtn-json-viewer>
-            </div>
-          </uib-accordion>
-        </div>
-
-        <div uib-accordion-group class="panel-default" is-open="status.clock" ng-if="clock">
-          <uib-accordion-heading>
-            <i class="fa" ng-class="{'fa-chevron-down': status.clock, 'fa-chevron-right': !status.clock}"></i>
-            <span>{{'MWTN_CLOCK' | translate}}</span>
-            <i class="fa fa-spinner fa-pulse" ng-show="spinner.clock"></i>
-          </uib-accordion-heading>
-
-          <!-- <mwtn-json-viewer network-element="networkElement" data="clock.getData()" ng-if="clock.getData() && !spinner.clock"></mwtn-json-viewer> -->
-          <mwtn-ptp-clock-viewer network-element="networkElement" data="clock.getData()" ng-if="clock.getData() && !spinner.clock"></mwtn-ptp-clock-viewer>
-        </div>
-
-
-      </div>
-
-
-    </uib-accordion>
-  </div>
-  <div class="row" ng-repeat="orderedPac in orderedPacs" ng-if="pacs[orderedPac]">
-    <uib-accordion close-others="oneAtATime">
-      <div ng-class="{ 'col-md-12': pacs[orderedPac].length === 1, 'col-md-6': pacs[orderedPac].length !== 1 }" style="margin-top: 5px;"
-        ng-repeat="pac in pacs[orderedPac]">
-        <div uib-accordion-group class="panel-primary" is-open="status[ [orderedPac, pac['layer-protocol']].join(separator) ]">
-          <uib-accordion-heading>
-            <i class="fa" ng-class="{'fa-chevron-down': status[ [orderedPac, pac['layer-protocol']].join(separator) ], 'fa-chevron-right': !status[ [orderedPac, pac['layer-protocol']].join(separator) ]}"></i>
-            <span>{{ ['mwtn', orderedPac].join('-').replaceAll('-', '_').toUpperCase() | translate }} '{{pac['layer-protocol']}}'</span>
-          </uib-accordion-heading>
-
-          <div ng-repeat="part in parts" uib-accordion-group class="panel-default" is-open="status[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]">
-            <uib-accordion-heading>
-              <i class="fa" ng-class="{'fa-chevron-down': status[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ], 'fa-chevron-right': !status[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]}"></i>
-              <span>{{ ['mwtn', part].join('-').replaceAll('-', '_').toUpperCase() | translate}}</span>
-              <i class="fa fa-spinner fa-pulse" ng-show="spinner[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]"></i>
-            </uib-accordion-heading>
-
-
-            <!-- current-problem-list -->
-            <mwtn-grid network-element="networkElement" data="pac[part].data['current-problem-list']" ng-if="pac[part].data['current-problem-list'] && !spinner[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]"></mwtn-grid>
-            <div ng-if="pac[part].data['current-problem-list'].length === 0">Alarm free ;)</div>
-
-            <!-- PM Current -->
-            <mwtn-json-viewer network-element="networkElement" data="pac[part].data['current-performance-data-list'][0]" 
-                              path="[orderedPac, pac['layer-protocol'], pac[part].id].join(separator)"
-                              ng-if="part === 'current-performance' && pac[part].data && !spinner[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]"></mwtn-json-viewer>
-            <hr ng-if="part === 'current-performance' && pac[part].data && !spinner[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]">
-            <mwtn-json-viewer network-element="networkElement" data="pac[part].data['current-performance-data-list'][1]" 
-                              path="[orderedPac, pac['layer-protocol'], pac[part].id].join(separator)"
-                              ng-if="part === 'current-performance' && pac[part].data && !spinner[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]"></mwtn-json-viewer>
-
-            <!-- PM history -->
-            <mwtn-grid network-element="networkElement" data="pac[part].data['historical-performance-data-list']" 
-                       path="[orderedPac, pac['layer-protocol'], pac[part].id].join(separator)" 
-                       ng-if="pac[part].data['historical-performance-data-list'] && !spinner[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]"></mwtn-grid>
-
-            <!-- else -->
-            <mwtn-json-viewer network-element="networkElement" data="pac[part].data"
-                              path="[orderedPac, pac['layer-protocol'], pac[part].id].join(separator)" 
-                              ng-if="status[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator)] && 
-                                    pac[part].data && 
-                                    part !== 'current-problems' &&
-                                    part !== 'current-performance' &&
-                                    part !== 'historical-performances' &&
-                                    !spinner[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]"></mwtn-json-viewer>
-
-          </div>
-        </div>
-      </div>
-      <hr class="white">
-    </uib-accordion>
-  </div>
-
-</div>
-
-<hr />
-<div class="owl">
-       <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/mwtnPtpClockViewer.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/mwtnPtpClockViewer.tpl.html
deleted file mode 100644 (file)
index 1a6849d..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-<div class="owl">
-  <div class="row text-right">
-    <div class="form-group">
-      <button class="btn btn-default" type="button" clipboard supported="myClipboard.supported" text="myClipboard.getJson()"
-        on-copied="myClipboard.copyToClipboard()" on-error="myClipboard.error(err)">
-        <i class="fa fa-clipboard" aria-hidden="true"></i>
-      </button>
-      <button class="btn btn-default" type="button" ng-if="replace">
-        <i class="fa fa-pencil-square-o pointer" aria-hidden="true" ng-click="openConfigView()" ></i>
-      </button>
-    <div>
-  </div>
-</div>
-<div class="owl">
-
-<!--
-  <div class="row" ng-repeat="(key, value) in viewData track by $index" ng-show="value.value !== undefined">
-    <span class="owl-dark">{{key | json}}</span><br/>
-    <span class="owl-dark">{{value | json}}</span><br/>
-    <span class="owl-dark">{{viewData[key].labelId | translate}}</span>
-    <span class="owl-dark">{{viewData['instance-number'].labelId | translate}}</span>
-  </div> -->
-
-  <!-- instance-number - ->
-  <div class="row">
-    <div class="col col-md-3 text-right" title="{{viewData['instance-number'].description}}">
-      <span class="owl-dark">{{viewData['instance-number'].labelId | translate}}</span>
-    </div>
-    <div class="col col-md-4">
-      <b>{{viewData['instance-number'].value}}</b>
-    </div>
-  </div> -->
-
-  <!-- current-ds -->
-  <div class="row">
-    <div class="column col-md-6 text-left" title="{{viewData['default-ds'].description}}">
-      <b>{{viewData['default-ds'].labelId | translate}}</b>
-      <i class="fa fa-pencil-square-o pointer" aria-hidden="true" ng-click="show(viewData['default-ds'].value)"></i>
-      <br/>
-      <mwtn-json-viewer network-element="networkElement" data="viewData['default-ds'].value" no-buttons="true" ng-if="viewData['default-ds'].value"></mwtn-json-viewer>
-      <hr/>
-    </div>
-
-    <div class="column col-md-6 text-left" title="{{viewData['parent-ds'].description}}">
-      <b>{{viewData['parent-ds'].labelId | translate}}</b>
-      <br/>
-      <mwtn-json-viewer network-element="networkElement" data="viewData['parent-ds'].value" no-buttons="true" ng-if="viewData['parent-ds'].value"></mwtn-json-viewer>
-      <hr/>
-    </div>
-
-    <div class="column col-md-6 text-left" ng-repeat="key in ['current-ds', 'time-properties-ds']" title="{{viewData[key].description}}">
-      <b>{{viewData[key].labelId | translate}}</b>
-      <br/>
-      <mwtn-json-viewer network-element="networkElement" data="viewData[key].value" no-buttons="true" ng-if="viewData[key].value"></mwtn-json-viewer>
-      <hr/>
-    </div>
-  </div>
-
-  <div class="row">
-    <div class="col col-md-12 text-left" >
-        <b>{{'MWTN_PORT_DS_LIST' | translate}}</b>
-        <br/>
-        <mwtn-ptp-ports network-element="networkElement" data="viewData['port-ds-list'].value" path="path"></mwtn-ptp-ports>
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/mwtnPtpPorts.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/mwtnPtpPorts.tpl.html
deleted file mode 100644 (file)
index 2751ffc..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<div class="owl co1ntainer" >
-
-  <div class="row">
-    <div class="col-md-12">
-
-      <div ng-if="info !== false">
-          <span class="owl-dark">{{info}}</span>
-      </div>
-
-      <div ui-grid="gridOptions" 
-           ui-grid-exporter 
-           ui-grid-selection 
-           ui-grid-pinning 
-           ui-grid-resize-columns
-           ui-grid-move-columns 
-           ui-grid-auto-resize
-           class="mwtn-grid"
-          ng-style="getTableHeight()"></div>
-
-    </div>
-  </div>
-
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/ptpDefaultDsConfigView.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/ptpDefaultDsConfigView.tpl.html
deleted file mode 100644 (file)
index cb0e40c..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{'MWTN_PTP_DEFAULT_DS_CONFIGURATION' | translate}}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-       <div class="container" style="width:100%">
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_NETWORKELEMENT' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{data.networkElement}}</b>
-                       </div>
-               </div>
-               <hr/>
-               <div class="row">
-
-                       <div ng-repeat="(key, item) in viewData" ng-if="item.visible === true">
-
-        <!-- text, number, combo -->
-       <div class="col-md-3 text-right radio">{{item.labelId | translate}}</div>
-                               <div ng-class="{'col-md-2':item.unit, 'col-md-3':!item.unit}" class="form-group" ng-if="item.controlType !== 'checkbox' && getType(item.controlType) !== 'array'">
-                                 <input class="form-control" type="{{item.controlType}}" ng-model="item.value" ng-disabled="item['is-read-only'] === true" min="{{item.min}}" max="{{item.max}}"></input> 
-                               </div>
-
-                               <div class="col-md-3 checkbox" ng-if="item.controlType === 'checkbox' "><input type="checkbox" ng-model="item.value" ng-disabled="item['is-read-only'] === true" /></div> 
-                               <div ng-class="{'col-md-2':item.unit, 'col-md-3':!item.unit}" class="form-group" ng-if="getType(item.controlType) === 'array'">
-                                 <select class="form-control" ng-model="item.value"  ng-disabled="item['is-read-only'] === true">
-                                   <option ng-repeat="option in item.controlType track by $index" value="{{option}}">{{option}}</option>
-          </select>
-                               </div>
-                               <div class="col-md-1 radio" ng-if="item.unit">
-          <span class="owl-dark">{{item.unit}}</span>
-        </div>
-
-               </div>
-       </div>
-</div>
-<div class="modal-footer">
-    <div class="{{applied.class}}", ng-show="applied">{{applied.text}}</div>
-               <button class="btn btn-primary" type="button" ng-click="ok()">
-           <span style="color: white;">{{'MWTN_APPLY' | translate}}</span>
-           <i class="pull-right fa fa-spinner fa-pulse" ng-show="processing"></i>
-       </button>
-       <button class="btn btn-warning" type="button" ng-click="cancel()">{{'MWTN_CLOSE' | translate}}</button>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/ptpPortConfigView.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/mwtnBrowser-module/src/main/resources/mwtnBrowser/templates/ptpPortConfigView.tpl.html
deleted file mode 100644 (file)
index 5d7d9df..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{'MWTN_PTP_PORT_CONFIGURATION' | translate}}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-       <div class="container" style="width:100%">
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_NETWORKELEMENT' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{data.networkElement}}</b>
-                       </div>
-               </div>
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_PORT_IDENTITY' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{data.value['port-identity']['clock-identity']}}#{{data.value['port-identity']['port-number']}}</b>
-                       </div>
-               </div>
-               <hr/>
-               <div class="row">
-
-                       <div ng-repeat="(key, item) in viewData" ng-if="item.visible === true">
-
-        <!-- text, number, combo -->
-       <div class="col-md-3 text-right radio">{{item.labelId | translate}}</div>
-                               <div ng-class="{'col-md-2':item.unit, 'col-md-3':!item.unit}" class="form-group" ng-if="item.controlType !== 'checkbox' && getType(item.controlType) !== 'array'">
-                                 <input class="form-control" type="{{item.controlType}}" ng-model="item.value" ng-disabled="item['is-read-only'] === true" min="{{item.min}}" max="{{item.max}}"></input> 
-                               </div>
-
-                               <div class="col-md-3 checkbox" ng-if="item.controlType === 'checkbox'"><input type="checkbox" ng-model="item.value" /></div> 
-                               <div ng-class="{'col-md-2':item.unit, 'col-md-3':!item.unit}" class="form-group" ng-if="getType(item.controlType) === 'array'">
-                                 <select class="form-control" ng-model="item.value"  ng-disabled="item['is-read-only'] === true">
-                                   <option ng-repeat="option in item.controlType track by $index" value="{{option}}">{{option}}</option>
-          </select>
-                               </div>
-                               <div class="col-md-1 radio" ng-if="item.unit">
-          <span class="owl-dark">{{item.unit}}</span>
-        </div>
-
-               </div>
-       </div>
-</div>
-<div class="modal-footer">
-    <div class="{{applied.class}}", ng-show="applied">{{applied.text}}</div>
-               <button class="btn btn-primary" type="button" ng-click="ok()">
-           <span style="color: white;">{{'MWTN_APPLY' | translate}}</span>
-           <i class="pull-right fa fa-spinner fa-pulse" ng-show="processing"></i>
-       </button>
-       <button class="btn btn-warning" type="button" ng-click="cancel()">{{'MWTN_CLOSE' | translate}}</button>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnBrowser/pom.xml
deleted file mode 100644 (file)
index 7584afd..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <artifactId>mwtnBrowser</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>pom</packaging>
-
-    <parent>
-       <artifactId>mwtn</artifactId>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <version>0.5.1-SNAPSHOT</version>
-       <relativePath>..</relativePath>
-    </parent>
-
-  <modules>
-    <module>mwtnBrowser-module</module>
-    <module>mwtnBrowser-bundle</module>
-  </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-bundle/pom.xml
deleted file mode 100644 (file)
index b7993d3..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnClosedLoop</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnClosedLoop-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
-
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnClosedLoop-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnClosedLoop-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>  -->
-
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 8187f7f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnClosedLoop"/>
-        <property name="url" value="/src/app/mwtnClosedLoop"/>
-        <property name="directory" value="/mwtnClosedLoop"/>
-        <property name="requireJs" value="app/mwtnClosedLoop/mwtnClosedLoop.module"/>
-        <property name="angularJs" value="app.mwtnClosedLoop"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnClosedLoop/mwtnClosedLoop-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/pom.xml
deleted file mode 100644 (file)
index aadd37c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-  xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>mwtnClosedLoop</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-    <relativePath>..</relativePath>
-  </parent>
-  <artifactId>mwtnClosedLoop-module</artifactId>
-  <name>${prefix} ${project.artifactId}</name>
-  <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/images/mwtnClosedLoop.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/images/mwtnClosedLoop.png
deleted file mode 100755 (executable)
index b4ed3d5..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/images/mwtnClosedLoop.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop-custom.css
deleted file mode 100644 (file)
index 6e9a480..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/**
- *  Add your application related css here
- */
-.mwtnClosedLoopGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.mwtnClosedLoopGrid span {
-  color: #393939;
-}
-
-.mwtnClosedLoopGrid span.mismatch {
-  font-weight: bold;
-  color: #428bca;      
-}
-
-.mwtnClosedLoopGrid .green {
-  color: darkgreen;
-}
-.mwtnClosedLoopGrid .green span  {
-  color: darkgreen;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.controller.js
deleted file mode 100644 (file)
index 99ad48b..0000000
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnClosedLoop/mwtnClosedLoop.module','app/mwtnClosedLoop/mwtnClosedLoop.services','app/mwtnCommons/mwtnCommons.services'], function(mwtnClosedLoopApp) {
-
-  mwtnClosedLoopApp.register.controller('mwtnClosedLoopCtrl', ['$scope', '$rootScope', 'uiGridConstants',  '$mwtnClosedLoop', '$mwtnCommons', '$mwtnLog', 'OnfNetworkElement', 'MicrowavePhysicalSection',
-                                                               function($scope, $rootScope, uiGridConstants, $mwtnClosedLoop, $mwtnCommons, $mwtnLog, OnfNetworkElement, MicrowavePhysicalSection) {
-
-    var COMPONENT = 'mwtnClosedLoopCtrl';
-    $mwtnLog.info({component: COMPONENT, message: 'Started!'});
-
-    $rootScope.section_logo = 'src/app/mwtnClosedLoop/images/mwtnClosedLoop.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-    $scope.timerOptionList = [
-        {id : '5seconds', name : "5 seconds"},
-        {id : '30seconds', name : "30 seconds"},
-        {id : '1minute', name : "One minute"},
-        {id : '2minutes', name : "Two minutes"},
-        {id : '30minutes', name : "30 minutes"},
-        {id : '1hour', name : "One hour"}];
-
-    var clearMessages = function() {
-      $scope.info = undefined;
-      $scope.error = undefined;
-    };
-    
-    $scope.executeNow = function() {
-        clearMessages();
-        $mwtnCommons.executeClosedLoopAutomation().then(function(message){
-          $mwtnLog.info({component: 'mwtnClosedLoopCtrl', message: 'Closed loop automation was started'});
-          $scope.info = 'Closed loop automation was executed: ' + new Date().toISOString().toHumanReadableTimeFormat();
-          $scope.refresh();
-        }, function(error){
-          $mwtnLog.error({component: 'mwtnClosedLoopCtrl', message: 'Cannot execute Closed Loop Automation'});
-          $scope.error = 'Cannot execute Closed Loop Automation';
-          $scope.refresh();
-        });
-    };
-
-    $scope.save = function() {
-        clearMessages();
-        $mwtnCommons.saveClosedLoopAutomation($scope.timerEnabled, $scope.timerOption).then(function(message){
-          $mwtnLog.info({component: 'mwtnClosedLoopCtrl', message: 'Timer was changed'});
-          $scope.info = 'Timer was changed';
-          $scope.refresh();
-        }, function(error){
-          $mwtnLog.error({component: 'mwtnClosedLoopCtrl', message: 'Cannot save timer'});
-          $scope.error = 'Cannot save timer';
-          $scope.refresh();
-        });
-    };
-
-    $scope.read = function() {
-        clearMessages();
-        $mwtnCommons.readClosedLoopAutomation().then(function(message){
-           $scope.timerEnabled = message.data.output.enabled;
-           $scope.timerOption = message.data.output.option;
-           $scope.refresh();
-        }, function(error){
-          $mwtnLog.error({component: 'mwtnClosedLoopCtrl', message: 'Cannot read configuration data from the server'});
-          $scope.error = 'Cannot read configuration data from the server';
-          $scope.refresh();
-        });
-     };
-
-     $scope.read();
-
-     var updateAirInterface = function(spec, data) {
-       if (data) {
-         var radioSignalID = data.airInterfaceConfiguration.radioSignalID;      
-         $scope.gridOptions.data.map(function(row){
-           if (row.name === spec.nodeId && row.radioSignalID === radioSignalID) {
-             row.actualAirInterfaceName = data.airInterfaceConfiguration.airInterfaceName;
-           }
-         });
-       } else {
-         $scope.gridOptions.data.map(function(row){
-           if (row.nodeId === spec.nodeId) {
-             row.actualAirInterfaceName = '?';
-           }
-         });
-       }
-     };
-
-     $scope.processing = false;
-     $scope.refresh = function() {
-       $scope.processing = true;
-       $mwtnClosedLoop.refresh().then(function(success){
-         $scope.processing = false;
-         $scope.gridOptions.data = success.airInterfaces;
-         success.actualNodes.map(function(actualNode){
-           if (actualNode.connectionStatus !== 'connected') {
-             return;
-           }
-           var revision = '2016-09-01';
-           $mwtnClosedLoop.getActualNetworkElement(actualNode.id, revision).then(function(onfNe){
-             var aOnfNe = new OnfNetworkElement(onfNe.NetworkElement);
-             aOnfNe.getLTPMwpsList().map(function(ltp){
-               var spec = {
-                 nodeId: actualNode.id,
-                 revision: revision,
-                 pacId: 'airinterface',
-                 layerProtocolId: ltp._lpList[0].uuid,
-                 partId: 'Configuration'
-               };
-               $mwtnClosedLoop.getPacParts(spec).then(function(success){
-                 updateAirInterface(spec, success);
-               }, function(error){
-                 updateAirInterface(spec, error);
-               });
-             });
-           }, function(error){
-             // do nothing
-           });
-         });
-       }, function(error){
-         $scope.processing = false;
-         $scope.gridOptions.data = [];
-       });
-     };
-
-     $scope.highlightFilteredHeader = $mwtnClosedLoop.highlightFilteredHeader;
-
-     var requiredNesConnectionStatusCellTemplate = [
-        '<div class="ui-grid-cell-contents" ng-class="{ \'green\': grid.getCellValue(row, col) === \'connected\'}"}>',
-        '  <i ng-show="grid.getCellValue(row, col) === \'connected\'" class="fa fa-link" aria-hidden="true"></i>',
-        '  <span>{{grid.getCellValue(row, col)}}</span>',
-        '</div>'].join('');
-
-     // ng-class="{\'mismatch\': {{row.entity.plannedAirInterfaceName}}      !== grid.getCellValue(row, col) }"
-     var actualAirinterfaceNameTemplate = [
-      '<div class="ui-grid-cell-contents">',
-      '  <span>{{grid.getCellValue(row, col)}}</span>',
-      '</div>'].join('');
-   
-     $scope.gridOptions = JSON.parse(JSON.stringify($mwtnClosedLoop.gridOptions));
-     $scope.gridOptions.columnDefs = [
-      { field: 'id', type: 'number', displayName: 'Id',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true , sort: {
-        direction: uiGridConstants.ASC,
-        ignoreSort: false,
-        priority: 0
-       }},
-      { field: 'name', type: 'string', displayName: 'Name',  headerCellClass: $scope.highlightFilteredHeader, width : 140 },
-      { field: 'connectionStatus', type: 'string', displayName: 'Connection status',  headerCellClass: $scope.highlightFilteredHeader, width : 150, cellTemplate: requiredNesConnectionStatusCellTemplate },
-      { field: 'radioSignalID', type: 'string', displayName: 'Radio signal id',  headerCellClass: $scope.highlightFilteredHeader, width : 130 },
-      { field: 'plannedAirInterfaceName', type: 'string', displayName: 'Planned airinterface name',  headerCellClass: $scope.highlightFilteredHeader, width : 200 },
-      { field: 'actualAirInterfaceName',  type: 'string', displayName: 'Actual airinterface name',  headerCellClass: $scope.highlightFilteredHeader, width : 250, cellTemplate: actualAirinterfaceNameTemplate},
-      ];
-
-     $scope.refresh();
-
-  }]);
-
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.module.js
deleted file mode 100644 (file)
index cec6f69..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 'app/routingConfig', 'app/core/core.services', 'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var mwtnClosedLoopApp = angular.module('app.mwtnClosedLoop', ['ui.grid', 'ui.bootstrap', 'app.core', 'ui.router.state','config']);
-
-  mwtnClosedLoopApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnClosedLoopApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/mwtnClosedLoop/mwtnClosedLoop.controller');
-    NavHelperProvider.addToMenu('mwtnClosedLoop', {
-     "link" : "#/mwtnClosedLoop",
-     "active" : "main.mwtnClosedLoop",
-     "title" : "MWTN Closed Loop Automation",
-     "icon" : "fa fa-circle-o",  // Add navigation icon css class here
-     "page" : {
-        "title" : "MWTN Closed Loop Automation",
-        "description" : "mwtnClosedLoop"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnClosedLoop', {
-        url: 'mwtnClosedLoop',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/mwtnClosedLoop/mwtnClosedLoop.tpl.html',
-                controller: 'mwtnClosedLoopCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnClosedLoopApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.services.js
deleted file mode 100644 (file)
index 96c8c3e..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnClosedLoop/mwtnClosedLoop.module'],function(mwtnClosedLoopApp) {
-
-
-  mwtnClosedLoopApp.register.factory('$mwtnClosedLoop', function($q, $mwtnCommons, $mwtnLog) {
-    var service = {};
-
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.highlightFilteredHeader = $mwtnCommons.highlightFilteredHeader;
-    service.getActualNetworkElement = $mwtnCommons.getActualNetworkElement;
-    service.getPacParts = $mwtnCommons.getPacParts;
-    
-
-    service.refresh = function() {
-      var deferred = $q.defer();
-      $mwtnCommons.getRequiredNetworkElements(true).then(function(pNes){
-        var neIds = pNes.map(function(pNe){
-          pNe._source.connectionStatus = 'disconnected';
-          return pNe._id;
-        });
-        $mwtnCommons.getMountPoints(). then(function(mountpoints){
-          var actualNodes = mountpoints.map(function(mountpoint){
-            var pIndex = neIds.indexOf(mountpoint['node-id']);
-            if (pIndex > -1) {
-              pNes[pIndex]._source.connectionStatus = mountpoint['netconf-node-topology:connection-status']; 
-            }
-            return {
-              id: mountpoint['node-id'],
-              connectionStatus: mountpoint['netconf-node-topology:connection-status']
-            };
-          });
-          var airInterfaces = [];
-          pNes.map(function(hit){
-            hit._source.MW_AirInterface_Pac.map(function(airinterface){
-              return airinterface.airInterfaceConfiguration;
-            }).map(function(airinterface){
-              airInterfaces.push({
-                id: $mwtnCommons.getNodeIntIdFromNodeId(hit._source.nodeId),
-                name: hit._source.nodeId,
-                connectionStatus: hit._source.connectionStatus,
-                radioSignalID: airinterface.airInterfaceConfiguration.radioSignalID,
-                plannedAirInterfaceName: airinterface.airInterfaceConfiguration.airInterfaceName,
-                actualAirInterfaceName: '?'
-              });
-            });
-          });
-          
-          airInterfaces.sort(function(a, b){
-            if(a.radioSignalID < b.radioSignalID) return -1;
-            if(a.radioSignalID > b.radioSignalID) return 1;
-            return 0;
-          });
-          deferred.resolve({airInterfaces: airInterfaces, actualNodes: actualNodes});
-        }, function(error){
-          deferred.reject([]);
-        });
-        
-      }, function(error){
-        deferred.reject([]);
-      });
-      return deferred.promise;
-    };
-    
-    return service;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/mwtnClosedLoop-module/src/main/resources/mwtnClosedLoop/mwtnClosedLoop.tpl.html
deleted file mode 100644 (file)
index 62a2aca..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<ht-header help-link='sdnr/mwtn/mwtnClosedLoop/0.4.0/README.md'></ht-header>
-<div class="owl container">
-       <div class="row">
-               <div class="col-md-2 text-right">
-                       <span class="white">{{'Timer ON/OFF' | translate}}</span>
-               </div>
-               <div class="col-md-4">
-                       <div class="form-group">
-                               <input type="checkbox" ng-model="timerEnabled">
-                       </div>
-               </div>
-       </div>
-
-       <div class="row">
-               <div class="col-md-2 text-right">
-                       <span class="white">{{'Timer Option' | translate}}</span>
-               </div>
-               <div class="col-md-4">
-                       <div class="form-group">
-                               <select class="form-control" ng-model="timerOption" ng-disabled="!timerEnabled">
-                                       <option ng-repeat="timerOption in timerOptionList" value="{{timerOption.id}}">{{timerOption.name}}</option>
-                               </select>
-                       </div>
-               </div>
-
-               <div class="col-md-6 text-right">
-                       <div class="form-group">
-                               <button type="button" class="btn btn-primary" ng-click="save()">{{'Save' | translate}}</button>
-                       </div>
-               </div>
-       </div>
-       <div class="row">
-               <hr />
-               <div class="col-md-2">
-                       <div class="form-group">
-                               <button type="button" class="btn btn-primary" ng-click="executeNow()">{{'Execute now' | translate}}</button>
-                       </div>
-               </div>
-               <div class="col-md-8">
-                       <div class="form-group">
-                               <span class="white" ng-show="info">{{ info }}</span> 
-                               <span ng-show="error" class="mwtnError">{{ error }}</span>
-                       </div>
-               </div>
-               <div clase="col-md-2 text-right">
-                       <button class="btn btn-primary pull-right" ng-click="refresh()">
-                               <i class="fa fa-refresh" ng-class="{'fa-spin':processing == true}" aria-hidden="true"></i> 
-                               <span>{{'MWTN_REFRESH' | translate}}</span>
-                       </button>
-               </div>
-       </div>
-       <div class="row">
-               <div clase="col-md-12">
-                       <div id="mwtnClosedLoopGrid" ui-grid="gridOptions" ui-grid-exporter
-                               ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-                               ui-grid-move-columns class="mwtnClosedLoopGrid"></div>
-               </div>
-       </div>
-
-</div>
-<hr />
-<div class="owl">
-       <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnClosedLoop/pom.xml
deleted file mode 100644 (file)
index fc75d74..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>mwtnClosedLoop</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>mwtnClosedLoop-module</module>
-  <module>mwtnClosedLoop-bundle</module>
- </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-bundle/pom.xml
deleted file mode 100644 (file)
index e9f85e0..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnCommons</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnCommons-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnCommons-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnCommons-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 5a693e1..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-       <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-       <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-       
-       <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-               <property name="httpService" ref="httpService"/>
-               <property name="loader" ref="loader"/>
-               <property name="moduleName" value="mwtnCommons"/>
-               <property name="url" value="/src/app/mwtnCommons"/>
-               <property name="directory" value="/mwtnCommons"/>
-               <property name="requireJs" value="app/mwtnCommons/mwtnCommons.module"/>
-               <property name="angularJs" value="app.mwtnCommons"/>
-               <property name="cssDependencies">
-                       <list>
-                               <value>src/app/mwtnCommons/mwtnCommons-custom.css</value>
-                               <value>src/app/mwtnCommons/bower_components/font-awesome/css/font-awesome.css</value>
-                               <value>src/app/mwtnCommons/bower_components/angular-ui-grid/ui-grid.min.css</value>
-                               <value>src/app/mwtnCommons/bower_components/json-formatter/dist/json-formatter.min.css</value>
-<!--                           <value>src/app/mwtnCommons/bower_components/angular-bootstrap/ui-bootstrap-csp.css</value>  -->
-                       </list>
-               </property>
-       </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/pom.xml
deleted file mode 100644 (file)
index b031831..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-  xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>mwtnCommons</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-  </parent>
-  <artifactId>mwtnCommons-module</artifactId>
-  <name>${prefix} ${project.artifactId}</name>
-  <packaging>jar</packaging>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence
-          on the Maven build itself. -->
-        <plugin>
-          <groupId>org.eclipse.m2e</groupId>
-          <artifactId>lifecycle-mapping</artifactId>
-          <version>1.0.0</version>
-          <configuration>
-            <lifecycleMappingMetadata>
-              <pluginExecutions>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>org.codehaus.mojo</groupId>
-                    <artifactId>exec-maven-plugin</artifactId>
-                    <versionRange>[1.0.0,)</versionRange>
-                    <goals>
-                      <goal>exec</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <execute/>
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>exec-maven-plugin</artifactId>
-        <version>1.6.0</version>
-        <executions>
-          <execution>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>exec</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <executable>./bowerInstall.sh</executable>
-          <arguments>
-            <argument>install</argument>
-          </arguments>
-          <workingDirectory>${basedir}/src/main/resources/mwtnCommons/</workingDirectory>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/README.md b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/README.md
deleted file mode 100644 (file)
index 3c25491..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# MTWN Comments
-
-This component offers services for MTWN specific ODL DLUX application development.
-It should ensure, that common functionality of ODL DLUX applications is implemented and tested only once, but reused by several applications.
-
-All MWTN ODL DLUX application should have a dependency to 'mtwnCommons'.
-However, it is a case by case decision by developers, whether such dependency is needed for their application of not.
-
-Common functions are:
-* A centralized service ($mwtnLog), which stores application logs in a centralized database. It should simplify failure analysis and debugging.
-* Communication with the RestConf API of OpenDaylight.
-* WebSocket subscription for notification handling
-* Implementation of common object classes as defined by the Microwave Information model (e.g. NetConfServer, NetworkElement, LogicalTerminationPoint, LayerProtocol, MW_AirInterface_Pac, MW_PureEthernetStructure_Pac, MW_EthernetContainer_Pac)
-* Enhanced [angular.js](https://angularjs.org/) features for web development, which are not native in [ODL DLUX](https://wiki.opendaylight.org/view/OpenDaylight_dlux:Main).
-
-## Installation
-
-Additional [angular.js](https://angularjs.org/) feature and implementations are listed in the file [bower.json](./bower.json).
-
-```
-bower install
-```
-Please see [bower.io](https://bower.io/) for further information about bower.
-
-## angular-chart.js
-
-* Open app/mwtnCommons/bower_components/angular-chart.js/dist/angular-chart
-* Locate 
-   else if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module.
-    define(['angular', 'chart'], factory);
-  }
-
-  * change  define(['angular', 'chart'], factory); to  define(['angular', 'app/mwtnCommons/bower_components/chart.js/dist/Chart'], factory);
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/bower.json b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/bower.json
deleted file mode 100644 (file)
index 77aed94..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "name": "mwtn-commons",
-  "homepage": "https://github.com/OpenNetworkingFoundation/CENTENNIAL/tree/master/03-WTP-PoC/code",
-  "authors": [
-    "Martin Skorupski <martin.skorupski@highstreet-technologies.com>"
-  ],
-  "description": "bower components for microwave transport network specific opendaylight dlux applications",
-  "main": "",
-  "version": "0.5.1-SNAPSHOT",
-  "dependencies": {
-    "bootstrap": "~3.3.7",
-    "font-awesome": "~4.6.3",
-    "angular-ui-grid": "3.2.9",
-    "angular-clipboard": "~1.5.0",
-    "angular-chart.js": "~1.1.1",
-    "chart.js": "^2.5.0",
-    "lodash": "^4.17.4",
-    "json-formatter": "^0.6.0",
-    "cytoscape": "^3.1.1"
-  },
-  "keywords": [
-    "Microwave",
-    "Millimeterwave",
-    "MWTN",
-    "ONF",
-    "SDN",
-    "Transport",
-    "Wireless",
-    "xHaul"
-  ],
-  "license": "MIT",
-  "ignore": [
-    "**/.*",
-    "node_modules",
-    "bower_components",
-    "test",
-    "tests"
-  ]
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/bowerInstall.sh b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/bowerInstall.sh
deleted file mode 100755 (executable)
index 054cf68..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-echo "---------------------------------"
-echo "Install bower and adapt to ODL UX"
-echo "---------------------------------"
-echo "Step1: Install bower"
-bower install -q
-
-echo "Step2: Install Bower patches to adapt to ODL-DLUX"
-
-FileToPatch="angular-chart.js"
-FileToPatchDestination="bower_components/angular-chart.js/dist"
-FileToPatchOrigination="bower_components_patches"
-
-echo "- File to handle: $FileToPatch"
-mv $FileToPatchDestination/$FileToPatch $FileToPatchDestination/$FileToPatch.orig
-cp $FileToPatchOrigination/$FileToPatch.patch $FileToPatchDestination
-mv $FileToPatchDestination/$FileToPatch.patch $FileToPatchDestination/$FileToPatch
-
-echo "Install bower script ends"
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/bower_components_patches/angular-chart.js.patch b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/bower_components_patches/angular-chart.js.patch
deleted file mode 100644 (file)
index 23a4b36..0000000
+++ /dev/null
@@ -1,400 +0,0 @@
-/*!
- * angular-chart.js - An angular.js wrapper for Chart.js
- * http://jtblin.github.io/angular-chart.js/
- * Version: 1.1.1
- *
- * Copyright 2016 Jerome Touffe-Blin
- * Released under the BSD-2-Clause license
- * https://github.com/jtblin/angular-chart.js/blob/master/LICENSE
- */
-(function (factory) {
-  'use strict';
-  if (typeof exports === 'object') {
-    // Node/CommonJS
-    module.exports = factory(
-      typeof angular !== 'undefined' ? angular : require('angular'),
-      typeof Chart !== 'undefined' ? Chart : require('chart.js'));
-  }  else if (typeof define === 'function' && define.amd) {
-    // AMD. Register as an anonymous module.
-    define(['angular', 'app/mwtnCommons/bower_components/chart.js/dist/Chart'], factory);
-  } else {
-    // Browser globals
-    if (typeof angular === 'undefined') {
-        throw new Error('AngularJS framework needs to be included, see https://angularjs.org/');
-    } else if (typeof Chart === 'undefined') {
-      throw new Error('Chart.js library needs to be included, see http://jtblin.github.io/angular-chart.js/');
-    }
-    factory(angular, Chart);
-  }
-}(function (angular, Chart) {
-  'use strict';
-
-  Chart.defaults.global.multiTooltipTemplate = '<%if (datasetLabel){%><%=datasetLabel%>: <%}%><%= value %>';
-  Chart.defaults.global.tooltips.mode = 'label';
-  Chart.defaults.global.elements.line.borderWidth = 2;
-  Chart.defaults.global.elements.rectangle.borderWidth = 2;
-  Chart.defaults.global.legend.display = false;
-  Chart.defaults.global.colors = [
-    '#97BBCD', // blue
-    '#DCDCDC', // light grey
-    '#F7464A', // red
-    '#46BFBD', // green
-    '#FDB45C', // yellow
-    '#949FB1', // grey
-    '#4D5360'  // dark grey
-  ];
-
-  var useExcanvas = typeof window.G_vmlCanvasManager === 'object' &&
-    window.G_vmlCanvasManager !== null &&
-    typeof window.G_vmlCanvasManager.initElement === 'function';
-
-  if (useExcanvas) Chart.defaults.global.animation = false;
-
-  return angular.module('chart.js', [])
-    .provider('ChartJs', ChartJsProvider)
-    .factory('ChartJsFactory', ['ChartJs', '$timeout', ChartJsFactory])
-    .directive('chartBase', ['ChartJsFactory', function (ChartJsFactory) { return new ChartJsFactory(); }])
-    .directive('chartLine', ['ChartJsFactory', function (ChartJsFactory) { return new ChartJsFactory('line'); }])
-    .directive('chartBar', ['ChartJsFactory', function (ChartJsFactory) { return new ChartJsFactory('bar'); }])
-    .directive('chartHorizontalBar', ['ChartJsFactory', function (ChartJsFactory) { return new ChartJsFactory('horizontalBar'); }])
-    .directive('chartRadar', ['ChartJsFactory', function (ChartJsFactory) { return new ChartJsFactory('radar'); }])
-    .directive('chartDoughnut', ['ChartJsFactory', function (ChartJsFactory) { return new ChartJsFactory('doughnut'); }])
-    .directive('chartPie', ['ChartJsFactory', function (ChartJsFactory) { return new ChartJsFactory('pie'); }])
-    .directive('chartPolarArea', ['ChartJsFactory', function (ChartJsFactory) { return new ChartJsFactory('polarArea'); }])
-    .directive('chartBubble', ['ChartJsFactory', function (ChartJsFactory) { return new ChartJsFactory('bubble'); }])
-    .name;
-
-  /**
-   * Wrapper for chart.js
-   * Allows configuring chart js using the provider
-   *
-   * angular.module('myModule', ['chart.js']).config(function(ChartJsProvider) {
-   *   ChartJsProvider.setOptions({ responsive: false });
-   *   ChartJsProvider.setOptions('Line', { responsive: true });
-   * })))
-   */
-  function ChartJsProvider () {
-    var options = { responsive: true };
-    var ChartJs = {
-      Chart: Chart,
-      getOptions: function (type) {
-        var typeOptions = type && options[type] || {};
-        return angular.extend({}, options, typeOptions);
-      }
-    };
-
-    /**
-     * Allow to set global options during configuration
-     */
-    this.setOptions = function (type, customOptions) {
-      // If no type was specified set option for the global object
-      if (! customOptions) {
-        customOptions = type;
-        options = angular.merge(options, customOptions);
-      } else {
-        // Set options for the specific chart
-        options[type] = angular.merge(options[type] || {}, customOptions);
-      }
-
-      angular.merge(ChartJs.Chart.defaults, options);
-    };
-
-    this.$get = function () {
-      return ChartJs;
-    };
-  }
-
-  function ChartJsFactory (ChartJs, $timeout) {
-    return function chart (type) {
-      return {
-        restrict: 'CA',
-        scope: {
-          chartGetColor: '=?',
-          chartType: '=',
-          chartData: '=?',
-          chartLabels: '=?',
-          chartOptions: '=?',
-          chartSeries: '=?',
-          chartColors: '=?',
-          chartClick: '=?',
-          chartHover: '=?',
-          chartDatasetOverride: '=?'
-        },
-        link: function (scope, elem/*, attrs */) {
-          if (useExcanvas) window.G_vmlCanvasManager.initElement(elem[0]);
-
-          // Order of setting "watch" matter
-          scope.$watch('chartData', watchData, true);
-          scope.$watch('chartSeries', watchOther, true);
-          scope.$watch('chartLabels', watchOther, true);
-          scope.$watch('chartOptions', watchOther, true);
-          scope.$watch('chartColors', watchOther, true);
-          scope.$watch('chartDatasetOverride', watchOther, true);
-          scope.$watch('chartType', watchType, false);
-
-          scope.$on('$destroy', function () {
-            destroyChart(scope);
-          });
-
-          scope.$on('$resize', function () {
-            if (scope.chart) scope.chart.resize();
-          });
-
-          function watchData (newVal, oldVal) {
-            if (! newVal || ! newVal.length || (Array.isArray(newVal[0]) && ! newVal[0].length)) {
-              destroyChart(scope);
-              return;
-            }
-            var chartType = type || scope.chartType;
-            if (! chartType) return;
-
-            if (scope.chart && canUpdateChart(newVal, oldVal))
-              return updateChart(newVal, scope);
-
-            createChart(chartType, scope, elem);
-          }
-
-          function watchOther (newVal, oldVal) {
-            if (isEmpty(newVal)) return;
-            if (angular.equals(newVal, oldVal)) return;
-            var chartType = type || scope.chartType;
-            if (! chartType) return;
-
-            // chart.update() doesn't work for series and labels
-            // so we have to re-create the chart entirely
-            createChart(chartType, scope, elem);
-          }
-
-          function watchType (newVal, oldVal) {
-            if (isEmpty(newVal)) return;
-            if (angular.equals(newVal, oldVal)) return;
-            createChart(newVal, scope, elem);
-          }
-        }
-      };
-    };
-
-    function createChart (type, scope, elem) {
-      var options = getChartOptions(type, scope);
-      if (! hasData(scope) || ! canDisplay(type, scope, elem, options)) return;
-
-      var cvs = elem[0];
-      var ctx = cvs.getContext('2d');
-
-      scope.chartGetColor = getChartColorFn(scope);
-      var data = getChartData(type, scope);
-      // Destroy old chart if it exists to avoid ghost charts issue
-      // https://github.com/jtblin/angular-chart.js/issues/187
-      destroyChart(scope);
-
-      scope.chart = new ChartJs.Chart(ctx, {
-        type: type,
-        data: data,
-        options: options
-      });
-      scope.$emit('chart-create', scope.chart);
-      bindEvents(cvs, scope);
-    }
-
-    function canUpdateChart (newVal, oldVal) {
-      if (newVal && oldVal && newVal.length && oldVal.length) {
-        return Array.isArray(newVal[0]) ?
-        newVal.length === oldVal.length && newVal.every(function (element, index) {
-          return element.length === oldVal[index].length; }) :
-          oldVal.reduce(sum, 0) > 0 ? newVal.length === oldVal.length : false;
-      }
-      return false;
-    }
-
-    function sum (carry, val) {
-      return carry + val;
-    }
-
-    function getEventHandler (scope, action, triggerOnlyOnChange) {
-      var lastState = {
-        point: void 0,
-        points: void 0
-      };
-      return function (evt) {
-        var atEvent = scope.chart.getElementAtEvent || scope.chart.getPointAtEvent;
-        var atEvents = scope.chart.getElementsAtEvent || scope.chart.getPointsAtEvent;
-        if (atEvents) {
-          var points = atEvents.call(scope.chart, evt);
-          var point = atEvent ? atEvent.call(scope.chart, evt)[0] : void 0;
-
-          if (triggerOnlyOnChange === false ||
-            (! angular.equals(lastState.points, points) && ! angular.equals(lastState.point, point))
-          ) {
-            lastState.point = point;
-            lastState.points = points;
-            scope[action](points, evt, point);
-          }
-        }
-      };
-    }
-
-    function getColors (type, scope) {
-      var colors = angular.copy(scope.chartColors ||
-        ChartJs.getOptions(type).chartColors ||
-        Chart.defaults.global.colors
-      );
-      var notEnoughColors = colors.length < scope.chartData.length;
-      while (colors.length < scope.chartData.length) {
-        colors.push(scope.chartGetColor());
-      }
-      // mutate colors in this case as we don't want
-      // the colors to change on each refresh
-      if (notEnoughColors) scope.chartColors = colors;
-      return colors.map(convertColor);
-    }
-
-    function convertColor (color) {
-      // Allows RGB and RGBA colors to be input as a string: e.g.: "rgb(159,204,0)", "rgba(159,204,0, 0.5)"
-      if (typeof color === 'string' && color[0] === 'r') return getColor(rgbStringToRgb(color));
-      // Allows hex colors to be input as a string.
-      if (typeof color === 'string' && color[0] === '#') return getColor(hexToRgb(color.substr(1)));
-      // Allows colors to be input as an object, bypassing getColor() entirely
-      if (typeof color === 'object' && color !== null) return color;
-      return getRandomColor();
-    }
-
-    function getRandomColor () {
-      var color = [getRandomInt(0, 255), getRandomInt(0, 255), getRandomInt(0, 255)];
-      return getColor(color);
-    }
-
-    function getColor (color) {
-      var alpha = color[3] || 1;
-      color = color.slice(0, 3);
-      return {
-        backgroundColor: rgba(color, 0.2),
-        pointBackgroundColor: rgba(color, alpha),
-        pointHoverBackgroundColor: rgba(color, 0.8),
-        borderColor: rgba(color, alpha),
-        pointBorderColor: '#fff',
-        pointHoverBorderColor: rgba(color, alpha)
-      };
-    }
-
-    function getRandomInt (min, max) {
-      return Math.floor(Math.random() * (max - min + 1)) + min;
-    }
-
-    function rgba (color, alpha) {
-      // rgba not supported by IE8
-      return useExcanvas ? 'rgb(' + color.join(',') + ')' : 'rgba(' + color.concat(alpha).join(',') + ')';
-    }
-
-    // Credit: http://stackoverflow.com/a/11508164/1190235
-    function hexToRgb (hex) {
-      var bigint = parseInt(hex, 16),
-        r = (bigint >> 16) & 255,
-        g = (bigint >> 8) & 255,
-        b = bigint & 255;
-
-      return [r, g, b];
-    }
-
-    function rgbStringToRgb (color) {
-      var match = color.match(/^rgba?\(([\d,.]+)\)$/);
-      if (! match) throw new Error('Cannot parse rgb value');
-      color = match[1].split(',');
-      return color.map(Number);
-    }
-
-    function hasData (scope) {
-      return scope.chartData && scope.chartData.length;
-    }
-
-    function getChartColorFn (scope) {
-      return typeof scope.chartGetColor === 'function' ? scope.chartGetColor : getRandomColor;
-    }
-
-    function getChartData (type, scope) {
-      var colors = getColors(type, scope);
-      return Array.isArray(scope.chartData[0]) ?
-        getDataSets(scope.chartLabels, scope.chartData, scope.chartSeries || [], colors, scope.chartDatasetOverride) :
-        getData(scope.chartLabels, scope.chartData, colors, scope.chartDatasetOverride);
-    }
-
-    function getDataSets (labels, data, series, colors, datasetOverride) {
-      return {
-        labels: labels,
-        datasets: data.map(function (item, i) {
-          var dataset = angular.extend({}, colors[i], {
-            label: series[i],
-            data: item
-          });
-          if (datasetOverride && datasetOverride.length >= i) {
-            angular.merge(dataset, datasetOverride[i]);
-          }
-          return dataset;
-        })
-      };
-    }
-
-    function getData (labels, data, colors, datasetOverride) {
-      var dataset = {
-        labels: labels,
-        datasets: [{
-          data: data,
-          backgroundColor: colors.map(function (color) {
-            return color.pointBackgroundColor;
-          }),
-          hoverBackgroundColor: colors.map(function (color) {
-            return color.backgroundColor;
-          })
-        }]
-      };
-      if (datasetOverride) {
-        angular.merge(dataset.datasets[0], datasetOverride);
-      }
-      return dataset;
-    }
-
-    function getChartOptions (type, scope) {
-      return angular.extend({}, ChartJs.getOptions(type), scope.chartOptions);
-    }
-
-    function bindEvents (cvs, scope) {
-      cvs.onclick = scope.chartClick ? getEventHandler(scope, 'chartClick', false) : angular.noop;
-      cvs.onmousemove = scope.chartHover ? getEventHandler(scope, 'chartHover', true) : angular.noop;
-    }
-
-    function updateChart (values, scope) {
-      if (Array.isArray(scope.chartData[0])) {
-        scope.chart.data.datasets.forEach(function (dataset, i) {
-          dataset.data = values[i];
-        });
-      } else {
-        scope.chart.data.datasets[0].data = values;
-      }
-
-      scope.chart.update();
-      scope.$emit('chart-update', scope.chart);
-    }
-
-    function isEmpty (value) {
-      return ! value ||
-        (Array.isArray(value) && ! value.length) ||
-        (typeof value === 'object' && ! Object.keys(value).length);
-    }
-
-    function canDisplay (type, scope, elem, options) {
-      // TODO: check parent?
-      if (options.responsive && elem[0].clientHeight === 0) {
-        $timeout(function () {
-          createChart(type, scope, elem);
-        }, 50, false);
-        return false;
-      }
-      return true;
-    }
-
-    function destroyChart(scope) {
-      if(! scope.chart) return;
-      scope.chart.destroy();
-      scope.$emit('chart-destroy', scope.chart);
-    }
-  }
-}));
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/locale/locale-en_US.json b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/locale/locale-en_US.json
deleted file mode 100644 (file)
index eb0ef3b..0000000
+++ /dev/null
@@ -1,924 +0,0 @@
-{
-
-    "PNF_NAME": "Name",
-    "PNF_IDENTIFIER":"Identifier",
-    "PNF_EQUIPMENT_TYPE":"Equipment type",
-    "PNF_EQUIPMENT_MODEL": "Equipment model",
-    "PNF_EQUIPMENT_VENDOR": "Equipment vendor",
-    "PNF_IPv4ADDRESS": "IPv4 address",
-    "PNF_MAINTENANCE_MODE": "Maintenace mode",
-    "PNF_CREATE_IN_AAI": "Create PNF in Active and Available Inventory",
-    "PNF_DELETE_IN_AAI": "Delete PNF in Active and Available Inventory",
-    "PNF_RESOURCE_VERSION": "Resource version",
-    
-    "MWTN_AMSL_GRD": "Above mean sea level (ground)",
-    "MWTN_APPCOMMAND": "Application command",
-    "MWTN_AIR_INTERFACE_LINKS": "Air interface links",
-    "MWTN_BAND": "Band",
-    "MWTN_CLIADDRESS": "CLI address",
-    "MWTN_CONNECTED_LTP_REF": "Connected LTP",
-    "MWTN_CURRENT_PROBLEMS": "Current problem list",
-    "MWTN_CURRENT_PERFORMANCE": "Current performance",
-    "MWTN_DURATION": "Duration",
-    "MWTN_END_TIME": "End time",
-    "MWTN_FORWARDING_DOMAIN": "Forwarding domain (ETH switch)",
-    "MWTN_FORWARDING_CONSTRUCTS":"Forwarding constructs",
-    "MWTN_FC": "Forwarding constructs",
-    "MWTN_FC_PORT#1": "Port #1",
-    "MWTN_FC_PORT#2": "Port #2",
-    "MWTN_FC_UUID": "Forwarding construct UUID",
-    "MWTN_FD_EX":"Extension",
-    "MWTN_HISTORICAL_PERFORMANCES": "Performance history",
-    "MWTN_HTMEDIATOR": "Has mediator",
-    "MWTN_INFORMATION_RATE_CUR":"Current infromation rate",
-    "MWTN_LAT_LON":"Lat/Lon",
-    "MWTN_LTP1":"LTP#1",
-    "MWTN_LTP2":"LTP#2",
-    "MWTN_LTPEXTENSION": "Extension",
-    "MWTN_LINK_IDENTIFIER": "Link identifier",
-    "MWTN_LINKS": "Links",
-    "MWTN_LOWER_LEVEL_LINK": "Lower level link",
-    "MWTN_LOOP_BACK_IS_AVAIL": "Loopback support",
-    "MWTN_LOOP_BACK_IS_ON": "Loop-back is on",
-    "MWTN_LOOP_BACK_IS_UP": "Loopback",
-    "MWTN_MED_ADD": "Add",
-       "MWTN_MED_START":"Start",
-       "MWTN_MED_STOP":"Stop",
-       "MWTN_MED_CLOSE":"Close",
-       "MWTN_MED_DELETE":"Delete",
-    "MWTN_NEIPADDRESS": "IP address",
-    "MWTN_NEEXTENSION": "Extension",
-    "MWTN_NE_EXTENSION":"Extension",
-    "MWTN_NETYPE": "Network element type",
-    "MWTN_ONF_PTP_DATASET:MULTICAST_MAC_ADDRESS": "Multicast MAC address",
-    "MWTN_ONF_PTP_DATASET:MAX_STEPS_REMOVED": "Max. steps removed",
-    "MWTN_PEER_LTP_REF": "Peer LTP",
-    "MWTN_PHYSICAL_PORT_REFERENCE": "Physical port",
-    "MWTN_PTP_DEFAULT_DS_CONFIGURATION": "PTP default dataset configuration",
-    "MWTN_PTP_PORT_CONFIGURATION":"PTP port configuration",
-    "MWTN_RADIO": "Radio",
-    "MWTN_REQUIRED_NETWORK_ELEMENTS": "Required network elements",
-    "MWTN_REVISION": "Revision",
-    "MWTN_ROOTEQUIPMENT": "Equipment",
-    "MWTN_SERVICE_ID":"Service ID",
-    "MWTN_SCANNING": "Scanning...",
-    "MWTN_SCAN_NETWORK": "Scan network",
-    "MWTN_START_TIME": "Start time",
-    "MWTN_SITE_ID": "Site identifier",
-    "MWTN_SITE_NAME": "Site-name",
-    "MWTN_SUPPORTED_LOOP_BACK_KIND_LIST":"Supported loopback types",
-    "MWTN_STATUS": "Status",
-    "MWTN_TOP_LEVEL_EQUIPMENT":"Main equipment",
-    "MWTN_TYPE": "Type",
-    "MWTN_UNKNOWN_NETWORK_ELEMENTS": "Unknown network elements",
-    "MWTN_VEXTENSION": "Extension",
-    "MWTN_WEBURI": "Web UI",
-
-    "MWTN_$$HASHKEY": "Key",
-    "MWTN_ACTION_VERB": "action-verb",
-    "MWTN_ACTUAL_EQUIPMENT": "actual-equipment",
-    "MWTN_ACTUAL_HOLDER": "actual-holder",
-    "MWTN_ADAPTIVEMODULATIONISAVAIL": "adaptiveModulationIsAvail",
-    "MWTN_ADAPTIVEMODULATIONISON": "adaptiveModulationIsOn",
-    "MWTN_ADAPTIVE_MODULATION_IS_AVAIL": "adaptive-modulation-is-avail",
-    "MWTN_ADAPTIVE_MODULATION_IS_ON": "adaptive-modulation-is-on",
-    "MWTN_ADDRESS_ELEMENT": "address-element",
-    "MWTN_ADDRESS_ELEMENT_NAME": "address-element-name",
-    "MWTN_ADDRESS_NAME": "address-name",
-    "MWTN_ADD_TO_REQUIRED_NETWORKELEMENTS": "Add to required Network Elements",
-    "MWTN_ADMINISTRATIVECONTROL": "administrativeControl",
-    "MWTN_ADMINISTRATIVESTATE": "administrativeState",
-    "MWTN_ADMINISTRATIVE_CONTROL": "administrative-control",
-    "MWTN_ADMINISTRATIVE_STATE": "administrative-state",
-    "MWTN_AGGREGATE_FUNCTION": "aggregate-function",
-    "MWTN_AIRINTERFACECAPABILITY": "airInterfaceCapability",
-    "MWTN_AIRINTERFACECONFIGURATION": "AirInterfaceConfiguration",
-    "MWTN_AIRINTERFACECURRENTPERFORMANCE": "AirInterfaceCurrentPerformance",
-    "MWTN_AIRINTERFACECURRENTPROBLEMS": "airInterfaceCurrentProblems",
-    "MWTN_AIRINTERFACEDIVERSITY": "airInterfaceDiversity",
-    "MWTN_AIRINTERFACEDIVERSITYCAPABILITY": "airInterfaceDiversityCapability",
-    "MWTN_AIRINTERFACEDIVERSITYCONFIGURATION": "airInterfaceDiversityConfiguration",
-    "MWTN_AIRINTERFACEDIVERSITYCURRENTPERFORMANCE": "AirInterfaceDiversityCurrentPerformance",
-    "MWTN_AIRINTERFACEDIVERSITYCURRENTPROBLEMS": "AirInterfaceDiversityCurrentProblems",
-    "MWTN_AIRINTERFACEDIVERSITYHISTORICALPERFORMANCES": "airInterfaceDiversityHistoricalPerformances",
-    "MWTN_AIRINTERFACEDIVERSITYSTATUS": "AirInterfaceDiversityStatus",
-    "MWTN_AIRINTERFACEHISTORICALPERFORMANCES": "airInterfaceHistoricalPerformances",
-    "MWTN_AIRINTERFACEHSBCONFIGURATIONISFAULTYSEVERITY": "airInterfaceHsbConfigurationIsFaultySeverity",
-    "MWTN_AIRINTERFACEHSBISDOWNSEVERITY": "airInterfaceHsbIsDownSeverity",
-    "MWTN_AIRINTERFACEHSBISPARTLYDOWNSEVERITY": "airInterfaceHsbIsPartlyDownSeverity",
-    "MWTN_AIRINTERFACEID": "Air interface identifier",
-    "MWTN_AIRINTERFACELIST": "airInterfaceList",
-    "MWTN_AIRINTERFACELTPLIST": "airInterfaceLtpList",
-    "MWTN_AIRINTERFACENAME": "Air interface name",
-    "MWTN_AIRINTERFACESTATUS": "airInterfaceStatus",
-    "MWTN_AIR_INTERFACE": "Air interface",
-    "MWTN_AIR_INTERFACES": "Air interfaces",
-    "MWTN_AIR_INTERFACE_CAPABILITY": "air-interface-capability",
-    "MWTN_AIR_INTERFACE_CONFIGURATION": "air-interface-configuration",
-    "MWTN_AIR_INTERFACE_CURRENT_PERFORMANCE": "air-interface-current-performance",
-    "MWTN_AIR_INTERFACE_CURRENT_PROBLEMS": "air-interface-current-problems",
-    "MWTN_AIR_INTERFACE_DIVERSITY": "air-interface-diversity",
-    "MWTN_AIR_INTERFACE_DIVERSITY_CAPABILITY": "air-interface-diversity-capability",
-    "MWTN_AIR_INTERFACE_DIVERSITY_CONFIGURATION": "air-interface-diversity-configuration",
-    "MWTN_AIR_INTERFACE_DIVERSITY_CURRENT_PERFORMANCE": "air-interface-diversity-current-performance",
-    "MWTN_AIR_INTERFACE_DIVERSITY_CURRENT_PROBLEMS": "air-interface-diversity-current-problems",
-    "MWTN_AIR_INTERFACE_DIVERSITY_HISTORICAL_PERFORMANCES": "air-interface-diversity-historical-performances",
-    "MWTN_AIR_INTERFACE_DIVERSITY_STATUS": "air-interface-diversity-status",
-    "MWTN_AIR_INTERFACE_HISTORICAL_PERFORMANCES": "air-interface-historical-performances",
-    "MWTN_AIR_INTERFACE_HSB_CONFIGURATION_IS_FAULTY_SEVERITY": "air-interface-hsb-configuration-is-faulty-severity",
-    "MWTN_AIR_INTERFACE_HSB_IS_DOWN_SEVERITY": "air-interface-hsb-is-down-severity",
-    "MWTN_AIR_INTERFACE_HSB_IS_PARTLY_DOWN_SEVERITY": "air-interface-hsb-is-partly-down-severity",
-    "MWTN_AIR_INTERFACE_NAME": "air-interface-name",
-    "MWTN_AIR_INTERFACE_STATUS": "air-interface-status",
-    "MWTN_ALARMS": "Alarms",
-    "MWTN_ALARM_LOG": "Alarm log",
-    "MWTN_ALARM_NOTIFICATIONS": "Alarm notifications",
-    "MWTN_ALARM_STATUS": "Alarm status",
-    "MWTN_ALICISAVAIL": "alicIsAvail",
-    "MWTN_ALICISON": "alicIsOn",
-    "MWTN_ALICISUP": "alicIsUp",
-    "MWTN_ALIC_IS_AVAIL": "alic-is-avail",
-    "MWTN_ALIC_IS_ON": "alic-is-on",
-    "MWTN_ALIC_IS_UP": "alic-is-up",
-    "MWTN_AMDOWNSHIFTLEVEL": "AM downshift level",
-    "MWTN_AMUPSHIFTLEVEL": "AM upshift level",
-    "MWTN_AM_DOWNSHIFT_LEVEL": "am-downshift-level",
-    "MWTN_AM_UPSHIFT_LEVEL": "am-upshift-level",
-    "MWTN_ANNOUNCE_RECEIPT_TIMEOUT": "announce-receipt-timeout",
-    "MWTN_APPLY": "Apply",
-    "MWTN_ARBITRARY_ELEMENT": "arbitrary-element",
-    "MWTN_ASSET_INSTANCE_IDENTIFIER": "asset-instance-identifier",
-    "MWTN_ASSET_TYPE_IDENTIFIER": "asset-type-identifier",
-    "MWTN_ATPCISAVAIL": "atpcIsAvail",
-    "MWTN_ATPCISON": "atpcIsOn",
-    "MWTN_ATPCISUP": "atpcIsUp",
-    "MWTN_ATPCRANGE": "atpcRange",
-    "MWTN_ATPCTHRESHLOWER": "atpcThreshLower",
-    "MWTN_ATPCTHRESHUPPER": "atpcThreshUpper",
-    "MWTN_ATPC_IS_AVAIL": "atpc-is-avail",
-    "MWTN_ATPC_IS_ON": "atpc-is-on",
-    "MWTN_ATPC_IS_UP": "atpc-is-up",
-    "MWTN_ATPC_RANGE": "atpc-range",
-    "MWTN_ATPC_THRESH_LOWER": "atpc-thresh-lower",
-    "MWTN_ATPC_THRESH_UPPER": "atpc-thresh-upper",
-    "MWTN_ATTRIBUTE": "Attribute",
-    "MWTN_ATTRIBUTE_NAME": "attribute-name",
-    "MWTN_ATTRIBUTE_VALUE_CHANGED": "Attribute value changed",
-    "MWTN_AUTOFREQSELECTISAVAIL": "Automatic frequency selection",
-    "MWTN_AUTOFREQSELECTISON": "autoFreqSelectIsOn",
-    "MWTN_AUTOFREQSELECTISUP": "autoFreqSelectIsUp",
-    "MWTN_AUTOFREQSELECTRANGE": "autoFreqSelectRange",
-    "MWTN_AUTO_FREQ_SELECT_IS_AVAIL": "auto-freq-select-is-avail",
-    "MWTN_AUTO_FREQ_SELECT_IS_ON": "auto-freq-select-is-on",
-    "MWTN_AUTO_FREQ_SELECT_IS_UP": "auto-freq-select-is-up",
-    "MWTN_AUTO_FREQ_SELECT_RANGE": "auto-freq-select-range",
-    "MWTN_AVAILABLEKINDSOFCONTAINERLIST": "Supported clients",
-    "MWTN_AVAILABLEKINDSOFDIVERSITY": "availableKindsOfDiversity",
-    "MWTN_AVAILABLE_KINDS_OF_DIVERSITY": "available-kinds-of-diversity",
-    "MWTN_BUNDLINGISAVAIL": "bundlingIsAvail",
-    "MWTN_BUNDLING_IS_AVAIL": "bundling-is-avail",
-    "MWTN_CANCEL": "Cancel",
-    "MWTN_CAPABILITY": "Capability",
-    "MWTN_CATEGORY": "category",
-    "MWTN_CHANNELBANDWIDTH": "Channel bandwidth",
-    "MWTN_CHANNEL_BANDWIDTH": "channel-bandwidth",
-    "MWTN_CLASS_OF_INSTANCE": "class-of-instance",
-    "MWTN_CLEAR": "Clear",
-    "MWTN_CLIENT_LTP": "Client LTPs",
-    "MWTN_CLOCK": "Clock (IEEE 1588v2)",
-    "MWTN_CLOCK_ACCURACY": "clock-accuracy",
-    "MWTN_CLOCK_CLASS": "clock-class",
-    "MWTN_CLOCK_IDENTITY": "clock-identity",
-    "MWTN_CLOCK_QUALITY": "clock-quality",
-    "MWTN_CLOSE": "Close",
-    "MWTN_COCHANNELGROUP": "CoChannelGroup",
-    "MWTN_COCHANNELGROUPID": "coChannelGroupId",
-    "MWTN_CODE_RATE": "code-rate",
-    "MWTN_CODE_RATE_CUR": "code-rate-cur",
-    "MWTN_COLLAPSE_ALL": "Collapse all",
-    "MWTN_CONDITIONALPACKAGE": "Conditional package",
-    "MWTN_CONDITIONAL_PACKAGE": "Conditional package",
-    "MWTN_CONFIGURATION": "Configuration",
-    "MWTN_CONFIGUREDCLIENTCAPACITY": "configuredClientCapacity",
-    "MWTN_CONFIGURED_CLIENT_CAPACITY": "configured-client-capacity",
-    "MWTN_CONFIG_AND_SWITCH_CONTROLLER": "config-and-switch-controller",
-    "MWTN_CONNECTED_LTP": "connected-ltp",
-    "MWTN_CONNECTIONSTATUS": "Connection status",
-    "MWTN_CONNECTION_STATUS_LOG": "Connection status log",
-    "MWTN_CONNECTOR": "connector",
-    "MWTN_CONNECTOR_CABLE_END": "connector-cable-end",
-    "MWTN_CONNECTOR_CAPABILITY": "connector-capability",
-    "MWTN_CONNECTOR_CONFIGURATION": "connector-configuration",
-    "MWTN_CONNECTOR_CURRENT_PROBLEMS": "connector-current-problems",
-    "MWTN_CONNECTOR_IN_HOLDER": "connector-in-holder",
-    "MWTN_CONNECTOR_ON_EQUIPMENT_FOR_CABLE": "connector-on-equipment-for-cable",
-    "MWTN_CONNECTOR_ON_EQUIPMENT_FOR_HOLDER": "connector-on-equipment-for-holder",
-    "MWTN_CONNECTOR_PAC": "connector-pac",
-    "MWTN_CONNECTOR_STATUS": "connector-status",
-    "MWTN_CONNECTOR_TYPE": "connector-type",
-    "MWTN_CONTAINED_HOLDER": "contained-holder",
-    "MWTN_CONTAINER": "Client",
-    "MWTN_CONTAINERID": "containerID",
-    "MWTN_CONTAINERTYPE": "containerType",
-    "MWTN_CONTAINER_ID": "container-id",
-    "MWTN_CONTAINER_NAME": "container-name",
-    "MWTN_CONTAINER_TYPE": "container-type",
-    "MWTN_CONTROL_PARAMETERS": "control-parameters",
-    "MWTN_COUNTER": "counter",
-    "MWTN_CO_CHANNEL_GROUP": "co-channel-group",
-    "MWTN_CO_CHANNEL_GROUP_ID": "co-channel-group-id",
-    "MWTN_CREATE": "Create",
-    "MWTN_CRYPTOGRAPHICKEY": "cryptographicKey",
-    "MWTN_CRYPTOGRAPHIC_KEY": "cryptographic-key",
-    "MWTN_CSES": "CSES",
-    "MWTN_CURRENTPERFORMANCEDATALIST": "currentPerformanceDataList",
-    "MWTN_CURRENTPROBLEMLIST": "currentProblemList",
-    "MWTN_CURRENT_DS": "current-ds",
-    "MWTN_CURRENT_PERFORMANCE_DATA_LIST": "current-performance-data",
-    "MWTN_CURRENT_PROBLEM_LIST": "Current problem list",
-    "MWTN_CURRENT_UTC_OFFSET": "current-utc-offset",
-    "MWTN_CURRENT_UTC_OFFSET_VALID": "current-utc-offset-valid",
-    "MWTN_CUT_THROUGH_COMMANDS": "Cut-through commands",
-    "MWTN_DEFAULT_DS": "default-ds",
-    "MWTN_DEFECTBLOCKSSUM": "Defect blocks (sum)",
-    "MWTN_DEFECT_BLOCKS_SUM": "defect-blocks-sum",
-    "MWTN_DELAY_ASYMMETRY": "delay-asymmetry",
-    "MWTN_ONF_PTP_DATASET:DELAY_ASYMMETRY": "delay-asymmetry",
-    "MWTN_DELAY_MECHANISM": "delay-mechanism",
-    "MWTN_DELETE": "Delete",
-    "MWTN_DESCRIPTION": "description",
-    "MWTN_DESIGNATED_ENABLED": "designated-enabled",
-    "MWTN_ONF_PTP_DATASET:DESIGNATED_ENABLED": "designated-enabled",
-    "MWTN_DIRECTIONALITY": "Directionality",
-    "MWTN_DIVERSITY_NAME": "diversity-name",
-    "MWTN_DOMAIN_NUMBER": "domain-number",
-    "MWTN_DUPLEXDISTANCE": "Duplex distance",
-    "MWTN_DUPLEXDISTANCEISVARIABLE": "Variable duplex distance",
-    "MWTN_DUPLEX_DISTANCE": "duplex-distance",
-    "MWTN_DUPLEX_DISTANCE_IS_VARIABLE": "duplex-distance-is-variable",
-    "MWTN_EFFORT_AND_ACTION": "effort-and-action",
-    "MWTN_ELAPSEDTIME": "elapsedTime",
-    "MWTN_ELAPSED_TIME": "elapsed-time",
-    "MWTN_ENCRYPTIONISAVAIL": "encryptionIsAvail",
-    "MWTN_ENCRYPTIONISON": "encryptionIsOn",
-    "MWTN_ENCRYPTION_IS_AVAIL": "encryption-is-avail",
-    "MWTN_ENCRYPTION_IS_ON": "encryption-is-on",
-    "MWTN_ENDPOINT": "endpoint",
-    "MWTN_EQUIPMENT": "equipment",
-    "MWTN_EQUIPMENT_CAPABILITY": "equipment-capability",
-    "MWTN_EQUIPMENT_CONFIGURATION": "equipment-configuration",
-    "MWTN_EQUIPMENT_CURRENT_PROBLEMS": "equipment-current-problems",
-    "MWTN_EQUIPMENT_INSTANCE": "equipment-instance",
-    "MWTN_EQUIPMENT_LOCATION": "equipment-location",
-    "MWTN_EQUIPMENT_PAC": "equipment-pac",
-    "MWTN_EQUIPMENT_STATUS": "equipment-status",
-    "MWTN_EQUIPMENT_TYPE": "equipment-type",
-    "MWTN_ES": "ES",
-    "MWTN_ETH": "Ethernet (ETH)",
-    "MWTN_ETH-CTP": "Ethernet connection termination point (ETH-CTP)",
-    "MWTN_ETHERNETCONTAINERCAPABILITY": "EthernetContainerCapability",
-    "MWTN_ETHERNETCONTAINERCONFIGURATION": "ethernetContainerConfiguration",
-    "MWTN_ETHERNETCONTAINERCURRENTPERFORMANCE": "ethernetContainerCurrentPerformance",
-    "MWTN_ETHERNETCONTAINERCURRENTPROBLEMS": "ethernetContainerCurrentProblems",
-    "MWTN_ETHERNETCONTAINERHISTORICALPERFORMANCES": "ethernetContainerHistoricalPerformances",
-    "MWTN_ETHERNETCONTAINERSTATUS": "ethernetContainerStatus",
-    "MWTN_ETHERNET_CAPABILITY": "ethernet-capability",
-    "MWTN_ETHERNET_CONFIGURATION": "ethernet-configuration",
-    "MWTN_ETHERNET_CONTAINER_CAPABILITY": "ethernet-container-capability",
-    "MWTN_ETHERNET_CONTAINER_CONFIGURATION": "ethernet-container-configuration",
-    "MWTN_ETHERNET_CONTAINER_CURRENT_PERFORMANCE": "ethernet-container-current-performance",
-    "MWTN_ETHERNET_CONTAINER_CURRENT_PROBLEMS": "ethernet-container-current-problems",
-    "MWTN_ETHERNET_CONTAINER_HISTORICAL_PERFORMANCES": "ethernet-container-historical-performances",
-    "MWTN_ETHERNET_CONTAINER_STATUS": "ethernet-container-status",
-    "MWTN_ETHERNET_CURRENT_PERFORMANCE": "ethernet-current-performance",
-    "MWTN_ETHERNET_CURRENT_PROBLEMS": "ethernet-current-problems",
-    "MWTN_ETHERNET_HISTORICAL_PERFORMANCES": "ethernet-historical-performances",
-    "MWTN_ETHERNET_PAC": "ethernet-pac",
-    "MWTN_ETHERNET_STATUS": "ethernet-status",
-    "MWTN_EXPECTED_EQUIPMENT": "expected-equipment",
-    "MWTN_EXPECTED_HOLDER": "expected-holder",
-    "MWTN_EXPOSED_CABLE": "exposed-cable",
-    "MWTN_EXTENSION": "Extension",
-    "MWTN_EXTENSIONLIST": "extensionList",
-    "MWTN_FAULTY_FLAG": "faulty-flag",
-    "MWTN_FCPORT": "FcPort",
-    "MWTN_FCPORTDIRECTION": "fcPortDirection",
-    "MWTN_FCSWITCH": "fcswitch",
-    "MWTN_FC_BLOCKS_SIGNAL_TO_LP": "fc-blocks-signal-to-lp",
-    "MWTN_FC_PORT": "fc-port",
-    "MWTN_FC_PORT_DIRECTION": "fc-port-direction",
-    "MWTN_FC_SWITCH": "fc-switch",
-    "MWTN_FD": "fd",
-    "MWTN_FIRE_CHARACTERISTICS": "fire-characteristics",
-    "MWTN_FORWARDINGCONSTRUCT": "ForwardingConstruct",
-    "MWTN_FORWARDINGDIRECTION": "forwardingDirection",
-    "MWTN_FORWARDINGDOMAIN": "ForwardingDomain",
-    "MWTN_FORWARDING_CONSTRUCT": "forwarding-construct",
-    "MWTN_FORWARDING_DIRECTION": "forwarding-direction",
-    "MWTN_FREQUENCY_TRACEABLE": "frequency-traceable",
-    "MWTN_FUNCTION_ENABLERS": "function-enablers",
-    "MWTN_GENERALDIRECTIVES": "generaldirectives",
-    "MWTN_GEOGRAPHICAL_LOCATION": "geographical-location",
-    "MWTN_GLOBALCLASS": "GlobalClass",
-    "MWTN_GLOBAL_PAC": "global-pac",
-    "MWTN_GRAPH": "Graph",
-    "MWTN_GRANDMASTER_CLOCK_QUALITY": "grandmaster-clock-quality",
-    "MWTN_GRANDMASTER_IDENTITY": "grandmaster-identity",
-    "MWTN_GRANDMASTER_PRIORITY1": "grandmaster-priority1",
-    "MWTN_GRANDMASTER_PRIORITY2": "grandmaster-priority2",
-    "MWTN_GRANULARITYPERIOD": "granularityPeriod",
-    "MWTN_GRANULARITY_PERIOD": "granularity-period",
-    "MWTN_HEIGHT": "height",
-    "MWTN_HIDE": "Hide",
-    "MWTN_HISTORICALPERFORMANCEDATALIST": "historicalPerformanceDataList",
-    "MWTN_HISTORICAL_PERFORMANCE_DATA_LIST": "historical-performance-data",
-    "MWTN_HISTORYDATAID": "historyDataId",
-    "MWTN_HISTORY_DATA_ID": "history-data-id",
-    "MWTN_HOLDER": "holder",
-    "MWTN_HOLDER_CAPABILITY": "holder-capability",
-    "MWTN_HOLDER_CATEGORY": "holder-category",
-    "MWTN_HOLDER_CONFIGURATION": "holder-configuration",
-    "MWTN_HOLDER_CURRENT_PROBLEMS": "holder-current-problems",
-    "MWTN_HOLDER_LOCATION": "holder-location",
-    "MWTN_HOLDER_MONITORS": "holder-monitors",
-    "MWTN_HOLDER_PAC": "holder-pac",
-    "MWTN_HOLDER_STATUS": "holder-status",
-    "MWTN_HOLDER_STRUCTURE": "holder-structure",
-    "MWTN_HOLDOFFTIME": "holdOffTime",
-    "MWTN_HOLD_OFF_TIME": "hold-off-time",
-    "MWTN_HYBRIDMWSTRUCTURECAPABILITY": "hybridMwStructureCapability",
-    "MWTN_HYBRIDMWSTRUCTURECONFIGURATION": "HybridMwStructureConfiguration",
-    "MWTN_HYBRIDMWSTRUCTURECURRENTPERFORMANCE": "HybridMwStructureCurrentPerformance",
-    "MWTN_HYBRIDMWSTRUCTURECURRENTPROBLEMS": "hybridMwStructureCurrentProblems",
-    "MWTN_HYBRIDMWSTRUCTUREHISTORICALPERFORMANCES": "hybridMwStructureHistoricalPerformances",
-    "MWTN_HYBRIDMWSTRUCTURESTATUS": "hybridMwStructureStatus",
-    "MWTN_HYBRID_MW_STRUCTURE_CAPABILITY": "hybrid-mw-structure-capability",
-    "MWTN_HYBRID_MW_STRUCTURE_CONFIGURATION": "hybrid-mw-structure-configuration",
-    "MWTN_HYBRID_MW_STRUCTURE_CURRENT_PERFORMANCE": "hybrid-mw-structure-current-performance",
-    "MWTN_HYBRID_MW_STRUCTURE_CURRENT_PROBLEMS": "hybrid-mw-structure-current-problems",
-    "MWTN_HYBRID_MW_STRUCTURE_HISTORICAL_PERFORMANCES": "hybrid-mw-structure-historical-performances",
-    "MWTN_HYBRID_MW_STRUCTURE_STATUS": "hybrid-mw-structure-status",
-    "MWTN_ID": "Identifier",
-    "MWTN_INFORMATIONRATE": "Information rate",
-    "MWTN_INFORMATIONRATECUR": "informationRateCur",
-    "MWTN_INSTANCE_LIST": "instances",
-    "MWTN_INSTANCE_NUMBER": "instance-number",
-    "MWTN_INTERFACE": "Interface",
-    "MWTN_INTERFERENCE_ALARM!": "INTERFERENCE ALARM!!!",
-    "MWTN_INTERFERENCE_ALARM?": "Interference alarm?",
-    "MWTN_INTERFERENCE_ALARM_STATUS": "Interferance alarm status",
-    "MWTN_INTERNAL_CONFIGURATION_AND_SWITCH_CONTROL": "internal-configuration-and-switch-control",
-    "MWTN_IPADDRESS": "IP address",
-    "MWTN_IPV4COMPRESSIONISAVAIL": "ipv4CompressionIsAvail",
-    "MWTN_IPV4COMPRESSIONISON": "ipv4CompressionIsOn",
-    "MWTN_IPV4_COMPRESSION_IS_AVAIL": "ipv4-compression-is-avail",
-    "MWTN_IPV4_COMPRESSION_IS_ON": "ipv4-compression-is-on",
-    "MWTN_IPV6COMPRESSIONISAVAIL": "ipv6CompressionIsAvail",
-    "MWTN_IPV6COMPRESSIONISON": "ipv6CompressionIsOn",
-    "MWTN_IPV6_COMPRESSION_IS_AVAIL": "ipv6-compression-is-avail",
-    "MWTN_IPV6_COMPRESSION_IS_ON": "ipv6-compression-is-on",
-    "MWTN_IS_ACTIVE": "is-active",
-    "MWTN_IS_ACTUAL_MISMATCH_WITH_EXPECTED": "is-actual-mismatch-with-expected",
-    "MWTN_IS_CAPTIVE": "is-captive",
-    "MWTN_IS_COORDINATED_SWITCHING_BOTH_ENDS": "is-coordinated-switching-both-ends",
-    "MWTN_IS_FIELD_REPLACEABLE": "is-field-replaceable",
-    "MWTN_IS_FROZEN": "is-frozen",
-    "MWTN_IS_GUIDED": "is-guided",
-    "MWTN_IS_HOT_SWAPPABLE": "is-hot-swappable",
-    "MWTN_IS_INTERNAL_PORT": "is-internal-port",
-    "MWTN_IS_NOT": "is-not",
-    "MWTN_IS_PROTECTION_LOCK_OUT": "is-protection-lock-out",
-    "MWTN_IS_QUANTIZED_SPACE": "is-quantized-space",
-    "MWTN_IS_SHORT_LIVED": "is-short-lived",
-    "MWTN_ITEMS": "items",
-    "MWTN_LABEL": "Label",
-    "MWTN_LABELLIST": "labelList",
-    "MWTN_LASTSTATUSCHANGE": "lastStatusChange",
-    "MWTN_LAST_STATUS_CHANGE": "last-status-change",
-    "MWTN_LAYER": "Layer",
-    "MWTN_LAYER2COMPRESSIONISAVAIL": "layer2CompressionIsAvail",
-    "MWTN_LAYER2COMPRESSIONISON": "layer2CompressionIsOn",
-    "MWTN_LAYER2_COMPRESSION_IS_AVAIL": "layer2-compression-is-avail",
-    "MWTN_LAYER2_COMPRESSION_IS_ON": "layer2-compression-is-on",
-    "MWTN_LAYER4COMPRESSIONISAVAIL": "layer4CompressionIsAvail",
-    "MWTN_LAYER4COMPRESSIONISON": "layer4CompressionIsOn",
-    "MWTN_LAYER4_COMPRESSION_IS_AVAIL": "layer4-compression-is-avail",
-    "MWTN_LAYER4_COMPRESSION_IS_ON": "layer4-compression-is-on",
-    "MWTN_LAYERPROTOCOL": "LayerProtocol",
-    "MWTN_LAYERPROTOCOLNAME": "layerProtocolName",
-    "MWTN_LAYERPROTOCOLNAMELIST": "layerProtocolNameList",
-    "MWTN_LAYER_PROTOCOL": "layer-protocol",
-    "MWTN_LAYER_PROTOCOL_NAME": "layer-protocol-name",
-    "MWTN_LEAP59": "leap59",
-    "MWTN_LEAP61": "leap61",
-    "MWTN_LENGTH": "length",
-    "MWTN_LIFECYCLESTATE": "lifecycleState",
-    "MWTN_LIFECYCLE_STATE": "lifecycle-state",
-    "MWTN_LINKISUP": "linkIsUp",
-    "MWTN_LINK_IS_UP": "link-is-up",
-    "MWTN_LOADING": "Loading...",
-    "MWTN_LOCALCLASS": "LocalClass",
-    "MWTN_LOCALENDPOINTID": "localEndPointId",
-    "MWTN_LOCALIDLIST": "localIdList",
-    "MWTN_LOCAL_END_POINT": "local-end-point",
-    "MWTN_LOCAL_END_POINT_ID": "local-end-point-id",
-    "MWTN_LOCAL_ID": "local-id",
-    "MWTN_LOCAL_PAC": "local-pac",
-    "MWTN_LOCAL_PRIORITY": "local-priority",
-    "MWTN_ONF_PTP_DATASET:LOCAL_PRIORITY": "local-priority",
-    "MWTN_LOCATION": "location",
-    "MWTN_LOGICALTERMINATIONPOINT": "LogicalTerminationPoint",
-    "MWTN_LOGICAL_TERMINATION_POINT": "logical-termination-point",
-    "MWTN_ONF_PTP_DATASET:LOGICAL_TERMINATION_POINT": "logical-termination-point",
-    "MWTN_LOG_ANNOUNCE_INTERVAL": "log-announce-interval",
-    "MWTN_LOG_MIN_DELAY_REQ_INTERVAL": "log-min-delay-req-interval",
-    "MWTN_LOG_MIN_PDELAY_REQ_INTERVAL": "log-min-pdelay-req-interval",
-    "MWTN_LOG_SYNC_INTERVAL": "log-sync-interval",
-    "MWTN_LOOPBACKISAVAIL": "loopBackIsAvail",
-    "MWTN_LOOPBACKISON": "loopBackIsOn",
-    "MWTN_LOOPBACKISUP": "loopBackIsUp",
-    "MWTN_LOOP_BACK_KIND_ON": "loop-back-kind-on",
-    "MWTN_LOOP_BACK_KIND_UP": "loop-back-kind-up",
-    "MWTN_LP": "Layer protocol",
-    "MWTN_LPDIRECTION": "lpDirection",
-    "MWTN_LP_DIRECTION": "lp-direction",
-    "MWTN_LTP": "LTP",
-    "MWTN_LTPS": "LTPs",
-    "MWTN_LTPDIRECTION": "ltpDirection",
-    "MWTN_LTP_DIRECTION": "ltp-direction",
-    "MWTN_MAINTENANCETIMER": "maintenanceTimer",
-    "MWTN_MAINTENANCETIMERRANGE": "maintenanceTimerRange",
-    "MWTN_MAINTENANCE_TIMER": "maintenance-timer",
-    "MWTN_MAINTENANCE_TIMER_RANGE": "maintenance-timer-range",
-    "MWTN_MAKE_KNOWN": "To required NEs...",
-    "MWTN_MANUFACTURED_THING": "manufactured-thing",
-    "MWTN_MANUFACTURER_IDENTIFIER": "manufacturer-identifier",
-    "MWTN_MANUFACTURER_NAME": "manufacturer-name",
-    "MWTN_MANUFACTURER_PROPERTIES": "manufacturer-properties",
-    "MWTN_MANUFACTURE_DATE": "manufacture-date",
-    "MWTN_MASTER_ONLY": "master-only",
-    "MWTN_ONF_PTP_DATASET:MASTER_ONLY": "master-only",
-    "MWTN_MATERIALS": "materials",
-    "MWTN_MAX_NUMBER_OF_SEGMENTS_RESERVABLE": "max-number-of-segments-reservable",
-    "MWTN_MAX_STEPS_REMOVED": "max-steps-removed",
-    "MWTN_MEAN_PATH_DELAY": "mean-path-delay",
-    "MWTN_MECHANICAL_FEATURES": "mechanical-features",
-    "MWTN_MECHANICAL_FUNCTIONS": "mechanical-functions",
-    "MWTN_MESSAGE": "Message",
-    "MWTN_MICROWAVEMODEL_OBJECTCLASSES_AIRINTERFACE:MW_AIRINTERFACE_PAC": "Airinterface",
-    "MWTN_MICROWAVEMODEL_OBJECTCLASSES_ETHERNETCONTAINER:MW_ETHERNETCONTAINER_PAC": "Ethernet container",
-    "MWTN_MICROWAVEMODEL_OBJECTCLASSES_PUREETHERNETSTRUCTURE:MW_PUREETHERNETSTRUCTURE_PAC": "Structure (pure ethernet)",
-    "MWTN_MICROWAVE_MODEL:MW_AIR_INTERFACE_DIVERISTY_PAC": "Diversity",
-    "MWTN_MICROWAVE_MODEL:MW_AIR_INTERFACE_PAC": "Airinterface",
-    "MWTN_MICROWAVE_MODEL:MW_ETHERNET_CONTAINER_PAC": "Ethernet container",
-    "MWTN_MICROWAVE_MODEL:MW_HYBRID_MW_STRUCTURE_PAC": "Structure (hybrid)",
-    "MWTN_MICROWAVE_MODEL:MW_PURE_ETHERNET_STRUCTURE_PAC": "Structure (pure ethernet)",
-    "MWTN_MICROWAVE_MODEL:MW_TDM_CONTAINER_PAC": "TDM container",
-    "MWTN_MIMOCHANNELS": "mimoChannels",
-    "MWTN_MIMOISAVAIL": "mimoIsAvail",
-    "MWTN_MIMOISON": "mimoIsOn",
-    "MWTN_MIMOISUP": "mimoIsUp",
-    "MWTN_MIMO_CHANNELS": "mimo-channels",
-    "MWTN_MIMO_IS_AVAIL": "mimo-is-avail",
-    "MWTN_MIMO_IS_ON": "mimo-is-on",
-    "MWTN_MIMO_IS_UP": "mimo-is-up",
-    "MWTN_MODEL_IDENTIFIER": "model-identifier",
-    "MWTN_MODULATIONCUR": "modulationCur",
-    "MWTN_MODULATIONISON": "modulationIsOn",
-    "MWTN_MODULATIONMAX": "modulationMax",
-    "MWTN_MODULATIONMIN": "modulationMin",
-    "MWTN_MODULATIONSCHEME": "Modulation scheme",
-    "MWTN_MODULATION_CUR": "modulation-cur",
-    "MWTN_MODULATION_IS_ON": "modulation-is-on",
-    "MWTN_MODULATION_MAX": "modulation-max",
-    "MWTN_MODULATION_MIN": "modulation-min",
-    "MWTN_MODULATION_SCHEME": "modulation-scheme",
-    "MWTN_MOUNT": "Mount",
-    "MWTN_MOUNTPOINT": "Mountpoint",
-    "MWTN_MPLSCOMPRESSIONISAVAIL": "mplsCompressionIsAvail",
-    "MWTN_MPLSCOMPRESSIONISON": "mplsCompressionIsOn",
-    "MWTN_MPLS_COMPRESSION_IS_AVAIL": "mpls-compression-is-avail",
-    "MWTN_MPLS_COMPRESSION_IS_ON": "mpls-compression-is-on",
-    "MWTN_MULTICAST_MAC_ADDRESS": "multicast-mac-address",
-    "MWTN_MWCURRENTPROBLEM": "MwCurrentProblem",
-    "MWTN_MWPS": "Microwave Physical Section (MWPS)",
-    "MWTN_MWS": "Microwave Section (MWS)",
-    "MWTN_MW_AIRINTERFACEDIVERSITY_PAC": "MW_AirInterfaceDiversity_Pac",
-    "MWTN_MW_AIRINTERFACEHSBENDPOINT_PAC": "MW_AirInterfaceHsbEndPoint_Pac",
-    "MWTN_MW_AIRINTERFACEHSBFCSWITCH_PAC": "MW_AirInterfaceHsbFcSwitch_Pac",
-    "MWTN_MW_AIRINTERFACE_PAC": "MW_AirInterface_Pac",
-    "MWTN_MW_AIR_INTERFACE_DIVERSITY_PAC": "mw-air-interface-diversity-pac",
-    "MWTN_MW_AIR_INTERFACE_HSB_END_POINT_PAC": "mw-air-interface-hsb-end-point-pac",
-    "MWTN_MW_AIR_INTERFACE_HSB_FC_SWITCH_PAC": "mw-air-interface-hsb-fc-switch-pac",
-    "MWTN_MW_AIR_INTERFACE_PAC": "mw-air-interface-pac",
-    "MWTN_MW_ETHERNETCONTAINER_PAC": "MW_EthernetContainer_Pac",
-    "MWTN_MW_ETHERNET_CONTAINER_PAC": "mw-ethernet-container-pac",
-    "MWTN_MW_HYBRIDMWSTRUCTURE_PAC": "MW_HybridMwStructure_Pac",
-    "MWTN_MW_HYBRID_MW_STRUCTURE_PAC": "mw-hybrid-mw-structure-pac",
-    "MWTN_MW_PUREETHERNETSTRUCTURE_PAC": "MW_PureEthernetStructure_Pac",
-    "MWTN_MW_PURE_ETHERNET_STRUCTURE_PAC": "mw-pure-ethernet-structure-pac",
-    "MWTN_MW_TDMCONTAINER_PAC": "MW_TdmContainer_Pac",
-    "MWTN_MW_TDM_CONTAINER_PAC": "mw-tdm-container-pac",
-    "MWTN_NAME": "Name",
-    "MWTN_NAMEANDVALUEAUTHORITY": "NameAndValueAuthority",
-    "MWTN_NAMEBINDING": "nameBinding",
-    "MWTN_NAMELIST": "nameList",
-    "MWTN_NAME_BINDING": "name-binding",
-    "MWTN_NECESSARY_INITIALCONDITION_CONSTRAINTS": "necessary-initialcondition-constraints",
-    "MWTN_NETCONF_PORT": "NetConf port",
-    "MWTN_NETWORKELEMENT": "Network element",
-    "MWTN_NETWORK_ELEMENT": "network-element",
-    "MWTN_NETWORK_ELEMENT_CAPABILITY": "network-element-capability",
-    "MWTN_NETWORK_ELEMENT_CONFIGURATION": "network-element-configuration",
-    "MWTN_NETWORK_ELEMENT_CURRENT_PROBLEMS": "network-element-current-problems",
-    "MWTN_NETWORK_ELEMENT_PAC": "network-element-pac",
-    "MWTN_NETWORK_ELEMENT_STATUS": "network-element-status",
-    "MWTN_NETWORK_SCHEME_SPECIFICATION": "network-scheme-specification",
-    "MWTN_NEW_VALUE": "new-value",
-    "MWTN_NICKNAME": "Nickname",
-    "MWTN_NODES": "Nodes",
-    "MWTN_NO_DEVICES_CONNECTED": "Sorry, no Microwave devices connected to OpenDaylight.",
-    "MWTN_NUMBEROFLTPS": "# of LTPs",
-    "MWTN_NUMBEROFTDMSEGMENTSTOBERESERVED": "numberOfTdmSegmentsToBeReserved",
-    "MWTN_NUMBER_OF_AIR_INTERFACES_MAX": "number-of-air-interfaces-max",
-    "MWTN_NUMBER_OF_TDM_SEGMENTS_TO_BE_RESERVED": "number-of-tdm-segments-to-be-reserved",
-    "MWTN_NUMBER_OF_TIME_SLOTS_REQUIRED": "number-of-time-slots-required",
-    "MWTN_NUMBER_PORTS": "number-ports",
-    "MWTN_OBJECTCLASS": "objectClass",
-    "MWTN_OBJECTIDREF": "Object",
-    "MWTN_OBJECT_CLASS": "object-class",
-    "MWTN_OBJECT_DELETION_CREATION": "Object deletion or creation",
-    "MWTN_OBJECT_ID_REF": "object-id-ref",
-    "MWTN_OBJECT_REFERENCE": "object-reference",
-    "MWTN_OBJECT_TYPE": "object-type",
-    "MWTN_OBSERVED_PARENT_CLOCK_PHASE_CHANGE_RATE": "observed-parent-clock-phase-change-rate",
-    "MWTN_OBSERVED_PARENT_OFFSET_SCALED_LOG_VARIANCE": "observed-parent-offset-scaled-log-variance",
-    "MWTN_OBSOLETE_DROP_ORDER_RANK": "obsolete-drop-order-rank",
-    "MWTN_OBSOLETE_PRIORITY_CLASS": "obsolete-priority-class",
-    "MWTN_OCCUPYING_FRU": "occupying-fru",
-    "MWTN_OFFSET_FROM_MASTER": "offset-from-master",
-    "MWTN_OFFSET_SCALED_LOG_VARIANCE": "offset-scaled-log-variance",
-    "MWTN_OK": "Ok",
-    "MWTN_ONF_ETHERNET_CONDITIONAL_PACKAGES:ETHERNET_PAC": "Ethernet",
-    "MWTN_OPERATIONALSTATE": "operationalState",
-    "MWTN_OPERATIONALSTATUS": "Operational status",
-    "MWTN_OPERATIONAL_STATE": "operational-state",
-    "MWTN_OPERATIONAL_STATUS": "operational-status",
-    "MWTN_OPERATIONIDENTIFIERS": "operationidentifiers",
-    "MWTN_OPERATION_DETAILS": "operation-details",
-    "MWTN_OPERATION_ENVELOPE": "operation-envelope",
-    "MWTN_OPERATION_SET": "operation-set",
-    "MWTN_OPERATOR_AUGMENTED_EQUIPMENT_TYPE": "operator-augmented-equipment-type",
-    "MWTN_OPERTYPE": "operType",
-    "MWTN_ORIENTATION": "orientation",
-    "MWTN_OTN_CURRENTDATA": "OTN_CurrentData",
-    "MWTN_OTN_HISTORYDATA": "OTN_HistoryData",
-    "MWTN_PACKETCOMPRESSIONISAVAIL": "packetCompressionIsAvail",
-    "MWTN_PACKETCOMPRESSIONISON": "packetCompressionIsOn",
-    "MWTN_PACKET_COMPRESSION_IS_AVAIL": "packet-compression-is-avail",
-    "MWTN_PACKET_COMPRESSION_IS_ON": "packet-compression-is-on",
-    "MWTN_PARENT_DS": "parent-ds",
-    "MWTN_PARENT_PORT_IDENTITY": "parent-port-identity",
-    "MWTN_PARENT_STATS": "parent-stats",
-    "MWTN_PART_TYPE_IDENTIFIER": "part-type-identifier",
-    "MWTN_PASSWORD": "Password",
-    "MWTN_PAUSE_RESUME_RULE": "pause-resume-rule",
-    "MWTN_PEER_LTP": "peer-ltp",
-    "MWTN_PEER_MEAN_PATH_DELAY": "peer-mean-path-delay",
-    "MWTN_PERFORMANCEDATA": "Performance data",
-    "MWTN_PERFORMANCE_DATA": "Performance-data",
-    "MWTN_PERIODENDTIME": "period-end-time",
-    "MWTN_PERIOD_END_TIME": "period-end-time",
-    "MWTN_PHYSICALPORTREFERENCE": "physical-port-reference",
-    "MWTN_PHYSICAL_CHARACTERISTICS": "physical-characteristics",
-    "MWTN_PHYSICAL_PROPERTIES": "physical-properties",
-    "MWTN_PHYSICAL_RATING": "physical-rating",
-    "MWTN_PIN": "pin",
-    "MWTN_PIN_GROUP": "pin-group",
-    "MWTN_PIN_LAYOUT": "pin-layout",
-    "MWTN_POLARIZATION": "Polarization",
-    "MWTN_PORT": "Port",
-    "MWTN_PORT_DS_LIST": "ptp-ports",
-    "MWTN_PORT_IDENTITY": "port-identity",
-    "MWTN_PORT_NUMBER": "port-number",
-    "MWTN_PORT_STATE": "port-state",
-    "MWTN_POSITION": "position",
-    "MWTN_POWERISON": "powerIsOn",
-    "MWTN_POWER_IS_ON": "power-is-on",
-    "MWTN_POWER_RATING": "power-rating",
-    "MWTN_POWER_STATE": "power-state",
-    "MWTN_PRIMARY_DOMAIN": "primary-domain",
-    "MWTN_PRIORITY1": "priority1",
-    "MWTN_PRIORITY2": "priority2",
-    "MWTN_PROBLEM": "problem",
-    "MWTN_PROBLEMKINDNAME": "Alarm",
-    "MWTN_PROBLEMKINDSEVERITY": "Severity",
-    "MWTN_PROBLEMKINDSEVERITYLIST": "Severity list",
-    "MWTN_PROBLEMNAME": "Problem name",
-    "MWTN_PROBLEMSEVERITY": "Severity",
-    "MWTN_PROBLEM_KIND_NAME": "problem-type",
-    "MWTN_PROBLEM_KIND_SEVERITY": "severity",
-    "MWTN_PROBLEM_KIND_SEVERITY_LIST": "severities",
-    "MWTN_PROBLEM_NAME": "problem-name",
-    "MWTN_PROBLEM_SEVERITY": "problem-severity",
-    "MWTN_PROBLEM_TYPE_NAME": "problem-type-name",
-    "MWTN_PROBLEM_TYPE_SEVERITY": "problem-type-severity",
-    "MWTN_PROBLEM_TYPE_SEVERITY_LIST": "problem-severities",
-    "MWTN_PROTTYPE": "protType",
-    "MWTN_PROT_TYPE": "prot-type",
-    "MWTN_PTP_TIMESCALE": "ptp-timescale",
-    "MWTN_PUREETHERNETSTRUCTURECAPABILITY": "pureEthernetStructureCapability",
-    "MWTN_PUREETHERNETSTRUCTURECONFIGURATION": "pureEthernetStructureConfiguration",
-    "MWTN_PUREETHERNETSTRUCTURECURRENTPERFORMANCE": "PureEthernetStructureCurrentPerformance",
-    "MWTN_PUREETHERNETSTRUCTURECURRENTPROBLEMS": "PureEthernetStructureCurrentProblems",
-    "MWTN_PUREETHERNETSTRUCTUREHISTORICALPERFORMANCES": "PureEthernetStructureHistoricalPerformances",
-    "MWTN_PUREETHERNETSTRUCTURESTATUS": "PureEthernetStructureStatus",
-    "MWTN_PURE_ETHERNET_STRUCTURE_CAPABILITY": "pure-ethernet-structure-capability",
-    "MWTN_PURE_ETHERNET_STRUCTURE_CONFIGURATION": "pure-ethernet-structure-configuration",
-    "MWTN_PURE_ETHERNET_STRUCTURE_CURRENT_PERFORMANCE": "pure-ethernet-structure-current-performance",
-    "MWTN_PURE_ETHERNET_STRUCTURE_CURRENT_PROBLEMS": "pure-ethernet-structure-current-problems",
-    "MWTN_PURE_ETHERNET_STRUCTURE_HISTORICAL_PERFORMANCES": "pure-ethernet-structure-historical-performances",
-    "MWTN_PURE_ETHERNET_STRUCTURE_STATUS": "pure-ethernet-structure-status",
-    "MWTN_QINQCOMPRESSIONISAVAIL": "qInQCompressionIsAvail",
-    "MWTN_QINQCOMPRESSIONISON": "qInQCompressionIsOn",
-    "MWTN_Q_IN_Q_COMPRESSION_IS_AVAIL": "q-in-q-compression-is-avail",
-    "MWTN_Q_IN_Q_COMPRESSION_IS_ON": "q-in-q-compression-is-on",
-    "MWTN_RADIOPOWERISUP": "radioPowerIsUp",
-    "MWTN_RADIOSIGNALID": "Radio signal identifier",
-    "MWTN_RADIOSIGNALIDS": "Radio signal identifiers",
-    "MWTN_RADIO_POWER_IS_UP": "radio-power-is-up",
-    "MWTN_RADIO_SIGNAL_ID": "radio-signal-id",
-    "MWTN_RECEIVERISON": "receiverIsOn",
-    "MWTN_RECEIVER_IS_ON": "receiver-is-on",
-    "MWTN_REFRESH": "Refresh",
-    "MWTN_REFRESH_STATUS": "refresh-status",
-    "MWTN_RELATIVE_POSITION": "relative-position",
-    "MWTN_REMOTEENDPOINTID": "remoteEndPointId",
-    "MWTN_REMOTE_END_POINT": "remote-end-point",
-    "MWTN_REMOTE_END_POINT_ID": "remote-end-point-id",
-    "MWTN_REVERSION_MODE": "reversion-mode",
-    "MWTN_REVISON": "Revision",
-    "MWTN_RFTEMPAVG": "Temerature (avg)",
-    "MWTN_RFTEMPCUR": "rfTempCur",
-    "MWTN_RFTEMPMAX": "Temerature (max)",
-    "MWTN_RFTEMPMIN": "Temerature (min)",
-    "MWTN_RF_TEMP_AVG": "rf-temp-avg",
-    "MWTN_RF_TEMP_CUR": "rf-temp-cur",
-    "MWTN_RF_TEMP_MAX": "rf-temp-max",
-    "MWTN_RF_TEMP_MIN": "rf-temp-min",
-    "MWTN_ROLE": "role",
-    "MWTN_ROTATION_SPEED": "rotation-speed",
-    "MWTN_RXCHANNELBANDWIDTH": "rxChannelBandwidth",
-    "MWTN_RXFREQUENCY": "Receive frequency",
-    "MWTN_RXFREQUENCYCUR": "rxFrequencyCur",
-    "MWTN_RXFREQUENCYMAX": "rxFrequencyMax",
-    "MWTN_RXFREQUENCYMIN": "rxFrequencyMin",
-    "MWTN_RXLEVELAVG": "Receive level (avg)",
-    "MWTN_RXLEVELCUR": "rxLevelCur",
-    "MWTN_RXLEVELMAX": "Receive level (min)",
-    "MWTN_RXLEVELMIN": "Receive level (max)",
-    "MWTN_RXTHRESHOLD": "RX threshold",
-    "MWTN_RX_CHANNEL_BANDWIDTH": "rx-channel-bandwidth",
-    "MWTN_RX_FREQUENCY": "rx-frequency",
-    "MWTN_RX_FREQUENCY_CUR": "rx-frequency-cur",
-    "MWTN_RX_FREQUENCY_MAX": "rx-frequency-max",
-    "MWTN_RX_FREQUENCY_MIN": "rx-frequency-min",
-    "MWTN_RX_LEVEL_AVG": "rx-level-avg",
-    "MWTN_RX_LEVEL_CUR": "rx-level-cur",
-    "MWTN_RX_LEVEL_MAX": "rx-level-max",
-    "MWTN_RX_LEVEL_MIN": "rx-level-min",
-    "MWTN_RX_THRESHOLD": "rx-threshold",
-    "MWTN_SCANNERID": "scannerId",
-    "MWTN_SCANNER_ID": "scanner-id",
-    "MWTN_SCRIPTID": "Script id",
-    "MWTN_SCRIPTLIST": "Scripts",
-    "MWTN_SEGMENTID": "segmentID",
-    "MWTN_SEGMENTSIDLIST": "segmentsIDList",
-    "MWTN_SEGMENTSTATUSLIST": "segmentStatusList",
-    "MWTN_SEGMENTS_ID_LIST": "segments-ids",
-    "MWTN_SEGMENT_ID": "segment-id",
-    "MWTN_SEGMENT_ID_REF": "segment-id-ref",
-    "MWTN_SEGMENT_IS_RESERVED_FOR_TDM": "segment-is-reserved-for-tdm",
-    "MWTN_SEGMENT_STATUS_LIST": "segment-status",
-    "MWTN_SEGMENT_STATUS_TYPE_ID": "segment-status-type-id",
-    "MWTN_SELECTION_PRIORITY": "selection-priority",
-    "MWTN_SELECT_LTP": "Select LTP",
-    "MWTN_SELECT_NETWORK_ELEMENT": "Select network element",
-    "MWTN_SEND": "Send",
-    "MWTN_SEQUENCENUMBER": "sequenceNumber",
-    "MWTN_SEQUENCE_NUMBER": "sequence-number",
-    "MWTN_SERIAL_NUMBER": "serial-number",
-    "MWTN_SERVERID": "Server identifier",
-    "MWTN_SERVER_LTP": "Server LTPs",
-    "MWTN_SERVICE_PRIORITY": "service-priority",
-    "MWTN_SES": "SES",
-    "MWTN_SEVERITY": "severity",
-    "MWTN_SHOWLIST": "Show list",
-    "MWTN_SHOWOBJECT": "Show object",
-    "MWTN_SINR": "Signal-to-interference-plus-noise ratio (SINR)",
-    "MWTN_SITE": "Site",
-    "MWTN_SLAVE_ONLY": "slave-only",
-    "MWTN_SNIRAVG": "SINR (avg)",
-    "MWTN_SNIRCUR": "SINR (current)",
-    "MWTN_SNIRMAX": "SINR (max)",
-    "MWTN_SNIRMIN": "SINR (min)",
-    "MWTN_SNIR_AVG": "SINR (avg)",
-    "MWTN_SNIR_CUR": "SINR (current)",
-    "MWTN_SNIR_MAX": "SINR (max)",
-    "MWTN_SNIR_MIN": "SINR (min)",
-    "MWTN_SORTOFCOCHANNELGROUP": "sortOfCoChannelGroup",
-    "MWTN_SORT_OF_CO_CHANNEL_GROUP": "sort-of-co-channel-group",
-    "MWTN_SPATIAL_PROPERTIES_OF_TYPE": "spatial-properties-of-type",
-    "MWTN_STATE_PAC": "State_Pac",
-    "MWTN_STEPS_REMOVED": "steps-removed",
-    "MWTN_STRUCTUREID": "structureId",
-    "MWTN_STRUCTURETYPE": "structureType",
-    "MWTN_STRUCTURE_ID": "structure-id",
-    "MWTN_STRUCTURE_ID_REF": "structure-id-ref",
-    "MWTN_STRUCTURE_TYPE": "structure-type",
-    "MWTN_SUBOBJECT": "Subobject",
-    "MWTN_SUM": "Sum",
-    "MWTN_SUPPORTEDALARMS": "supportedAlarms",
-    "MWTN_SUPPORTEDCHANNELPLAN": "Channnel plan",
-    "MWTN_SUPPORTEDCHANNELPLANLIST": "supportedChannelPlanList",
-    "MWTN_SUPPORTEDCHANNELPLANS": "Supported channel plans",
-    "MWTN_SUPPORTEDTDMCONTAINERTYPESLIST": "supportedTdmContainerTypesList",
-    "MWTN_SUPPORTEDTDMSTRUCTURETYPESLIST": "supportedTdmStructureTypesList",
-    "MWTN_SUPPORTED_ALARMS": "supported-alarms",
-    "MWTN_SUPPORTED_CHANNEL_PLAN": "supported-channel-plan",
-    "MWTN_SUPPORTED_CHANNEL_PLAN_LIST": "supported-channel-plans",
-    "MWTN_SUPPORTED_TDM_CONTAINER_TYPES_LIST": "supported-tdm-container-types",
-    "MWTN_SUPPORTED_TDM_STRUCTURE_TYPES_LIST": "supported-tdm-structure-types",
-    "MWTN_SUSPECTINTERVALFLAG": "suspectIntervalFlag",
-    "MWTN_SUSPECT_INTERVAL_FLAG": "suspect-interval-flag",
-    "MWTN_SWAPABILITY": "swapability",
-    "MWTN_SWITCH_CONTROL": "switch-control",
-    "MWTN_SWITCH_RULE": "switch-rule",
-    "MWTN_SWITCH_SELECTION_REASON": "switch-selection-reason",
-    "MWTN_SWITCH_SELECTS_PORTS": "switch-selects-ports",
-    "MWTN_TDMCONTAINERCAPABILITY": "tdmContainerCapability",
-    "MWTN_TDMCONTAINERCONFIGURATION": "tdmContainerConfiguration",
-    "MWTN_TDMCONTAINERCURRENTPERFORMANCE": "TdmContainerCurrentPerformance",
-    "MWTN_TDMCONTAINERCURRENTPROBLEMS": "tdmContainerCurrentProblems",
-    "MWTN_TDMCONTAINERHISTORICALPERFORMANCES": "TdmContainerHistoricalPerformances",
-    "MWTN_TDMCONTAINERSTATUS": "tdmContainerStatus",
-    "MWTN_TDM_CONTAINER_CAPABILITY": "tdm-container-capability",
-    "MWTN_TDM_CONTAINER_CONFIGURATION": "tdm-container-configuration",
-    "MWTN_TDM_CONTAINER_CURRENT_PERFORMANCE": "tdm-container-current-performance",
-    "MWTN_TDM_CONTAINER_CURRENT_PROBLEMS": "tdm-container-current-problems",
-    "MWTN_TDM_CONTAINER_HISTORICAL_PERFORMANCES": "tdm-container-historical-performances",
-    "MWTN_TDM_CONTAINER_NAME": "tdm-container-name",
-    "MWTN_TDM_CONTAINER_SIZE": "tdm-container-size",
-    "MWTN_TDM_CONTAINER_STATUS": "tdm-container-status",
-    "MWTN_TDM_SEGMENT_SIZE": "tdm-segment-size",
-    "MWTN_TDM_STRUCTURE_NAME": "tdm-structure-name",
-    "MWTN_TDM_TIME_SLOTS_IS_REQUIRED": "tdm-time-slots-is-required",
-    "MWTN_TEMPERATURE": "temperature",
-    "MWTN_TERMINATIONSTATE": "terminationState",
-    "MWTN_TERMINATION_STATE": "Termination state",
-    "MWTN_THERMAL_RATING": "thermal-rating",
-    "MWTN_TIME1024SYMBOLS": "Time 1024 QAM",
-    "MWTN_TIME1024SYMBOLSL": "Time 1024 QAM (light)",
-    "MWTN_TIME1024_STATES": "time1024-states",
-    "MWTN_TIME1024_STATES_L": "time1024-states-l",
-    "MWTN_TIME128SYMBOLS": "Time 128 QAM",
-    "MWTN_TIME128_STATES": "time128-states",
-    "MWTN_TIME16SYMBOLS": "Time 16 QAM",
-    "MWTN_TIME16SYMBOLSS": "Time 16 QAM (strong)",
-    "MWTN_TIME16_STATES": "time16-states",
-    "MWTN_TIME16_STATES_S": "time16-states-s",
-    "MWTN_TIME2048SYMBOLS": "Time 2048 QAM",
-    "MWTN_TIME2048SYMBOLSL": "Time 2048 QAM (light)",
-    "MWTN_TIME2048_STATES": "time2048-states",
-    "MWTN_TIME2048_STATES_L": "time2048-states-l",
-    "MWTN_TIME256SYMBOLS": "Time 256 QAM",
-    "MWTN_TIME256_STATES": "time256-states",
-    "MWTN_TIME2SYMBOLS": "Time 2 QAM",
-    "MWTN_TIME2_STATES": "time2-states",
-    "MWTN_TIME32SYMBOLS": "Time 32 QAM",
-    "MWTN_TIME32_STATES": "time32-states",
-    "MWTN_TIME4096SYMBOLS": "Time 4096 QAM",
-    "MWTN_TIME4096SYMBOLSL": "Time 4096 QAM (light)",
-    "MWTN_TIME4096_STATES": "time4096-states",
-    "MWTN_TIME4096_STATES_L": "time4096-states-l",
-    "MWTN_TIME4SYMBOLS": "Time 4 QAM",
-    "MWTN_TIME4SYMBOLSS": "Time 4 QAM (strong)",
-    "MWTN_TIME4_STATES": "time4-states",
-    "MWTN_TIME4_STATES_S": "time4-states-s",
-    "MWTN_TIME512SYMBOLS": "Time 512 QAM",
-    "MWTN_TIME512SYMBOLSL": "Time 512 QAM (light)",
-    "MWTN_TIME512_STATES": "time512-states",
-    "MWTN_TIME512_STATES_L": "time512-states-l",
-    "MWTN_TIME64SYMBOLS": "Time 64 QAM",
-    "MWTN_TIME64_STATES": "time64-states",
-    "MWTN_TIME8192SYMBOLS": "Time 8192 QAM",
-    "MWTN_TIME8192SYMBOLSL": "Time 8192 QAM (light)",
-    "MWTN_TIME8192_STATES": "time8192-states",
-    "MWTN_TIME8192_STATES_L": "time8192-states-l",
-    "MWTN_TIME8SYMBOLS": "Time 8 QAM",
-    "MWTN_TIME8_STATES": "time8-states",
-    "MWTN_TIMEPERIOD": "Period",
-    "MWTN_TIMESLOTCAPACITY": "Time slot capacity",
-    "MWTN_TIMESLOTID": "Time slot",
-    "MWTN_TIMESLOTIDLIST": "Time slot identifiers",
-    "MWTN_TIMESLOTSTATUSLIST": "Time slot status list",
-    "MWTN_TIMESTAMP": "timestamp",
-    "MWTN_TIME_PERIOD": "time-period",
-    "MWTN_TIME_PROPERTIES_DS": "time-properties-ds",
-    "MWTN_TIME_SOURCE": "time-source",
-    "MWTN_TIME_STAMP": "time-stamp",
-    "MWTN_TIME_TRACEABLE": "time-traceable",
-    "MWTN_TOTALNUMBEROFTIMESLOTS": "Total number of time slots",
-    "MWTN_TRAFFIC": "Traffic (Logical termination points)",
-    "MWTN_TRANSMISSIONMODEID": "Transmission mode identifier",
-    "MWTN_TRANSMISSIONMODELIST": "Transmission modes",
-    "MWTN_TRANSMISSION_MODE_ID": "transmission-mode-id",
-    "MWTN_TRANSMISSION_MODE_LIST": "transmission-mode",
-    "MWTN_TRANSMITTERISON": "transmitterIsOn",
-    "MWTN_TRANSMITTER_IS_ON": "transmitter-is-on",
-    "MWTN_TRANSPARENT_CLOCK_DEFAULT_DS": "transparent-clock-default-ds",
-    "MWTN_TRANSPARENT_CLOCK_PORT_DS_LIST": "transparent-clock-port",
-    "MWTN_TRIGGER_REFRESH": "trigger-refresh",
-    "MWTN_TWO_STEP_FLAG": "two-step-flag",
-    "MWTN_TXCHANNELBANDWIDTH": "txChannelBandwidth",
-    "MWTN_TXFREQUENCY": "Transmit frequency",
-    "MWTN_TXFREQUENCYCUR": "txFrequencyCur",
-    "MWTN_TXFREQUENCYMAX": "txFrequencyMax",
-    "MWTN_TXFREQUENCYMIN": "txFrequencyMin",
-    "MWTN_TXLEVELAVG": "Transmit level (avg)",
-    "MWTN_TXLEVELCUR": "txLevelCur",
-    "MWTN_TXLEVELMAX": "Transmit level (max)",
-    "MWTN_TXLEVELMIN": "Transmit level (min)",
-    "MWTN_TXPOWER": "txPower",
-    "MWTN_TXPOWERMAX": "Max tx power",
-    "MWTN_TXPOWERMIN": "Min tx power",
-    "MWTN_TX_CHANNEL_BANDWIDTH": "tx-channel-bandwidth",
-    "MWTN_TX_ETHERNET_BYTES_MAX_M": "tx-ethernet-bytes-max-m",
-    "MWTN_TX_ETHERNET_BYTES_MAX_S": "tx-ethernet-bytes-max-s",
-    "MWTN_TX_ETHERNET_BYTES_SUM": "tx-ethernet-bytes-sum",
-    "MWTN_TX_FREQUENCY": "tx-frequency",
-    "MWTN_TX_FREQUENCY_CUR": "tx-frequency-cur",
-    "MWTN_TX_FREQUENCY_MAX": "tx-frequency-max",
-    "MWTN_TX_FREQUENCY_MIN": "tx-frequency-min",
-    "MWTN_TX_LEVEL_AVG": "tx-level-avg",
-    "MWTN_TX_LEVEL_CUR": "tx-level-cur",
-    "MWTN_TX_LEVEL_MAX": "tx-level-max",
-    "MWTN_TX_LEVEL_MIN": "tx-level-min",
-    "MWTN_TX_POWER": "tx-power",
-    "MWTN_TX_POWER_MAX": "tx-power-max",
-    "MWTN_TX_POWER_MIN": "tx-power-min",
-    "MWTN_TYPEOFEQUIPMENT": "typeOfEquipment",
-    "MWTN_TYPE_NAME": "type-name",
-    "MWTN_TYPE_OF_EQUIPMENT": "type-of-equipment",
-    "MWTN_UNAVAILABILITY": "unavailability",
-    "MWTN_UNIVERSALIDAUTHORITY": "UniversalIdAuthority",
-    "MWTN_USERNAME": "User name",
-    "MWTN_UUID": "UUID",
-    "MWTN_VALUE": "value",
-    "MWTN_VALUE_NAME": "value-name",
-    "MWTN_VERSION": "version",
-    "MWTN_VERSION_NUMBER": "version-number",
-    "MWTN_VLANCOMPRESSIONISAVAIL": "vlanCompressionIsAvail",
-    "MWTN_VLANCOMPRESSIONISON": "vlanCompressionIsOn",
-    "MWTN_VLAN_COMPRESSION_IS_AVAIL": "vlan-compression-is-avail",
-    "MWTN_VLAN_COMPRESSION_IS_ON": "vlan-compression-is-on",
-    "MWTN_VLAN_ID": "vlan-id",
-    "MWTN_WAITTORESTORETIME": "waitToRestoreTime",
-    "MWTN_WAIT_TO_RESTORE_TIME": "wait-to-restore-time",
-    "MWTN_WAIT_TO_REVERT_TIME": "wait-to-revert-time",
-    "MWTN_WEIGHT_CHARACTERISTICS": "weight-characteristics",
-    "MWTN_WIDTH": "width",
-    "MWTN_X_CONNECTIONS": "Cross connections",
-    "MWTN_XPDAVG": "Cross polarization discrimination (avg)",
-    "MWTN_XPDCUR": "xpdCur",
-    "MWTN_XPDMAX": "Cross polarization discrimination (max)",
-    "MWTN_XPDMIN": "Cross polarization discrimination (min)",
-    "MWTN_XPD_AVG": "xpd-avg",
-    "MWTN_XPD_CUR": "xpd-cur",
-    "MWTN_XPD_MAX": "xpd-max",
-    "MWTN_XPD_MIN": "xpd-min",
-    "MWTN_XPICISAVAIL": "xPic",
-    "MWTN_XPICISON": "xpicIsOn",
-    "MWTN_XPICISUP": "xpicIsUp",
-    "MWTN_XPIC_IS_AVAIL": "xpic-is-avail",
-    "MWTN_XPIC_IS_ON": "xpic-is-on",
-    "MWTN_XPIC_IS_UP": "xpic-is-up",
-    "MWTN_YANG_CAPABILITIES": "Yang capabilities",
-    "MWTN__CLIENTLTPREFLIST": "_clientLtpRefList",
-    "MWTN__CONNECTEDLTPREF": "_connectedLtpRef",
-    "MWTN__FCPORTLIST": "_fcPortList",
-    "MWTN__FCREFLIST": "_fcRefList",
-    "MWTN__FCSWITCHLIST": "_fcSwitchList",
-    "MWTN__FDREFLIST": "_fdRefList",
-    "MWTN__LOWERLEVELFCREFLIST": "_lowerLevelFcRefList",
-    "MWTN__LOWERLEVELFDREFLIST": "_lowerLevelFdRefList",
-    "MWTN__LPLIST": "_lpList",
-    "MWTN__LTPREFLIST": "_ltpRefList",
-    "MWTN__PEERLTPREF": "_peerLtpRef",
-    "MWTN__SELECTEDFCPORTREFLIST": "_selectedFcPortRefList",
-    "MWTN__SERVERLTPREFLIST": "_serverLtpRefList",
-    "MWTN_«Q.822»-CURRENTDATA": "«Q.822»-CurrentData",
-    "MWTN_«Q.822»-HISTORYDATA": "«Q.822»-HistoryData",
-    "MWTN_«X.721»-TOP": "«X.721»-Top",
-    "MWTN_«X.739»-SCANNER": "«X.739»-Scanner"
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons-custom.css
deleted file mode 100644 (file)
index cf22c14..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- *  Add your application related css here
- */
- .ht-header {
-    display: block;
-    height: 32px;
-}
-.ht-header-right {
-    float: right;
-}
-
-.owl {
-    padding:5px;
-}
-.owl-dark {
-    color: #414042;
-}
-
-.owl .owl-dark {
-    color: #414042;
-}
-
-.owl span {
-    color: white;
-}
-
-.owl a span {
-    color: white;
-}
-
-.owl .panel-default span {
-    color: #414042;
-}
-
-.owl .panel-default a span.owl-dark {
-    color: #414042;
-}
-
-.owl .panel-default .mwtn-json-viewer span.owl-dark {
-    color: #414042;
-} 
-
-.owl .panel-default .json-formatter-row .string{color:green;white-space:pre;word-wrap:break-word}
-.owl .panel-default .json-formatter-row .number{color:#00f}
-.owl .panel-default .json-formatter-row .boolean{color:red}
-.owl .panel-default .json-formatter-row .null{color:#855A00}
-.owl .panel-default .json-formatter-row .undefined{color:#ca0b69}
-.owl .panel-default .json-formatter-row .function{color:#FF20ED}
-.owl .panel-default .json-formatter-row .date{background-color:rgba(0,0,0,.05)}
-.owl .panel-default .json-formatter-row .url{text-decoration:underline;color:#00f;cursor:pointer}
-.owl .panel-default .json-formatter-row a span.bracket{color:#00f}
-.owl .panel-default .json-formatter-row a span.key{color:#00008B;cursor:pointer}
-.owl .panel-default .json-formatter-row a span.constructor-name{color: #888888; cursor:pointer}
-
-.mwtn-grid {
-  background-color: white;
-  color:black;
-}
-
-@media (min-width: 1296px) {
-  .modal-huge {
-    width: 1200px;
-  }
-}
-
-
-.form-group span.mwtnError {
-   color: red;
-}
-.mwtnLight {
-   color: white;
-}
-
-.panel-group .panel-default span .mwtnError {
-       color: red;
-}
-
-.mwtnSuccess {
-   color: darkgreen;
-}
-
-.panel-group .panel-default span .mwtnSuccess {
-       color: darkgreen;
-}
-
-.number {
-    text-align: right;
-}
-
-.rotated {
-    transform: rotate(180deg);
-    -webkit-transform: rotate(180deg);
-    -ms-transform: rotate(180deg);
-    -moz-transform: rotate(180deg);
-    -o-transform: rotate(180deg);
-}
-
-.vCenter {
-    margin: 5px 30px 5px 0px;
-    display: inline-block;
-    vertical-align: middle;
-    float: none;
-}
-
-a.vCenter {
-    text-decoration: none;
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.controller.js
deleted file mode 100644 (file)
index 872c2aa..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCommons/mwtnCommons.module',
-        'app/mwtnCommons/mwtnCommons.services'], function(mwtnCommonsApp) {
-
-  mwtnCommonsApp.register.controller('mwtnCommonsCtrl', ['$scope', '$rootScope', '$mwtnCommons', '$mwtnLog', 'FileReader', 
-                                                         function($scope, $rootScope, $mwtnCommons, $mwtnLog, FileReader) {
-
-    $rootScope.section_logo = ''; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-    $scope.mwtnCommonsInfo = {};
-
-    $mwtnCommons.getData(function(data){
-      $scope.data = data;      
-    });
-    
-  }]);
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.module.js
deleted file mode 100755 (executable)
index ebc515c..0000000
+++ /dev/null
@@ -1,622 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD',
-        'app/routingConfig',
-        'app/core/core.services',
-        'common/config/env.module',
-        'app/mwtnCommons/bower_components/angular-ui-grid/ui-grid.min',
-        'app/mwtnCommons/bower_components/chart.js/dist/Chart',
-        'app/mwtnCommons/bower_components/angular-chart.js/dist/angular-chart',
-        'app/mwtnCommons/bower_components/angular-clipboard/angular-clipboard',
-        'ui-bootstrap', 
-        'app/mwtnCommons/bower_components/json-formatter/dist/json-formatter.min'],
-        function(ng) {
-  var mwtnCommonsApp = angular.module('app.mwtnCommons', ['app.core','chart.js', 'ui.router.state', 'ui.grid', 'ui.bootstrap', 'jsonFormatter', 'config', 'pascalprecht.translate', 'angular-clipboard']);
-
-  mwtnCommonsApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $httpProvider, $translateProvider, $translatePartialLoaderProvider) {
-    mwtnCommonsApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-    $translatePartialLoaderProvider.addPart('app/mwtnCommons/locale/locale');
-
-    var access = routingConfig.accessLevels;
-
-  });
-
-  mwtnCommonsApp.directive('htHeader', [ '$injector' ,function ($injector) {
-    return {
-       template: '<div class="ht-header"><div class="ht-header-right"><alarm-status ng-if="mwtnFaultExists"></alarm-status><help  ng-if="helpExists" link="{{helpLink}}" ></help></div></div>',
-      controller: ['$scope', function ($scope) {
-        $scope.helpExists = $injector.has('helpDirective');
-        $scope.mwtnFaultExists = $injector.has('alarmStatusDirective');
-      }],
-      restict: "EA",
-      replace: true,
-      scope: {
-        helpLink: "@"
-      }
-    };
-  }]);
-
-
-  return mwtnCommonsApp;
-});
-
-
-/*
- Copyright 2011-2013 Abdulla Abdurakhmanov
- Original sources are available at https://code.google.com/p/x2js/
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
-
-function X2JS(config) {
-       'use strict';
-               
-       var VERSION = "1.1.5";
-       
-       config = config || {};
-       initConfigDefaults();
-       initRequiredPolyfills();
-       
-       function initConfigDefaults() {
-               if(config.escapeMode === undefined) {
-                       config.escapeMode = true;
-               }
-               config.attributePrefix = config.attributePrefix || "_";
-               config.arrayAccessForm = config.arrayAccessForm || "none";
-               config.emptyNodeForm = config.emptyNodeForm || "text";
-               if(config.enableToStringFunc === undefined) {
-                       config.enableToStringFunc = true; 
-               }
-               config.arrayAccessFormPaths = config.arrayAccessFormPaths || []; 
-               if(config.skipEmptyTextNodesForObj === undefined) {
-                       config.skipEmptyTextNodesForObj = true;
-               }
-               if(config.stripWhitespaces === undefined) {
-                       config.stripWhitespaces = true;
-               }
-               config.datetimeAccessFormPaths = config.datetimeAccessFormPaths || [];
-       }
-
-       var DOMNodeTypes = {
-               ELEMENT_NODE       : 1,
-               TEXT_NODE          : 3,
-               CDATA_SECTION_NODE : 4,
-               COMMENT_NODE       : 8,
-               DOCUMENT_NODE      : 9
-       };
-       
-       function initRequiredPolyfills() {
-               function pad(number) {
-             var r = String(number);
-             if ( r.length === 1 ) {
-               r = '0' + r;
-             }
-             return r;
-           }
-               // Hello IE8-
-               if(typeof String.prototype.trim !== 'function') {                       
-                       String.prototype.trim = function() {
-                               return this.replace(/^\s+|^\n+|(\s|\n)+$/g, '');
-                       }
-               }
-               if(typeof Date.prototype.toISOString !== 'function') {
-                       // Implementation from http://stackoverflow.com/questions/2573521/how-do-i-output-an-iso-8601-formatted-string-in-javascript
-                       Date.prototype.toISOString = function() {
-                     return this.getUTCFullYear()
-                       + '-' + pad( this.getUTCMonth() + 1 )
-                       + '-' + pad( this.getUTCDate() )
-                       + 'T' + pad( this.getUTCHours() )
-                       + ':' + pad( this.getUTCMinutes() )
-                       + ':' + pad( this.getUTCSeconds() )
-                       + '.' + String( (this.getUTCMilliseconds()/1000).toFixed(3) ).slice( 2, 5 )
-                       + 'Z';
-                   };
-               }
-       }
-       
-       function getNodeLocalName( node ) {
-               var nodeLocalName = node.localName;                     
-               if(nodeLocalName == null) // Yeah, this is IE!! 
-                       nodeLocalName = node.baseName;
-               if(nodeLocalName == null || nodeLocalName=="") // =="" is IE too
-                       nodeLocalName = node.nodeName;
-               return nodeLocalName;
-       }
-       
-       function getNodePrefix(node) {
-               return node.prefix;
-       }
-               
-       function escapeXmlChars(str) {
-               if(typeof(str) == "string")
-                       return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g, '&#x2F;');
-               else
-                       return str;
-       }
-
-       function unescapeXmlChars(str) {
-               return str.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"').replace(/&#x27;/g, "'").replace(/&#x2F;/g, '\/');
-       }
-       
-       function toArrayAccessForm(obj, childName, path) {
-               switch(config.arrayAccessForm) {
-               case "property":
-                       if(!(obj[childName] instanceof Array))
-                               obj[childName+"_asArray"] = [obj[childName]];
-                       else
-                               obj[childName+"_asArray"] = obj[childName];
-                       break;          
-               /*case "none":
-                       break;*/
-               }
-               
-               if(!(obj[childName] instanceof Array) && config.arrayAccessFormPaths.length > 0) {
-                       var idx = 0;
-                       for(; idx < config.arrayAccessFormPaths.length; idx++) {
-                               var arrayPath = config.arrayAccessFormPaths[idx];
-                               if( typeof arrayPath === "string" ) {
-                                       if(arrayPath == path)
-                                               break;
-                               }
-                               else
-                               if( arrayPath instanceof RegExp) {
-                                       if(arrayPath.test(path))
-                                               break;
-                               }                               
-                               else
-                               if( typeof arrayPath === "function") {
-                                       if(arrayPath(obj, childName, path))
-                                               break;
-                               }
-                       }
-                       if(idx!=config.arrayAccessFormPaths.length) {
-                               obj[childName] = [obj[childName]];
-                       }
-               }
-       }
-       
-       function fromXmlDateTime(prop) {
-               // Implementation based up on http://stackoverflow.com/questions/8178598/xml-datetime-to-javascript-date-object
-               // Improved to support full spec and optional parts
-               var bits = prop.split(/[-T:+Z]/g);
-               
-               var d = new Date(bits[0], bits[1]-1, bits[2]);                  
-               var secondBits = bits[5].split("\.");
-               d.setHours(bits[3], bits[4], secondBits[0]);
-               if(secondBits.length>1)
-                       d.setMilliseconds(secondBits[1]);
-
-               // Get supplied time zone offset in minutes
-               if(bits[6] && bits[7]) {
-                       var offsetMinutes = bits[6] * 60 + Number(bits[7]);
-                       var sign = /\d\d-\d\d:\d\d$/.test(prop)? '-' : '+';
-
-                       // Apply the sign
-                       offsetMinutes = 0 + (sign == '-'? -1 * offsetMinutes : offsetMinutes);
-
-                       // Apply offset and local timezone
-                       d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset())
-               }
-               else
-                       if(prop.indexOf("Z", prop.length - 1) !== -1) {
-                               d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()));                                  
-                       }
-
-               // d is now a local time equivalent to the supplied time
-               return d;
-       }
-       
-       function checkFromXmlDateTimePaths(value, childName, fullPath) {
-               if(config.datetimeAccessFormPaths.length > 0) {
-                       var path = fullPath.split("\.#")[0];
-                       var idx = 0;
-                       for(; idx < config.datetimeAccessFormPaths.length; idx++) {
-                               var dtPath = config.datetimeAccessFormPaths[idx];
-                               if( typeof dtPath === "string" ) {
-                                       if(dtPath == path)
-                                               break;
-                               }
-                               else
-                               if( dtPath instanceof RegExp) {
-                                       if(dtPath.test(path))
-                                               break;
-                               }                               
-                               else
-                               if( typeof dtPath === "function") {
-                                       if(dtPath(obj, childName, path))
-                                               break;
-                               }
-                       }
-                       if(idx!=config.datetimeAccessFormPaths.length) {
-                               return fromXmlDateTime(value);
-                       }
-                       else
-                               return value;
-               }
-               else
-                       return value;
-       }
-
-       function parseDOMChildren( node, path ) {
-               if(node.nodeType == DOMNodeTypes.DOCUMENT_NODE) {
-                       var result = new Object;
-                       var nodeChildren = node.childNodes;
-                       // Alternative for firstElementChild which is not supported in some environments
-                       for(var cidx=0; cidx <nodeChildren.length; cidx++) {
-                               var child = nodeChildren.item(cidx);
-                               if(child.nodeType == DOMNodeTypes.ELEMENT_NODE) {
-                                       var childName = getNodeLocalName(child);
-                                       result[childName] = parseDOMChildren(child, childName);
-                               }
-                       }
-                       return result;
-               }
-               else
-               if(node.nodeType == DOMNodeTypes.ELEMENT_NODE) {
-                       var result = new Object;
-                       result.__cnt=0;
-                       
-                       var nodeChildren = node.childNodes;
-                       
-                       // Children nodes
-                       for(var cidx=0; cidx <nodeChildren.length; cidx++) {
-                               var child = nodeChildren.item(cidx); // nodeChildren[cidx];
-                               var childName = getNodeLocalName(child);
-                               
-                               if(child.nodeType!= DOMNodeTypes.COMMENT_NODE) {
-                                       result.__cnt++;
-                                       if(result[childName] == null) {
-                                               result[childName] = parseDOMChildren(child, path+"."+childName);
-                                               toArrayAccessForm(result, childName, path+"."+childName);                                       
-                                       }
-                                       else {
-                                               if(result[childName] != null) {
-                                                       if( !(result[childName] instanceof Array)) {
-                                                               result[childName] = [result[childName]];
-                                                               toArrayAccessForm(result, childName, path+"."+childName);
-                                                       }
-                                               }
-                                               (result[childName])[result[childName].length] = parseDOMChildren(child, path+"."+childName);
-                                       }
-                               }                                                               
-                       }
-                       
-                       // Attributes
-                       for(var aidx=0; aidx <node.attributes.length; aidx++) {
-                               var attr = node.attributes.item(aidx); // [aidx];
-                               result.__cnt++;
-                               result[config.attributePrefix+attr.name]=attr.value;
-                       }
-                       
-                       // Node namespace prefix
-                       var nodePrefix = getNodePrefix(node);
-                       if(nodePrefix!=null && nodePrefix!="") {
-                               result.__cnt++;
-                               result.__prefix=nodePrefix;
-                       }
-                       
-                       if(result["#text"]!=null) {                             
-                               result.__text = result["#text"];
-                               if(result.__text instanceof Array) {
-                                       result.__text = result.__text.join("\n");
-                               }
-                               if(config.escapeMode)
-                                       result.__text = unescapeXmlChars(result.__text);
-                               if(config.stripWhitespaces)
-                                       result.__text = result.__text.trim();
-                               delete result["#text"];
-                               if(config.arrayAccessForm=="property")
-                                       delete result["#text_asArray"];
-                               result.__text = checkFromXmlDateTimePaths(result.__text, childName, path+"."+childName);
-                       }
-                       if(result["#cdata-section"]!=null) {
-                               result.__cdata = result["#cdata-section"];
-                               delete result["#cdata-section"];
-                               if(config.arrayAccessForm=="property")
-                                       delete result["#cdata-section_asArray"];
-                       }
-                       
-                       if( result.__cnt == 1 && result.__text!=null  ) {
-                               result = result.__text;
-                       }
-                       else
-                       if( result.__cnt == 0 && config.emptyNodeForm=="text" ) {
-                               result = '';
-                       }
-                       else
-                       if ( result.__cnt > 1 && result.__text!=null && config.skipEmptyTextNodesForObj) {
-                               if( (config.stripWhitespaces && result.__text=="") || (result.__text.trim()=="")) {
-                                       delete result.__text;
-                               }
-                       }
-                       delete result.__cnt;                    
-                       
-                       if( config.enableToStringFunc && (result.__text!=null || result.__cdata!=null )) {
-                               result.toString = function() {
-                                       return (this.__text!=null? this.__text:'')+( this.__cdata!=null ? this.__cdata:'');
-                               };
-                       }
-                       
-                       return result;
-               }
-               else
-               if(node.nodeType == DOMNodeTypes.TEXT_NODE || node.nodeType == DOMNodeTypes.CDATA_SECTION_NODE) {
-                       return node.nodeValue;
-               }       
-       }
-       
-       function startTag(jsonObj, element, attrList, closed) {
-               var resultStr = "<"+ ( (jsonObj!=null && jsonObj.__prefix!=null)? (jsonObj.__prefix+":"):"") + element;
-               if(attrList!=null) {
-                       for(var aidx = 0; aidx < attrList.length; aidx++) {
-                               var attrName = attrList[aidx];
-                               var attrVal = jsonObj[attrName];
-                               if(config.escapeMode)
-                                       attrVal=escapeXmlChars(attrVal);
-                               resultStr+=" "+attrName.substr(config.attributePrefix.length)+"='"+attrVal+"'";
-                       }
-               }
-               if(!closed)
-                       resultStr+=">";
-               else
-                       resultStr+="/>";
-               return resultStr;
-       }
-       
-       function endTag(jsonObj,elementName) {
-               return "</"+ (jsonObj.__prefix!=null? (jsonObj.__prefix+":"):"")+elementName+">";
-       }
-       
-       function endsWith(str, suffix) {
-           return str.indexOf(suffix, str.length - suffix.length) !== -1;
-       }
-       
-       function jsonXmlSpecialElem ( jsonObj, jsonObjField ) {
-               if((config.arrayAccessForm=="property" && endsWith(jsonObjField.toString(),("_asArray"))) 
-                               || jsonObjField.toString().indexOf(config.attributePrefix)==0 
-                               || jsonObjField.toString().indexOf("__")==0
-                               || (jsonObj[jsonObjField] instanceof Function) )
-                       return true;
-               else
-                       return false;
-       }
-       
-       function jsonXmlElemCount ( jsonObj ) {
-               var elementsCnt = 0;
-               if(jsonObj instanceof Object ) {
-                       for( var it in jsonObj  ) {
-                               if(jsonXmlSpecialElem ( jsonObj, it) )
-                                       continue;                       
-                               elementsCnt++;
-                       }
-               }
-               return elementsCnt;
-       }
-       
-       function parseJSONAttributes ( jsonObj ) {
-               var attrList = [];
-               if(jsonObj instanceof Object ) {
-                       for( var ait in jsonObj  ) {
-                               if(ait.toString().indexOf("__")== -1 && ait.toString().indexOf(config.attributePrefix)==0) {
-                                       attrList.push(ait);
-                               }
-                       }
-               }
-               return attrList;
-       }
-       
-       function parseJSONTextAttrs ( jsonTxtObj ) {
-               var result ="";
-               
-               if(jsonTxtObj.__cdata!=null) {                                                                          
-                       result+="<![CDATA["+jsonTxtObj.__cdata+"]]>";                                   
-               }
-               
-               if(jsonTxtObj.__text!=null) {                   
-                       if(config.escapeMode)
-                               result+=escapeXmlChars(jsonTxtObj.__text);
-                       else
-                               result+=jsonTxtObj.__text;
-               }
-               return result;
-       }
-       
-       function parseJSONTextObject ( jsonTxtObj ) {
-               var result ="";
-
-               if( jsonTxtObj instanceof Object ) {
-                       result+=parseJSONTextAttrs ( jsonTxtObj );
-               }
-               else
-                       if(jsonTxtObj!=null) {
-                               if(config.escapeMode)
-                                       result+=escapeXmlChars(jsonTxtObj);
-                               else
-                                       result+=jsonTxtObj;
-                       }
-               
-               return result;
-       }
-       
-       function parseJSONArray ( jsonArrRoot, jsonArrObj, attrList ) {
-               var result = ""; 
-               if(jsonArrRoot.length == 0) {
-                       result+=startTag(jsonArrRoot, jsonArrObj, attrList, true);
-               }
-               else {
-                       for(var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) {
-                               result+=startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false);
-                               result+=parseJSONObject(jsonArrRoot[arIdx]);
-                               result+=endTag(jsonArrRoot[arIdx],jsonArrObj);                                          
-                       }
-               }
-               return result;
-       }
-       
-       function parseJSONObject ( jsonObj ) {
-               var result = "";        
-
-               var elementsCnt = jsonXmlElemCount ( jsonObj );
-               
-               if(elementsCnt > 0) {
-                       for( var it in jsonObj ) {
-                               
-                               if(jsonXmlSpecialElem ( jsonObj, it) )
-                                       continue;                       
-                               
-                               var subObj = jsonObj[it];                                               
-                               
-                               var attrList = parseJSONAttributes( subObj )
-                               
-                               if(subObj == null || subObj == undefined) {
-                                       result+=startTag(subObj, it, attrList, true);
-                               }
-                               else
-                               if(subObj instanceof Object) {
-                                       
-                                       if(subObj instanceof Array) {                                   
-                                               result+=parseJSONArray( subObj, it, attrList );                                 
-                                       }
-                                       else if(subObj instanceof Date) {
-                                               result+=startTag(subObj, it, attrList, false);
-                                               result+=subObj.toISOString();
-                                               result+=endTag(subObj,it);
-                                       }
-                                       else {
-                                               var subObjElementsCnt = jsonXmlElemCount ( subObj );
-                                               if(subObjElementsCnt > 0 || subObj.__text!=null || subObj.__cdata!=null) {
-                                                       result+=startTag(subObj, it, attrList, false);
-                                                       result+=parseJSONObject(subObj);
-                                                       result+=endTag(subObj,it);
-                                               }
-                                               else {
-                                                       result+=startTag(subObj, it, attrList, true);
-                                               }
-                                       }
-                               }
-                               else {
-                                       result+=startTag(subObj, it, attrList, false);
-                                       result+=parseJSONTextObject(subObj);
-                                       result+=endTag(subObj,it);
-                               }
-                       }
-               }
-               result+=parseJSONTextObject(jsonObj);
-               
-               return result;
-       }
-       
-       this.parseXmlString = function(xmlDocStr) {
-               var isIEParser = window.ActiveXObject || "ActiveXObject" in window;
-               if (xmlDocStr === undefined) {
-                       return null;
-               }
-               var xmlDoc;
-               if (window.DOMParser) {
-                       var parser=new window.DOMParser();                      
-                       var parsererrorNS = null;
-                       // IE9+ now is here
-                       if(!isIEParser) {
-                               try {
-                                       parsererrorNS = parser.parseFromString("INVALID", "text/xml").childNodes[0].namespaceURI;
-                               }
-                               catch(err) {                                    
-                                       parsererrorNS = null;
-                               }
-                       }
-                       try {
-                               xmlDoc = parser.parseFromString( xmlDocStr, "text/xml" );
-                               if( parsererrorNS!= null && xmlDoc.getElementsByTagNameNS(parsererrorNS, "parsererror").length > 0) {
-                                       //throw new Error('Error parsing XML: '+xmlDocStr);
-                                       xmlDoc = null;
-                               }
-                       }
-                       catch(err) {
-                               xmlDoc = null;
-                       }
-               }
-               else {
-                       // IE :(
-                       if(xmlDocStr.indexOf("<?")==0) {
-                               xmlDocStr = xmlDocStr.substr( xmlDocStr.indexOf("?>") + 2 );
-                       }
-                       xmlDoc=new ActiveXObject("Microsoft.XMLDOM");
-                       xmlDoc.async="false";
-                       xmlDoc.loadXML(xmlDocStr);
-               }
-               return xmlDoc;
-       };
-       
-       this.asArray = function(prop) {
-               if(prop instanceof Array)
-                       return prop;
-               else
-                       return [prop];
-       };
-       
-       this.toXmlDateTime = function(dt) {
-               if(dt instanceof Date)
-                       return dt.toISOString();
-               else
-               if(typeof(dt) === 'number' )
-                       return new Date(dt).toISOString();
-               else    
-                       return null;
-       };
-       
-       this.asDateTime = function(prop) {
-               if(typeof(prop) == "string") {
-                       return fromXmlDateTime(prop);
-               }
-               else
-                       return prop;
-       };
-
-       this.xml2json = function (xmlDoc) {
-               return parseDOMChildren ( xmlDoc );
-       };
-       
-       this.xml_str2json = function (xmlDocStr) {
-               var xmlDoc = this.parseXmlString(xmlDocStr);
-               if(xmlDoc!=null)
-                       return this.xml2json(xmlDoc);
-               else
-                       return null;
-       };
-
-       this.json2xml_str = function (jsonObj) {
-               return parseJSONObject ( jsonObj );
-       };
-
-       this.json2xml = function (jsonObj) {
-               var xmlDocStr = this.json2xml_str (jsonObj);
-               return this.parseXmlString(xmlDocStr);
-       };
-       
-       this.getVersion = function () {
-               return VERSION;
-       };
-       
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.services.js
deleted file mode 100644 (file)
index 9a71343..0000000
+++ /dev/null
@@ -1,3826 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies GmbH and others. All rights reserved.
- *
- * @license
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at {@link http://www.eclipse.org/legal/epl-v10.html} 
- */
-
-if (!String.prototype.toHumanReadableTimeFormat) {
-  String.prototype.toHumanReadableTimeFormat = function () {
-    return this.replace(/T/g, ' ').replace(/Z/g, ' UTC').replace(/\+00:00/g, ' UTC');
-  };
-}
-
-if (!String.prototype.base64ToHex) {
-  String.prototype.base64ToHex = function () {
-    var raw = atob(this);
-    var result = [];
-    for ( i = 0; i < raw.length; i++ ) {
-      var _hex = raw.charCodeAt(i).toString(16)
-      result.push('0x' + ( _hex.length === 2 ? _hex:'0' + _hex));
-    }
-    return result.join(' ');
-  };
-}
-
-if (!String.prototype.contains) {
-  /**
-   * An extension to String, which checks whether another string is contained.
-   * @param {string} find A string to be checked, whether it is contained in 'this'.
-   * @return {boolean} True, if 'this' contains param 'find', otherwise false.
-   */
-  String.prototype.contains = function (find) {
-    return this.indexOf(find) > -1;
-  };
-}
-
-if (!String.prototype.format) {
-  /**
-   * An extension to String, which replaces certain patterns by arguments.
-   * @see {@link https://stackoverflow.com/questions/610406/javascript-equivalent-to-printf-string-format|javascript-equivalent-to-printf-string-format}
-   * @return {string} Formated string.
-   */
-  String.prototype.format = function () {
-    var args = arguments;
-    return this.replace(/{(\d+)}/g, function (match, number) {
-      return typeof args[number] !== 'undefined' ? args[number] : match
-        ;
-    });
-  };
-}
-
-if (!String.prototype.replaceAll) {
-  /**
-   * An extension to String, which replaces certain patterns by arguments.
-   * @see {@link https://stackoverflow.com/questions/1144783/how-to-replace-all-occurrences-of-a-string-in-javascript|how-to-replace-all-occurrences-of-a-string-in-javascript}
-   * @param {string} find - The string which should be replaced.
-   * @param {string} replace - The string which should replace 'find'.
-   * @return {string} String where 'find' is replaced by 'replace'.
-   */
-  String.prototype.replaceAll = function (find, replace) {
-    return this.replace(new RegExp(find, 'g'), replace);
-  }
-}
-
-if (!Array.prototype.contains) {
-  /**
-   * An extension to Array checking whether an array of primitive types contains a given value.
-   * @param {string|number|boolean|null|undefined} find An object which should be removed from the array.
-   * @return {boolean} True, if 'this' contains param 'find', otherwise false..
-   */
-  Array.prototype.contains = function (find) {
-    return this.indexOf(find) > -1;
-  };
-}
-
-if (!Array.prototype.clean) {
-  /**
-   * An extension to Array removing defined values from an array.
-   * @see {@link https://gist.github.com/waynegraham/3684627|Array.clean()}
-   * @param {Object} deleteValue An object which should be removed from the array.
-   * @return {Array} An array without 'deleteValue'.
-   */
-  Array.prototype.clean = function (deleteValue) {
-    for (var i = 0; i < this.length; i++) { // TODO swtich to .map() ?
-      if (this[i] === deleteValue) {
-        this.splice(i, 1);
-        i--;
-      }
-    }
-    return this;
-  };
-}
-
-define(
-  ['app/mwtnCommons/mwtnCommons.module'],
-  function (mwtnCommonsApp) {
-
-    mwtnCommonsApp.register.controller('mwtnFooterController', ['$scope', function ($scope) {
-      var vm = this;
-      $scope.prefix = 'ONF Wireless for OpenDaylight Boron-SR3';
-    }]);
-
-    mwtnCommonsApp.register.directive('mwtnFooter', function () {
-      return {
-        restrict: 'E',
-        controller: 'mwtnFooterController',
-        controllerAs: 'vm',
-        templateUrl: 'src/app/mwtnCommons/templates/mwtnFooter.tpl.html'
-      };
-    });
-
-    mwtnCommonsApp.register.controller('openConfigViewController', ['$scope', '$uibModalInstance', '$mwtnGlobal', '$mwtnCommons', '$mwtnDatabase', '$mwtnLog', 'valueData', 
-      function ($scope, $uibModalInstance, $mwtnGlobal, $mwtnCommons, $mwtnDatabase, $mwtnLog, data) {
-
-      var vm = this;
-      var COMPONENT = 'openConfigViewController';
-
-      $scope.getType = $mwtnGlobal.getType;
-      $scope.spec = data.spec;
-      $mwtnCommons.getConditionalPackagePart($scope.spec).then(function (success) {
-        
-        var getControlType = function(type) {
-          var result = 'text'
-          switch (type) {
-            case 'boolean':
-              result = 'checkbox';
-              break;
-            case 'number':
-              result = 'number';
-              break;
-            case 'string':
-            case 'array':
-            case 'object':
-              break;
-           default:
-              var message = 'Check control type for ' + type;
-              $mwtnLog.warning({ component: COMPONENT, message: message });
-          }
-          return result;
-        };
-
-        success.layerProtocol = $scope.spec.layerProtocolId;
-        $scope.configuredData = success;
-        $scope.newData = $scope.configuredData[$scope.spec.partId];
-
-        $scope.viewData = $mwtnGlobal.getViewData($scope.configuredData[$scope.spec.partId], $scope.ne);
-        $mwtnDatabase.getSchema().then(function(schema){
-          var ordered = {};
-          var clone = JSON.parse(JSON.stringify($scope.viewData));
-          var keys = Object.keys(clone).map(function(key){
-            if ($mwtnGlobal.getType(key) !== 'string') {
-              console.log('key', key);
-              return;
-            }
-            var item = clone[key];
-            if (!schema[key]) {
-              
-              var message = 'No schema information for ' + key;
-              console.error(key, schema[key]);
-              $mwtnLog.warning({ component: COMPONENT, message: message });
-              item['order-number'] = $mwtnCommons.getOrderNumber(97, item);
-              item.description = 'No description available.';
-              item.visible = true;
-              return key;
-            }
-            if (schema[key].controlType === undefined) {
-              item.controlType = getControlType(item.type);
-            } else {
-              item.controlType = schema[key].controlType;
-            }
-            item.unit = schema[key].unit;
-            item.description = schema[key].description;
-            item['order-number'] = $mwtnCommons.getOrderNumber(schema[key]['order-number'], item);
-            if (item.description === undefined || item.description === '') {
-              item.description = 'No description available.';
-            }
-            // hide complex types for now -> TODO
-            if (item.type === 'array' || item.type === 'object') {
-              item.visible = false;
-            }
-            return key;
-          }).sort(function(a,b){
-            if (clone[a]['order-number'] < clone[b]['order-number']) return -1;
-            if (clone[a]['order-number'] > clone[b]['order-number']) return 1;
-            return 0;
-          }).map(function(key){
-            ordered[key] = clone[key];
-          });
-          $scope.viewData = ordered;
-        }, function(error){
-          $scope.empty = true;
-        });
-                  
-      }, function (error) {
-        $scope.configuredData = undefined;
-        $mwtnLog.error({ component: COMPONENT, message: 'Requesting conditional package of ' + JSON.stringify($scope.spec) + ' failed!' });
-      });
-
-      $scope.ok = function () {
-        $scope.processing = true;
-        Object.keys($scope.viewData).map(function(key){
-          $scope.newData[key] = $scope.viewData[key].value;
-        });
-
-        $mwtnCommons.setConditionalPackagePart($scope.spec, $scope.newData).then(function(success){
-          $scope.applied = {text: 'Applied: ' + new Date().toISOString(), class:'mwtnSuccess'};
-          $scope.processing = false;
-        }, function(error){
-          $scope.applied = {text: 'Error: ' + new Date().toISOString(), class:'mwtnError'};
-          $scope.processing = false;
-          $mwtnLog.error({component: COMPONENT, message: JSON.stringify(error)});
-        });
-
-      };
-    
-      $scope.cancel = function () {
-        $uibModalInstance.close($scope.newData);
-      };
-
-    }]);
-
-    mwtnCommonsApp.register.controller('mwtnJsonViewerController', ['$scope', '$uibModal', '$mwtnGlobal', '$mwtnCommons', '$mwtnDatabase', '$mwtnLog',
-      function ($scope, $uibModal, $mwtnGlobal, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-        var vm = this;
-        var COMPONENT = 'mwtnJsonViewerController';
-        $scope.getType = $mwtnGlobal.getType;
-        
-        if ($scope.data) {
-          $scope.replace = false;
-          if ($scope.path && $scope.path.endsWith('-configuration') ) {
-            $scope.replace = true;
-          }
-          $scope.viewData = $mwtnGlobal.getViewData($scope.data, $scope.ne);
-          var path = [undefined, undefined, undefined];
-          if ($scope.path) {
-            path = $scope.path.split($mwtnCommons.separator);
-          }
-          $scope.spec = {
-            nodeId: $scope.networkElement,
-            revision: '2017-03-20',
-            pacId: path[0],
-            layer: '???',
-            layerProtocolId: path[1],
-            partId: path[2],
-            config: true
-          };
-
-          $scope.openConfigView = function(){
-            var modalInstance = $uibModal.open({
-              animation: true,
-              ariaLabelledBy: 'modal-title',
-              ariaDescribedBy: 'modal-body',
-              templateUrl: 'src/app/mwtnCommons/templates/openConfigView.html',
-              controller: 'openConfigViewController',
-              size: 'huge',
-              resolve: {
-                valueData: function () {
-                  return {spec:$scope.spec};
-                }
-              }
-            });
-            modalInstance.result.then(function(object) {
-              // update fetch new data from ODL
-              $mwtnCommons.getPacParts($scope.spec).then(function(success){
-                // intermedite step to display something, even processing fails or takes time
-                $scope.viewData = $mwtnGlobal.getViewData(success[$scope.spec.partId], $scope.ne);
-                // now the nice way ;)
-                $scope.viewData = processData($scope.schema);
-              }, function(error){
-                // ignore;
-              });
-            }, function () {
-                // ignore;
-            });
-          };
-          
-          $scope.myClipboard = {
-            data: [$scope.data],
-            supported: true,
-            getJson: function () {
-              return JSON.stringify(this.data, null, ' ');
-            },
-            copyToClipboard: function () {
-              var message = 'Copied to clipboard! ' + this.getJson();
-              $mwtnLog.info({ component: COMPONENT, message: message });
-            },
-            error: function (err) {
-              $mwtnLog.error({ component: COMPONENT, message: err });
-            }
-          };
-
-          var processData = function(schema) {
-            var ordered = {};
-            var clone = JSON.parse(JSON.stringify($scope.viewData));
-            var keys = Object.keys(clone).map(function(key){
-              if ($mwtnGlobal.getType(key) !== 'string') {
-                console.log('key', key);
-                return;
-              }
-              var item = clone[key];
-              if (!schema[key]) {
-                var message = 'No schema information for ' + key;
-                  $mwtnLog.warning({ component: COMPONENT, message: message });
-                item['order-number'] = $mwtnCommons.getOrderNumber(97, item);
-                item.description = 'No description available.';
-                item.visible = true;
-                return key;
-              }
-              item.unit = schema[key].unit;
-              item.description = schema[key].description;
-              item['order-number'] = $mwtnCommons.getOrderNumber(schema[key]['order-number'], item);
-              if (item.description === undefined || item.description === '') {
-                item.description = 'No description available.';
-              }
-              return key;
-            }).sort(function(a,b){
-              if (clone[a]['order-number'] < clone[b]['order-number']) return -1;
-              if (clone[a]['order-number'] > clone[b]['order-number']) return 1;
-              return 0;
-            }).map(function(key){
-              ordered[key] = clone[key];
-            });
-            $scope.info = false;
-            if (Object.keys(ordered).length === 0) {
-              $scope.info = 'An empty object is displayed. Please check if the NetConf server has send an empty object.';
-            }
-            return ordered;
-          };
-
-          $mwtnDatabase.getSchema().then(function(schema){
-            $scope.schema = schema;
-            $scope.viewData = processData($scope.schema);
-          }, function(error){
-            // ignore;
-          });
-        }
-    }]);
-    
-    mwtnCommonsApp.register.directive('mwtnJsonViewer', function () {
-      return {
-        restrict: 'E',
-        scope: {
-          data: '=',
-          path: '=',
-          ne: '=', // flag if ne class
-          networkElement: '=',
-          noButtons: '='
-        },
-        controller: 'mwtnJsonViewerController',
-        controllerAs: 'vm',
-        templateUrl: 'src/app/mwtnCommons/templates/mwtnJsonViewer.tpl.html'
-      };
-    });
-
-    mwtnCommonsApp.register.controller('showGridCellDetailController', ['$scope', '$uibModalInstance', '$mwtnGlobal', 'valueData', 
-                                              function ($scope, $uibModalInstance, $mwtnGlobal, valueData) {
-
-      $scope.networkElement = valueData.networkElement;
-      $scope.path = valueData.path;
-      $scope.type = $mwtnGlobal.getType(valueData.value);
-      $scope.value = valueData.value;
-      // $scope.gridOptions = JSON.parse(JSON.stringify($mwtnCommons.gridOptions));
-      // $scope.highlightFilteredHeader = $mwtnCommons.highlightFilteredHeader;
-
-      console.log('valueData', JSON.stringify(valueData));
-
-      // $scope.ok = function () {
-      //   $scope.processing = true;
-      //   $mwtnCommons.setPacPartLists($scope.path, $scope.listData).then(function(success){
-      //     $scope.applied = {text: 'Applied: ' + new Date().toISOString(), class:'mwtnSuccess'};
-      //     $scope.processing = false;
-      //   }, function(error){
-      //     $scope.applied = {text: 'Error: ' + new Date().toISOString(), class:'mwtnError'};
-      //     $scope.processing = false;
-      //     $mwtnLog.error({component: COMPONENT, message: JSON.stringify(error)});
-      //   });
-
-      // };
-    
-      $scope.cancel = function () {
-        $uibModalInstance.dismiss('cancel');
-      };
-
-    }]);
-
-    mwtnCommonsApp.register.controller('mwtnGridController', ['$scope', '$filter', '$uibModal', '$mwtnGlobal', '$mwtnCommons', '$mwtnLog',
-      function ($scope, $filter, $uibModal, $mwtnGlobal, $mwtnCommons, $mwtnLog) {
-        var vm = this;
-        var COMPONENT = 'mwtnGridController';
-
-        $scope.info = false;
-
-        var data = JSON.parse(JSON.stringify($scope.data));
-        if (!data) {
-          var message = 'No data to be displayed!";'
-          $mwtnLog.info({ component: COMPONENT, message: message });
-          data = [{'message':message}];
-        }
-
-        if ($mwtnGlobal.getType(data) !== 'array')  {
-          var message = 'Data must be of type "array"!';
-          $mwtnLog.info({ component: COMPONENT, message: message });
-          data = [{'message':message}];
-        }
-
-        if (data.length === 0)  {
-          var message = 'Data list must have at least one entry!';
-          $mwtnLog.info({ component: COMPONENT, message: message });
-          data = [{'message':message}];
-        }
-
-        if ($mwtnGlobal.getType(data[0]) !== 'object')  {
-          data = data.map(function(item){
-            return {value: item};
-          });
-        }
-
-        $scope.gridOptions = JSON.parse(JSON.stringify($mwtnCommons.gridOptions));
-        $scope.highlightFilteredHeader = $mwtnCommons.highlightFilteredHeader;
-
-        $scope.getTableHeight = function() {
-          var rowHeight = 30; 
-          var headerHeight = 40; 
-          var maxCount = 12;
-          var rowCount = $scope.gridOptions.data.length + 2;
-          var count = rowCount;
-          if (rowCount > maxCount) {
-            count = maxCount;
-            headerHeight = 31;
-          }
-          return {
-              height: (count * rowHeight + headerHeight) + 'px'
-          };
-        };
-
-        var getCellTemplate = function(field) {
-          var object = ['transmission-mode-list', 'performance-data'];
-          if (object.contains(field)) {
-            console.warn(JSON.stringify(field));
-            return ['<div class="ui-grid-cell-contents">',
-                    '<i class="fa fa-info-circle" aria-hidden="true"',
-                    ' ng-click="grid.appScope.show(grid.getCellValue(row, col))"',
-                    ' style="color: rgb(66, 139, 202); cursor: pointer;"></i> ',
-                    '{{grid.getCellValue(row, col)}}</div>'].join('');
-          }
-          return '<div class="ui-grid-cell-contents">{{grid.getCellValue(row, col)}}</div>';
-        };
-        $scope.show = function(value){
-          // console.warn(JSON.stringify(value));
-          var type = $mwtnGlobal.getType(value);
-          // if (type === 'object')
-          var modalInstance = $uibModal.open({
-            animation: true,
-            ariaLabelledBy: 'modal-title',
-            ariaDescribedBy: 'modal-body',
-            templateUrl: 'src/app/mwtnCommons/templates/showGridCellDetail.html',
-            controller: 'showGridCellDetailController',
-            size: 'huge',
-            resolve: {
-              valueData: function () {
-                return {networkElement: $scope.networkElement, path:$scope.path, value:value};
-              }
-            }
-          });
-        };
-        var enable = data.length > 10;
-        $scope.gridOptions.columnDefs = Object.keys(data[0]).map(function (field) {
-          var type = $mwtnGlobal.getType(data[0][field]);
-          var labelId = $mwtnGlobal.getLabelId(field);
-          var displayName = $filter('translate')(labelId);
-          var visible = $mwtnGlobal.getVisibilityOf(field);
-          if (labelId.contains('$$') || labelId === 'MWTN_SPEC') {
-            visible = false;
-          }
-          return {
-            field: field,
-            type: type,
-            displayName: displayName,
-            enableSorting: true,
-            enableFiltering: enable,
-            headerCellClass: $scope.highlightFilteredHeader,
-            cellTemplate: getCellTemplate(field),
-            cellClass: type,
-            visible: visible
-          };
-        });
-        if ($scope.gridOptions.data.length < 10) {
-          $scope.gridOptions.minRowsToShow =  data.length; // 10 is default
-        } 
-        $scope.gridOptions.data = data;
-        // .sort(function(a, b){
-        //           if (a.type === 'object') return -1;
-        //           if (a.type === 'array' ) return -2;
-        //           return 0;
-        //         })
-
-        $scope.myClipboard = {
-          data: $scope.data,
-          supported: true,
-          getJson: function () {
-            return JSON.stringify(this.data, null, ' ');
-          },
-          copyToClipboard: function () {
-            var message = 'Copied to clipboard! ' + this.getJson();
-            $mwtnLog.info({ component: COMPONENT, message: message });
-          },
-          error: function (err) {
-            $mwtnLog.error({ component: COMPONENT, message: err });
-          }
-        };
-    }]);
-
-    mwtnCommonsApp.register.directive('mwtnGrid', function () {
-      return {
-        restrict: 'E',
-        scope: {
-          data: '=',
-          path: '=',
-          networkElement: '='
-        },
-        controller: 'mwtnGridController',
-        controllerAs: 'vm',
-        templateUrl: 'src/app/mwtnCommons/templates/mwtnGrid.tpl.html'
-      };
-    });
-
-    mwtnCommonsApp.register.controller('mwtnSelectNetworkElementController', ['$scope', '$state','$mwtnCommons', function ($scope, $state, $mwtnCommons) {
-      var vm = this;
-      
-      /**
-       * A function which scanns the mountpoints for connected network-elements and adds it to networkElements.
-       * @param {{"onfAirInterfaceRevision": string, "node-id": string, "netconf-node-topology:connection-status": string}[]} mountpoints An array of mountpoints from OpenDaylight.
-       */
-      var initNodeList = function (mountpoints) {
-        $scope.loading = true;
-        $scope.mountPoints = mountpoints;
-        $scope.networkElements = mountpoints.filter(function (mountpoint) {
-          return mountpoint['netconf-node-topology:connection-status'] === 'connected';
-        }).map(function (mountpoint) {
-          return { id: mountpoint['node-id'], revision: mountpoint.onfAirInterfaceRevision };
-        }).sort(function (a, b) {
-          if (a.id < b.id) return -1;
-          if (a.id > b.id) return 1;
-          return 0;
-        });
-
-        
-        $scope.networkElement = undefined;
-        if ($state.params.nodeId) {
-          
-        }
-        
-        console.error('nodeId', $state.params.nodeId);
-
-        // select one of the nodes
-        /* dont do it in field applications!!!! 
-        var select = parseInt(Math.random() * $scope.networkElements.length);
-        if (select !== undefined && $scope.networkElements[select]) {
-          $scope.networkElement = $scope.networkElements[select].id;
-          $scope.mountpoint = $scope.mountPoints.filter(function (mountpoint) {
-            return mountpoint['node-id'] === $scope.networkElement;
-          })[0];
-        }
-        */
-        $scope.loading = false;
-      };
-
-      $mwtnCommons.getMountPoints().then(function (mountpoints) {
-        initNodeList(mountpoints);
-      }, function (error) {
-        $scope.networkElements = [];
-      });
-    }]);
-
-    mwtnCommonsApp.register.directive('mwtnSelectNetworkElement', function () {
-      return {
-        restrict: 'E',
-        controller: 'mwtnSelectNetworkElementController',
-        controllerAs: 'vm',
-        templateUrl: 'src/app/mwtnCommons/templates/mwtnSelectNetworkElement.tpl.html'
-      };
-    });
-
-    // mwtnCommonsApp.register.factory('$notifying', function($rootScope) {
-    //   return {
-    //       subscribe: function(scope, callback) {
-    //           var handler = $rootScope.$on('notifying-service-event', callback);
-    //           scope.$on('$destroy', handler);
-    //       },
-
-    //       notify: function(text) {
-    //           $rootScope.$emit('notifying-service-event', text);
-    //       }
-    //   };
-    // });
-
-    mwtnCommonsApp.register.factory('$mwtnGlobal', function () {
-      var service = {};
-
-      /** 
-       * Returns false, if parameter/attribute should be in visible
-       * @param {string} field - a json to be analyzed
-       * @return {boolean} true, if the parameter should be visible, otherwise false.
-       */
-      service.getVisibilityOf = function(field) {
-        var hide = ['name-binding', 'object-class'];
-        return !hide.contains(field);
-      };
-
-      /** 
-       * Returns the (json) type of a value
-       * @param {*} value - a json to be analyzed
-       * @return type of json
-       */
-      service.getType = function (value) {
-        var result = typeof value;
-        if (result === 'object' && JSON.stringify(value).substring(0, 1) === '[') {
-          result = 'array';
-        } else if (result === 'object' && value === null) {
-          result = 'null';
-        } else if (result === 'object' && value['value-name'] && value.value) {
-          result = 'name-value';
-        }
-        return result;
-      };
-
-      service.getLabelId = function (string) {
-        return ['mwtn', string].join('_').replaceAll('-', '_').toUpperCase();
-      };
-
-      var isIntesting = function(key) {
-        var instesting = ['name', 'local-id', 'label', 'extension', 'physical-port-reference', 'lp', 'server-ltp', 'client-ltp', 'layer-protocol-name'];
-        return instesting.contains(key);
-      }
-      /**
-       * Returns a simplfies json  for display
-       * @param {*} data - the json to be simplified
-       * @param {boolean} ne - control parameter for finetuning
-       * @return a simplfied json for display
-       */
-      service.getViewData = function (data, ne) {
-        var viewData = JSON.parse(JSON.stringify(data));
-        if (ne) {
-          viewData.ltp = undefined; 
-          viewData.fd = undefined;
-        }
-        Object.keys(viewData).map(function (key) {
-          var type = service.getType(viewData[key]);
-          var viewValue = { 
-            value: viewData[key], 
-            type: type, 
-            labelId: service.getLabelId(key),
-            visible: service.getVisibilityOf(key)
-          };
-          viewData[key] = viewValue;
-          if (type === 'array') {
-            if (key === 'extension') {
-              viewValue.value.map(function (item) {
-                viewData[item['value-name']] = { value: item.value, type: 'string', labelId:service.getLabelId(item['value-name']) };
-              });
-              viewData[key] = undefined;
-            } else if (viewValue.value.length === 1 && isIntesting(key)) {
-              // console.warn(key, JSON.stringify(viewData[key]));
-              var valueType = service.getType(viewValue.value[0]);
-              viewData[key].value = viewValue.value[0];
-              viewData[key].type = valueType;
-
-              if (valueType === 'object') {
-                viewData[key].value = service.getViewData(viewValue.value);
-              } else if (valueType === 'name-value') {
-                viewData[key].value = viewValue.value.value;
-                //viewData[key].type = 'string';
-              }
-            } else if (type === 'object') {
-              viewData[key].value = service.getViewData(viewValue.value);
-            }
-          }
-        });
-        return viewData;
-      };
-      return service;
-    });
-
-    /**
-      * Process an array of data synchronously.
-      * Please see https://gist.github.com/KevinTCoughlin/6901825 
-      * @param {Array} data An array of data.
-      * @param {function} processData A function that processes an item of data.
-      *        Signature: function(item, i, callback), where {@code item} is the i'th item,
-      *                   {@code i} is the loop index value and {@code calback} is the
-      *                    parameterless function to call on completion of processing an item.
-      * @param {function} done A callback function indecating that all items are processed.
-      */
-    var doSynchronousLoop = function (data, processData, done) {
-      if (data && data.length > 0) {
-        var loop = function (data, i, processData, done) {
-          processData(data[i], i, function () {
-            if (++i < data.length) {
-              loop(data, i, processData, done);
-            } else {
-              done();
-            }
-          });
-        };
-        loop(data, 0, processData, done);
-      } else {
-        done();
-      }
-    };
-
-    mwtnCommonsApp.register.factory('$mwtnCommons', function ($http, $q, $mwtnGlobal, $mwtnLog, $mwtnDatabase, LogicalTerminationPoint, PtpClock) {
-
-      var COMPONENT = '$mwtnCommons';
-
-      var service = {
-        base: window.location.origin + "/restconf/",
-        database: {},
-        'sdn-controller': [],
-        modules: {},
-        layerProtocolNameOrder: {
-          'MWPS': 6,
-          'MWS': 5,
-          'ETC': 4,
-          'TDM': 3,
-          'ETY': 2,
-          'ETH-CTP': 1,
-          'ETH': 1,
-        }
-      };
-
-      service.getOrderNumber = function(proposal, item){
-        var result = proposal;
-        if (item.type === 'array') {
-          proposal = 99;
-        } else if (item.type === 'object') {
-          proposal = 98;
-        } else if (item.labelId === 'MWTN_LOCAL_ID') {
-          proposal = -1;
-        } else if (item.labelId === 'MWTN_LABEL') {
-          proposal = -2;
-        } else if (item.labelId === 'MWTN_NAME') {
-          proposal = -3;
-        } else if (item.labelId === 'MWTN_UUID') {
-          proposal = -4;
-        }
-        return proposal;
-      }
-
-      /**
-       * A function to get the global-identifier of a condtional package subClass by a specifcation object of such subClass and a local-name.
-       * @param {{pacId: string, layerProtocolId: string, partId:string}} spec - Specification object of a conditional package subclass.
-       * @param {string} local-name (e.g. current-problems)
-       * @return {string} globel-identifier of a conditional packages subClass (e.g. 'air-interface-diversity-current-problems')
-       */
-      service.getPartGlobalId = function (spec, localName) {
-        var address = spec.pacId.split(':');
-        var module = address[0];
-        var pacName = address[1];
-
-        // check for unexpected issues
-        if (!module) {
-          console.error('not module', module, JSON.stringify(spec));
-          return;
-        }
-        if (!pacName) {
-          console.error('not pacName', pacName, JSON.stringify(spec));
-          return;
-        }
-        if (!service.modules[module]) {
-          console.error('not service.modules[module]', service.modules[module], JSON.stringify(spec));
-          return;
-        }
-        if (!service.modules[module][pacName]) {
-          console.error('not service.modules[module][pacName]', service.modules[module][pacName], JSON.stringify(spec));
-          return;
-        }
-        if (!service.modules[module]) {
-          console.error('not ervice.modules[module][pacName][subClass]', service.modules[module][pacName][subClass], JSON.stringify(spec));
-          return;
-        }
-        
-        return Object.keys(service.modules[module][pacName]).filter(function (subClass) {
-          return service.modules[module][pacName][subClass]['local-name'] === localName;
-        }).map(function (subClass) {
-          return service.modules[module][pacName][subClass].name;
-        })[0];
-      
-      };
-
-      /**
-       * A function to get the local-name of a condtional package subClass by a specifcation object of such subClass.
-       * @param {{pacId: string, layerProtocolId: string, partId:string}} spec - Specification object of a conditional package subclass
-       * @return {string} local-name of a conditional packages subClass (e.g. 'current-problems')
-       */
-      service.getPartLocalId = function (spec) {
-        var result;
-        Object.keys(service.modules).map(function (module) {
-          Object.keys(service.modules[module]).filter(function (pacName) {
-            return spec.pacId === [module, pacName].join(':') && service.modules[module][pacName][spec.partId].name === spec.partId;
-          }).map(function (pacName) {
-            result = service.modules[module][pacName][spec.partId]['local-name'];
-          });
-        });
-        return result;
-      };
-
-      var init = function () {
-        var deferred = $q.defer();
-        var databaseRequest = {
-          base: $mwtnDatabase.base,
-          index: 'config',
-          docType: 'sdn-controller',
-          command: '_search',
-          method: 'GET',
-          from: 0,
-          size: 10
-        };
-        $mwtnDatabase.genericRequest(databaseRequest).then(function (success) {
-          // console.log('sc', JSON.stringify(success.data.hits.hits));
-          service['sdn-controller'] = success.data.hits.hits;
-          $mwtnDatabase.getModules().then(function (success) {
-            service.modules = success;
-          }, function (error) {
-            service.modules = [];
-            console.error('modules', JSON.stringify(error));
-            deferred.reject(error);
-          });
-          deferred.resolve();
-        }, function (error) {
-          service['sdn-controller'] = [];
-          console.error('sc', JSON.stringify(error));
-          deferred.reject(error);
-        });
-
-        return deferred.promise;
-      };
-
-      service.getMainConroller = function () {
-        var deferred = $q.defer();
-        if (service['sdn-controller'].length === 0) {
-          init().then(function (success) {
-            service['sdn-controller'].map(function (controller) {
-              result = controller;
-            });
-            deferred.resolve(result);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        } else {
-          service['sdn-controller'].map(function (controller) {
-            result = controller;
-          });
-          deferred.resolve(result);
-        }
-        return deferred.promise;
-      };
-
-      var createStream = function (streamName, callback) {
-        service.getMainConroller().then(function (success) {
-          var src = success._source;
-          var ip = src.host;
-          if (ip === 'localhost') {
-            ip = service.base.split('//')[1].split(':')[0];
-          }
-          var url = [src['transport-protocol'], '://', ip, ':', src.port, '/restconf/streams/stream/', streamName].join('');
-          var request = {
-            method: 'GET',
-            url: url
-          };
-          $http(request).then(function (response) {
-            // console.log(response.headers('Location'));
-            callback(response.headers('Location'));
-          }, function errorCallback(response) {
-            console.error(JSON.stringify(response));
-            callback();
-          });
-        }, function (error) {
-          console.error('mainController', error);
-          callback();
-        });
-      };
-
-      service.getMwtnWebSocketUrl = function () {
-        var deferred = $q.defer();
-        service.getMainConroller().then(function (success) {
-
-          var protocol = window.location.protocol.replace(/http/g, 'ws');
-          var host = window.location.hostname;
-          var user = window.localStorage.odlUser;
-          if (user === undefined) user = 'admin' // ODL default user
-          var pw = window.localStorage.odlPass;
-          if (pw === undefined) pw = 'admin' // ODL default password
-  
-          var url = [protocol, '//', user, ':',pw, '@', host, ':8085/websocket'].join('');
-          console.info('url', url);
-
-          deferred.resolve(url);
-        }, function (error) {
-          console.error('mainController', error);
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.formatTimeStamp = function (t) {
-        // t: time in ONF format, e.g. 20161020081633.7Z, 20161025235946.0+0000
-        if (t.length !== '20161020081633.7Z'.length || t.length !== '20161025221822.0+0000') {
-          if (t.endsWith('Z') || t.endsWith('+0000')) {
-            if (!t.contains('-')) {
-              return [[t.slice(0, 4), t.slice(4, 6), t.slice(6, 8)].join('-'),
-              [t.slice(8, 10), t.slice(10, 12), t.slice(12, 16)].join(':')].join(' ') + ' UTC';
-            }
-          }
-        }
-        // console.info('check', t);
-        // return new Date().toISOString().toHumanReadableTimeFormat();
-        return t.toHumanReadableTimeFormat();
-      };
-
-      service.formatData = function (event) {
-        var deferred = $q.defer();
-
-        var x2js = new X2JS();
-        var jsonObj = x2js.xml_str2json(event.data);
-        // console.info('a', service.getType(jsonObj), JSON.stringify(jsonObj));
-        if (jsonObj === null || service.getType(jsonObj) !== 'object') {
-          deferred.reject('ignore');
-        } else {
-          notifType = Object.keys(jsonObj)[0];
-          var formated = jsonObj[notifType];
-          formated.timeStamp = service.formatTimeStamp(formated.timeStamp);
-          formated.notifType = notifType;
-          formated.myMessage = 'someMessage';
-          formated.time = new Date().toISOString();
-          deferred.resolve(formated);
-        }
-
-        return deferred.promise;
-      };
-
-      service.getData = function (callback) {
-        return callback('$mwtnCommons registered to this application.');
-      };
-
-      service.getType = $mwtnGlobal.getType;
-      service.getViewData = $mwtnGlobal.getViewData;
-
-      service.getLayer = function (pacId) {
-        console.warn('@depricated', '$mwtnCommons.getLayer()');
-        switch (pacId) {
-          case 'airinterface':
-          case 'air-interface':
-            return 'MWPS';
-          case 'structure':
-          case 'pureEthernetStructure':
-          case 'hybridStructure':
-          case 'pure-ethernet-structure':
-          case 'hybrid-structure':
-            return 'MWS';
-          case 'container':
-          case 'ethernetContainer':
-          case 'ethernet-container':
-            return 'ETC';
-          case 'tdmContainer':
-          case 'tdm-container':
-            return 'TDM';
-          default:
-            return (pacId);
-        }
-      };
-
-      /** @deprecated */
-      service.parts = ['Capability', 'Configuration', 'Status', 'CurrentProblems', 'CurrentPerformance', 'HistoricalPerformances'];
-
-      service.getLabelId = function (key, callback) {
-        return callback(['mwtn', key].join('_').toUpperCase());
-      };
-
-      service.checkModules = function (names) {
-        // accepts a list of module names and
-        // attempts to load them, in order.
-        // attempt to load the module into m
-        var m;
-        var result = {};
-        names.map(function (name) {
-          try {
-            m = angular.module(name);
-            result[name] = true;
-          } catch (err) {
-            result[name] = false;
-          }
-        });
-        return result;
-      };
-
-      service.mount = function (mp) {
-        // mp: mounting point
-        var url = [service.base, service.url.mount(mp.name)].join('');
-        /* deprecated 
-        var xml = [
-          '<module xmlns="urn:opendaylight:params:xml:ns:yang:controller:config">',
-          '<type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">prefix:sal-netconf-connector</type>',
-          '<name>{0}</name>',
-          '<address xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">{1}</address>',
-          '<port xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">{2}</port>',
-          '<username xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">{3}</username>',
-          '<password xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">{4}</password>',
-          '<tcp-only xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">false</tcp-only>',
-          '<event-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">',
-          '  <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:netty">prefix:netty-event-executor</type>',
-          '  <name>global-event-executor</name>',
-          '</event-executor>',
-          '<binding-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">',
-          '  <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:binding">prefix:binding-broker-osgi-registry</type>',
-          '  <name>binding-osgi-broker</name>',
-          '</binding-registry>',
-          '<dom-registry xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">',
-          '  <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:md:sal:dom">prefix:dom-broker-osgi-registry</type>',
-          '  <name>dom-broker</name>',
-          '</dom-registry>',
-          '<client-dispatcher xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">',
-          '  <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:config:netconf">prefix:netconf-client-dispatcher</type>',
-          '  <name>global-netconf-dispatcher</name>',
-          '</client-dispatcher>',
-          '<processing-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">',
-          '  <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:threadpool">prefix:threadpool</type>',
-          '  <name>global-netconf-processing-executor</name>',
-          '</processing-executor>',
-          '<keepalive-executor xmlns="urn:opendaylight:params:xml:ns:yang:controller:md:sal:connector:netconf">',
-          '  <type xmlns:prefix="urn:opendaylight:params:xml:ns:yang:controller:threadpool">prefix:scheduled-threadpool</type>',
-          '  <name>global-netconf-ssh-scheduled-executor</name>',
-          '</keepalive-executor>', 
-          '</module>' ].join('').format(mp.name, mp.ipaddress, mp.port, mp.username, mp.password); */
-        var xml = [
-          '<node xmlns="urn:TBD:params:xml:ns:yang:network-topology">',
-          '  <node-id>{0}</node-id>',
-          '  <host xmlns="urn:opendaylight:netconf-node-topology">{1}</host>',
-          '  <port xmlns="urn:opendaylight:netconf-node-topology">{2}</port>',
-          '  <username xmlns="urn:opendaylight:netconf-node-topology">{3}</username>',
-          '  <password xmlns="urn:opendaylight:netconf-node-topology">{4}</password>',
-          '  <tcp-only xmlns="urn:opendaylight:netconf-node-topology">false</tcp-only>',
-
-          '  <!-- non-mandatory fields with default values, you can safely remove these if you do not wish to override any of these values-->',
-          '  <reconnect-on-changed-schema xmlns="urn:opendaylight:netconf-node-topology">false</reconnect-on-changed-schema>',
-          '  <connection-timeout-millis xmlns="urn:opendaylight:netconf-node-topology">20000</connection-timeout-millis>',
-          '  <max-connection-attempts xmlns="urn:opendaylight:netconf-node-topology">100</max-connection-attempts>',
-          '  <between-attempts-timeout-millis xmlns="urn:opendaylight:netconf-node-topology">2000</between-attempts-timeout-millis>',
-          '  <sleep-factor xmlns="urn:opendaylight:netconf-node-topology">1.5</sleep-factor>',
-
-          '  <!-- keepalive-delay set to 0 turns off keepalives-->',
-          '  <keepalive-delay xmlns="urn:opendaylight:netconf-node-topology">120</keepalive-delay>',
-          '</node>'].join('').format(mp.name, mp.ipaddress, mp.port, mp.username, mp.password);
-
-        var request = {
-          method: 'PUT',
-          url: url,
-          headers: {
-            'Content-Type': 'application/xml',
-            'Accept': 'application/xml'
-          },
-          data: xml
-        };
-        var deferred = $q.defer();
-        $http(request).then(function (success) {
-          deferred.resolve(success.data);
-        }, function (error) {
-          $mwtnLog.error({ component: '$mwtnCommons.mount', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      /**
-       * A promise to unmount netconf devices the old way from OpenDaylight Lithium. 
-       * This is needed in case Netconf devices from 3rd ONF Wireless PoC were mounted.
-       * @param {string} nodeId - The mountpoint identifier which should be unmounted the old way.
-       */
-      var unmountDeprecated = function (nodeId) {
-        var url = [service.base,
-          'config/network-topology:network-topology/topology/topology-netconf/node/controller-config/yang-ext:mount/config:modules/module/odl-sal-netconf-connector-cfg:sal-netconf-connector/',
-          nodeId].join('');
-        var request = {
-          method: 'DELETE',
-          url: url
-        };
-        var deferred = $q.defer();
-        $http(request).then(function (success) {
-          $mwtnLog.info({ component: COMPONENT, message: 'Mounting Point deleted: ' + nodeId });
-          deferred.resolve(success.data);
-        }, function (error) {
-          $mwtnLog.info({ component: '$mwtnCommons.unmount', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      }
-
-      /**
-       * A promise to unmount netconf devices from OpenDaylight Beryllium and higher. 
-       * @param {string} nodeId - The mountpoint identifier which unmounted/disconnected from OpenDaylight.
-       */
-      service.unmount = function (nodeId) {
-        var url = [service.base, service.url.unmount(nodeId)].join('');
-        var request = {
-          method: 'DELETE',
-          url: url
-        };
-        var deferred = $q.defer();
-        $http(request).then(function (success) {
-          $mwtnLog.info({ component: COMPONENT, message: 'Mounting Point deleted: ' + nodeId });
-          deferred.resolve(success.data);
-        }, function (error) {
-          // try the old way
-          unmountDeprecated(nodeId).then(
-            function (success) {
-              $mwtnLog.info({ component: COMPONENT, message: 'Mounting Point deleted: ' + nodeId });
-              deferred.resolve(success.data);
-            },
-            function (error) {
-              $mwtnLog.info({ component: '$mwtnCommons.unmount', message: JSON.stringify(error.data) });
-              deferred.reject(error);
-            }
-          );
-        });
-        return deferred.promise;
-      };
-
-      service.getPacParts = function (spec) {
-        var errorMsg = { info: 'No data received' };
-        var deferred = $q.defer();
-        switch (spec.pacId) {
-          case 'ne':
-            service.getActualNetworkElement(spec.nodeId, spec.revision).then(function (success) {
-              deferred.resolve(success);
-            }, function (error) {
-              $mwtnLog.error({ component: COMPONENT, message: 'Requesting ' + spec.nodeId + ' failed!' });
-              deferred.reject(error);
-            });
-            break;
-          case 'clock':
-            service.getPtpClockData(spec.nodeId, spec.revision).then(function (success) {
-              deferred.resolve(success);
-            }, function (error) {
-              $mwtnLog.error({ component: COMPONENT, message: 'Requesting clock for ' + spec.nodeId + ' failed!' });
-              deferred.reject();
-            });
-            break;
-          case 'forwardingDomain':
-            console.warn('fd', JSON.stringify(spec));
-            service.getForwardingDomain(spec.nodeId, 'eth-switch').then(function (success) {
-              deferred.resolve(success);
-            }, function (error) {
-              $mwtnLog.error({ component: COMPONENT, message: 'Requesting forwarding domain for ' + spec.nodeId + ' failed!' });
-              deferred.reject(error);
-            });
-            break;
-          case 'ltp':
-            var ltpKey = 'ltp';
-            switch (spec.revision) {
-              case '2017-02-17':
-              case '2017-03-20':
-              case '2017-03-24':
-              case '2017-10-20':
-              ltpKey = 'ltp';
-                break;
-              default:
-                ltpKey = '_ltpRefList';
-            }
-            var odlRequest = {
-              method: 'GET',
-              url: [service.url.actualNetworkElement(spec.nodeId, spec.revision), ltpKey, spec.layerProtocolId].join('/')
-            };
-            // console.info(odlRequest.url);
-            service.genericRequest(odlRequest).then(function (success) {
-              deferred.resolve(success);
-            }, function (error) {
-              $mwtnLog.error({ component: COMPONENT, message: 'Requesting LTPs of ' + spec.nodeId + ' failed!' });
-              deferred.reject(errorMsg);
-            });
-            break;
-          case 'MWPS':
-          case 'MWS':
-          case 'ETH-CTP':
-          case 'ETC':
-          case 'airinterface':
-          case 'structure':
-          case 'container':
-          // 3rd PoC
-          case 'MicrowaveModel-ObjectClasses-AirInterface:MW_AirInterface_Pac':
-          case 'MicrowaveModel-ObjectClasses-EthernetContainer:MW_EthernetContainer_Pac':
-          case 'MicrowaveModel-ObjectClasses-PureEthernetStructure:MW_PureEthernetStructure_Pac':
-          // 4th PoC
-          case 'microwave-model:mw-air-interface-pac':
-          case 'microwave-model:mw-air-interface-diversity-pac':
-          case 'microwave-model:mw-pure-ethernet-structure-pac':
-          case 'microwave-model:mw-hybrid-mw-structure-pac':
-          case 'microwave-model:mw-tdm-container-pac':
-          case 'microwave-model:mw-ethernet-container-pac':
-          case 'onf-ethernet-conditional-packages:ethernet-pac':
-          // PoC 4.1
-          case 'onf-otn-odu-conditional-packages:otn-odu-connection-pac':
-          case 'onf-otn-odu-conditional-packages:otn-odu-termination-pac':
-            if (spec.partId) {
-              service.getConditionalPackagePart(spec).then(function (success) {
-                success.layerProtocol = spec.layerProtocolId;
-                deferred.resolve(success);
-              }, function (error) {
-                $mwtnLog.error({ component: COMPONENT, message: 'Requesting conditional package of ' + JSON.stringify(spec) + ' failed!' });
-                deferred.reject(errorMsg);
-              });
-            } else {
-              deferred.resolve();
-            }
-            break;
-          case 'neCurrentProblems':
-            service.getNetworkElementCurrentProblemList(spec.nodeId, spec.revision).then(function (success) {
-              deferred.resolve(success);
-            }, function (error) {
-              $mwtnLog.error({ component: COMPONENT, message: 'Requesting ' + spec.nodeId + ' failed!' });
-              deferred.reject(error);
-            });
-            break;
-          case 'mountpoint':
-          case 'forwardingConstructs':
-            // not needed (currently)
-            deferred.resolve();
-            break;
-          default:
-            $mwtnLog.error({ component: COMPONENT, message: 'Requesting ' + spec.pacId + ' is not supported!' });
-            deferred.reject(errorMsg);
-        }
-        return deferred.promise;
-      };
-      service.setPacParts = function (spec, data) {
-        var errorMsg = { info: 'No data received' };
-        var deferred = $q.defer();
-        switch (spec.pacId) {
-          //  case 'ne':
-          //    service.getActualNetworkElement(spec.nodeId, spec.revision).then(function(success){
-          //      deferred.resolve(success);
-          //    }, function(error){
-          //      $mwtnLog.error({component: COMPONENT, message: 'Requesting ' + spec.nodeId + ' failed!'});
-          //      deferred.reject(errorMsg);
-          //    });
-          //    break;
-          //  case 'ltp':
-          //    var odlRequest = {
-          //      method: 'GET',
-          //      url: [service.url.actualNetworkElement(spec.nodeId, spec.revision), '_ltpRefList', spec.layerProtocolId].join('/')
-          //    };
-          //    service.genericRequest(odlRequest).then(function(success){
-          //      deferred.resolve(success);
-          //    }, function(error){
-          //      $mwtnLog.error({component: COMPONENT, message: 'Requesting LTPs of ' + spec.nodeId + ' failed!'});
-          //      deferred.reject(errorMsg);
-          //    });
-          //    break;
-          case 'airinterface':
-          case 'structure':
-          case 'container':
-          // 4th PoC
-          case 'microwave-model:mw-air-interface-pac':
-          case 'microwave-model:mw-air-interface-diversity-pac':
-          case 'microwave-model:mw-pure-ethernet-structure-pac':
-          case 'microwave-model:mw-hybrid-mw-structure-pac':
-          case 'microwave-model:mw-tdm-container-pac':
-          case 'microwave-model:mw-ethernet-container-pac':
-          case 'onf-ethernet-conditional-packages:ethernet-pac':
-          // PoC 4.1
-          case 'onf-otn-odu-conditional-packages:otn-odu-connection-pac':
-          case 'onf-otn-odu-conditional-packages:otn-odu-termination-pac':
-              service.setConditionalPackagePart(spec, data).then(function (success) {
-                deferred.resolve(success);
-              }, function (error) {
-                $mwtnLog.error({ component: COMPONENT, message: 'Modification of ' + JSON.stringify(spec) + ' failed!' });
-                deferred.reject(errorMsg);
-              });
-            break;
-          default:
-            $mwtnLog.error({ component: COMPONENT, message: 'Modification of ' + spec.pacId + ' not supported!' });
-            deferred.reject(errorMsg);
-        }
-        return deferred.promise;
-      };
-      service.setPacPartLists = function (spec, listData) {
-        var errorMsg = { info: 'No data received' };
-        var deferred = $q.defer();
-        switch (spec.pacId) {
-          //  case 'ne':
-          //    service.getActualNetworkElement(spec.nodeId, spec.revision).then(function(success){
-          //      deferred.resolve(success);
-          //    }, function(error){
-          //      $mwtnLog.error({component: COMPONENT, message: 'Requesting ' + spec.nodeId + ' failed!'});
-          //      deferred.reject(errorMsg);
-          //    });
-          //    break;
-          //  case 'ltp':
-          //    var odlRequest = {
-          //      method: 'GET',
-          //      url: [service.url.actualNetworkElement(spec.nodeId, spec.revision), '_ltpRefList', spec.layerProtocolId].join('/')
-          //    };
-          //    service.genericRequest(odlRequest).then(function(success){
-          //      deferred.resolve(success);
-          //    }, function(error){
-          //      $mwtnLog.error({component: COMPONENT, message: 'Requesting LTPs of ' + spec.nodeId + ' failed!'});
-          //      deferred.reject(errorMsg);
-          //    });
-          //    break;
-          case 'airinterface':
-          case 'structure':
-          case 'container':
-          // 4th PoC
-          case 'microwave-model:mw-air-interface-pac':
-          case 'microwave-model:mw-air-interface-diversity-pac':
-          case 'microwave-model:mw-pure-ethernet-structure-pac':
-          case 'microwave-model:mw-hybrid-mw-structure-pac':
-          case 'microwave-model:mw-tdm-container-pac':
-          case 'microwave-model:mw-ethernet-container-pac':
-          case 'onf-ethernet-conditional-packages:ethernet-pac':
-          // PoC 4.1
-          case 'onf-otn-odu-conditional-packages:otn-odu-connection-pac':
-          case 'onf-otn-odu-conditional-packages:otn-odu-termination-pac':
-          service.setConditionalPackagePartList(spec, listData).then(function (success) {
-                deferred.resolve(success);
-              }, function (error) {
-                $mwtnLog.error({ component: COMPONENT, message: 'Modification of ' + JSON.stringify(spec) + ' failed!' });
-                deferred.reject(errorMsg);
-              });
-            break;
-          default:
-            $mwtnLog.error({ component: COMPONENT, message: 'Modification of ' + spec.pacId + ' not supported!' });
-            deferred.reject(errorMsg);
-        }
-        return deferred.promise;
-      };
-      var nodeIntId = 100;
-      service.getNodeIntIdFromNodeId = function (nodeId) {
-        nodeIntId = nodeIntId + 1;
-        if (nodeId.contains('-')) {
-          return nodeId.split('-')[1];
-        }
-        return nodeIntId;
-      };
-
-      service.getRequiredNetworkElements = function (complete) {
-        var sort = [{ _id: { order: 'asc' } }];;
-        var query = {
-          match: {
-            required: true
-          }
-        };
-        var deferred = $q.defer();
-        $mwtnDatabase.getFilteredSortedData('mwtn', 'required-networkelement', 0, 10000, sort, query).then(
-          function (success) {
-            if (complete) {
-              deferred.resolve(success.data.hits.hits);
-            }
-            var result = success.data.hits.hits.map(function (ne) {
-              var yangifiedObj = service.yangifyObject(ne._source);
-              var pacKey = 'microwave-model:mw-air-interface-pac';
-              if (yangifiedObj['microwave-model-object-classes-air-interface:mw-air-interface-pac']) {
-                pacKey = 'microwave-model-object-classes-air-interface:mw-air-interface-pac';
-              }
-              var configKey = 'air-interface-configuration';
-              var radioSignalIds = [];
-              if (yangifiedObj[pacKey]) {
-                radioSignalIds = yangifiedObj[pacKey].filter(
-                  function (mwps) {
-                    return mwps[configKey] && mwps[configKey]['radio-signal-id'];
-                  }
-                ).map(
-                  function (mwps) {
-                    return mwps[configKey]['radio-signal-id'];
-                  }
-                ).sort();
-              }
-              return {
-                id: service.getNodeIntIdFromNodeId(yangifiedObj['node-id']),
-                name: yangifiedObj['node-id'],
-                ipaddress: yangifiedObj.connect.host,
-                port: yangifiedObj.connect.port,
-                username: yangifiedObj.connect.username,
-                password: yangifiedObj.connect.password,
-                radioSignalIds: JSON.stringify(radioSignalIds),
-                connectionStatus: 'disconnected'
-              };
-            });
-            deferred.resolve(result);
-          },
-          function (error) {
-            $mwtnLog.error({ component: COMPONENT, message: 'Problems in retrieving required network elements.' });
-            deferred.reject(error);
-          }
-        );
-        return deferred.promise;
-      };
-
-      service.getConnectionStatus = function (neId) {
-        var url = service.base + service.url.connectionStatus(neId);
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        var deferred = $q.defer();
-        $http(request).then(function (success) {
-          // console.log(JSON.stringify(success));
-          deferred.resolve(success.data.node[0]['netconf-node-topology:connection-status']);
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-      service.executeClosedLoopAutomation = function () {
-        var url = service.base + 'operations/closedLoopAutomation:start';
-        var request = {
-          method: 'POST',
-          url: url
-        };
-        var deferred = $q.defer();
-        $http(request).then(function (success) {
-          deferred.resolve(success);
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-      service.saveClosedLoopAutomation = function (enabled, option) {
-        var url = service.base + 'operations/closedLoopAutomation:save-timer';
-        var request = {
-          method: 'POST',
-          url: url,
-          data: {
-            "input": {
-              "enabled": enabled,
-              "option": option
-            }
-          }
-        };
-        var deferred = $q.defer();
-        $http(request).then(function (success) {
-          deferred.resolve(success);
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-      service.readClosedLoopAutomation = function () {
-        var url = service.base + 'operations/closedLoopAutomation:read-timer';
-        var request = {
-          method: 'POST',
-          url: url,
-        };
-        var deferred = $q.defer();
-        $http(request).then(function (success) {
-          deferred.resolve(success);
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      /**
-       * A promise inquiring the a single mountpoint from topology-netconf.
-       * @param {string} nodeId - The mountpoint identifier.
-       * @return {{'node-id':string, 'netconf-node-topology:tcp-only': boolean, 'netconf-node-topology:host', string, 'netconf-node-topology:keepalive-delay':number, 'netconf-node-topology:port':number, 'netconf-node-topology:username':string, 'netconf-node-topology:password': string}} - The mountpoint from topology-netconf.
-       */
-      service.getMountPoint = function (nodeId) {
-        var odlRequest = {
-          method: 'GET',
-          url: service.url.mount(nodeId)
-        };
-        var deferred = $q.defer();
-        service.genericRequest(odlRequest).then(
-          function (success) {
-            deferred.resolve(success.data.node[0]);
-          },
-          function (error) {
-            deferred.reject(error);
-          }
-        );
-        return deferred.promise;
-      };
-
-      service.getMountPoints = function () {
-        var url = service.base + service.url.actualNetworkElements();
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        var deferred = $q.defer();
-        $http(request).then(function (success) {
-          var requiredTopology = 'topology-netconf';
-          var topo = success.data.topology.filter(function (topo) {
-            return topo['topology-id'] === requiredTopology;
-          });
-          // console.log('topo', JSON.stringify(topo));
-          if (topo.length === 0) {
-            var message = ['ODL', requiredTopology, 'not found!'].join(' ');
-            $mwtnLog.error({ component: COMPONENT, message: message });
-            deferred.reject(message);
-          } else if (topo[0].node) {
-            var mwMountPoints = topo[0].node.filter(function (mountpoint) {
-              return mountpoint['node-id'] !== 'controller-config';
-            }).map(function (mountpoint) {
-              // console.info('mountpoint', JSON.stringify(mountpoint));
-              var capId = 'netconf-node-topology:available-capabilities';
-              if (mountpoint[capId] && mountpoint[capId]['available-capability']) {
-                var caps = mountpoint[capId]['available-capability'].filter(function (cap) {
-                  // console.info(JSON.stringify(cap));
-                  return cap.capability.contains('?revision=');
-                }).map(function (cap) {
-                  return {
-                    module: cap.capability.split(')')[1],
-                    revision: cap.capability.split('?revision=')[1].substring(0, 10)
-                  };
-                }).sort(function (a, b) {
-                  if (a.module < b.module) return -1;
-                  if (a.module > b.module) return 1;
-                  return 0;
-                });
-                // console.log('mountpoint', JSON.stringify(caps));
-                mountpoint.onfCapabilities = caps;
-                mountpoint.onfCoreModelRevision = caps.filter(function (cap) {
-                  return cap.module === 'core-model' || cap.module === 'CoreModel-CoreNetworkModule-ObjectClasses';
-                }).map(function (cap) {
-                  return cap.revision;
-                });
-                if (mountpoint.onfCoreModelRevision.length === 1) {
-                  mountpoint.onfCoreModelRevision = mountpoint.onfCoreModelRevision[0];
-                } else {
-                  $mwtnLog.error({ component: COMPONENT, message: mountpoint.onfCoreModelRevision.length + ' CoreModels supported by ' + mountpoint['node-id'] });
-                }
-
-                // console.log('caps', JSON.stringify(caps));
-                mountpoint.onfAirInterfaceRevision = caps.filter(function (cap) {
-                  return cap.module === 'microwave-model' || cap.module === 'MicrowaveModel-ObjectClasses-AirInterface';
-                }).map(function (cap) {
-                  return cap.revision;
-                });
-                // console.log('onfAirInterfaceRevision', mountpoint.onfAirInterfaceRevision);
-                if (mountpoint.onfAirInterfaceRevision.length === 1) {
-                  mountpoint.onfAirInterfaceRevision = mountpoint.onfAirInterfaceRevision[0];
-                } else {
-                  $mwtnLog.error({ component: COMPONENT, message: 'More than 1 or no MicrowaveModel supported by ' + mountpoint['node-id'] });
-                }
-              }
-              var clusterConneactionStatus = 'netconf-node-topology:clustered-connection-status';
-              if (mountpoint[clusterConneactionStatus] && mountpoint[clusterConneactionStatus]['netconf-master-node']) {
-                var value = mountpoint[clusterConneactionStatus]['netconf-master-node'];
-                value = value.substring(value.indexOf('@'));
-                mountpoint.client = value.substring(1, value.indexOf(':'));
-              } else {
-                mountpoint.client = window.location.hostname;
-              }
-            return mountpoint;
-            });
-            // console.log('mwMountPoints', JSON.stringify(mwMountPoints));
-            deferred.resolve(mwMountPoints);
-          }
-        }, function (error) {
-          $mwtnLog.error({ component: COMPONENT, message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-      service.separator = '&nbsp;';
-      // grid settings
-      service.highlightFilteredHeader = function (row, rowRenderIndex,
-        col, colRenderIndex) {
-        if (col.filters[0].term) {
-          return 'header-filtered';
-        } else {
-          return '';
-        }
-      };
-      service.gridOptions = {
-        data: [],
-        enableColumnResizing: true,
-        enableSorting: true,
-        enableFiltering: true,
-        enableGridMenu: true,
-        exporterMenuPdf: false,
-        showGridFooter: true,
-        // showColumnFooter: true,
-        fastWatch: true,
-        enableRowSelection: true,
-        enableRowHeaderSelection: true,
-        multiSelect: false
-      };
-      service.gridOptions.gridMenuCustomItems = [{
-        title: 'Rotate Grid',
-        action: function ($event) {
-          this.grid.element.toggleClass('rotated');
-        },
-        order: 210
-      }];
-      service.url = {
-        actualNetworkElements: function () {
-          return 'operational/network-topology:network-topology/topology/topology-netconf';
-        },
-        connectionStatus: function (neId) {
-          return 'operational/network-topology:network-topology/topology/topology-netconf/node/' + neId;
-        },
-        mount: function (neId) {
-          return 'config/network-topology:network-topology/topology/topology-netconf/node/' + neId;
-          // return 'config/network-topology:network-topology/topology/topology-netconf/node/controller-config/yang-ext:mount/config:modules'; // depricated 
-        },
-        unmount: function (neId) {
-          // return 'config/network-topology:network-topology/topology/topology-netconf/node/controller-config/yang-ext:mount/config:modules/module/odl-sal-netconf-connector-cfg:sal-netconf-connector/' + neId; // depricated 
-          return 'config/network-topology:network-topology/topology/topology-netconf/node/' + neId;
-        },
-        forwardingDomain: function (neId, fdUuid) {
-          return 'operational/network-topology:network-topology/topology/topology-netconf/node/' + neId + '/yang-ext:mount/core-model:network-element/fd/' +fdUuid;
-        },
-        forwardingConstruct: function (neId, fcUuid) {
-          return 'operational/network-topology:network-topology/topology/topology-netconf/node/' + neId + '/yang-ext:mount/core-model:forwarding-construct/' +fcUuid;
-        },
-        clock: function (neId, revision) {
-          return 'operational/network-topology:network-topology/topology/topology-netconf/node/' + neId + '/yang-ext:mount/ietf-ptp-dataset:instance-list/1';
-        },
-        actualNetworkElement: function (neId, revision) {
-          switch (revision) {
-            case "2016-03-23":
-              return [
-                'operational/network-topology:network-topology/topology/topology-netconf/node/',
-                neId,
-                '/yang-ext:mount/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement/',
-                neId].join('');
-            case "2017-02-17":
-            case "2017-03-20":
-            case "2017-03-24":
-            case "2017-10-20":
-            return [
-                'operational/network-topology:network-topology/topology/topology-netconf/node/',
-                neId,
-                '/yang-ext:mount/core-model:network-element'].join('');
-            default: // 2016-08-11
-              return [
-                'operational/network-topology:network-topology/topology/topology-netconf/node/',
-                neId,
-                '/yang-ext:mount/CoreModel-CoreNetworkModule-ObjectClasses:NetworkElement'].join('');
-          }
-        },
-        networkElementCurrentProblemList: function (neId, revision) {
-          console.log(neId, revision);
-          switch (revision) {
-            case "2016-08-11":
-              return [
-                'operational/network-topology:network-topology/topology/topology-netconf/node/',
-                neId,
-                '/yang-ext:mount/MicrowaveModel-NetworkElement-CurrentProblemList:NetworkElementCurrentProblems'].join('');
-            case "2017-02-17":
-            case "2017-03-20": // TODO sko equipmentAlarms check new yang file if agreed
-            return [
-                'operational/network-topology:network-topology/topology/topology-netconf/node/',
-                neId,
-                '/yang-ext:mount/onf-core-model-conditional-packages:network-element-pac/network-element-current-problems'].join('');
-            default:
-              return [
-                'operational/network-topology:network-topology/topology/topology-netconf/node/',
-                neId,
-                '/yang-ext:mount/onf-core-model-conditional-packages:network-element-pac/network-element-current-problems'].join('');
-          }
-        }
-      };
-      /*
-       * Changes different time formats to a common time fromat
-       * TODO currently not implemented!
-       */
-      service.normalizeTimeFormat = function (time, format) {
-        return time;
-      };
-      /*
-       * Changing a string according to yang naming conventions.
-       * The function should be alinged with the ONF Eagle project.
-       */
-      service.yangify = function (str) {
-        var result = str
-          .replace(/RefList+$/, '')                // endling "List" was removed
-          .replace(/List+$/, '')                   // endling "List" was removed
-          .replace(/([a-z])([A-Z])/g, '$1-$2')    // insert dashes
-          .replace(/([0-9])([a-zA-Z])/g, '$1-$2')       // insert dashes
-          .replace(/([A-Z])([A-Z])([a-z])/g, '$1-$2$3') // insert dashes
-          .toLowerCase()                            // lowercase everything
-          .replace(/^_/, '')                       // remove leading underscore
-          .replace(/:_/g, ':')                     // and leading underscores in path segments
-          .replace(/_/g, '-');                     // convert underscore to dashes
-
-        // catch "wrong" UML labels
-        var exceptions = {
-          'air-interface':'air-interface-list',
-          'air-interface-ltp':'air-interface-ltp-list',
-          'air-interface-capability': 'air-interface-capability-list',
-          'air-interface-current-problem': 'air-interface-current-problem-list',
-          'container-capability': 'container-capability-list',
-          'current-performance-data':'current-performance-data-list',
-          'current-problem':'current-problem-list',
-          'historical-performance-data':'historical-performance-data-list',
-          'problem-kind-severity':'problem-kind-severity-list',
-          'pure-ethernet-structure-capability':'pure-ethernet-structure-capability-list',
-          'segment-status':'segment-status-list',
-          'segments-id':'segments-id-list',
-          'structure-capability': 'structure-capability-list',
-          'structure-current-problem': 'structure-current-problem-list',
-          'supported-tdm-container-types':'supported-tdm-container-types-list',
-          'supported-tdm-structure-types':'supported-tdm-structure-types-list',
-          'supported-channel-plan':'supported-channel-plan-list',
-          'supported-loop-back-kind':'transmission-mode-list',
-          'transmission-mode':'transmission-mode-list'
-        };
-        if (exceptions[result]) {
-          console.warn(result, '.>', exceptions[result]);
-          result=exceptions[result];
-        }
-
-        // catch modulation value difference
-        if (result.startsWith('time') && result.endsWith('symbols')
-          || result.startsWith('time') && result.contains('-symbols-') && result.endsWith('-s')
-          || result.startsWith('time') && result.contains('-symbols-') && result.endsWith('-l')) {
-          result = result.replace('symbols', 'states');
-        }
-        return result;
-      };
-
-      /*
-       * Checking, whether a jsonObject should be yangifyed
-       */
-      service.isCamelCase = function (jsonObject) {
-        if (jsonObject === undefined || jsonObject === null) {
-          return true;
-        }
-        var result;
-        var type = service.getType(jsonObject);
-        switch (type) {
-          case 'object':
-            result = false;
-            Object.keys(jsonObject).map(function (key) {
-              result = result || key !== [service.yangify(key)];
-            });
-            break;
-          case 'array':
-          case 'boolean':
-          case 'function':
-          case 'string':
-          case 'number':
-          case 'null':
-          case 'undefined':
-            result = true;
-            break;
-          default:
-            console.error('Type1:', type, ' is not supported!');
-            result = true;
-        }
-        return result;
-      };
-      /*
-       * Yangifies a names/keys of a jsonOject
-       */
-      service.yangifyObject = function (jsonObject) {
-        if (jsonObject === undefined || jsonObject === null) {
-          return jsonObject;
-        }
-        var result;
-        var type = service.getType(jsonObject);
-        switch (type) {
-          case 'object':
-          case 'name-value':
-            result = {};
-            Object.keys(jsonObject).map(function (key) {
-              result[service.yangify(key)] = service.yangifyObject(jsonObject[key]);
-            });
-            break;
-          case 'array':
-            result = jsonObject.map(function (item, index) {
-              return service.yangifyObject(item);
-            });
-            break;
-          case 'boolean':
-          case 'function':
-          case 'string':
-          case 'number':
-          case 'null':
-          case 'undefined':
-            result = jsonObject;
-            break;
-          default:
-            console.error('Type:', type, ' is not supported!');
-            result = jsonObject;
-        }
-        return result;
-      };
-      /*
-       * Send a restconf request to OpenDayligth.
-       * All ODL restconf requests should pass this function.
-       */
-      service.genericRequest = function (odlRequest) {
-        var url = [service.base, odlRequest.url].join('');
-        var request = {
-          method: odlRequest.method,
-          url: url,
-          data: odlRequest.data
-        };
-        var deferred = $q.defer();
-        $http(request).then(function (success) {
-          // yangifing the response is required until all NEs has switch to CoreModel 1.2 (ONF-TR-532)
-          // deferred.resolve(service.yangifyObject(success));
-          deferred.resolve(success);
-        }, function (error) {
-          $mwtnLog.error({ component: COMPONENT + '.genericRequest', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-      service.getMountedNetConfServers = function (callback) {
-        var url = service.base + service.url.actualNetworkElements();
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        $http(request).then(function (success) {
-          return callback(success.data);
-        }, function (error) {
-          console.error(JSON.stringify(error));
-          return callback();
-        });
-      };
-
-      service.getActualNetworkElement = function (neId, revision) {
-        var url = [service.base,
-        service.url.actualNetworkElement(neId, revision)].join('');
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        var taskId = [neId, 'ONF:CoreModel:NetworkElement data received'].join(' ');
-
-        var deferred = $q.defer();
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          success.data.revision = revision;
-          //  deferred.resolve(service.yangifyObject(success.data));
-          deferred.resolve(success.data);
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.info({ component: '$mwtnCommons.getActualNetworkElement', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.getForwardingDomain = function(neId, fdUuid) {
-        var url = [service.base,
-        service.url.forwardingDomain(neId, fdUuid)].join('');
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        var taskId = [neId, 'ONF:ForwardingDomain received'].join(' ');
-
-        var deferred = $q.defer();
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          //  deferred.resolve(service.yangifyObject(success.data));
-          deferred.resolve(success.data);
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.info({ component: '$mwtnCommons.getForwardingDomain', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.getForwardingConstruct = function(neId, fcUuid) {
-        var url = [service.base,
-        service.url.forwardingConstruct(neId, fcUuid)].join('');
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        var taskId = [neId, fcUuid, 'ONF:ForwardingConstruct received'].join(' ');
-
-        var deferred = $q.defer();
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          //  deferred.resolve(service.yangifyObject(success.data));
-          deferred.resolve(success.data);
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.info({ component: '$mwtnCommons.getForwardingConstruct', message: JSON.stringify(error.data) });
-          deferred.reject();
-        });
-        return deferred.promise;
-      };
-
-      service.getPtpClockData = function(neId, revision) {
-        var url = [service.base,
-        service.url.clock(neId, revision)].join('');
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        var taskId = [neId, 'ONF:PTP:DataSet received'].join(' ');
-
-        var deferred = $q.defer();
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          success.data.revision = revision;
-          //  deferred.resolve(service.yangifyObject(success.data));
-          deferred.resolve(success.data);
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.info({ component: '$mwtnCommons.getPtpClockData', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.getNetworkElementCurrentProblemList = function (neId, revision) {
-        var url = [service.base,
-        service.url.networkElementCurrentProblemList(neId, revision)].join('');
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        var taskId = [neId, 'ONF:CoreModel:NetworkElement data received'].join(' ');
-
-        var deferred = $q.defer();
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          success.data.revision = revision;
-          // deferred.resolve(service.yangifyObject(success.data)); TODO: check if correct
-          deferred.resolve(success.data);
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.info({ component: '$mwtnCommons.getActualNetworkElement', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      var getIdsByRevision = function (revision, pacId, partId) {
-
-        switch (revision) {
-          case '2016-03-23':
-            switch (pacId) {
-              case 'MWPS':
-              case 'AirInterface':
-              case 'airinterface':
-              case 'airInterface':
-                pacId = 'MicrowaveModel-ObjectClasses-MwConnection:MW_AirInterface_Pac';
-                partId = 'airInterface' + partId;
-                if (partId === 'airInterfaceCapability' || partId === 'airInterfaceCurrentProblems') {
-                  partId = undefined;
-                }
-                break;
-              case 'MWS':
-              case 'Structure':
-              case 'structure':
-                pacId = 'MicrowaveModel-ObjectClasses-MwConnection:MW_Structure_Pac';
-                partId = 'structure' + partId;
-                break;
-              case 'ETH-CTP':
-              case 'ETH':
-              case 'Container':
-              case 'container':
-                pacId = 'MicrowaveModel-ObjectClasses-MwConnection:MW_Container_Pac';
-                partId = 'container' + partId;
-                break;
-              case 'TDM':
-                pacId = 'MicrowaveModel-ObjectClasses-MwConnection:MW_Container_Pac';
-                partId = 'container' + partId;
-                break;
-            }
-            break;
-          case '2017-02-17':
-          case '2017-03-20':
-          case '2017-03-24':
-            switch (pacId) {
-              case 'MWPS':
-              case 'AirInterface':
-              case 'airinterface':
-              case 'airInterface':
-              case 'air-interface':
-                pacId = 'microwave-model:mw-air-interface-pac';
-                partId = 'air-interface-' + service.yangify(partId);
-                break;
-              case 'MWS':
-              case 'Structure':
-              case 'structure':
-                var isHybrid = false; // TODO How do I know this? 
-                if (isHybrid) {
-                  pacId = 'microwave-model:mw-hybrid-mw-structure-pac';
-                  partId = 'hybrid-mw-structure-' + service.yangify(partId);
-                } else {
-                  pacId = 'microwave-model:mw-pure-ethernet-structure-pac';
-                  partId = 'pure-ethernet-structure-' + service.yangify(partId);
-                }
-                break;
-              case 'ETH-CTP':
-              case 'ETC':
-              case 'Container':
-              case 'container':
-                pacId = 'microwave-model:mw-ethernet-container-pac';
-                partId = 'ethernet-container-' + service.yangify(partId);
-                break;
-              case 'TDM':
-                pacId = 'microwave-model:mw-tdm-container-pac';
-                partId = 'tdm-container-' + service.yangify(partId);
-                break;
-            }
-            break;
-          default:
-            switch (pacId) {
-              case 'MWPS':
-              case 'AirInterface':
-              case 'airinterface':
-              case 'airInterface':
-                pacId = 'MicrowaveModel-ObjectClasses-AirInterface:MW_AirInterface_Pac';
-                partId = 'airInterface' + partId;
-                break;
-              case 'MWS':
-              case 'Structure':
-              case 'structure':
-                pacId = 'MicrowaveModel-ObjectClasses-PureEthernetStructure:MW_PureEthernetStructure_Pac';
-                partId = 'pureEthernetStructure' + partId;
-                break;
-              case 'ETH-CTP':
-              case 'ETH':
-              case 'Container':
-              case 'container':
-                pacId = 'MicrowaveModel-ObjectClasses-EthernetContainer:MW_EthernetContainer_Pac';
-                partId = 'ethernetContainer' + partId;
-                break;
-              case 'TDM':
-                pacId = 'microwave-model:mw-tdm-container-pac';
-                partId = 'tdm-container-' + service.yangify(partId);
-                break;
-            }
-        }
-        return {
-          pacId: pacId,
-          partId: partId
-        };
-      };
-
-      service.getConditionalPackagePart = function (spec) {
-        // console.log(JSON.stringify(spec));
-        var deferred = $q.defer();
-        if (!spec.partId) {
-          deferred.reject('ignore');
-          return deferred.promise;
-        }
-
-        var ids = getIdsByRevision(spec.revision, spec.pacId, spec.partId);
-        var operation = 'operational';
-        if (spec.config === true) {
-          operation = 'config';
-        }
-
-        var url = [service.base, operation,
-          '/network-topology:network-topology/topology/topology-netconf/node/',
-        spec.nodeId,
-          '/yang-ext:mount/', ids.pacId, '/',
-        spec.layerProtocolId, '/',
-        ids.partId].join('');
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        // console.log(JSON.stringify(request));
-
-        var taskId = [spec.nodeId, spec.layerProtocolId, spec.pacId, 'data received'].join(' ');
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          success.data.revision = spec.revision;
-          deferred.resolve(success.data);
-          // console.log(JSON.stringify(service.yangifyObject(success.data)));
-          // [sko] not now - later after all apps are updated to the new model: deferred.resolve(service.yangifyObject(success.data));
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.info({ component: '$mwtnCommons.getConditionalPackagePart', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.getPtpPort = function (spec) {
-        var deferred = $q.defer();
-        if (!spec.networkElement || !spec.value) {
-          deferred.reject('ignore');
-          return deferred.promise;
-        }
-
-        var operation = 'config';
-        var url = [service.base, operation,
-          '/network-topology:network-topology/topology/topology-netconf/node/',
-        spec.networkElement,
-          '/yang-ext:mount/ietf-ptp-dataset:instance-list/1/port-ds-list/',
-        spec.value['port-number']].join('');
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        console.warn(JSON.stringify(request));
-
-        var taskId = [spec.networkElement, spec.value['port-number'], 'data received'].join(' ');
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          console.warn(JSON.stringify(success.data));
-          deferred.resolve(success.data);
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.info({ component: '$mwtnCommons.getPtpPort', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.setPtpPort = function (spec, data) {
-        var deferred = $q.defer();
-        if (!spec.networkElement || !spec.value) {
-          deferred.reject('ignore');
-          return deferred.promise;
-        }
-
-        var operation = 'config';
-        var url = [service.base, operation,
-          '/network-topology:network-topology/topology/topology-netconf/node/',
-        spec.networkElement,
-          '/yang-ext:mount/ietf-ptp-dataset:instance-list/1/port-ds-list/',
-        spec.value['port-number']].join('');
-
-        var body = {'port-ds-list': data};
-
-        var request = {
-          method: 'PUT',
-          url: url,
-          headers: {
-            'Content-Type': 'application/json',
-            'Accept': 'application/json'
-          },
-          data: body
-        };
-
-        var taskId = [spec.networkElement, spec.value['port-number'], 'data received'].join(' ');
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          deferred.resolve(success.data);
-          // deferred.resolve(service.yangifyObject(success.data));
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.error({ component: '$mwtnCommons.setPtpPort', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-
-      service.getPtpDefaultDs = function (spec) {
-        var deferred = $q.defer();
-        if (!spec.networkElement || !spec.value) {
-          deferred.reject('ignore');
-          return deferred.promise;
-        }
-
-        var operation = 'config';
-        var url = [service.base, operation,
-          '/network-topology:network-topology/topology/topology-netconf/node/',
-        spec.networkElement,
-          '/yang-ext:mount/ietf-ptp-dataset:instance-list/1/default-ds/'].join('');
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        console.warn(JSON.stringify(request));
-
-        var taskId = [spec.networkElement, 'default-ds', 'data received'].join(' ');
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          console.warn(JSON.stringify(success.data));
-          deferred.resolve(success.data);
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.info({ component: '$mwtnCommons.getPtpPort', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.setPtpDefaultDs = function (spec, data) {
-        var deferred = $q.defer();
-        if (!spec.networkElement || !spec.value) {
-          deferred.reject('ignore');
-          return deferred.promise;
-        }
-
-        var operation = 'config';
-        var url = [service.base, operation,
-          '/network-topology:network-topology/topology/topology-netconf/node/',
-        spec.networkElement,
-          '/yang-ext:mount/ietf-ptp-dataset:instance-list/1/default-ds/'].join('');
-
-        var body = {'default-ds': data};
-
-        var request = {
-          method: 'PUT',
-          url: url,
-          headers: {
-            'Content-Type': 'application/json',
-            'Accept': 'application/json'
-          },
-          data: body
-        };
-
-        var taskId = [spec.networkElement, 'default-ds', 'data received'].join(' ');
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          deferred.resolve(success.data);
-          // deferred.resolve(service.yangifyObject(success.data));
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.error({ component: '$mwtnCommons.setPtpPort', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-
-      service.setConditionalPackagePart = function (spec, data) {
-        var deferred = $q.defer();
-        if (!spec.partId) {
-          deferred.reject('ignore');
-          return deferred.promise;
-        }
-
-        var ids = getIdsByRevision(spec.revision, spec.pacId, spec.partId);
-        var body = {};
-        body[ids.partId] = data;
-
-        var url = [service.base,
-          'config/network-topology:network-topology/topology/topology-netconf/node/',
-        spec.nodeId,
-          '/yang-ext:mount/', ids.pacId, '/',
-        spec.layerProtocolId, '/',
-        ids.partId].join('');
-        var request = {
-          method: 'PUT',
-          url: url,
-          headers: {
-            'Content-Type': 'application/json',
-            'Accept': 'application/json'
-          },
-          data: body
-        };
-
-        var taskId = [spec.nodeId, spec.layerProtocolId, spec.pacId, 'data received'].join(' ');
-        console.time(taskId);
-        $http(request).then(function (success) {
-          console.timeEnd(taskId);
-          success.data.revision = spec.revision;
-          deferred.resolve(success.data);
-          // deferred.resolve(service.yangifyObject(success.data));
-        }, function (error) {
-          console.timeEnd(taskId);
-          $mwtnLog.error({ component: '$mwtnCommons.setConditionalPackagePart', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      // pureEthernetStructureConfiguration/problemKindSeverityList/value1
-      // {
-      //   "problemKindSeverityList": [
-      //     {
-      //       "problemKindName": "severity1",
-      //       "problemKindSeverity": "warning"
-      //     }
-      //   ]
-      // }
-
-      var processData = function (item, i, callback) {
-        var spec = item.spec;
-        var ids = getIdsByRevision(spec.revision, spec.pacId,
-          spec.partId);
-        item.spec = undefined;
-        var body = {};
-        body[spec.attribute] = [item];
-        $mwtnDatabase.getSchema().then(function (schema) {
-
-          var key;
-          Object.keys(item).map(function (k) {
-            // works currently only for single key lists
-            if (schema[k] && schema[k]['is-key']) {
-              key = k;
-            }
-          });
-
-          var url = [
-            service.base.slice(0, -1),
-            'config/network-topology:network-topology/topology/topology-netconf/node',
-            spec.nodeId, 'yang-ext:mount', ids.pacId,
-            spec.layerProtocolId, ids.partId,
-            spec.attribute, item[key]].join('/');
-          var request = {
-            method: 'PUT',
-            url: url,
-            headers: {
-              'Content-Type': 'application/json',
-              'Accept': 'application/json'
-            },
-            data: body
-          };
-          // console.log(JSON.stringify(request));
-          var taskId = [spec.nodeId, spec.layerProtocolId,
-          spec.pacId, item.problemKindName,
-            'data received'].join(' ');
-          console.time(taskId);
-          $http(request).then(function (success) {
-            console.timeEnd(taskId);
-            success.data.revision = spec.revision;
-            return callback();
-          },
-            function (error) {
-              console.timeEnd(taskId);
-              $mwtnLog
-                .error({
-                  component: '$mwtnCommons.setConditionalPackagePart',
-                  message: JSON
-                    .stringify(error.data)
-                });
-              return callback();
-            });
-        });
-      };
-
-      service.setConditionalPackagePartList = function (spec, data) {
-        var deferred = $q.defer();
-        if (!spec.partId) {
-          deferred.reject('ignore');
-          return deferred.promise;
-        }
-
-        data.map(function (item) {
-          item.spec = spec;
-        });
-
-        doSynchronousLoop(data, processData, function () {
-          deferred.resolve();
-        });
-        return deferred.promise;
-      };
-
-      var saveRequiredNetworkElement = function (requiredNode) {
-        var url = [$mwtnDatabase.base, $mwtnDatabase.index, 'required-networkelement',
-        requiredNode.nodeId].join('/');
-        var bodyString = JSON.stringify(requiredNode);
-        var headers = {
-          'Content-Type': 'application/json',
-          'Content-Length': bodyString.length
-        };
-        var request = {
-          method: 'PUT',
-          url: url,
-          data: requiredNode
-        };
-
-        var deferred = $q.defer();
-        console.time('database:' + url);
-        $http(request).then(function (success) {
-          console.timeEnd('database:' + url);
-          // console.log(JSON.stringify(success));
-          deferred.resolve(success);
-        }, function (error) {
-          console.timeEnd('database:' + url);
-          $mwtnLog.error({ component: '$mwtnCommons.saveRequiredNetworkElement', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      /**
-       * A function which inquires data from a netconf server and stores it in a database.
-       * @param {{'node-id': string, ipAddress: string, port: number, username: string, password: string, site:string, onfCoreModelRevision: string, onfAirInterfaceRevision: string}} netconfServer - A netConf server object with all connectivity parameters.
-       */
-      service.addRequiredNetworkElement = function (netconfServer) {
-        /** {Object} requiredNode - Data set to be stored in database */
-        var requiredNode = {
-          nodeId: netconfServer['node-id'],
-          siteRef: netconfServer.site,
-          onfCoreModelRevision: netconfServer.onfCoreModelRevision,
-          onfAirInterfaceRevision: netconfServer.onfAirInterfaceRevision,
-          required: true,
-          connect: {
-            mountId: netconfServer['node-id'],
-            host: netconfServer['netconf-node-topology:host'],
-            port: netconfServer['netconf-node-topology:port'],
-            username: netconfServer.username,
-            password: netconfServer.password
-          },
-          'core-model:network-element': {},
-        };
-
-        var deferred = $q.defer();
-        saveRequiredNetworkElement(requiredNode).then(function (success) {
-          deferred.resolve(success);
-        }, function (error) {
-          $mwtnLog.error({ component: '$mwtnCommons.saveRequiredNetworkElement', message: JSON.stringify(error.data) });
-          deferred.reject(error);
-        });
-
-        // [sko] much simplified du to ONAP concepts,  no device configuration needs to be stored in database.
-
-        // // get NetworkElement object from node
-        // var spec = {
-        //   nodeId: requiredNode.nodeId,
-        //   revision: requiredNode.onfCoreModelRevision,
-        //   pacId: 'ne'
-        // };
-
-        // var updatePart = function (spec, data) {
-        //   data.layerProtocol = spec.layerProtocolId;
-        //   requiredNode[spec.pacId].push(data);
-        // };
-
-        // var numberOfLtps = -1;
-        // var processLTPs = function (item, i, callback) {
-        //   var ltp = new LogicalTerminationPoint(item);
-        //   ltp.getLayerProtocols().map(
-        //     /**
-        //      * A function processing a layer-protocol object
-        //      * @param {LayerProtocol} lp A layer-protocol object
-        //      */
-        //     function (lp) {
-        //       var conditionalPackage = lp.getConditionalPackage(true);
-        //       if (conditionalPackage !== '') {
-        //         if (requiredNode[conditionalPackage] === undefined) {
-        //           // create missing pac array
-        //           requiredNode[conditionalPackage] = [];
-        //         }
-        //         var spec = {
-        //           nodeId: requiredNode.nodeId,
-        //           revision: requiredNode.onfCoreModelRevision,
-        //           pacId: conditionalPackage,
-        //           layer: lp.getLayer(),
-        //           layerProtocolId: lp.getId()
-        //         };
-        //         spec.partId = service.getPartGlobalId(spec, 'configuration');
-        //         // console.info(JSON.stringify(spec));
-        //         service.getPacParts(spec).then(function (success) {
-        //           // console.log(JSON.stringify(success));
-        //           spec.message = ['Process LTP', i+1, 'of', numberOfLtps].join(' ');
-        //           $notifying.notify(spec);
-        //           updatePart(spec, service.yangifyObject(success));
-        //           return callback();
-        //         }, function (error) {
-        //           spec.message = ['Process LTP', i+1, 'of', numberOfLtps].join(' ');
-        //           $notifying.notify(spec);
-        //           $mwtnLog.error({ component: '$mwtnCommons.processLTPs bad data', message: JSON.stringify(error) });
-        //           return callback();
-        //         });
-        //       } else {
-        //         $mwtnLog.info({ component: COMPONENT, message: 'No condtional package found: ' + ltp.getId() });
-        //         return callback();
-        //       }
-        //     });
-
-        //   // console.log(JSON.stringify(ltp.getData()));
-        // };
-
-        // service.getPacParts(spec).then(function (success) {
-        //   success = service.yangifyObject(success);
-        //   requiredNode['core-model:network-element'] = success['network-element'];
-        //   var id = success['network-element']['node-id'];
-        //   numberOfLtps = success['network-element'].ltp.length; 
-        //   doSynchronousLoop(success['network-element'].ltp, processLTPs, function () {
-        //     saveRequiredNetworkElement(requiredNode).then(function (success) {
-        //       $notifying.notify( { nodeId: id, message: 'finish'} );
-        //       deferred.resolve(success);
-        //     }, function (error) {
-        //       $mwtnLog.error({ component: '$mwtnCommons.saveRequiredNetworkElement', message: JSON.stringify(error.data) });
-        //       deferred.reject(error);
-        //     });
-        //   });
-
-        // }, function (error) {
-        //   $mwtnLog.error({ component: '$mwtnCommons.getPacParts', message: JSON.stringify(error.data) });
-        //   deferred.reject(error);
-        // });
-        return deferred.promise;
-      };
-
-      service.registerForOdlEvents = function (path, callback) {
-        var request = {
-          method: 'POST',
-          url: [service.base,
-            'operations/sal-remote:create-data-change-event-subscription']
-            .join(''),
-          data: {
-            "input": {
-              "path": path,
-              "sal-remote-augment:datastore": "CONFIGURATION",
-              "sal-remote-augment:scope": "SUBTREE"
-            }
-          }
-        };
-        $http(request).then(
-          function successCallback(response) {
-            // this callback will be called asynchronously
-            // when the response is available
-            // console.log(JSON.stringify(response));
-            createStream(response.data.output['stream-name'],
-              function (socketLocation) {
-                callback(socketLocation);
-              });
-          }, function errorCallback(response) {
-            // called asynchronously if an error occurs
-            // or server returns response with an error status.
-            console.error(JSON.stringify(response));
-          });
-      };
-
-      return service;
-    });
-
-    // Precision Time Protocol PTP
-    mwtnCommonsApp.register.factory('$mwtnPtp', function ($http, $q, $mwtnCommons, PtpClock) {
-      var key1 = 'netconf-node-topology:available-capabilities';
-      var key2 = 'available-capability';
-      var filterActivePtpClocks = function(mountpoints) {
-        return mountpoints.filter(function(mountpoint) {
-          if (!mountpoint) return false;
-          if (!mountpoint[key1]) return false;
-          if (!mountpoint[key1][key2]) return false;
-          if (mountpoint['netconf-node-topology:connection-status'] !== 'connected') return false;
-          var ptpCapability = mountpoint[key1][key2].filter(function(capability){
-            return capability.contains('ietf-ptp-dataset');
-          });
-          return ptpCapability.length > 0;
-        }).map(function(mountpoint){
-          return mountpoint['node-id'];
-        });
-      };
-      var ptpClocks = {};
-      var processData = function (nodeId, i, callback) {
-        $mwtnCommons.getPtpClockData(nodeId).then(
-          function (success) {
-            ptpClocks[nodeId] = new PtpClock(success);
-            callback();
-          },
-          function (error) {
-            console.error(error);
-            callback();
-          }
-        );
-      };
-
-      var service = {};
-      service.getPtpClocks = function() {
-        var deferred = $q.defer();
-
-        $mwtnCommons.getMountPoints().then(function (mountpoints) {
-          var ptpClockNodeIds = filterActivePtpClocks(mountpoints);
-          doSynchronousLoop(ptpClockNodeIds, processData, function () {
-            deferred.resolve(ptpClocks);
-          });
-        }, function (error) {
-          console.log(error);
-          deferred.reject();
-        });
-
-        return deferred.promise;
-      };
-
-      service.getParent = function(nodeId) {
-        var deferred = $q.defer();
-        var request = {
-          method: 'GET',
-          url: 'operational/network-topology:network-topology/topology/topology-netconf/node/' + nodeId + '/yang-ext:mount/ietf-ptp-dataset:instance-list/1/parent-ds/parent-port-identity'
-        };
-
-        $mwtnCommons.genericRequest(request).then(function(success){
-          console.warn(JSON.stringify(success));
-          deferred.resolve(success.data['parent-port-identity']);
-        }, function(error) {
-          console.error(JSon.stringify(error));
-          deferred.reject();
-        });
-        return deferred.promise;
-      };
-
-      return service;
-    });
-
-    // Service log
-    mwtnCommonsApp.register.factory('$mwtnLog', function ($http, $q, $mwtnDatabase) {
-      var writeLogToDB = function (data, callback) {
-        var url = [$mwtnDatabase.base, $mwtnDatabase.index, 'log'].join('/');
-        var request = {
-          method: 'POST',
-          url: url,
-          data: {
-            timestamp: data.timestamp ? data.timestamp : new Date().toISOString(),
-            type: data.type ? data.type : 'info',
-            component: data.component ? data.component : 'unkonwn',
-            message: data.message
-          }
-        };
-        $http(request).then(function successCallback(response) {
-          return callback(true);
-        }, function errorCallback(response) {
-          console.error(JSON.stringify(response));
-          return callback(false);
-        });
-      };
-
-      var createIndex = function (index, callback) {
-        var url = [$mwtnDatabase.base, index].join('/');
-        var request = {
-          method: 'POST',
-          url: url,
-          data: {
-            timestamp: new Date().toISOString(),
-            type: 'info',
-            component: '$mwtnLog',
-            message: 'init log'
-          }
-        };
-        $http(request).then(function (success) {
-          return callback(true);
-        }, function (error) {
-          console.error(JSON.stringify(error));
-          return callback(false);
-        });
-      };
-      var checkIndex = function (index, callback) {
-        var url = [$mwtnDatabase.base, index].join('/');
-        var request = {
-          method: 'HEAD',
-          url: url
-        };
-        $http(request).then(function successCallback(response) {
-          return callback(true);
-        }, function errorCallback(response) {
-          console.error(JSON.stringify(response));
-          createIndex(index, function (created) {
-            return callback(created);
-          });
-        });
-      };
-      var checkDatabase = function (callback) {
-        var url = $mwtnDatabase.base;
-        var request = {
-          method: 'GET',
-          url: url
-        };
-        $http(request).then(function successCallback(response) {
-          checkIndex($mwtnDatabase.index, function (exists) {
-            return callback(exists);
-          });
-        }, function errorCallback(response) {
-          console.error(JSON.stringify(response));
-          return callback(false);
-        });
-      };
-      var getData = function (type, log) {
-        var data = {};
-        data.timestamp = new Date().toISOString();
-        switch (typeof log) {
-          case 'string':
-            data.type = type;
-            data.component = 'unknown';
-            data.message = log;
-            break;
-          case 'object':
-            data.type = type;
-            data.component = log.component;
-            data.message = log.message;
-            break;
-          default:
-            data.type = 'error';
-            data.component = '$mwtnLog';
-            data.message = 'pnf log service is called with wrong parameters.';
-        }
-        // console.log(JSON.stringify(data));
-        return data;
-      };
-      var service = {
-        base: $mwtnDatabase.base
-      };
-      service.debug = function (log) {
-        var data = getData('debug', log);
-        checkDatabase(function (isRunning) {
-          if (isRunning) {
-            writeLogToDB(data, function () {
-              // console.log('log stored');
-            });
-          } else {
-            console.error(data.timestamp, service.base,
-              'Database (ElasticSerach) not reachable!?');
-          }
-        });
-        console.log(data.timestamp, JSON.stringify(log));
-      };
-      service.error = function (log) {
-        var data = getData('error', log);
-        checkDatabase(function (isRunning) {
-          if (isRunning) {
-            writeLogToDB(data, function () {
-              // console.log('log stored');
-            });
-          } else {
-            console.error(data.timestamp, service.base,
-              'Database (ElasticSerach) not reachable!?');
-          }
-        });
-        console.error(data.timestamp, JSON.stringify(log));
-      };
-      service.info = function (log) {
-        var data = getData('info', log);
-        checkDatabase(function (isRunning) {
-          if (isRunning) {
-            writeLogToDB(data, function () {
-              // console.log('log stored');
-            });
-          } else {
-            console.error(data.timestamp, service.base, 'Database (ElasticSerach) not reachable!?');
-          }
-        });
-        console.info(data.timestamp, JSON.stringify(log));
-      };
-      service.warning = function (log) {
-        var data = getData('warning', log);
-        checkDatabase(function (isRunning) {
-          if (isRunning) {
-            writeLogToDB(data, function () {
-              // console.log('log stored');
-            });
-          } else {
-            console.error(data.timestamp, service.base, 'Database (ElasticSerach) not reachable!?');
-          }
-        });
-        console.warn(data.timestamp, JSON.stringify(log));
-      };
-      return service;
-    });
-
-    // Service log
-    mwtnCommonsApp.register.factory('$mwtnEthernet', function ($http, $q) {
-      var service = {};
-
-      service.base = window.location.origin + '/restconf';
-      service.url = {
-        create: service.base + '/operations/route:create',
-        delete: service.base + '/operations/route:delete'
-      };
-
-      service.createForwardingConstruct = function(spec) {
-        var deferred = $q.defer();
-
-        var request = {
-          method: 'POST',
-          url: service.url.create,
-          data: {
-                  input: {
-                      vlanid: spec.vlan,
-                      fc: [{
-                              nodeName: spec.nodeId,
-                              aEnd: spec.ltp1,
-                              zEnd: spec.ltp2
-                          }
-                      ]
-                  }
-          }
-        };
-        console.log(JSON.stringify(spec));
-        console.log(JSON.stringify(request));
-
-        var consoleId = 'create-forwarding-consturuct: ';
-        console.time(consoleId);
-        $http(request).then(function (success) {
-          console.timeEnd(consoleId);
-          console.log(JSON.stringify(success));
-          deferred.resolve(success.data.output.status);
-        }, function (error) {
-          console.timeEnd(consoleId);
-          // console.error(JSON.stringify(error.statusText));
-          deferred.reject(error.statusText);
-        });
-        return deferred.promise;
-      };
-      
-      service.deleteForwardingConstruct = function(spec) {
-      
-        var deferred = $q.defer();
-        var request = {
-          method: 'POST',
-          url: service.url.delete,
-          data: {input:{vlanid:spec.ltp.slice(-2)}}
-        };
-        console.log(JSON.stringify(spec));
-        console.log(JSON.stringify(request));
-
-        var consoleId = 'delete-forwarding-consturuct: ';
-        console.time(consoleId);
-        $http(request).then(function (success) {
-          console.timeEnd(consoleId);
-          console.log(JSON.stringify(success));
-          deferred.resolve(success.data.output.status);
-        }, function (error) {
-          console.timeEnd(consoleId);
-          // console.error(JSON.stringify(error.statusText));
-          deferred.reject(error.statusText);
-        });
-        return deferred.promise;
-      };
-      
-      return service;
-    });
-
-    // Service Database (ElasticSerach)
-    mwtnCommonsApp.register.factory('$mwtnDatabase', function ($http, $q) {
-      var service = {
-        base: window.location.origin + '/database',
-        index: 'mwtn',
-        command: '_search',
-        mwtn: 'todo'
-      };
-
-      // TODO getBase is not needed anymore
-      service.getBase = function (functionId) {
-        var deferred = $q.defer();
-        
-        deferred.resolve({
-          base: service.base,
-          index: functionId
-        });
-
-        return deferred.promise;
-      };
-
-      service.genericRequest = function (databaseRequest) {
-        var url = [databaseRequest.base, databaseRequest.index, databaseRequest.docType,
-        databaseRequest.command].join('/');
-        var request = {
-          method: databaseRequest.method,
-          url: url,
-          data: {
-            from: databaseRequest.from,
-            size: databaseRequest.size,
-            sort: databaseRequest.sort,
-            filter: databaseRequest.filter,
-            query: databaseRequest.query
-          }
-        };
-        // overwrite request data if given
-        if (databaseRequest.data) {
-          request.data = databaseRequest.data;
-        }
-        var deferred = $q.defer();
-        var consoleId = 'database: ' + url;
-        console.time(consoleId);
-        $http(request).then(function (success) {
-          console.timeEnd(consoleId);
-          // console.log(JSON.stringify(success));
-          deferred.resolve(success);
-        }, function (error) {
-          console.timeEnd(consoleId);
-          console.warn(JSON.stringify(error));
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.aggregationRequest = function (databaseRequest) {
-        var url = [databaseRequest.base, databaseRequest.index, databaseRequest.docType,
-        databaseRequest.command].join('/');
-        var request = {
-          method: databaseRequest.method,
-          url: url,
-          data: databaseRequest.aggregation
-        };
-        var deferred = $q.defer();
-        var consoleId = 'database: ' + url;
-        console.time(consoleId);
-        $http(request).then(function (success) {
-          console.timeEnd(consoleId);
-          deferred.resolve(success);
-        }, function (error) {
-          console.timeEnd(consoleId);
-          console.warn(JSON.stringify(error));
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.getAllData = function (functionId, docType, from, size, sort) {
-        var deferred = $q.defer();
-        service.getBase(functionId).then(function (success) {
-          var databaseRequest = {
-            method: 'POST',
-            base: success.base,
-            index: success.index,
-            command: '_search',
-            docType: docType,
-            from: from,
-            size: size,
-            sort: sort,
-            query: {
-              match_all: {}
-            }
-          };
-          service.genericRequest(databaseRequest).then(function (success) {
-            // console.log('getAllData', success);
-            deferred.resolve(success);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.getFilteredData = function (functionId, docType, from, size, query) {
-        var deferred = $q.defer();
-        service.getBase(functionId).then(function (success) {
-          var databaseRequest = {
-            method: 'POST',
-            base: success.base,
-            index: success.index,
-            command: '_search',
-            docType: docType,
-            from: from,
-            size: size,
-            sort: [],
-            query: query
-          };
-          service.genericRequest(databaseRequest).then(function (success) {
-            // console.log('getAllData', success);
-            deferred.resolve(success);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.getFilteredSortedData = function (functionId, docType, from, size, sort, query) {
-        var deferred = $q.defer();
-        service.getBase(functionId).then(function (success) {
-          var databaseRequest = {
-            method: 'POST',
-            base: success.base,
-            index: success.index,
-            command: '_search',
-            docType: docType,
-            from: from,
-            size: size,
-            sort: sort,
-            query: query
-          };
-          service.genericRequest(databaseRequest).then(function (success) {
-            // console.log('getAllData', success);
-            deferred.resolve(success);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.getAggregatedData = function (functionId, docType, aggregation) {
-        var deferred = $q.defer();
-        service.getBase(functionId).then(function (success) {
-          var databaseRequest = {
-            method: 'POST',
-            base: success.base,
-            index: success.index,
-            command: '_search',
-            docType: docType,
-            aggregation: aggregation
-          };
-          service.aggregationRequest(databaseRequest).then(function (success) {
-            deferred.resolve(success);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.getAggregations = function (functionId, docType, aggregations) {
-        var deferred = $q.defer();
-        service.getBase(functionId).then(function (success) {
-          var databaseRequest = {
-            method: 'POST',
-            base: success.base,
-            index: success.index,
-            command: '_search',
-            docType: docType,
-            aggregation: aggregations
-          };
-          service.aggregationRequest(databaseRequest).then(function (success) {
-            deferred.resolve(success);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.getData = function (docType, from, size, sort, filter, query) {
-        var deferred = $q.defer();
-        service.getBase('mwtn').then(function (success) {
-          var databaseRequest = {
-            method: 'POST',
-            base: success.base,
-            index: success.index,
-            docType: docType,
-            from: from,
-            size: size,
-            sort: sort,
-            filter: filter,
-            query: query
-          };
-          service.genericRequest(databaseRequest).then(function (success) {
-            deferred.resolve(success);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      service.deleteDocType = function (spec) {
-        var deferred = $q.defer();
-        service.getBase(spec.functionId).then(function (success) {
-          var databaseRequest = {
-            method: 'DELETE',
-            base: success.base,
-            index: success.index,
-            docType: spec.docType,
-            command: '_query',
-            query: spec.query
-          };
-
-          service.genericRequest(databaseRequest).then(function (success) {
-            deferred.resolve(status);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      /**
-       * A promise, which inquires a single document from database.
-       * @param {string} functionId - An identifier of an SDN function (e.g 'mwtn').
-       * @param {string} docType - The document type of the document to be deleted.
-       * @param {string} id - An identifier of the document to be deleted.
-       */
-      service.getSingleDocument = function (functionId, docType, id) {
-        var deferred = $q.defer();
-        service.getBase(functionId).then(function (success) {
-          var databaseRequest = {
-            method: 'GET',
-            base: success.base,
-            index: success.index,
-            docType: docType,
-            command: id
-          };
-
-          service.genericRequest(databaseRequest).then(function (success) {
-            deferred.resolve(success.data._source);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      /**
-       * A promise, creating or updateing a single document of the database.
-       * @param {string} functionId - An identifier of an SDN function (e.g 'mwtn').
-       * @param {string} docType - The document type of the document to be deleted.
-       * @param {string} id - An identifier of the document to be deleted.
-       * @param {Object} data - A json object to be stored in the database
-       */
-      service.createSingleDocument = function (functionId, docType, id, data) {
-        var deferred = $q.defer();
-        service.getBase(functionId).then(function (success) {
-          var databaseRequest = {
-            method: 'PUT',
-            base: success.base,
-            index: success.index,
-            docType: docType,
-            command: id,
-            data: data
-          };
-
-          service.genericRequest(databaseRequest).then(function (success) {
-            deferred.resolve(success);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      /**
-       * A promise, which deletes one document within the database.
-       * @param {string} functionId - An identifier of an SDN function (e.g 'mwtn').
-       * @param {string} docType - The document type of the document to be deleted.
-       * @param {string} id - An identifier of the document to be deleted.
-       */
-      service.deleteSingleDocument = function (functionId, docType, id) {
-        var deferred = $q.defer();
-        service.getBase(functionId).then(function (success) {
-          var databaseRequest = {
-            method: 'DELETE',
-            base: success.base,
-            index: success.index,
-            docType: docType,
-            command: id,
-          };
-
-          service.genericRequest(databaseRequest).then(function (success) {
-            deferred.resolve({ status: success.status, logId: success.data._id });
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      var moduleInformation;
-      var inquireModuleInformation = function () {
-        var deferred = $q.defer();
-        service.getBase('mwtn').then(function (success) {
-          var databaseRequest = {
-            method: 'GET',
-            base: success.base,
-            index: success.index,
-            from: 0,
-            size: 999
-          };
-          service.getAllData('mwtn', 'module', 0, 999, undefined).then(function (success) {
-            // console.log(JSON.stringify(data.data.hits.hits));
-            moduleInformation = {};
-            success.data.hits.hits.map(function (hit) {
-              moduleInformation[hit._id] = hit._source;
-            });
-            // console.log('got moduleInformation', Object.keys(moduleInformation).length);
-            return deferred.resolve(moduleInformation);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      /**
-       * A promise which returns object yang class and attribute descriptions
-       */
-      service.getModules = function () {
-        var deferred = $q.defer();
-        if (moduleInformation) {
-          deferred.resolve(moduleInformation);
-        } else {
-          inquireModuleInformation().then(function (success) {
-            deferred.resolve(success);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }
-        return deferred.promise;
-      };
-
-      var schemaInformation;
-      var inquireSchemaInformation = function () {
-        var deferred = $q.defer();
-        service.getBase('mwtn').then(function (success) {
-          var databaseRequest = {
-            method: 'GET',
-            base: success.base,
-            index: success.index,
-            from: 0,
-            size: 999
-          };
-          service.getAllData('mwtn', 'schema-information', 0, 9999, undefined).then(function (success) {
-            // console.log(JSON.stringify(data.data.hits.hits));
-            schemaInformation = {};
-            success.data.hits.hits.map(function (hit) {
-              schemaInformation[hit._id] = hit._source;
-            });
-            // console.log('got schemaInformation', Object.keys(schemaInformation).length);
-            return deferred.resolve(schemaInformation);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }, function (error) {
-          deferred.reject(error);
-        });
-        return deferred.promise;
-      };
-
-      /**
-       * A promise which returns object yang class and attribute descriptions
-       */
-      service.getSchema = function () {
-        var deferred = $q.defer();
-        if (schemaInformation) {
-          deferred.resolve(schemaInformation);
-        } else {
-          inquireSchemaInformation().then(function (success) {
-            deferred.resolve(success);
-          }, function (error) {
-            deferred.reject(error);
-          });
-        }
-        return deferred.promise;
-      };
-
-      return service;
-    });
-    // Class NetConfServer
-    mwtnCommonsApp.register.factory('NetConfServer', function () {
-      // Classes
-      // Class NetConfServer
-      var NetConfServer = function (data) {
-        this.data = data;
-        this.getData = function () {
-          return this.data;
-        };
-        this.getRadioSignalId = function () {
-          return this.data.airInterfaceConfiguration.radioSignalId;
-        };
-        this.isLinkUp = function () {
-          return this.data.airInterfaceStatus.linkIsUp;
-        };
-        this.isPowerOn = function () {
-          return this.data.airInterfaceConfiguration.powerIsOn;
-        };
-        this.isActive = function () {
-          return this.isPowerOn() && this.isLinkUp();
-        };
-      };
-      return NetConfServer;
-    });
-
-    mwtnCommonsApp.register.factory('ActualNetworkElement', function () {
-      // Classes
-      // Class ActualNetworkElement
-      var ActualNetworkElement = function (data) {
-        this.data = data;
-        this.data.layerProtocols = {};
-        this.setOnfNetworkElement = function (onfNe) {
-          this.data.onfNetworkElement = onfNe;
-        };
-        this.getLpByRadioSignalId = function (radioSignalId) {
-          //console.log('getLP', JSON.stringify(this.data.ltp));
-          var layerProtocol;
-          for (var layerProtocolKey in this.data.layerProtocols) {
-            if (this.data.layerProtocols[layerProtocolKey].getRadioSignalId &&
-              radioSignalId === parseInt(this.data.layerProtocols[layerProtocolKey].getRadioSignalId())) {
-              layerProtocol = this.data.layerProtocols[layerProtocolKey];
-            }
-          }
-          return layerProtocol;
-        };
-        this.getLpByRadioSignalIds = function (radioSignalIds) {
-          //console.log('getLP', JSON.stringify(this.data.ltp));
-          var layerProtocol;
-          if (radioSignalIds !== undefined) {
-            for (var layerProtocolKey in this.data.layerProtocols) {
-              if (this.data.layerProtocols[layerProtocolKey].getRadioSignalIds &&
-                radioSignalIds.toString() === this.data.layerProtocols[layerProtocolKey].getRadioSignalIds(this).toString()) {
-                layerProtocol = this.data.layerProtocols[layerProtocolKey];
-              }
-            }
-          }
-          return layerProtocol;
-        };
-        this.setLP = function (onfPac) {
-          this.data.layerProtocols[onfPac.data.layerProtocol] = onfPac;
-        };
-        this.getLpPac = function (lpRef) {
-          return this.data.layerProtocols[lpRef];
-        };
-        this.getName = function () {
-          return this.data.name;
-        };
-        this.getConnectionStatus = function () {
-          return this.data.connectionStatus;
-        };
-        this.isConnected = function () {
-          return this.data.name !== 'controller-config' && this.data.connectionStatus == 'connected';
-        };
-        this.setConnectionStatus = function (status) {
-          this.data.connectionStatus = status;
-        };
-      };
-      return ActualNetworkElement;
-    });
-
-    mwtnCommonsApp.register.factory('LogicalTerminationPoint', function ($mwtnGlobal, $mwtnLog) {
-      // Sub-Class LayerProtocol
-      /**
-        * An object representing an LP.
-        * @typedef {Object} LayerProtocol
-        */
-      var LayerProtocol = function (data) {
-        // take a guess, if termiation-state is not exposed
-        if (data['termination-state'] === undefined) {
-
-          data['termination-state'] = 'terminated-bidirectional';
-          if (data['layer-protocol-name'] === "ETH") {
-            data['termination-state'] = 'lp-can-never-terminate';
-          }
-          $mwtnLog.warning({ component: 'LTP.getTerminationState', message: 'Check whether NE provided mandatory termination state. ' + data.uuid });
-        } else if (data['termination-state'] === false || data['termination-state'] === 'false' ) {
-          data['termination-state'] = 'terminated-bidirectional';
-        }
-
-        // console.log('in', JSON.stringify(data));
-        var defaultMapping = {
-          'ety-ttp': {},
-          // [FFA 1709] 'etc-ttp': { 'capability': 'urn:onf:params:xml:ns:yang:microwave-model?module=microwave-model', 'revision': '2017-03-24', 'conditional-package': 'mw-ethernet-container-pac' },
-          'etc-ttp': { 'capability': 'uri:onf:MicrowaveModel-ObjectClasses-EthernetContainerl?module=MicrowaveModel-ObjectClasses-EthernetContainer', 'revision': '2016-09-02', 'conditional-package': 'MW_EthernetContainer_Pac' },
-          'tdm-ctp': { 'capability': 'urn:onf:params:xml:ns:yang:microwave-model?module=microwave-model', 'revision': '2017-03-24', 'conditional-package': 'mw-tdm-container-pac' },
-
-          // due to E/// 
-          'mws-ctp': { 'capability': 'uri:onf:MicrowaveModel-ObjectClasses-PureEthernetStructure?module=MicrowaveModel-ObjectClasses-PureEthernetStructure', 'revision': '2016-09-02', 'conditional-package': 'MW_PureEthernetStructure_Pac' },
-          'mwps-ctp': { 'capability': 'uri:onf:MicrowaveModel-ObjectClasses-AirInterface?module=MicrowaveModel-ObjectClasses-AirInterface', 'revision': '2016-09-01', 'conditional-package': 'MW_AirInterface_Pac' },
-          // 'mws-ctp': { 'capability': 'urn:onf:params:xml:ns:yang:microwave-model?module=microwave-model', 'revision': '2017-03-24', 'conditional-package': 'mw-air-interface-diversity-pac' },
-
-          'eth-ctp': { 'capability': 'urn:onf:params:xml:ns:yang:onf-ethernet-conditional-packages?module=onf-ethernet-conditional-packages', 'revision': '2017-04-02', 'conditional-package': 'ethernet-pac' },
-          // 3rd PoC
-          'mwps-ttp': { 'capability': 'uri:onf:MicrowaveModel-ObjectClasses-AirInterface?module=MicrowaveModel-ObjectClasses-AirInterface', 'revision': '2016-09-01', 'conditional-package': 'MW_AirInterface_Pac' },
-          'mws-ttp': { 'capability': 'uri:onf:MicrowaveModel-ObjectClasses-PureEthernetStructure?module=MicrowaveModel-ObjectClasses-PureEthernetStructure', 'revision': '2016-09-02', 'conditional-package': 'MW_PureEthernetStructure_Pac' },
-          'eth-ctp-ctp': { 'capability': 'uri:onf:MicrowaveModel-ObjectClasses-EthernetContainerl?module=MicrowaveModel-ObjectClasses-EthernetContainer', 'revision': '2016-09-02', 'conditional-package': 'MW_EthernetContainer_Pac' },
-          'etc-ctp': { 'capability': 'uri:onf:MicrowaveModel-ObjectClasses-EthernetContainerl?module=MicrowaveModel-ObjectClasses-EthernetContainer', 'revision': '2016-09-02', 'conditional-package': 'MW_EthernetContainer_Pac' },
-
-        };
-        // create empty extension, if not exists
-        if (!data.extension) {
-          data.extension = [];
-        }
-        this.data = data;
-
-        // methods
-        this.getData = function () {
-          return this.data;
-        };
-        this.getId = function () {
-          return this.getData().uuid;
-        };
-        this.getLabel = function () {
-          return ['LP(', this.getItuLabel(true).toUpperCase(), '): ', this.getId()].join('');
-        };
-        this.getLayer = function () {
-          var layer = this.getData()['layer-protocol-name'];
-          if (layer === 'ETH-CTP') {
-            layer = 'ETC';
-          }
-          return layer;
-        };
-        this.getTerminationState = function (abstract) {
-          // 3th PoC termination state is of type boolean 
-          if (this.getData()['termination-state'] === true) {
-            return 'ttp';
-          } else if (this.getData()['termination-state'] === false) {
-            return 'ctp';
-          }
-          // 4th PoC termination state is of type enum
-          if (abstract !== true) {
-            return this.getData()['termination-state'];
-          }
-          var mapping = {
-            'lp-can-never-terminate': 'ctp',
-            'lt-not-terminated': 'ctp',
-            'terminated-server-to-client-flow': 'ttp',
-            'terminated-client-to-server-flow': 'ttp',
-            'terminated-bidirectional': 'ttp',
-            'lt-permenantly-terminated': 'ttp',
-            'termination-state-unknown': 'ttp'
-          };
-          return mapping[this.getData()['termination-state']];
-        };
-        this.getItuLabel = function () {
-          return [this.getLayer(), this.getTerminationState(true)].join('-').toLowerCase();
-        };
-        this.getExtension = function (key) {
-          var result = this.getData().extension.filter(function (ex) {
-            return ex['value-name'] === key;
-          }).map(function (ex) {
-            return ex.value;
-          });
-          if (result && result.length > 0) {
-            return result[0];
-          }
-          // check hardcoded alternatives
-          var ituLabel = this.getItuLabel();
-          if (!defaultMapping[ituLabel]) {
-            return '';
-          }
-          return defaultMapping[ituLabel][key];
-        };
-        /**
-         * A getter for the yang-capability of the LayerProtocol
-         * @param {boolean|undefined} moduleOnly - Defines, whether the result should contain only yang-module-name.
-         * @return {string} The conditional package name of the LayerProtocol
-         */
-        this.getCapability = function (moduleOnly) {
-          var cap = this.getExtension('capability');
-          if (!cap) return '';
-
-          // workaround bug in spec
-          if (cap.contains('onf-ethernet-conditional-package') && !cap.contains('onf-ethernet-conditional-packages')) {
-            console.warn('Inform vendor about spec error and updates');
-            cap = cap.replaceAll('onf-ethernet-conditional-package', 'onf-ethernet-conditional-packages');
-          }
-          if (cap !== '' && moduleOnly === true) {
-            return cap.split('?module=')[1];
-          }
-          return cap;
-        };
-        this.getRevision = function () {
-          return this.getExtension('revision');
-        };
-        /**
-         * A getter for the conditional package name of the LayerProtocol
-         * @param {boolean|undefined} addModule - Defines, whether the result should include the yang-module-name.
-         * @return {string} The conditional package name of the LayerProtocol
-         */
-        this.getConditionalPackage = function (addModule) {
-          var cp = this.getExtension('conditional-package');
-          if (!cp) {
-            return '';
-          }
-          if (addModule === true) {
-            return [this.getCapability(true), cp].join(':');
-          }
-          return cp;
-        };
-      };
-
-      // Sub-Class LogicalTerminationPoint
-      /**
-        * An object representing an LTP.
-        * @typedef {Object} LogicalTerminationPoint
-        */
-      var LogicalTerminationPoint = function (data) {
-        this.data = data;
-        this.layerProtocols = this.data.lp.map(function (layerProtocol) {
-          return new LayerProtocol(layerProtocol);
-        });
-        // console.log(this.layerProtocols);
-        this.getData = function () {
-          return this.data;
-        };
-        this.getId = function () {
-          return this.getData().uuid;
-        };
-        this.getName = function () {
-          return this.getData().name[0].value;
-        };
-        this.getDirectionality = function () {
-          return this.getData()['ltp-direction'];
-        };
-        this.getServerLtps = function () {
-          return this.getData()['server-ltp'];
-        };
-        this.getClientLtps = function () {
-          return this.getData()['client-ltp'];
-        };
-        this.getLayer = function () {
-          return this.getLayerProtocols()[0].getLayer();
-        };
-        this.getLabel = function () {
-          return ['LTP(', this.getLayerProtocols()[0].getItuLabel(true).toUpperCase(), '): ', this.getId()].join('');
-        };
-        this.getLayerProtocols = function () {
-          return this.layerProtocols;
-        };
-        this.getConditionalPackages = function () {
-          console.error(JSON.stringifythis.getLayerProtocols()());
-          return this.getLayerProtocols().map(function (lp) {
-            return lp.getConditionalPackage();
-          });
-        };
-      }
-      return LogicalTerminationPoint;
-    });
-
-    mwtnCommonsApp.register.factory('PtpClock', function (PtpPort) {
-      var PtpClock = function (data) {
-        var COMPONENT = "PtpClock";
-        this.data = {};
-        if (data && data['instance-list'] && data['instance-list'][0]) {
-          this.data = data['instance-list'][0];
-        }
-        if (!this.data['port-ds-list'] || this.data['port-ds-list'].length === 0) {
-          this.ptpPorts = [];
-          var message = ['The PTP clock', data['instance-number'], 'dose not support a single PTP port.'].join(' ');
-          console.info({ component: COMPONENT, message: message });
-        } else {
-          this.ptpPorts = this.data['port-ds-list'].map(function(ptpPort) {
-            return new PtpPort(ptpPort);
-          });
-        }
-
-        this.getData = function () {
-          return this.data;
-          // return JSON.parse(JSON.stringify(this.data).replaceAll('onf-ptp-dataset:', ''));
-        };
-        this.getIdentity = function(hex) {
-          var defaultDs = this.getData()['default-ds'];
-          var result = 'ERROR: no clock identity found';
-          if (defaultDs && defaultDs['clock-identity']) {
-            result = defaultDs['clock-identity'];
-            if (hex) {
-              result = result.base64ToHex();
-            }
-          }
-          return result;
-        };
-        this.getParent = function(hex) {
-          var parentDs = this.getData()['parent-ds'];
-          var key = 'parent-port-identity';
-          var result = '';
-          if (parentDs && parentDs[key] && parentDs[key]['clock-identity'] && parentDs[key]['port-number']) {
-            result = parentDs[key]['clock-identity'];
-            if (hex) {
-              result = result.base64ToHex();
-            }
-            result = [result, parentDs[key]['port-number']].join('#');
-          }
-          return result;
-        };
-        this.getGrandMaster = function(hex) {
-          var parentDs = this.getData()['parent-ds'];
-          // console.warn(JSON.stringify(parentDs));
-          var key = 'parent-port-identity';
-          var result = '';
-          if (parentDs && parentDs['grandmaster-identity']) {
-            result = parentDs['grandmaster-identity'];
-            if (hex) {
-              result = result.base64ToHex();
-            }
-          }
-          return result;
-        };
-        this.getPtpPorts = function () {
-          return this.ptpPorts;
-        };
-      };
-      return PtpClock;
-    });
-
-    mwtnCommonsApp.register.factory('PtpPort', function () {
-      var PtpPort = function (data) {
-        this.data = data;
-        this.getData = function () {
-          return this.data;
-        };
-        this.getId = function() {
-          return this.getData()['port-number'];
-        };
-        this.getNumber = function() {
-          return this.getData()['port-number'];
-        };
-        this.getState = function() {
-          return this.getData()['port-state'];
-        };
-        this.isSlave = function() {
-          return this.getData()['port-state'] === 'SLAVE';
-        };
-        this.isMaster = function() {
-          return this.getData()['port-state'] === 'MASTER';
-        };
-        this.getLogicalTerminationPointReference = function() {
-          return this.getData()['onf-ptp-dataset:logical-termination-point'];
-        };
-      };
-      return PtpPort;
-    });
-
-    mwtnCommonsApp.register.factory('OnfNetworkElement', function ($mwtnGlobal, LogicalTerminationPoint) {
-      // Classes
-      // Class OnfNetworkElement
-      var OnfNetworkElement = function (data) {
-        var COMPONENT = "OnfNetworkElement";
-
-        this.data = data;
-        if (!this.data) {
-          var message = ['No data received.'].join(' ');
-          console.warn({ component: COMPONENT, message: message });
-          return;
-        }
-
-        // console.log(JSON.stringify(data));
-        if (!this.data.ltp || this.data.ltp.length === 0) {
-          this.logicalTerminationPoints = [];
-          var message = ['The network-element', data.uuid, 'does not support a single LTP. No LTP -> no SDN integration via ONF core-model.'].join(' ');
-          // TODO $mwtnLog -> Unknown provider: $mwtnlogProvider <- $mwtnlog <- OnfNetworkElement [sko] Dont get it ;(
-          console.warn({ component: COMPONENT, message: message });
-        } else {
-          this.logicalTerminationPoints = this.data.ltp.map(function (logicalTerminationPoint) {
-            return new LogicalTerminationPoint(logicalTerminationPoint);
-          });
-        }
-
-        this.getData = function () {
-          return this.data;
-        };
-        this.getId = function () {
-          return this.getData().uuid;
-        };
-        this.getForwardingDomain = function () {
-          return this.getData().fd;
-        };
-        this.getName = function () {
-          return this.getData().name[0].value || this.getData().uuid;
-        };
-        this.getLogicalTerminationPoints = function () {
-          return this.logicalTerminationPoints;
-        };
-        this.getLtp = function (id) {
-          var result = this.getLogicalTerminationPoints().filter(function (ltp) {
-            return ltp.getId() === id;
-          });
-          if (result.length === 1) {
-            return result[0];
-          }
-          return undefined;
-        };
-        this.getLpById = function (id) {
-          var result = {};
-          this.getLogicalTerminationPoints().map(function (ltp) {
-            ltp.getLayerProtocols().map(function (lp) {
-              if (lp.getData().uuid === id) {
-                result = lp;
-              }
-            });
-          });
-          return result;
-        };
-        this.getNumberOfLtps = function () {
-          return this.logicalTerminationPoints.length;
-        };
-        this.getServerLtps = function (layerProtocolRef) {
-          var result = [];
-          if (this.data._ltpRefList) {
-            var ltpList = this.data._ltpRefList.map(function (ltp) {
-              if (ltp.lp[0].uuid === layerProtocolRef) {
-                result = ltp._serverLtpRefList;
-              }
-            });
-          }
-          return result;
-        };
-        this.getClientLtpIds = function (layerProtocolRef) {
-          var result = [];
-          if (this.data._ltpRefList) {
-            var ltpList = this.data._ltpRefList.map(function (ltp) {
-              if (ltp.lp[0].uuid === layerProtocolRef) {
-                result = ltp._clientLtpRefList;
-              }
-            });
-          }
-          return result;
-        };
-        this.getLpByLtpRef = function (ltpRef) {
-          var result;
-          if (this.data._ltpRefList) {
-            var ltpList = this.data._ltpRefList.map(function (ltp) {
-              if (ltp.uuid === ltpRef) {
-                result = ltp.lp[0];
-              }
-            });
-          }
-          return result;
-        };
-        this.getLtpsByLayer = function (layerProtocolName) {
-          return this.getLogicalTerminationPoints().filter(function (ltp) {
-            return ltp.getLayer() === layerProtocolName;
-          });
-        };
-        this.getLTPMwpsList = function () {
-          return this.getLtpsByLayer('MWPS');
-        };
-        this.getLTPMwsList = function () {
-          return this.getLtpsByLayer('MWS');
-        };
-        this.getLTPEthCtpList = function () {
-          return this.getLtpsByLayer('ETH');
-        };
-        this.getLTPTdmCtpList = function () {
-          return this.getLtpsByLayer('TDM');
-        };
-      };
-      return OnfNetworkElement;
-    });
-
-    mwtnCommonsApp.register.factory('MicrowavePhysicalSection', function () {
-      // Classes
-      // Class MicrowavePhysicalSection
-      var MicrowavePhysicalSection = function (data) {
-        this.data = data;
-        this.getData = function () {
-          return this.data;
-        };
-        this.getLayerProtocolId = function () {
-          return this.getData().layerProtocol;
-        };
-        this.getRadioSignalId = function () {
-          return this.getData()['air-interface-configuration'] ? this.data['air-interface-configuration']['radio-signal-id'] : -1;
-        };
-        this.isLinkUp = function () {
-          return this.getData()['air-interface-status']['link-is-up'];
-        };
-        this.isPowerOn = function () {
-          return this.getData()['air-interface-configuration']['power-is-on'];
-        };
-        this.isActive = function () {
-          return this.isPowerOn() && this.isLinkUp();
-        };
-      };
-      return MicrowavePhysicalSection;
-    });
-
-    mwtnCommonsApp.register.factory('MicrowaveSection', function () {
-      // Classes
-      // Class MicrowaveSection
-      var MicrowaveSection = function (data) {
-        this.data = data;
-        this.getData = function () {
-          return this.data;
-        };
-        this.getId = function () {
-          return this.data.layerProtocol;
-        };
-        this.getRadioSignalIds = function (actualNe) {
-          this.data.parent = actualNe;
-          var result = [];
-          var onfNe = actualNe.data.onfNetworkElement;
-          var lpId = this.getId();
-          onfNe.getServerLtps(lpId).map(function (mwpsLtpRef) {
-            var lpRef = onfNe.getLpByLtpRef(mwpsLtpRef).uuid;
-            var mwps = actualNe.getLpPac(lpRef);
-            result.push(mwps.getRadioSignalId());
-          });
-          return result;
-        };
-        this.getTimeSlotCapacity = function () {
-          return this.data.structureCapability.timeSlotCapacity;
-        };
-        this.getTotalNumberOfTimeSlots = function () {
-          return this.data.structureCapability.totalNumberOfTimeSlots;
-        };
-        this.getNumberOfEffectiveTimeSlots = function () {
-          var count = 0;
-          this.data.structureStatus.timeSlotStatusList.map(function (ts) {
-            if (ts.operationalStatus === 'ENABLED') {
-              count = count + 1;
-            }
-          });
-          return count;
-        };
-        this.getConfiguredCapacity = function () {
-          return this.getTotalNumberOfTimeSlots() * this.getTimeSlotCapacity();
-        };
-        this.getEffectiveCapacity = function () {
-          return this.getNumberOfEffectiveTimeSlots() * this.getTimeSlotCapacity();
-        };
-        this.isActive = function () {
-          if (this.data.parent === undefined) {
-            return false;
-          }
-          var actualNe = this.data.parent;
-          var result = true;
-          var onfNe = actualNe.data.onfNetworkElement;
-          var lpId = this.getId();
-          onfNe.getServerLtps(lpId).map(function (mwpsLtpRef) {
-            var lpRef = onfNe.getLpByLtpRef(mwpsLtpRef).uuid;
-            var mwps = actualNe.getLpPac(lpRef);
-            result = result && mwps.isActive();
-          });
-          return result;
-        };
-      };
-      return MicrowaveSection;
-    });
-  });
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/mwtnCommons.tpl.html
deleted file mode 100644 (file)
index 9594bca..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-<!-- This is the landing page of you application, Update the content as per your requirements -->
-
-<h4>Your {{data}} application is loaded</h4>
-<hr />
-<div class="owl">
- <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnFooter.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnFooter.tpl.html
deleted file mode 100644 (file)
index 597bcb9..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<hr />
-<div class="owl">
-       <span class="white">{{prefix}} - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnGrid.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnGrid.tpl.html
deleted file mode 100644 (file)
index 2751ffc..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<div class="owl co1ntainer" >
-
-  <div class="row">
-    <div class="col-md-12">
-
-      <div ng-if="info !== false">
-          <span class="owl-dark">{{info}}</span>
-      </div>
-
-      <div ui-grid="gridOptions" 
-           ui-grid-exporter 
-           ui-grid-selection 
-           ui-grid-pinning 
-           ui-grid-resize-columns
-           ui-grid-move-columns 
-           ui-grid-auto-resize
-           class="mwtn-grid"
-          ng-style="getTableHeight()"></div>
-
-    </div>
-  </div>
-
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnJsonViewer.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnJsonViewer.tpl.html
deleted file mode 100644 (file)
index 5f3cfbf..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<div class="owl">
-  <div class="row text-right" >
-    <div class="form-group" ng-if="noButtons !== true">
-      <button class="btn btn-default" type="button" clipboard supported="myClipboard.supported" text="myClipboard.getJson()"
-        on-copied="myClipboard.copyToClipboard()" on-error="myClipboard.error(err)">
-        <i class="fa fa-clipboard" aria-hidden="true"></i>
-      </button>
-      <button class="btn btn-default" type="button" ng-if="replace"  ng-click="openConfigView()">
-        <i class="fa fa-pencil-square-o pointer" aria-hidden="true" ></i>
-      </button>
-    <div>
-  </div>
-</div>
-<div class="owl">
-
-  <div ng-if="info !== false">
-      <span class="owl-dark">{{info}}</span>
-  </div>
-
-  <div class="row" ng-repeat="(key, value) in viewData track by $index" ng-show="value.value !== undefined">
-
-    <!-- type- default -->
-    <div class="col col-md-4 text-right" title="{{value.description}}" ng-if="value.type !== 'array' && value.visible === true">
-      <span class="owl-dark">{{value.labelId | translate}}</span>
-    </div>
-    <div class="col col-md-4 text-left" ng-if="value.type !== 'boolean' && value.type !== 'number' && value.type !== 'object' && value.type !== 'array' && value.visible === true">
-      <b>{{value.value}}</b>
-    </div>
-
-    <!-- type-boolean -->
-    
-    <div class="col col-md-2" ng-if="value.type === 'boolean' && value.visible === true">
-      <i class="fa" ng-class="{'fa-square-o': value.value === false, 'fa-check-square-o green': value.value === true}" aria-hidden="true"></i>
-    </div>
-
-    <!-- type- number -->
-    <div class="col col-md-2 number" ng-if="value.type === 'number' && value.visible === true">
-      <b>{{value.value}}</b>
-    </div>
-    <div class="col col-md-2 text-left" ng-if="value.unit && value.visible === true">
-      <span class="owl-dark">{{value.unit}}</span>
-    </div>
-
-    <!-- type- array of objects -->
-    <div class="col col-md-12" ng-if="value.type === 'array' && value.value.length !== 0 && getType(value.value[0]) === 'object'">
-      <span class="owl-dark text-right" style="margin-top: 5px;">{{value.labelId | translate}}</span><br/>
-      <mwtn-grid network-element="networkElement" data="value.value" path="path"></mwtn-grid>
-    </div>
-    <!-- type- array of non objects -->
-    <div class="col col-md-4 text-right" title="{{value.description}}" ng-if="value.type === 'array' && value.value.length !== 0 && getType(value.value[0]) !== 'object'">
-      <span class="owl-dark">{{value.labelId | translate}}</span>
-    </div>
-    <div class="col col-md-8 text-left" ng-if="value.type === 'array' && value.value.length !== 0 && getType(value.value[0]) !== 'object'">
-      <b>{{value.value}}</b>
-    </div>
-
-    <!-- type- object -->
-    <div class="col col-md-7" ng-if="value.type === 'object'">
-
-<!--      <pre>{{value | json}}</pre>
-      ###
-      <hr>
-<mwtn-json-viewer data="value.value"></mwtn-json-viewer>
-      <hr>
-      ### -->
-
-      <div class="owl">
-
-        <!-- TODO exception case: current pm -->
-        <div class="row" ng-repeat="(oKey, oValue) in value.value track by $index" ng-if="oValue.value === undefined">
-          <div class="col col-md-3 text-right">
-            <span class="owl-dark">{{oKey | translate}}</span>
-          </div>
-          <div class="col col-md-4  text-right" ng-if="oValue.type !== 'object'">
-            <b>{{oValue | json}}</b>
-          </div>
-        </div>
-
-        <!-- expected case: -->
-       <div class="row" ng-repeat="(oKey, oValue) in value.value track by $index" ng-if="oValue.value !== undefined">
-          <!-- oValue.type !== 'object'' && oValue.type !== 'array' -->
-          <div class="col col-md-3 text-right" ng-if="oValue.type !== 'object' && oValue.type !== 'array'">
-            <span class="owl-dark">{{oValue.labelId || oKey.replace('onf-ptp-dataset:' ,'') | translate}}</span>
-          </div>
-          <div class="col col-md-4  text-right" ng-if="oValue.type !== 'object' && oValue.type !== 'array'">
-            <b>{{oValue.value || oValue}}</b>
-          </div>
-
-
-          <!-- oValue.type === 'array'' -->
-          <div class="col col-md-3 text-right" ng-if="oValue.type === 'array'">
-            <span class="owl-dark">{{oValue.labelId || oKey.replace('onf-ptp-dataset:' ,'') | translate}}</span>
-          </div>
-          <div class="col col-md-4" ng-if="oValue.type === 'array'">
-            <json-formatter json="oValue.value" open="1"></json-formatter>
-          </div>
-
-          <!-- oValue.type === 'object' -->
-          <div class="col col-md-3 text-right" ng-if="oValue.type === 'object'">
-            <span class="owl-dark">{{oValue.labelId || oKey.replace('onf-ptp-dataset:' ,'') | translate}}</span>
-          </div>
-          <div class="col col-md-4" ng-if="oValue.type === 'object'">
-            <json-formatter json="oValue.value" open="1"></json-formatter>
-          </div>
-        </div>
-      </div> 
-    </div>
-  </div>
-
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnSelectNetworkElement.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/mwtnSelectNetworkElement.tpl.html
deleted file mode 100644 (file)
index 5851560..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-<div class="owl container" ng-hide="networkElements.lenght !== 0" style="width: 100%">
-  <p>
-    <span>{{ 'MWTN_NO_DEVICES_CONNECTED' | translate }}</span>
-    <span>Please check</span>
-    <a href="#/mwtnConnect" class="white">
-      <span>MWTN Connect</span>
-    </a>
-    <span>.</span>
-  </p>
-</div>
-<div class="owl container" ng-show="networkElements.lenght !== 0" style="width: 100%">
-  <div class="row">
-    <div class="col-md-3 form-group" ng-show="networkElements.length > 30">
-      <input list="networkElements" class="form-control" ng-model="networkElement">
-      <datalist id="networkElements">
-        <option ng-repeat="ne in networkElements" value="{{ne.id}}">{{ne.id}}</option>
-      </datalist>
-    </div>
-    <div class="col-md-3 form-group" ng-hide="networkElements.length > 30">
-      <select class="form-control" ng-model="networkElement">
-                               <option ng-repeat="ne in networkElements" value="{{ne.id}}">{{ne.id}}</option>
-                       </select>
-    </div>
-    <div class="col-md-2">
-      <span class="white">{{'MWTN_SELECT_NETWORK_ELEMENT' | translate}}</span>
-    </div>
-    <div class="col-md-7 text-right">
-      <div class="form-group">
-        <button type="button" class="btn btn-default" ng-click="collapseAll()">{{'MWTN_COLLAPSE_ALL' | translate}}</button>
-      </div>
-    </div>
-  </div>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/openConfigView.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/openConfigView.html
deleted file mode 100644 (file)
index 64c06e9..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{'MWTN_CONFIGURATION' | translate}}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-       <div class="container" style="width:100%">
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_NETWORKELEMENT' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{spec.nodeId}}</b>
-                       </div>
-               </div>
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_CONDITIONAL_PACKAGE' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{spec.pacId}}</b>
-                       </div>
-               </div>
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_LP' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{spec.layerProtocolId}}</b>
-                       </div>
-               </div>
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_SUBOBJECT' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{spec.partId}}</b>
-                       </div>
-                       <hr />
-               </div>
-               <div class="row">
-
-                       <div ng-repeat="(key, item) in viewData" ng-if="item.visible === true">
-
-        <!-- text, number, combo -->
-       <div class="col-md-3 text-right radio">{{item.labelId | translate}}</div>
-                               <div ng-class="{'col-md-2':item.unit, 'col-md-3':!item.unit}" class="form-group" ng-if="item.controlType !== 'checkbox' && getType(item.controlType) !== 'array'">
-                                 <input class="form-control" type="{{item.controlType}}" ng-model="item.value"></input> 
-                               </div>
-                               <div class="col-md-3 checkbox" ng-if="item.controlType === 'checkbox'"><input type="checkbox" ng-model="item.value" /></div> 
-                               <div ng-class="{'col-md-2':item.unit, 'col-md-3':!item.unit}" class="form-group" ng-if="getType(item.controlType) === 'array'">
-                                 <select class="form-control" ng-model="item.value">
-                                   <option ng-repeat="option in item.controlType track by $index" value="{{option}}">{{option}}</option>
-          </select>
-                               </div>
-                               <div class="col-md-1 radio" ng-if="item.unit">
-          <span class="owl-dark">{{item.unit}}</span>
-        </div>
-
-               </div>
-       </div>
-</div>
-<div class="modal-footer">
-    <div class="{{applied.class}}", ng-show="applied">{{applied.text}}</div>
-               <button class="btn btn-primary" type="button" ng-click="ok()">
-           <span style="color: white;">{{'MWTN_APPLY' | translate}}</span>
-           <i class="pull-right fa fa-spinner fa-pulse" ng-show="processing"></i>
-       </button>
-       <button class="btn btn-warning" type="button" ng-click="cancel()">{{'MWTN_CLOSE' | translate}}</button>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/showGridCellDetail.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/templates/showGridCellDetail.html
deleted file mode 100644 (file)
index ab449bb..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{'MWTN_CONFIGURATION' | translate}}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-       <div class="container" style="width:100%">
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_NETWORKELEMENT' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{networkElement}}</b>
-                       </div>
-               </div>
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_CONDITIONAL_PACKAGE' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{path.split('&amp;nbsp;')[0]}}</b>
-                       </div>
-               </div>
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_LP' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{path.split('&amp;nbsp;')[1]}}</b>
-                       </div>
-               </div>
-               <div class="row">
-                       <div class="col-md-3 text-right" >
-                       {{'MWTN_SUBOBJECT' | translate}}
-                       </div>
-                       <div class="col-md-9">
-                       <b>{{path.split('&amp;nbsp;')[2]}}</b>
-                       </div>
-                       <hr />
-               </div>
-               <div class="row">
-                       <mwtn-json-viewer network-element="networkElement" data="value" ng-if="type === 'object'"></mwtn-json-viewer>
-                       <mwtn-grid network-element="networkElement" data="value" ng-if="type === 'array'"></mwtn-grid>
-               </div>
-       </div>
-</div>
-<div class="modal-footer">
-    <div class="{{applied.class}}", ng-show="applied">{{applied.text}}</div>
-<!--
-               <button class="btn btn-primary" type="button" ng-click="ok()">
-           <span>{{'MWTN_APPLY' | translate}}</span>
-           <i class="pull-right fa fa-spinner fa-pulse" ng-show="processing"></i>
-       </button> -->
-       <button class="btn btn-warning" type="button" ng-click="cancel()">{{'MWTN_CLOSE' | translate}}</button>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/xml2json.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/mwtnCommons-module/src/main/resources/mwtnCommons/xml2json.js
deleted file mode 100644 (file)
index 5ff7e57..0000000
+++ /dev/null
@@ -1,567 +0,0 @@
-/*\r
- Copyright 2011-2013 Abdulla Abdurakhmanov\r
- Original sources are available at https://code.google.com/p/x2js/\r
-\r
- Licensed under the Apache License, Version 2.0 (the "License");\r
- you may not use this file except in compliance with the License.\r
- You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
- */\r
-\r
-function X2JS(config) {\r
-       'use strict';\r
-               \r
-       var VERSION = "1.1.5";\r
-       \r
-       config = config || {};\r
-       initConfigDefaults();\r
-       initRequiredPolyfills();\r
-       \r
-       function initConfigDefaults() {\r
-               if(config.escapeMode === undefined) {\r
-                       config.escapeMode = true;\r
-               }\r
-               config.attributePrefix = config.attributePrefix || "_";\r
-               config.arrayAccessForm = config.arrayAccessForm || "none";\r
-               config.emptyNodeForm = config.emptyNodeForm || "text";\r
-               if(config.enableToStringFunc === undefined) {\r
-                       config.enableToStringFunc = true; \r
-               }\r
-               config.arrayAccessFormPaths = config.arrayAccessFormPaths || []; \r
-               if(config.skipEmptyTextNodesForObj === undefined) {\r
-                       config.skipEmptyTextNodesForObj = true;\r
-               }\r
-               if(config.stripWhitespaces === undefined) {\r
-                       config.stripWhitespaces = true;\r
-               }\r
-               config.datetimeAccessFormPaths = config.datetimeAccessFormPaths || [];\r
-       }\r
-\r
-       var DOMNodeTypes = {\r
-               ELEMENT_NODE       : 1,\r
-               TEXT_NODE          : 3,\r
-               CDATA_SECTION_NODE : 4,\r
-               COMMENT_NODE       : 8,\r
-               DOCUMENT_NODE      : 9\r
-       };\r
-       \r
-       function initRequiredPolyfills() {\r
-               function pad(number) {\r
-             var r = String(number);\r
-             if ( r.length === 1 ) {\r
-               r = '0' + r;\r
-             }\r
-             return r;\r
-           }\r
-               // Hello IE8-\r
-               if(typeof String.prototype.trim !== 'function') {                       \r
-                       String.prototype.trim = function() {\r
-                               return this.replace(/^\s+|^\n+|(\s|\n)+$/g, '');\r
-                       }\r
-               }\r
-               if(typeof Date.prototype.toISOString !== 'function') {\r
-                       // Implementation from http://stackoverflow.com/questions/2573521/how-do-i-output-an-iso-8601-formatted-string-in-javascript\r
-                       Date.prototype.toISOString = function() {\r
-                     return this.getUTCFullYear()\r
-                       + '-' + pad( this.getUTCMonth() + 1 )\r
-                       + '-' + pad( this.getUTCDate() )\r
-                       + 'T' + pad( this.getUTCHours() )\r
-                       + ':' + pad( this.getUTCMinutes() )\r
-                       + ':' + pad( this.getUTCSeconds() )\r
-                       + '.' + String( (this.getUTCMilliseconds()/1000).toFixed(3) ).slice( 2, 5 )\r
-                       + 'Z';\r
-                   };\r
-               }\r
-       }\r
-       \r
-       function getNodeLocalName( node ) {\r
-               var nodeLocalName = node.localName;                     \r
-               if(nodeLocalName == null) // Yeah, this is IE!! \r
-                       nodeLocalName = node.baseName;\r
-               if(nodeLocalName == null || nodeLocalName=="") // =="" is IE too\r
-                       nodeLocalName = node.nodeName;\r
-               return nodeLocalName;\r
-       }\r
-       \r
-       function getNodePrefix(node) {\r
-               return node.prefix;\r
-       }\r
-               \r
-       function escapeXmlChars(str) {\r
-               if(typeof(str) == "string")\r
-                       return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g, '&#x2F;');\r
-               else\r
-                       return str;\r
-       }\r
-\r
-       function unescapeXmlChars(str) {\r
-               return str.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"').replace(/&#x27;/g, "'").replace(/&#x2F;/g, '\/');\r
-       }\r
-       \r
-       function toArrayAccessForm(obj, childName, path) {\r
-               switch(config.arrayAccessForm) {\r
-               case "property":\r
-                       if(!(obj[childName] instanceof Array))\r
-                               obj[childName+"_asArray"] = [obj[childName]];\r
-                       else\r
-                               obj[childName+"_asArray"] = obj[childName];\r
-                       break;          \r
-               /*case "none":\r
-                       break;*/\r
-               }\r
-               \r
-               if(!(obj[childName] instanceof Array) && config.arrayAccessFormPaths.length > 0) {\r
-                       var idx = 0;\r
-                       for(; idx < config.arrayAccessFormPaths.length; idx++) {\r
-                               var arrayPath = config.arrayAccessFormPaths[idx];\r
-                               if( typeof arrayPath === "string" ) {\r
-                                       if(arrayPath == path)\r
-                                               break;\r
-                               }\r
-                               else\r
-                               if( arrayPath instanceof RegExp) {\r
-                                       if(arrayPath.test(path))\r
-                                               break;\r
-                               }                               \r
-                               else\r
-                               if( typeof arrayPath === "function") {\r
-                                       if(arrayPath(obj, childName, path))\r
-                                               break;\r
-                               }\r
-                       }\r
-                       if(idx!=config.arrayAccessFormPaths.length) {\r
-                               obj[childName] = [obj[childName]];\r
-                       }\r
-               }\r
-       }\r
-       \r
-       function fromXmlDateTime(prop) {\r
-               // Implementation based up on http://stackoverflow.com/questions/8178598/xml-datetime-to-javascript-date-object\r
-               // Improved to support full spec and optional parts\r
-               var bits = prop.split(/[-T:+Z]/g);\r
-               \r
-               var d = new Date(bits[0], bits[1]-1, bits[2]);                  \r
-               var secondBits = bits[5].split("\.");\r
-               d.setHours(bits[3], bits[4], secondBits[0]);\r
-               if(secondBits.length>1)\r
-                       d.setMilliseconds(secondBits[1]);\r
-\r
-               // Get supplied time zone offset in minutes\r
-               if(bits[6] && bits[7]) {\r
-                       var offsetMinutes = bits[6] * 60 + Number(bits[7]);\r
-                       var sign = /\d\d-\d\d:\d\d$/.test(prop)? '-' : '+';\r
-\r
-                       // Apply the sign\r
-                       offsetMinutes = 0 + (sign == '-'? -1 * offsetMinutes : offsetMinutes);\r
-\r
-                       // Apply offset and local timezone\r
-                       d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset())\r
-               }\r
-               else\r
-                       if(prop.indexOf("Z", prop.length - 1) !== -1) {\r
-                               d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()));                                  \r
-                       }\r
-\r
-               // d is now a local time equivalent to the supplied time\r
-               return d;\r
-       }\r
-       \r
-       function checkFromXmlDateTimePaths(value, childName, fullPath) {\r
-               if(config.datetimeAccessFormPaths.length > 0) {\r
-                       var path = fullPath.split("\.#")[0];\r
-                       var idx = 0;\r
-                       for(; idx < config.datetimeAccessFormPaths.length; idx++) {\r
-                               var dtPath = config.datetimeAccessFormPaths[idx];\r
-                               if( typeof dtPath === "string" ) {\r
-                                       if(dtPath == path)\r
-                                               break;\r
-                               }\r
-                               else\r
-                               if( dtPath instanceof RegExp) {\r
-                                       if(dtPath.test(path))\r
-                                               break;\r
-                               }                               \r
-                               else\r
-                               if( typeof dtPath === "function") {\r
-                                       if(dtPath(obj, childName, path))\r
-                                               break;\r
-                               }\r
-                       }\r
-                       if(idx!=config.datetimeAccessFormPaths.length) {\r
-                               return fromXmlDateTime(value);\r
-                       }\r
-                       else\r
-                               return value;\r
-               }\r
-               else\r
-                       return value;\r
-       }\r
-\r
-       function parseDOMChildren( node, path ) {\r
-               if(node.nodeType == DOMNodeTypes.DOCUMENT_NODE) {\r
-                       var result = new Object;\r
-                       var nodeChildren = node.childNodes;\r
-                       // Alternative for firstElementChild which is not supported in some environments\r
-                       for(var cidx=0; cidx <nodeChildren.length; cidx++) {\r
-                               var child = nodeChildren.item(cidx);\r
-                               if(child.nodeType == DOMNodeTypes.ELEMENT_NODE) {\r
-                                       var childName = getNodeLocalName(child);\r
-                                       result[childName] = parseDOMChildren(child, childName);\r
-                               }\r
-                       }\r
-                       return result;\r
-               }\r
-               else\r
-               if(node.nodeType == DOMNodeTypes.ELEMENT_NODE) {\r
-                       var result = new Object;\r
-                       result.__cnt=0;\r
-                       \r
-                       var nodeChildren = node.childNodes;\r
-                       \r
-                       // Children nodes\r
-                       for(var cidx=0; cidx <nodeChildren.length; cidx++) {\r
-                               var child = nodeChildren.item(cidx); // nodeChildren[cidx];\r
-                               var childName = getNodeLocalName(child);\r
-                               \r
-                               if(child.nodeType!= DOMNodeTypes.COMMENT_NODE) {\r
-                                       result.__cnt++;\r
-                                       if(result[childName] == null) {\r
-                                               result[childName] = parseDOMChildren(child, path+"."+childName);\r
-                                               toArrayAccessForm(result, childName, path+"."+childName);                                       \r
-                                       }\r
-                                       else {\r
-                                               if(result[childName] != null) {\r
-                                                       if( !(result[childName] instanceof Array)) {\r
-                                                               result[childName] = [result[childName]];\r
-                                                               toArrayAccessForm(result, childName, path+"."+childName);\r
-                                                       }\r
-                                               }\r
-                                               (result[childName])[result[childName].length] = parseDOMChildren(child, path+"."+childName);\r
-                                       }\r
-                               }                                                               \r
-                       }\r
-                       \r
-                       // Attributes\r
-                       for(var aidx=0; aidx <node.attributes.length; aidx++) {\r
-                               var attr = node.attributes.item(aidx); // [aidx];\r
-                               result.__cnt++;\r
-                               result[config.attributePrefix+attr.name]=attr.value;\r
-                       }\r
-                       \r
-                       // Node namespace prefix\r
-                       var nodePrefix = getNodePrefix(node);\r
-                       if(nodePrefix!=null && nodePrefix!="") {\r
-                               result.__cnt++;\r
-                               result.__prefix=nodePrefix;\r
-                       }\r
-                       \r
-                       if(result["#text"]!=null) {                             \r
-                               result.__text = result["#text"];\r
-                               if(result.__text instanceof Array) {\r
-                                       result.__text = result.__text.join("\n");\r
-                               }\r
-                               if(config.escapeMode)\r
-                                       result.__text = unescapeXmlChars(result.__text);\r
-                               if(config.stripWhitespaces)\r
-                                       result.__text = result.__text.trim();\r
-                               delete result["#text"];\r
-                               if(config.arrayAccessForm=="property")\r
-                                       delete result["#text_asArray"];\r
-                               result.__text = checkFromXmlDateTimePaths(result.__text, childName, path+"."+childName);\r
-                       }\r
-                       if(result["#cdata-section"]!=null) {\r
-                               result.__cdata = result["#cdata-section"];\r
-                               delete result["#cdata-section"];\r
-                               if(config.arrayAccessForm=="property")\r
-                                       delete result["#cdata-section_asArray"];\r
-                       }\r
-                       \r
-                       if( result.__cnt == 1 && result.__text!=null  ) {\r
-                               result = result.__text;\r
-                       }\r
-                       else\r
-                       if( result.__cnt == 0 && config.emptyNodeForm=="text" ) {\r
-                               result = '';\r
-                       }\r
-                       else\r
-                       if ( result.__cnt > 1 && result.__text!=null && config.skipEmptyTextNodesForObj) {\r
-                               if( (config.stripWhitespaces && result.__text=="") || (result.__text.trim()=="")) {\r
-                                       delete result.__text;\r
-                               }\r
-                       }\r
-                       delete result.__cnt;                    \r
-                       \r
-                       if( config.enableToStringFunc && (result.__text!=null || result.__cdata!=null )) {\r
-                               result.toString = function() {\r
-                                       return (this.__text!=null? this.__text:'')+( this.__cdata!=null ? this.__cdata:'');\r
-                               };\r
-                       }\r
-                       \r
-                       return result;\r
-               }\r
-               else\r
-               if(node.nodeType == DOMNodeTypes.TEXT_NODE || node.nodeType == DOMNodeTypes.CDATA_SECTION_NODE) {\r
-                       return node.nodeValue;\r
-               }       \r
-       }\r
-       \r
-       function startTag(jsonObj, element, attrList, closed) {\r
-               var resultStr = "<"+ ( (jsonObj!=null && jsonObj.__prefix!=null)? (jsonObj.__prefix+":"):"") + element;\r
-               if(attrList!=null) {\r
-                       for(var aidx = 0; aidx < attrList.length; aidx++) {\r
-                               var attrName = attrList[aidx];\r
-                               var attrVal = jsonObj[attrName];\r
-                               if(config.escapeMode)\r
-                                       attrVal=escapeXmlChars(attrVal);\r
-                               resultStr+=" "+attrName.substr(config.attributePrefix.length)+"='"+attrVal+"'";\r
-                       }\r
-               }\r
-               if(!closed)\r
-                       resultStr+=">";\r
-               else\r
-                       resultStr+="/>";\r
-               return resultStr;\r
-       }\r
-       \r
-       function endTag(jsonObj,elementName) {\r
-               return "</"+ (jsonObj.__prefix!=null? (jsonObj.__prefix+":"):"")+elementName+">";\r
-       }\r
-       \r
-       function endsWith(str, suffix) {\r
-           return str.indexOf(suffix, str.length - suffix.length) !== -1;\r
-       }\r
-       \r
-       function jsonXmlSpecialElem ( jsonObj, jsonObjField ) {\r
-               if((config.arrayAccessForm=="property" && endsWith(jsonObjField.toString(),("_asArray"))) \r
-                               || jsonObjField.toString().indexOf(config.attributePrefix)==0 \r
-                               || jsonObjField.toString().indexOf("__")==0\r
-                               || (jsonObj[jsonObjField] instanceof Function) )\r
-                       return true;\r
-               else\r
-                       return false;\r
-       }\r
-       \r
-       function jsonXmlElemCount ( jsonObj ) {\r
-               var elementsCnt = 0;\r
-               if(jsonObj instanceof Object ) {\r
-                       for( var it in jsonObj  ) {\r
-                               if(jsonXmlSpecialElem ( jsonObj, it) )\r
-                                       continue;                       \r
-                               elementsCnt++;\r
-                       }\r
-               }\r
-               return elementsCnt;\r
-       }\r
-       \r
-       function parseJSONAttributes ( jsonObj ) {\r
-               var attrList = [];\r
-               if(jsonObj instanceof Object ) {\r
-                       for( var ait in jsonObj  ) {\r
-                               if(ait.toString().indexOf("__")== -1 && ait.toString().indexOf(config.attributePrefix)==0) {\r
-                                       attrList.push(ait);\r
-                               }\r
-                       }\r
-               }\r
-               return attrList;\r
-       }\r
-       \r
-       function parseJSONTextAttrs ( jsonTxtObj ) {\r
-               var result ="";\r
-               \r
-               if(jsonTxtObj.__cdata!=null) {                                                                          \r
-                       result+="<![CDATA["+jsonTxtObj.__cdata+"]]>";                                   \r
-               }\r
-               \r
-               if(jsonTxtObj.__text!=null) {                   \r
-                       if(config.escapeMode)\r
-                               result+=escapeXmlChars(jsonTxtObj.__text);\r
-                       else\r
-                               result+=jsonTxtObj.__text;\r
-               }\r
-               return result;\r
-       }\r
-       \r
-       function parseJSONTextObject ( jsonTxtObj ) {\r
-               var result ="";\r
-\r
-               if( jsonTxtObj instanceof Object ) {\r
-                       result+=parseJSONTextAttrs ( jsonTxtObj );\r
-               }\r
-               else\r
-                       if(jsonTxtObj!=null) {\r
-                               if(config.escapeMode)\r
-                                       result+=escapeXmlChars(jsonTxtObj);\r
-                               else\r
-                                       result+=jsonTxtObj;\r
-                       }\r
-               \r
-               return result;\r
-       }\r
-       \r
-       function parseJSONArray ( jsonArrRoot, jsonArrObj, attrList ) {\r
-               var result = ""; \r
-               if(jsonArrRoot.length == 0) {\r
-                       result+=startTag(jsonArrRoot, jsonArrObj, attrList, true);\r
-               }\r
-               else {\r
-                       for(var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) {\r
-                               result+=startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false);\r
-                               result+=parseJSONObject(jsonArrRoot[arIdx]);\r
-                               result+=endTag(jsonArrRoot[arIdx],jsonArrObj);                                          \r
-                       }\r
-               }\r
-               return result;\r
-       }\r
-       \r
-       function parseJSONObject ( jsonObj ) {\r
-               var result = "";        \r
-\r
-               var elementsCnt = jsonXmlElemCount ( jsonObj );\r
-               \r
-               if(elementsCnt > 0) {\r
-                       for( var it in jsonObj ) {\r
-                               \r
-                               if(jsonXmlSpecialElem ( jsonObj, it) )\r
-                                       continue;                       \r
-                               \r
-                               var subObj = jsonObj[it];                                               \r
-                               \r
-                               var attrList = parseJSONAttributes( subObj )\r
-                               \r
-                               if(subObj == null || subObj == undefined) {\r
-                                       result+=startTag(subObj, it, attrList, true);\r
-                               }\r
-                               else\r
-                               if(subObj instanceof Object) {\r
-                                       \r
-                                       if(subObj instanceof Array) {                                   \r
-                                               result+=parseJSONArray( subObj, it, attrList );                                 \r
-                                       }\r
-                                       else if(subObj instanceof Date) {\r
-                                               result+=startTag(subObj, it, attrList, false);\r
-                                               result+=subObj.toISOString();\r
-                                               result+=endTag(subObj,it);\r
-                                       }\r
-                                       else {\r
-                                               var subObjElementsCnt = jsonXmlElemCount ( subObj );\r
-                                               if(subObjElementsCnt > 0 || subObj.__text!=null || subObj.__cdata!=null) {\r
-                                                       result+=startTag(subObj, it, attrList, false);\r
-                                                       result+=parseJSONObject(subObj);\r
-                                                       result+=endTag(subObj,it);\r
-                                               }\r
-                                               else {\r
-                                                       result+=startTag(subObj, it, attrList, true);\r
-                                               }\r
-                                       }\r
-                               }\r
-                               else {\r
-                                       result+=startTag(subObj, it, attrList, false);\r
-                                       result+=parseJSONTextObject(subObj);\r
-                                       result+=endTag(subObj,it);\r
-                               }\r
-                       }\r
-               }\r
-               result+=parseJSONTextObject(jsonObj);\r
-               \r
-               return result;\r
-       }\r
-       \r
-       this.parseXmlString = function(xmlDocStr) {\r
-               var isIEParser = window.ActiveXObject || "ActiveXObject" in window;\r
-               if (xmlDocStr === undefined) {\r
-                       return null;\r
-               }\r
-               var xmlDoc;\r
-               if (window.DOMParser) {\r
-                       var parser=new window.DOMParser();                      \r
-                       var parsererrorNS = null;\r
-                       // IE9+ now is here\r
-                       if(!isIEParser) {\r
-                               try {\r
-                                       parsererrorNS = parser.parseFromString("INVALID", "text/xml").childNodes[0].namespaceURI;\r
-                               }\r
-                               catch(err) {                                    \r
-                                       parsererrorNS = null;\r
-                               }\r
-                       }\r
-                       try {\r
-                               xmlDoc = parser.parseFromString( xmlDocStr, "text/xml" );\r
-                               if( parsererrorNS!= null && xmlDoc.getElementsByTagNameNS(parsererrorNS, "parsererror").length > 0) {\r
-                                       //throw new Error('Error parsing XML: '+xmlDocStr);\r
-                                       xmlDoc = null;\r
-                               }\r
-                       }\r
-                       catch(err) {\r
-                               xmlDoc = null;\r
-                       }\r
-               }\r
-               else {\r
-                       // IE :(\r
-                       if(xmlDocStr.indexOf("<?")==0) {\r
-                               xmlDocStr = xmlDocStr.substr( xmlDocStr.indexOf("?>") + 2 );\r
-                       }\r
-                       xmlDoc=new ActiveXObject("Microsoft.XMLDOM");\r
-                       xmlDoc.async="false";\r
-                       xmlDoc.loadXML(xmlDocStr);\r
-               }\r
-               return xmlDoc;\r
-       };\r
-       \r
-       this.asArray = function(prop) {\r
-               if(prop instanceof Array)\r
-                       return prop;\r
-               else\r
-                       return [prop];\r
-       };\r
-       \r
-       this.toXmlDateTime = function(dt) {\r
-               if(dt instanceof Date)\r
-                       return dt.toISOString();\r
-               else\r
-               if(typeof(dt) === 'number' )\r
-                       return new Date(dt).toISOString();\r
-               else    \r
-                       return null;\r
-       };\r
-       \r
-       this.asDateTime = function(prop) {\r
-               if(typeof(prop) == "string") {\r
-                       return fromXmlDateTime(prop);\r
-               }\r
-               else\r
-                       return prop;\r
-       };\r
-\r
-       this.xml2json = function (xmlDoc) {\r
-               return parseDOMChildren ( xmlDoc );\r
-       };\r
-       \r
-       this.xml_str2json = function (xmlDocStr) {\r
-               var xmlDoc = this.parseXmlString(xmlDocStr);\r
-               if(xmlDoc!=null)\r
-                       return this.xml2json(xmlDoc);\r
-               else\r
-                       return null;\r
-       };\r
-\r
-       this.json2xml_str = function (jsonObj) {\r
-               return parseJSONObject ( jsonObj );\r
-       };\r
-\r
-       this.json2xml = function (jsonObj) {\r
-               var xmlDocStr = this.json2xml_str (jsonObj);\r
-               return this.parseXmlString(xmlDocStr);\r
-       };\r
-       \r
-       this.getVersion = function () {\r
-               return VERSION;\r
-       };\r
-       \r
-}\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCommons/pom.xml
deleted file mode 100644 (file)
index 93caaec..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <artifactId>mwtn</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
-    <relativePath>..</relativePath>
-  </parent>
-
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <artifactId>mwtnCommons</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-  <name>${prefix} ${project.artifactId}</name>
-  <packaging>pom</packaging>
-
-  <prerequisites>
-    <maven>3.0</maven>
-  </prerequisites>
-
-  <modules>
-    <module>mwtnCommons-module</module>
-    <module>mwtnCommons-bundle</module>
-  </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-bundle/pom.xml
deleted file mode 100644 (file)
index 66e1ee9..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnCompare</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnCompare-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
-
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnCompare-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnCompare-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-   <!--  <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index dae4aa4..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnCompare"/>
-        <property name="url" value="/src/app/mwtnCompare"/>
-        <property name="directory" value="/mwtnCompare"/>
-        <property name="requireJs" value="app/mwtnCompare/mwtnCompare.module"/>
-        <property name="angularJs" value="app.mwtnCompare"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnCompare/mwtnCompare-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/pom.xml
deleted file mode 100644 (file)
index c0de516..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnCompare</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnCompare-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-
- </project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/images/mwtnCompare.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/images/mwtnCompare.png
deleted file mode 100755 (executable)
index f4f9c09..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/images/mwtnCompare.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare-custom.css
deleted file mode 100644 (file)
index 1cab602..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- *  Add your application related css here 
- *  Build: @buildtime@
- */
-#mwtnCompare .footable > thead > tr > th {
-  background-color: #428bca;
-  color: #ffffff;
-  background-image: none;
-  border: none;
-  box-shadow: none;
-}
-
-.connected {
-   color: lightgreen;
-}
-
-.connected span {
-   color: lightgreen;
-}
-
-.match {
-   color: lightgreen;
-}
-
-.match span {
-   color: lightgreen;
-}
-
-.nowrap {
-    white-space: nowrap;
-}
-
-.red {
-    color: red;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.controller.js
deleted file mode 100644 (file)
index e83885a..0000000
+++ /dev/null
@@ -1,526 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCompare/mwtnCompare.module',
-        'app/mwtnCompare/mwtnCompare.services',
-        'app/mwtnCommons/mwtnCommons.services', 
-        'app/mwtnCompare/mwtnCompare.directives',
-        'app/mwtnCommons/bower_components/angular-ui-grid/ui-grid.min'], function(mwtnCompareApp) {
-
-  mwtnCompareApp.register.controller('mwtnCompareCtrl', ['$scope', '$rootScope', '$mwtnCompare', '$mwtnLog', 'orderByFilter', 'OnfNetworkElement', 'MicrowavePhysicalSection', 'MicrowaveSection',  
-                                                         function($scope, $rootScope, $mwtnCompare, $mwtnLog, orderBy, OnfNetworkElement, MicrowavePhysicalSection, MicrowaveSection) {
-
-    $rootScope.section_logo = 'src/app/mwtnCompare/images/mwtnCompare.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-    var rOnfNe;
-    var aOnfNe;
-    
-    $scope.status = {ne:false};
-    $scope.spinner = {ne:false};
-    $scope.separator = $mwtnCompare.separator; //'&nbsp;'
-    $scope.connectionStatus = 'disconnected';
-    $scope.oneATime = true;
-    $scope.match = {
-        numberOfLTPs: false,
-        numberOfLTPsStatus: 'unknown',
-        radioSignalIds: false,
-        radioSignalIdsStatus: 'unknown',
-        mapping: {},
-        addActualRadioSignalId: function(rsId) {
-          if (!this.actualRadioSignalIds) {
-            this.actualRadioSignalIds = [];
-          }
-          if (this.actualRadioSignalIds.contains(rsId)) {
-            return;
-          }
-          this.actualRadioSignalIds.push(rsId);
-          this.actualRadioSignalIds.sort();
-          this.checkRadioSignalIdsStatus();
-        },
-        clearActualNumberOfLtps: function() {
-          this.actualNumberOfLtps = undefined;
-          this.numberOfLTPs = false;
-          this.numberOfLTPsStatus = this.requiredNumberOfLtps;
-        },
-        clearActualRadioSignalIds: function() {
-          this.actualRadioSignalIds = undefined;
-          this.radioSignalIds = false;
-          this.radioSignalIdsStatus = this.requiredRadioSignalIds;
-        },
-        setRequiredNumberOfLtps: function(rNoLtps) {
-          this.requiredNumberOfLtps = rNoLtps;
-          this.checkNumberOfLTPs();
-        },
-        setRequiredRadioSignalIds: function(rRsIds) {
-          this.requiredRadioSignalIds = rRsIds.sort();
-          this.checkRadioSignalIdsStatus();
-        },
-        setActualNumberOfLtps: function(aNoLtps) {
-          this.actualNumberOfLtps = aNoLtps;
-          this.checkNumberOfLTPs();
-        },
-        setActualRadioSignalIds: function(aRsIds) {
-          this.actualRadioSignalIds = aRsIds.sort();
-          this.checkRadioSignalIdsStatus();
-        },
-        checkNumberOfLTPs: function() {
-          if (!this.requiredNumberOfLtps) {
-            this.numberOfLTPs = false;
-            this.numberOfLTPsStatus = 'unknown';
-          } else {
-            if (!this.actualNumberOfLtps) {
-              this.numberOfLTPs = false;
-              this.numberOfLTPsStatus = this.requiredNumberOfLtps;
-            } else {
-              if (this.requiredNumberOfLtps === this.actualNumberOfLtps) {
-                this.numberOfLTPs = true;
-                this.numberOfLTPsStatus = this.requiredNumberOfLtps;
-              } else {
-                this.numberOfLTPs = false;
-                this.numberOfLTPsStatus = ['required:', this.requiredNumberOfLtps, 'does not match actual:',this.actualNumberOfLtps].join(' ');
-              }
-            }
-          }
-        },
-        checkRadioSignalIdsStatus: function() {
-          if (!this.requiredRadioSignalIds) {
-            this.radioSignalIds = false;
-            this.radioSignalIdsStatus = 'unknown';
-          } else {
-            if (!this.actualRadioSignalIds) {
-              this.radioSignalIds = false;
-              this.radioSignalIdsStatus = this.requiredRadioSignalIds;
-            } else {
-              if (JSON.stringify(this.requiredRadioSignalIds) === JSON.stringify(this.actualRadioSignalIds)) {
-                this.radioSignalIds = true;
-                this.radioSignalIdsStatus = this.requiredRadioSignalIds;
-              } else {
-                this.radioSignalIds = false;
-                this.radioSignalIdsStatus = ['required:', this.requiredRadioSignalIds, 'does not match actual:',this.actualRadioSignalIds].join(' ');
-              }
-            }
-          }
-        }
-        
-    };
-    
-    $scope.schema = {initShowObjectCtrl:false};
-    $mwtnCompare.getSchema().then(function(data){
-      $scope.schema = data;
-    });
-    
-    var initNodeList = function(nodes){
-      $scope.neSelection = [];
-      if (nodes.length > 0) {
-        nodes.map(function(ne) {
-          if (ne._source.onfAirInterfaceRevision) {
-            $scope.neSelection.push({id:ne._id, revision:ne._source.onfAirInterfaceRevision});
-            
-          }
-        });
-        $scope.neSelection.sort(function(a, b){
-          if(a.id < b.id) return -1;
-          if(a.id > b.id) return 1;
-          return 0;
-        });
-      }
-    };
-    $scope.requiredNetworkElements = [];
-    $mwtnCompare.getRequiredNetworkElements(true).then(function(nodes){
-      $scope.requiredNetworkElements = nodes;
-      initNodeList(nodes);
-    }, function(error){
-      $scope.neSelection = [];
-      $scope.requiredNetworkElements = [];
-    });
-
-    $scope.collapseAll = function() {
-      // close all groups
-      Object.keys($scope.status).map(function(group){
-        $scope.status[group] = false;
-      });
-      Object.keys($scope.spinner).map(function(group){
-        $scope.spinner[group] = false;
-      });
-    };
-
-
-  // events
-    $scope.$watch('selection', function(neId, oldValue) {
-      if (neId && neId !== '' && neId !== oldValue) {
-        $scope.collapseAll();
-        $scope.connectionStatus = 'disconnected';
-        $scope.match.clearActualNumberOfLtps();
-        $scope.match.clearActualRadioSignalIds();
-        $mwtnCompare.getConnectionStatus(neId).then(function(connectionStatus){
-          $scope.connectionStatus = connectionStatus;
-         // get actual data
-          if ($scope.connectionStatus === 'connected') {
-            var key = 'ne';
-            var spec = {
-                nodeId: $scope.selection,
-                revision: $scope.requiredNetworkElement.onfAirInterfaceRevision,
-                pacId: key,
-              };
-              $mwtnCompare.getPacParts(spec).then(function(success){
-                updatePart(spec, success);
-                $scope.spinner[key] = false;
-              }, function(error){
-                updatePart(spec, error);
-                $scope.spinner[key] = false;
-              });
-          }
-          
-        },function(error){
-          $scope.connectionStatus = 'disconnected';
-        });
-
-        $scope.requiredNetworkElements.map(function(rne){
-          console.warn(JSON.stringify(rne._id, neId, rne._id === neId));
-          if (rne._id === neId) {
-            $scope.requiredNetworkElement = rne._source;
-            rOnfNe = new OnfNetworkElement(rne._source['core-model:network-element']);
-            $scope.match.setRequiredNumberOfLtps(rOnfNe.getNumberOfLtps());
-            // required NE
-            var rMwpsList = rOnfNe.getLTPMwpsList().map(function(mwpsLtp){
-              var key = 'microwave-model:mw-air-interface-pac';
-              if ($scope.requiredNetworkElement.onfAirInterfaceRevision.contains('2016')) {
-                 key = 'MicrowaveModel-ObjectClasses-AirInterface:MW_AirInterface_Pac';
-              }
-              var rMwpsList = $scope.requiredNetworkElement[key].map(function(mwps){
-                if (mwps.layerProtocol === mwpsLtp.getLayerProtocols()[0].getId()) {
-                  return new MicrowavePhysicalSection(mwps);
-                }
-              });
-              
-              if (rMwpsList) {
-                return rMwpsList.clean(undefined)[0];
-              } else {
-                return {};
-              }
-            });
-            
-            var rRadioSignalIds = rMwpsList.map(function(rMwps){
-             return rMwps.getRadioSignalId();
-            });
-            $scope.match.setRequiredRadioSignalIds(rRadioSignalIds);
-          }
-        });
-      }
-    });
-
-    var getArrayValueToHtml = function(array) {
-      if (array === undefined) {
-        return '';
-      }
-      if (array.length > 0 && ($mwtnCompare.getType(array[0]) === 'object' || $mwtnCompare.getType(array[0]) === 'array') ) {
-        var converted = array.map(function(item){
-          if ($mwtnCompare.getType(item) === 'object' && Object.keys(item).length === 2 ) {
-            return [item[Object.keys(item)[0]], item[Object.keys(item)[1]]].join(':');            
-          } else {
-            return JSON.stringify(item);            
-          }
-        });
-        return converted.join('<br/>');
-      } else {
-        return array.join('<br/>');
-      }
-    };
-    
-    var getCompares = function(obj, actualData) {
-      var compares = [];
-
-      for (var labelId in obj) {
-        var missingActualValueLabelId = 'not connected';
-        var match = false;
-
-        switch (labelId) {
-        case 'compares':
-          break;
-        case 'open':
-          break;
-//        case 'nameList':
-//            var requiredName = obj[labelId][0].value;
-//            var actualName = '';
-//            if (actualData) {
-//              actualName = actualData[labelId][0].value;
-//            }
-//            match = ((requiredName === '' || actualName === '') || (requiredName === actualName));
-//            // console.log('NAME', requiredName, actualName, match);
-//            compares.push({
-//              labelId : 'NE name',
-//              requiredValue : requiredName,
-//              actualValue : actualName,
-//              match : match,
-//              missingActualValueLabelId : missingActualValueLabelId,
-////              unit : $scope.schema[labelId].unit,
-////              description : $scope.schema[labelId].description,
-//              showDescriptions : false
-//            });
-//            break;
-          case '_ltpRefList':
-            var requiredLtpLength = obj[labelId].length;
-            var actualLtpLength = '';
-            if (actualData) {
-              actualLtpLength = actualData[labelId].length;
-            }
-            match = ((requiredLtpLength === '' || actualLtpLength === '') || (requiredLtpLength === actualLtpLength));
-            compares.push({
-              labelId : 'numberOfLTPs',
-              requiredValue : requiredLtpLength,
-              actualValue : actualLtpLength,
-              match : match,
-              missingActualValueLabelId : missingActualValueLabelId,
-              unit : $scope.schema[labelId].unit,
-              order: $scope.schema[labelId]['order-number'],
-              description :  $scope.schema[labelId].description,
-              showDescriptions : false
-            });
-            break;
-          default:
-            if (labelId === 'installedCapacity') {
-              missingActualValueLabelId = '<pure planning value>';
-            }
-            if (labelId === 'timeSlotIDList') {
-              var requiredTimeSlotIDListLength = obj[labelId].length;
-              var actualTimeSlotIDListLength = '';
-              if (actualData) {
-                actualTimeSlotIDListLength = actualData[labelId].length;
-              }
-              compares.push({
-                labelId : 'currentNumberOfTimeSlots',
-                requiredValue : requiredTimeSlotIDListLength,
-                actualValue : actualTimeSlotIDListLength,
-                match : true,
-                missingActualValueLabelId : missingActualValueLabelId,
-                unit : $scope.schema[labelId].unit,
-                order: $scope.schema[labelId]['order-number'],
-                description :  $scope.schema[labelId].description,
-                showDescriptions : false
-              });
-            }
-            
-            switch($mwtnCompare.getType(obj[labelId])) {
-            case 'object':
-              if (actualData) {
-                var withActual = getCompares(obj[labelId], actualData[labelId]); 
-                compares = compares.concat(withActual);
-              } else {
-                var withoutActual = getCompares(obj[labelId]); 
-                compares = compares.concat(withoutActual);
-              }
-              break;
-            case 'array':
-              var requiredDataValue = getArrayValueToHtml(obj[labelId]);
-              var actualDataValue = '';
-              if (actualData) {
-                actualDataValue = getArrayValueToHtml(actualData[labelId]);
-              }
-              match = ((requiredDataValue === '' || actualDataValue === '') || (requiredDataValue === actualDataValue));
-              compares.push({
-                labelId : labelId,
-                requiredValue : requiredDataValue,
-                actualValue : actualDataValue,
-                match : match,
-                missingActualValueLabelId : missingActualValueLabelId,
-                unit : $scope.schema[labelId].unit,
-                order: $scope.schema[labelId]['order-number'],
-                description :  $scope.schema[labelId].description,
-                showDescriptions : false
-              });
-              break;
-            default:
-              var requiredValue = obj[labelId];
-              var actualValue = actualData ? actualData[labelId] : '';
-//              // console.log('match');
-//              // console.log('match1', requiredValue, (requiredValue === ''));
-//              // console.log('match2', actualValue, (actualValue === ''));
-//              // console.log('match3', requiredValue, actualValue, (requiredValue === actualValue));
-//              // console.log('match4', (requiredValue === '' || actualValue === '') || (requiredValue === actualValue));
-              match = (requiredValue === '' || actualValue === '') || (requiredValue === actualValue);
-              compares.push({
-                labelId : labelId,
-                requiredValue : requiredValue,
-                actualValue : actualValue,
-                match : match,
-                missingActualValueLabelId : missingActualValueLabelId,
-                unit : $scope.schema[labelId].unit,
-                order: $scope.schema[labelId]['order-number'],
-                description :  $scope.schema[labelId].description,
-                showDescriptions : false
-              });
-            }
-          }
-      }
-      return orderBy(compares, 'order', false);
-    };
-    
-    var updateNe = function(data) {
-
-      var rne = $scope.requiredNetworkElement;
-      if (!data) {
-        rne['core-model:network-element'].compares = getCompares(rne['core-model:network-element']);
-        return;        
-      }
-      rne['core-model:network-element'].compares = getCompares(rne['core-model:network-element'], data['core-model:network-element']);
-      console.error(JSON.stringify(data));
-      aOnfNe = new OnfNetworkElement(data['core-model:network-element']);
-      $scope.match.setActualNumberOfLtps(aOnfNe.getNumberOfLtps());
-      var aMwpsList = aOnfNe.getLTPMwpsList().map(function(mwpsLtp){
-        
-        var spec = {
-          nodeId: $scope.selection,
-          revision: $scope.requiredNetworkElement.onfAirInterfaceRevision,
-          pacId: 'microwave-model:mw-air-interface-pac',
-          layerProtocolId: mwpsLtp.getLayerProtocols()[0].getId(),
-          partId: 'configuration'
-        };
-
-        $mwtnCompare.getPacParts(spec).then(function(success){
-          updatePart(spec, success);
-        }, function(error){
-          updatePart(spec, error);
-        });
-        return mwpsLtp._lpList[0].uuid;
-      });
-      // console.log(aMwpsList)
-      var mwClient = rne['microwave-model:mw-ethernet-container-pac'][0];
-      $scope.match.mapping[mwClient.layerProtocol] = aOnfNe.getLTPEthCtpList()[0].getLayerProtocols()[0].getId();
-    };
-
-    var addShowDescriptionEvent = function(obj) {
-      $scope.$watch(function() {
-        return obj.showDescriptions;
-      }, function(newValue, oldValue) {
-        if (newValue !== oldValue) {
-          obj.compares.map(function(compare){
-            compare.showDescriptions = newValue;
-          });
-        }
-      });
-    };
-
-    var updateAirInterface = function(spec, data) {
-      if (!data) {
-        $scope.requiredNetworkElement['microwave-model:mw-air-interface-pac'].map(function(mwps){
-          mwps.compares = getCompares(mwps.airInterfaceConfiguration);
-          addShowDescriptionEvent(mwps);
-        });
-      } else {
-        var actual = new MicrowavePhysicalSection(data);
-        $scope.match.addActualRadioSignalId(actual.getRadioSignalId());
-        // console.log(actual.getRadioSignalId());
-        $scope.requiredNetworkElement['microwave-model:mw-air-interface-pac'].map(function(mwps){
-          var required = new MicrowavePhysicalSection(mwps);
-          if (actual.getRadioSignalId() === required.getRadioSignalId()) {
-            $scope.match.mapping[required.getLayerProtocolId()] = actual.getLayerProtocolId();
-            var actualData = data.airInterfaceConfiguration;
-            mwps.compares = getCompares(mwps.airInterfaceConfiguration, actualData);
-            addShowDescriptionEvent(mwps);
-  
-            // MWS mapping
-            var rMws = rOnfNe.getClientLtpIds(required.getLayerProtocolId());
-            var aMws = aOnfNe.getClientLtpIds(actual.getLayerProtocolId());
-            // In PoC just a 1:1 relation between MWPS and MWS
-            $scope.match.mapping[rOnfNe.getLpByLtpRef(rMws[0]).uuid] = aOnfNe.getLpByLtpRef(aMws[0]).uuid;
-          }
-        });
-     }
-    };
-
-    var updateStructure = function(spec, data) {
-      if (!data) {
-        $scope.requiredNetworkElement.MW_PureEthernetStructure_Pac.map(function(mws){
-          mws.compares = getCompares(mws.pureEthernetStructureConfiguration);
-          addShowDescriptionEvent(mws);
-        });
-      } else {
-        $scope.requiredNetworkElement.MW_PureEthernetStructure_Pac.map(function(mws){
-          if ($scope.match.mapping[mws.layerProtocol] === data.layerProtocol) {
-            var actualData = data.pureEthernetStructureConfiguration;
-            mws.compares = getCompares(mws.pureEthernetStructureConfiguration, actualData);
-            addShowDescriptionEvent(mws);
-          }
-        });
-      }
-    };
-
-    var updateContainer = function(spec, data) {
-      // there is only one container in PoCs
-      var mwClient = $scope.requiredNetworkElement.MW_EthernetContainer_Pac[0];
-      if (!data) {
-        mwClient.compares = getCompares(mwClient.ethernetContainerConfiguration);
-        addShowDescriptionEvent(mwClient);
-      } else {
-        var actualData = data.ethernetContainerConfiguration;
-        mwClient.compares = getCompares(mwClient.ethernetContainerConfiguration, actualData);
-        addShowDescriptionEvent(mwClient);
-      }
-    };
-
-    var updatePart = function(spec, data) {
-      switch (spec.pacId) {
-      case 'ne':
-        updateNe(data);
-        break;
-      case 'airinterface':
-        // console.log(JSON.stringify(spec, JSON.stringify(data)));
-        updateAirInterface(spec, data);
-        break;
-      case 'structure':
-        // console.log(JSON.stringify(data));
-        updateStructure(spec, data);
-        break;
-      case 'container':
-        // console.log(JSON.stringify(data));
-        updateContainer(spec, data);
-        break;
-      }
-    };
-
-    $scope.$watch('status', function(status, oldValue) {
-      Object.keys(status).map(function(key){
-        if ($scope.selection && status[key] && status[key] !== oldValue[key]) {
-          var info = key.split($scope.separator);
-          var spec = {
-            nodeId: $scope.selection,
-            revision: $scope.requiredNetworkElement.onfAirInterfaceRevision,
-            pacId: info[0],
-            requiredLayerProtocolId: info[1],
-            layerProtocolId: $scope.match.mapping[info[1]],
-            partId: 'Configuration'
-          };
-
-          if ($scope.connectionStatus !== 'connected') {
-            updatePart(spec, undefined);
-            return;
-          }
-          if (info.length > 1 && !$scope.match.mapping[info[1]]) {
-            updatePart(spec, undefined);
-            return;
-          } 
-
-          $scope.spinner[key] = true;
-          $mwtnCompare.getPacParts(spec).then(function(success){
-            updatePart(spec, success);
-            $scope.spinner[key] = false;
-          }, function(error){
-            updatePart(spec, error);
-            $scope.spinner[key] = false;
-          });
-
-        }
-      });   
-    }, true);
-
-    
-  
-  }]);
-
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.directives.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.directives.js
deleted file mode 100644 (file)
index f5fadd7..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define([ 'app/mwtnCompare/mwtnCompare.module' ], function(mwtnCompareApp) {
-
-  mwtnCompareApp.register.directive('compare', function() {
-    return {
-      restrict : 'A',
-      scope: {
-        item: '=compare'
-      },
-      templateUrl : 'src/app/mwtnCompare/templates/compare.tpl.html'
-    };
-  });
-  
-});
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.module.js
deleted file mode 100644 (file)
index e3761f3..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 'app/routingConfig', 'app/core/core.services', 'common/config/env.module'], function(ng) {
-  var mwtnCompareApp = angular.module('app.mwtnCompare', ['app.core', 'ui.router.state','config', 'pascalprecht.translate']);
-
-  mwtnCompareApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnCompareApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/mwtnCompare/mwtnCompare.controller');
-    NavHelperProvider.addToMenu('mwtnCompare', {
-     "link" : "#/pnfCompare/",
-     "active" : "main.mwtnCompare",
-     "title" : "pnf Compare",
-     "icon" : "fa fa-tags",  // Add navigation icon css class here
-     "page" : {
-        "title" : "pnf Compare",
-        "description" : "mwtnCompare"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnCompare', {
-        url: 'pnfCompare/:nodeId',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/mwtnCompare/mwtnCompare.tpl.html',
-                controller: 'mwtnCompareCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnCompareApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.services.js
deleted file mode 100644 (file)
index 9a133e3..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCompare/mwtnCompare.module'],function(mwtnCompareApp) {
-
-  mwtnCompareApp.register.factory('$mwtnCompare', function($mwtnCommons, $mwtnDatabase) {
-
-    var service = {};
-    
-    service.getConnectionStatus = $mwtnCommons.getConnectionStatus;
-    service.getPacParts = $mwtnCommons.getPacParts;
-    service.getRequiredNetworkElements = $mwtnCommons.getRequiredNetworkElements;
-    service.getSchema = $mwtnDatabase.getSchema;
-    service.getType = $mwtnCommons.getType;
-    service.separator = $mwtnCommons.separator;
-    
-    
-    return service;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/mwtnCompare.tpl.html
deleted file mode 100644 (file)
index b3601ec..0000000
+++ /dev/null
@@ -1,333 +0,0 @@
-<ht-header help-link='sdnr/mwtnCompare/0.4.0/README.md'></ht-header>
-<div id="mwtnCompare">
-  <div class="owl container" style="width: 100%">
-    <div class="row" ng-show="neSelection.length === 0">
-      <p>
-        <span>{{ 'MWTN_NO_DEVICES_CONNECTED' | translate }}</span>
-        <span>Please check</span>
-        <a href="#/mwtnConnect" class="white">
-            <span>MWTN Connect</span>
-        </a>
-        <span>.</span>
-      </p>
-    </div>
-    <div class="row" ng-show="neSelection.length > 0">
-      <div class="col-md-2 text-right radio">
-        <span class="white">{{'Select planned NetworkElement' | translate}}</span>
-      </div>
-      <div class="col-md-4">
-        <div class="form-group">
-
-          <input list="networkElements" class="form-control" ng-model="selection">
-          <datalist id="networkElements">
-            <option ng-repeat="ne in neSelection" value="{{ne.id}}">{{ne.id}}</option>
-          </datalist>
-
-        </div>
-      </div>
-      <div class="col-md-2 text-right">
-        <span class="white" ng-class="{'connected':connectionStatus === 'connected'}">{{'MWTN_CONNECTIONSTATUS' | translate}}: </span><br/>
-        <span class="white" ng-class="{'match':match.numberOfLTPs}">{{'MWTN_NUMBEROFLTPS' | translate}}: </span><br/>
-        <span class="white" ng-class="{'match':match.radioSignalIds}">{{'MWTN_RADIOSIGNALIDS' | translate}}: </span>
-      </div>
-      <div class="col-md-2">
-        <a href="#/mwtnConnect">
-          <i ng-show="connectionStatus === 'connected'" class="fa fa-link" aria-hidden="true" ng-class="{'connected':connectionStatus === 'connected'}"></i>
-          <span class="white" ng-class="{'connected':connectionStatus === 'connected'}">{{connectionStatus}}</span>
-        </a><br/>
-        <i ng-class="{'match':match.numberOfLTPs}" ng-show="match.numberOfLTPs" class="fa fa-check-square-o" aria-hidden="true"></i>
-        <span class="white" ng-class="{'match':match.numberOfLTPs}">{{match.numberOfLTPsStatus}}</span><br/>
-        <i ng-class="{'match':match.radioSignalIds}" ng-show="match.radioSignalIds" class="fa fa-check-square-o" aria-hidden="true"></i>
-        <span class="white" ng-class="{'match':match.radioSignalIds}">{{match.radioSignalIdsStatus}}</span>
-      </div>
-      <div class="col-md-2 text-right">
-        <div class="form-group">
-          <button type="button" class="btn btn-default" ng-click="collapseAll()">{{'Collapse all' | translate}}</button>
-        </div>
-      </div>
-
-    </div>
-  </div>
-  <div class="owl container" style="width: 100%">
-    <hr/>
-    <div class="row">
-      <div class="col-md-12">
-        <uib-accordion close-others="oneATime">
-
-          <div uib-accordion-group class="panel-primary" is-open="status.ne">
-            <uib-accordion-heading>
-              <i class="pull-left fa" ng-class="{'fa-chevron-down': status.ne, 'fa-chevron-right': !status.ne}"></i>
-              <span>{{'MWTN_NETWORKELEMENT' | translate}} '{{requiredNetworkElement['core-model:network-element'].nameList[0].value}}'</span>
-              <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.ne"></i>
-            </uib-accordion-heading>
-<pre>{{requiredNetworkElement | json}}</pre>
-
-            <table class="table">
-              <tr>
-                <td>
-                  <table class="footable table table-hover">
-                    <thead>
-                      <tr>
-                        <th class="nowrap">{{ 'Label' | translate }}</th>
-                        <th class="nowrap">{{ 'Required value' | translate }}</th>
-                        <th class="nowrap">{{ 'Actual value' | translate }}</th>
-                        <th>{{ 'Unit' | translate }}</th>
-                        <th ng-show="mwps.showDescriptions">{{ 'Description' | translate }}</th>
-                      </tr>
-                    </thead>
-                    <tbody>
-                      <tr ng-repeat="compare in requiredNetworkElement['core-model:network-element'].compares" compare="compare"></tr>
-                    </tbody>
-                  </table>
-                </td>
-                <td>
-                  <h4 style="color: #444444;">
-                    <b>NetworkElement</b>
-                  </h4>
-                  <p>{{ schema['NetworkElement'].description }}</p>
-                </td>
-              </tr>
-            </table>
-          </div>
-
-          <div ng-repeat="mwps in requiredNetworkElement.MW_AirInterface_Pac" uib-accordion-group class="panel-primary" is-open="status['airinterface' + separator + mwps.layerProtocol]">
-            <uib-accordion-heading>
-              <i class="pull-left fa" ng-class="{'fa-chevron-down': status[['airinterface', mwps.layerProtocol].join(separator)], 'fa-chevron-right': !status['airinterface' + separator + airinterface.layerProtocol]}"></i>
-              <span>AirInterface MWPS '{{mwps.layerProtocol}}'</span>
-              <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner[['airinterface', mwps.layerProtocol].join(separator)]"></i>
-            </uib-accordion-heading>
-
-            <div class="text-right">
-              <a style="cursor: pointer;" ng-click="mwps.showDescriptions = !mwps.showDescriptions">
-              <span ng-show="mwps.showDescriptions" style="color: #444444">Hide </span>
-              <span ng-show="!mwps.showDescriptions" style="color: #444444">Show </span>
-              <span style="color: #444444"> descriptions</span>
-            </a>
-            </div>
-
-            <table class="table" ng-show="mwps.showDescriptions">
-              <tr>
-
-                <td style="width: 50%">
-                  <div ng-repeat="item in ['LogicalTerminationPoint', 'LayerProtocol', 'MW_AirInterface_Pac']">
-                    <h4 style="color: #444444;">
-                      <b>{{item}}</b>
-                    </h4>
-                    {{schema[item].description}}
-                  </div>
-                </td>
-                <td style="width: 50%">
-                  <h4 style="color: #444444;">
-                    <b>AirInterfaceConfiguration</b>
-                  </h4>
-                  {{schema['AirInterfaceConfiguration'].description}}
-                </td>
-
-              </tr>
-              </table>
-
-
-                <table class="footable table table-hover">
-                  <thead>
-                    <tr>
-                      <th>{{ 'Label' | translate }}</th>
-                      <th>{{ 'Required value' | translate }}</th>
-                      <th>{{ 'Actual value' | translate }}</th>
-                      <th>{{ 'Unit' | translate }}</th>
-                      <th ng-show="mwps.showDescriptions">{{ 'Description' | translate }}</th>
-                    </tr>
-                  </thead>
-                  <tbody>
-                    <tr ng-repeat="compare in mwps.compares" compare="compare"></tr>
-                  </tbody>
-                  <tfoot>
-                    <tr>
-                      <td colspan="99" ng-class="text-center">
-                        <button class="btn btn-default" title="Operation to planning" ng-click="message('operation2Planning', mwps)">
-                          <i class="icon-forward"></i>
-                        </button>
-                        <button class="btn btn-default" title="Planning to operation" ng-click="message('planning2Operation', mwps)">
-                          <i class="icon-backward"></i>
-                        </button>
-                      </td>
-                    </tr>
-                  </tfoot>
-                </table>
-
-          </div>
-
-          <div ng-repeat="mws in requiredNetworkElement.MW_PureEthernetStructure_Pac" uib-accordion-group class="panel-primary" heading=""
-            is-open="status['structure' + separator + mws.layerProtocol]">
-            <uib-accordion-heading>
-              <i class="pull-left fa" ng-class="{'fa-chevron-down': status[['structure', mws.layerProtocol].join(separator)], 'fa-chevron-right': !status['structure' + separator + structure.layerProtocol]}"></i>
-              <span>Structure MWS '{{mws.layerProtocol}}'</span>
-              <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner[['structure', mws.layerProtocol].join(separator)]"></i>
-            </uib-accordion-heading>
-
-            <div class="text-right">
-              <a style="cursor: pointer;" ng-click="mws.showDescriptions = !mws.showDescriptions">
-                <span ng-show="mws.showDescriptions" style="color: #444444">Hide </span>
-                <span ng-show="!mws.showDescriptions" style="color: #444444">Show </span>
-                <span style="color: #444444"> descriptions</span>
-              </a>
-            </div>
-
-            <table class="table" ng-show="mws.showDescriptions">
-              <tr>
-
-                <td style="width: 50%">
-                  <div ng-repeat="item in ['LogicalTerminationPoint', 'LayerProtocol', 'MW_PureEthernetStructure_Pac']">
-                    <h4 style="color: #444444;">
-                      <b>{{item}}</b>
-                    </h4>
-                    {{schema[item].description}}
-                  </div>
-                </td>
-                <td style="width: 50%">
-                  <h4 style="color: #444444;">
-                    <b>PureEthernetStructureConfiguration</b>
-                  </h4>
-                  {{schema['PureEthernetStructureConfiguration'].description}}
-                </td>
-
-              </tr>
-            </table>
-            <table class="footable table table-hover">
-              <thead>
-                <tr>
-                  <th>{{ 'Label' | translate }}</th>
-                  <th>{{ 'Required value' | translate }}</th>
-                  <th>{{ 'Actual value' | translate }}</th>
-                  <th>{{ 'Unit' | translate }}</th>
-                  <th ng-show="mws.showDescriptions">{{ 'Description' | translate }}</th>
-                </tr>
-              </thead>
-              <tbody>
-                <tr ng-repeat="compare in mws.compares" compare="compare"></tr>
-              </tbody>
-              <tfoot>
-                <tr>
-                  <td colspan="99" ng-class="text-center">
-                    <button class="btn btn-default" title="Operation to planning" ng-click="message('operation2Planning', mws)">
-                      <i class="icon-forward"></i>
-                    </button>
-                    <button class="btn btn-default" title="Planning to operation" ng-click="message('planning2Operation', mws)">
-                      <i class="icon-backward"></i>
-                    </button>
-                  </td>
-                </tr>
-              </tfoot>
-            </table>
-          </div>
-
-          <div ng-repeat="mwClient in requiredNetworkElement.MW_EthernetContainer_Pac" uib-accordion-group class="panel-primary" is-open="status['container' + separator + mwClient.layerProtocol]">
-            <uib-accordion-heading>
-              <i class="pull-left fa" ng-class="{'fa-chevron-down': status[['container', mwClient.layerProtocol].join(separator)], 'fa-chevron-right': !status['container' + separator + container.layerProtocol]}"></i>
-              <span>Container ETH '{{mwClient.layerProtocol}}'</span>
-              <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner[['container', mwClient.layerProtocol].join(separator)]"></i>
-            </uib-accordion-heading>
-
-            <div class="text-right">
-              <a style="cursor: pointer;" ng-click="mwClient.showDescriptions = !mwClient.showDescriptions">
-                <span ng-show="mwClient.showDescriptions" style="color: #444444">Hide </span>
-                <span ng-show="!mwClient.showDescriptions" style="color: #444444">Show </span>
-                <span style="color: #444444"> descriptions</span>
-              </a>
-            </div>
-            <table class="table" ng-show="mwClient.showDescriptions">
-              <tr>
-                <td style="width: 50%">
-                  <div ng-repeat="item in ['LogicalTerminationPoint', 'LayerProtocol', 'MW_EthernetContainer_Pac']">
-                    <h4 style="color: #444444;">
-                      <b>{{item}}</b>
-                    </h4>
-                    {{schema[item].description}}
-                  </div>
-                </td>
-                <td style="width: 50%">
-                  <div ng-repeat="item in ['EthernetContainerConfiguration', 'ethernetContainerConfiguration']">
-                    <h4 style="color: #444444;">
-                      <b>{{item}}</b>
-                    </h4>
-                    {{schema[item].description}}
-                  </div>
-                </td>
-              </tr>
-            </table>
-
-            <table class="footable table table-hover">
-              <thead>
-                <tr>
-                  <th>{{ 'Label' | translate }}</th>
-                  <th>{{ 'Required value' | translate }}</th>
-                  <th>{{ 'Actual value' | translate }}</th>
-                  <th>{{ 'Unit' | translate }}</th>
-                  <th ng-show="mwClient.showDescriptions">{{ 'Description' | translate }}</th>
-                </tr>
-              </thead>
-              </tbody>
-              <tr ng-repeat="compare in mwClient.compares" compare="compare"></tr>
-              </tbody>
-              <tfoot>
-                <tr>
-                  <td colspan="99" ng-class="text-center">
-                    <button class="btn btn-default" title="Operation to planning" ng-click="message('operation2Planning', mwClient)">
-                        <i class="icon-forward"></i>
-                      </button>
-                    <button class="btn btn-default" title="Planning to operation" ng-click="message('planning2Operation', mwClient)">
-                         <i class="icon-backward"></i>
-                      </button>
-                  </td>
-                </tr>
-              </tfoot>
-            </table>
-          </div>
-
-        </uib-accordion>
-      </div>
-    </div>
-  </div>
-
-  <div class="container" style="width: 100%">
-    <div class="row">
-      <uib-accordion close-others="oneAtATime">
-        <div uib-accordion-group panel-class="panel-odl" ng-repeat="ne in referenceValues.network.networkElement" is-open="ne.open">
-          <uib-accordion-heading>
-            <i class="pull-left" ng-class="{'icon-angle-down': ne.open, 'icon-angle-right': !ne.open}"></i> <span>Network element: </span>            <b>"{{ne.name}}"</b> </uib-accordion-heading>
-          <accordion close-others="oneAtATime">
-            <div uib-accordion-group panel-class="panel-odl" is-open="ne['core-model:network-element'][0].open">
-              <uib-accordion-heading>
-                <i class="pull-left" ng-class="{'icon-angle-down': ne['core-model:network-element'][0].open, 'icon-angle-right': !ne['core-model:network-element'][0].open}"></i>                <span>
- {{ 'Network element' | translate}}
- <span></uib-accordion-heading>
-1
-
-
-
-</div> <div uib-accordion-group panel-class="panel-odl" ng-repeat="mwps in ne.MW_AirInterface_Pac" is-open="mwps.open"> <uib-accordion-heading>
-<i class="pull-left" ng-class="{'icon-angle-down': mwps.open, 'icon-angle-right': !mwps.open}"></i> <span>
- LTP ({{mwps.layerProtocol}})
- <span></uib-accordion-heading>
-
-
-  </div>
-  <div uib-accordion-group panel-class="panel-odl" ng-repeat="mws in ne.MW_PureEthernetStructure_Pac" is-open="mws.open"> <uib-accordion-heading>
-  <i class="pull-left" ng-class="{'icon-angle-down': mws.open, 'icon-angle-right': !mws.open}"></i> <span>
-   LTP ({{mws.layerProtocol}})
-   <span></uib-accordion-heading>
-
-
-  </div>
-  <div uib-accordion-group panel-class="panel-odl" ng-repeat="mwClient in ne.MW_EthernetContainer_Pac" is-open="mwClient.open"> <uib-accordion-heading>
-  <i class="pull-left" ng-class="{'icon-angle-down': mwClient.open, 'icon-angle-right': !mwClient.open}"></i> <span>
-   LTP ({{mwClient.layerProtocol}})
-   <span></uib-accordion-heading>
-    </div>
-    </uib-accordion>
-    <div>
-</div>    
-</div>
-<hr />
-<div class="owl">
-       <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-            </div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/templates/compare.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/mwtnCompare-module/src/main/resources/mwtnCompare/templates/compare.tpl.html
deleted file mode 100644 (file)
index c5cbc50..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<td style="text-align: right;" ng-class="{ 'red': !item.match }">{{['mwtn', item.labelId].join('_').toUpperCase() | translate}}</td>
-<td><b ng-class="{ 'red': !item.match }" ng-bind-html="item.requiredValue"></b></td>
-
-<td>
-       <!-- [sko]: Bug reported by Amy: Of cause item.actualValue === false does not mean "missing"
-    <b ng-show="!item.actualValue">{{ item.missingActualValueLabelId | translate }}</b>  -->
-       <b ng-class="{ 'red': !item.match }" ng-bind-html="item.actualValue"></b>
-</td>
-<td>{{ item.unit }}</td>
-<td style="max-width: 300px;" ng-show="item.showDescriptions">
-           {{item.description}}
-</td>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnCompare/pom.xml
deleted file mode 100644 (file)
index 75cedab..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>mwtnCompare</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>mwtnCompare-module</module>
-  <module>mwtnCompare-bundle</module>
- </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-bundle/pom.xml
deleted file mode 100644 (file)
index 2b8c982..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnConnect</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnConnect-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
-
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnConnect-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnConnect-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 62345db..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnConnect"/>
-        <property name="url" value="/src/app/mwtnConnect"/>
-        <property name="directory" value="/mwtnConnect"/>
-        <property name="requireJs" value="app/mwtnConnect/mwtnConnect.module"/>
-        <property name="angularJs" value="app.mwtnConnect"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnConnect/mwtnConnect-custom.css</value>
-                <value>src/app/mwtnCommons/mwtnCommons-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/pom.xml
deleted file mode 100644 (file)
index c47134a..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnConnect</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnConnect-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/images/mwtnConnect.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/images/mwtnConnect.png
deleted file mode 100755 (executable)
index 7417076..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/images/mwtnConnect.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/images/sdncConnect.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/images/sdncConnect.png
deleted file mode 100755 (executable)
index 4542dc1..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/images/sdncConnect.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect-custom.css
deleted file mode 100644 (file)
index 1fb5c59..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/**
- *  Add your application related css here
- *  width: 1260px;
- */
-
-.modal-dialog {
-    width: 690px;
-    margin: 30px auto;
-}
-
-.modal-dialog .modal-lg {
-    min-width: 690px;
-    width: 690px;
-}
-
-.requiredNesGrid span {
-  color: #393939;
-}
-.mwtn-form-control {
-         font-family:'Courier New';
-    /* display: block; */
-    width: 600px;
-    height: 34px;
-    padding: 6px 12px;
-    font-size: 14px;
-    line-height: 1.428571429;
-    color: #000000;
-    vertical-align: middle;
-    background-color: #eeeeee;
-    background-image: none;
-    border: 1px solid #d5d5d5;
-    border-radius: 4px;
-    -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-    box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);
-    -webkit-transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-    transition: border-color ease-in-out .15s, box-shadow ease-in-out .15s;
-    -webkit-transition: all border-color ease-in-out .15s, box-shadow ease-in-out .15s linear;
-    -moz-transition: all border-color ease-in-out .15s, box-shadow ease-in-out .15s linear;
-    -ms-transition: all border-color ease-in-out .15s, box-shadow ease-in-out .15s linear;
-    -o-transition: all border-color ease-in-out .15s, box-shadow ease-in-out .15s linear;
-    transition: all border-color ease-in-out .15s, box-shadow ease-in-out .15s linear;
-}
-
-
-.green {
-  color: darkgreen;
-}
-.green span {
-  color: darkgreen;
-}
-
-h3.modal-title {
-  color: #393939;
-}
-
-.modal-body span {
-  color: #393939;
-}
-
-.modal-body h3 {
-  color: #393939;
-}
-
-.modal-body .green span {
-  color: darkgreen;
-}
-.requiredNesGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.unknownNesGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.unknownNesGrid .ui-grid-cell-contents span {
-  color: #393939;
-}
-
-.yangCapabilitiesGrid {
-  height: 300px;
-  background-color: white;
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.controller.js
deleted file mode 100644 (file)
index c72795c..0000000
+++ /dev/null
@@ -1,1143 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnConnect/mwtnConnect.module',
-        'app/mwtnConnect/mwtnConnect.services',
-        'app/mwtnCommons/mwtnCommons.module'], 
-        function(mwtnConnectApp) {
-
-  mwtnConnectApp.register.controller('mwtnConnectCtrl', ['$scope', '$rootScope', '$timeout', '$window', '$q', 'uiGridConstants', '$uibModal', '$mwtnConnect', '$mwtnLog', 'NetConfServer',  
-                                                         function($scope, $rootScope, $timeout, $window, $q, uiGridConstants, $uibModal, $mwtnConnect, $mwtnLog, NetConfServer) {
-
-    var COMPONENT = 'mwtnConnectCtrl';
-    $mwtnLog.info({component: COMPONENT, message: 'mwtnConnectCtrl started!'});
-
-    $rootScope.section_logo = 'src/app/mwtnConnect/images/sdncConnect.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-    $scope.highlightFilteredHeader = $mwtnConnect.highlightFilteredHeader;
-    
-    $scope.oneAtATime = true;
-    $scope.status = {requiredNes: true};
-    $scope.spinner = {};
-    $scope.spinner.TEST = true;
-    
-    var requiredNesConnectionStatusCellTemplate = [
-      '<div class="ui-grid-cell-contents" ng-class="{ \'green\': grid.getCellValue(row, col) === \'connected\'}">',
-      '  <i ng-class="{\'fa fa-link\': grid.getCellValue(row, col) === \'connected\', \'fa fa-chain-broken\': grid.getCellValue(row, col) !== \'connected\'}" aria-hidden="true"></i>',
-      '  <span>{{grid.getCellValue(row, col)}}</span>',
-      '</div>'].join('');
-    
-    var nameCellTemplate = [
-      '<div class="ui-grid-cell-contents">',
-      '  <a href="{{row.entity.webUri}}" target="_blank" title="Access NE web application" ng-show="row.entity.webUri">',
-      '    <i class="fa fa-external-link" aria-hidden="true"></i>',
-      '    <span>{{grid.getCellValue(row, col)}}</span>',
-      '  </a>',
-      '  <span ng-show="!row.entity.webUri">{{grid.getCellValue(row, col)}}</span>',
-      '</div>'].join('');
-
-   //    '<button class="btn btn-primary" ng-click="grid.appScope.edit(row.entity)"><i class="fa fa-pencil"></i></button>',
-   //    '<button class="btn btn-default" ng-click="grid.appScope.delete(row.entity)"><i class="fa fa-times mwtnError"></i></button>',
-    var requiredNesActionCellTemplate = [
-      '<span>&nbsp;&nbsp;</span>',
-      '<div class="btn-group">',
-      '  <button class="btn btn-primary" ng-click="grid.appScope.connect(row.entity)" title="Mount"><i class="fa fa-link" aria-hidden="true"></i></button>',
-      '  <button class="btn btn-warning" ng-click="grid.appScope.disconnect(row.entity)" title="Unmount"><i class="fa fa-chain-broken" aria-hidden="true"></i></button>',
-      '  <button class="btn btn-success" ng-click="grid.appScope.showDetails(row.entity)" title="Information"><i class="fa fa-info-circle" aria-hidden="true"></i></button>',
-      '<div class="btn-group">',
-      '<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>',
-      '</div>',
-      '  <a class="btn btn-primary" ng-href="#/pnfFault/{{row.entity.name}}" title="Fault Management" target="fm">F</a>',
-      '  <a class="btn btn-primary" ng-href="#/pnfBrowser/{{row.entity.name}}" title="Configuration Management" target="cm">C</a>',
-      '  <a class="btn btn-default" title="Accounting Management" target="am">A</a>',
-      '  <a class="btn btn-primary" ng-href="#/pnfPerformanceHistory/{{row.entity.name}}" title="Performance Management" target="pm">P</a>',
-      '  <a class="btn btn-default" title="Security Management" target="sm">S</a>',      
-      '</div>',
-      '<span>&nbsp;&nbsp;&nbsp;&nbsp;</span>',
-      '<div class="btn-group">',
-      '  <a class="btn btn-primary" ng-href="#/pnfInventory/{{row.entity.name}}" title="Inventory Management" target="im">I</a>',
-      '</div>',
-      '<span>&nbsp;</span>'].join('');
-
-
-    $scope.requiredNesGridOptions = JSON.parse(JSON.stringify($mwtnConnect.gridOptions));
-    $scope.requiredNesGridOptions.rowHeight  = 44;
-    $scope.requiredNesGridOptions.columnDefs = [
-       { field: 'connectionStatus', type: 'string', displayName: 'Connection status',  headerCellClass: $scope.highlightFilteredHeader, width : 160, cellTemplate: requiredNesConnectionStatusCellTemplate },
-      //  { field: 'id', type: 'number', displayName: 'Id',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true , sort: {
-      //    direction: uiGridConstants.ASC,
-      //    ignoreSort: false,
-      //    priority: 0
-      //   }},
-       { field: 'name', type: 'string', displayName: 'Name',  headerCellClass: $scope.highlightFilteredHeader, width : 230, cellTemplate: nameCellTemplate, pinnedLeft : true , sort: {
-         direction: uiGridConstants.ASC,
-         ignoreSort: false,
-         priority: 0
-        }},
-       { field: 'ipaddress',  type: 'number', displayName: 'IP address',  headerCellClass: $scope.highlightFilteredHeader, width : 140, cellClass: 'number' },
-       { field: 'port',  type: 'number', displayName: 'Port',  headerCellClass: $scope.highlightFilteredHeader, width : 80, cellClass: 'number' },
-       { field: 'client',  type: 'number', displayName: 'Client',  headerCellClass: $scope.highlightFilteredHeader, width : 140 },
-       { field: 'username', type: 'string', displayName: 'User name',  headerCellClass: $scope.highlightFilteredHeader, width : 100, visible: false },
-       { field: 'password', type: 'string', displayName: 'Password',  headerCellClass: $scope.highlightFilteredHeader, width : 100, visible: false },
-       { field: 'radioSignalIds', type: 'string', displayName: 'Radio signal ids',  headerCellClass: $scope.highlightFilteredHeader, width : 150, visible: false},
-       {
-         name : 'actions',
-         enableSorting : false,
-         enableFiltering: false,
-         cellTemplate: requiredNesActionCellTemplate,
-         width : 400,
-         pinnedRight : true
-       }
-     ];
-    
-    var unknownNesActionCellTemplate = [
-     '<a class="vCenter" ng-class="{attention: grid.appScope.hover, hidden: onfAirInterfaceRevision}" >',
-     '<button class="btn btn-default" ng-show="row.entity[\'node-id\'] !== \'controller-config\'" ng-click="grid.appScope.unmount(row.entity)">Unmount</button>',
-     '<button class="btn btn-primary" ng-show="row.entity[\'node-id\'] !== \'controller-config\' && row.entity.onfCoreModelRevision" ng-click="grid.appScope.addToRequiredNetworkElements(row.entity)">',
-     '<i class="pull-left fa fa-spinner fa-pulse" ng-show="row.entity.spinner"></i>',
-     '<span class="white">{{ "MWTN_MAKE_KNOWN" | translate }}<span>',
-     '</button>',
-     '<button class="btn btn-default" ng-click="grid.appScope.showDetails(row.entity, false)"><i class="fa fa-info-circle" aria-hidden="true"></i></button>',
-     '</a>' ].join('<span>&nbsp;</span>');
-    $scope.unknownNesGridOptions = JSON.parse(JSON.stringify($mwtnConnect.gridOptions));
-    $scope.unknownNesGridOptions.rowHeight  = 44;
-    $scope.unknownNesGridOptions.columnDefs = [
-      { field: 'node-id', type: 'string', displayName: 'Name',  headerCellClass: $scope.highlightFilteredHeader, width : 200, sort: {
-        direction: uiGridConstants.ASC,
-        priority: 0
-       }},
-      { field: 'netconf-node-topology:host',  type: 'number', displayName: 'IP address',  headerCellClass: $scope.highlightFilteredHeader, width : 150, cellClass: 'number' },
-      { field: 'netconf-node-topology:port',  type: 'number', displayName: 'NetConf port',  headerCellClass: $scope.highlightFilteredHeader, width : 120, cellClass: 'number' },
-      { field: 'onfCoreModelRevision', type: 'string', displayName: 'CoreModel revision',  headerCellClass: $scope.highlightFilteredHeader, width : 160,  cellClass: 'number' },
-      { field: 'onfAirInterfaceRevision', type: 'string', displayName: 'AirInterface revision',  headerCellClass: $scope.highlightFilteredHeader, width : 160,  cellClass: 'number' },
-      { field: 'netconf-node-topology:connection-status', type: 'string', displayName: 'Connection status',  headerCellClass: $scope.highlightFilteredHeader, width : 160 },
-      {
-        name : 'actions',
-        enableSorting : false,
-        enableFiltering: false,
-        cellTemplate: unknownNesActionCellTemplate,
-        width : 330,
-        pinnedRight : true
-      }
-    ];
-    
-    /**
-     * Request all defined (required) network elements from database and
-     * update the corresponding table in the ui.
-     */
-    var getRequiredNetworkElements = function() {
-      $mwtnConnect.getRequiredNetworkElements().then(function(networkElements) {
-        $scope.requiredNesGridOptions.data = networkElements;
-        getActualNetworkElements();
-      }, function(error){
-        $scope.requiredNesGridOptions.data = [];
-      });
-    };
-    getRequiredNetworkElements();
-    
-    /**
-     * A function, which returns a boolean, which indicates, whether a network
-     * element is required or not.
-     * @param {string} neId - A mount point identifier.
-     * @return {boolean} True, if network element is required in the network, otherwise false.
-     */
-    var isRequired = function(neId) {
-      if ($scope.requiredNesGridOptions.data) {
-        var result = false;
-        $scope.requiredNesGridOptions.data.map(function(rne) {
-          if (rne.name === neId) result = true;
-        });
-        return result;
-      } else {
-        return false;
-      }
-    };
-
-    var setConnectionStatus = function(neId, connectionStatus) {
-      if ($scope.requiredNesGridOptions.data) {
-        $scope.requiredNesGridOptions.data.map(function(rne) {
-          if (rne.name === neId) rne.connectionStatus = connectionStatus;
-        });
-      }
-    };
-
-    var setValues = function(ane) {
-      if ($scope.requiredNesGridOptions.data) {
-
-        var getExtension = function(extensions, name) {
-          if (extensions === undefined) {
-            return undefined;
-          }
-          var result = extensions.filter(function(ex){
-            return ex['value-name'] === name;
-          }).map(function(ex){
-            return ex.value;
-          });
-          if (result.length > 0) {
-            result = result[0];
-          } else {
-            result = undefined;
-          }
-          return result;
-        }; 
-
-        $scope.requiredNesGridOptions.data.map(function(rne) {
-          // TODO use filter! and avoid push?
-          if (rne.name === ane['node-id']) {
-            rne.connectionStatus = ane['netconf-node-topology:connection-status'];
-            rne.ipaddress = ane['netconf-node-topology:host'];
-            rne.port = ane['netconf-node-topology:port'];
-            rne.client = ane.client;
-            
-            rne.onfCapabilities = ane.onfCapabilities;
-
-            var extensions = ['webUri', 'cliAddress', 'appCommand'];
-            extensions.map(function(extension){
-              rne[extension] = undefined;
-            });
-            if (ane.onfCoreModelRevision) {
-              $mwtnConnect.getActualNetworkElement(ane['node-id'], ane.onfCoreModelRevision).then(function(success){
-                success = $mwtnConnect.yangifyObject(success);
-                extensions.map(function(extension){
-                  rne[extension] = getExtension(success['network-element'].extension, extension);
-                });
-              }, function(error){
-                // ignore
-              });
-            }
-          }
-        });
-      }
-    };
-
-    var getActualNetworkElements = function() {
-      // aneHash = [];
-      if ($scope.requiredNesGridOptions.data) {
-        $scope.requiredNesGridOptions.data.map(function(ne) {
-          // ne.connectionStatus = 'disconnected';
-        });
-      }
-      $mwtnConnect.getMountPoints().then(function(mountpoints) {
-        $scope.unknownNesGridOptions.data = [];
-        mountpoints.map(function(mountpoint) {
-            if (isRequired(mountpoint['node-id'])) {
-              // setConnectionStatus(ne['node-id'], ne['netconf-node-topology:connection-status']);
-              setValues(mountpoint);
-            } else {
-              // console.log('mountpoint', JSON.stringify(mountpoint));
-              $scope.unknownNesGridOptions.data.push(mountpoint);
-            }
-        });
-      }, function(error){
-        $mwtnLog.info({component: COMPONENT, message: JSON.stringify(error)});
-      });
-    }; 
-    
-    $scope.netconfServer = {};
-
-    /**
-     * A function which inquires data from a netconf server and stores it in a database.
-     * @param {{'node-id': string, ipAddress: string, port: number, username: string, password: string}} netconfServer - A netConf server object with all connectivity parameters.
-     */
-    $scope.addToRequiredNetworkElements = function(netconfServer) {
-
-      $scope.netconfServer = netconfServer;
-      var neId = netconfServer['node-id'];
-
-      var index = $scope.unknownNesGridOptions.data.map(function(item) { 
-        return item['node-id']; 
-      }).indexOf(netconfServer['node-id']);
-
-      if (index !== -1 ) {
-        $mwtnConnect.getSingleDocument('mwtn', 'required-networkelement', neId).then(function(doc){
-          // Network element alrady exists in database
-          doc.required = true;
-          $scope.unknownNesGridOptions.data[index].spinner = true;
-          // add to aai
-          // $onapAai.createPnf(neId, doc).then(function(success){
-          //   // do nothing
-          // }, function(error) {
-          //   // do nothing
-          // });
-          // add to es
-          $mwtnConnect.createSingleDocument('mwtn', 'required-networkelement', neId, doc).then(function(success){
-            $timeout(function() {
-              $scope.status.requiredNes =  true;
-              $scope.unknownNesGridOptions.data[index].spinner = false;
-            }, 1000); 
-          }, function(error) {
-            $timeout(function() {
-              $scope.status.requiredNes =  true;
-              $scope.unknownNesGridOptions.data[index].spinner = false;
-            }, 1000); 
-            console.log(JSON.stringify(error));
-          });
-        }, function(error) {
-          // Network element does not exist in database, data inqured from real network element
-          var modalInstance = $uibModal.open({
-            animation: true,
-            ariaLabelledBy: 'modal-title',
-            ariaDescribedBy: 'modal-body',
-            templateUrl: 'src/app/mwtnConnect/templates/addToRequired.tpl.html',
-            controller: 'AddToRequiredMessageCtrl',
-            size: 'lg',
-            resolve: {
-              netconfServer: function () {
-                return $scope.netconfServer;
-              }
-            }
-          });
-
-          modalInstance.result.then(function (netconfServer) {
-            $scope.unknownNesGridOptions.data[index].spinner = true;
-            $mwtnConnect.addRequiredNetworkElement(netconfServer).then(function(success){
-              $mwtnLog.info({component: COMPONENT, message: 'Adding to database: ' + netconfServer['node-id']});
-
-              // $onapAai.createPnf(netconfServer['node-id'], success.config.data).then(function(success){
-              //   // do nothing
-              // }, function(error) {
-              //   // do nothing
-              // });
-
-              $timeout(function() {
-                $scope.status.requiredNes =  true;
-                $scope.unknownNesGridOptions.data[index].spinner = false;
-              }, 1000); 
-            }, function(error){
-              $scope.unknownNesGridOptions.data[index].spinner = false;
-              $mwtnLog.error({component: COMPONENT, message: JSON.stringify(error)});
-            });
-          }, function () {
-            $mwtnLog.info({component: COMPONENT, message: 'Creation of new planned NetworkElement dismissed!'});
-          });
-        });
-      }
-    };
-    
-    $scope.newMountingPoint = {
-        name: 'new-netconf-server',
-        ipaddress: '127.0.0.1',
-        port: 830,
-        username: 'admin',
-        password: 'admin'
-    };
-    
-    $scope.mount = function() {
-      $scope.mountError = undefined;
-      $scope.mountSuccess = undefined;
-      $scope.processing = true;
-      $mwtnConnect.mount($scope.newMountingPoint).then(function(success){
-        $scope.processing = false;
-        $scope.mountSuccess = ['NETCONF server', $scope.newMountingPoint.name, 'successfully mounted.'].join(' ');
-      }, function(error){
-        $scope.processing = false;
-        $scope.mountError = ['NETCONF server', $scope.newMountingPoint.name, 'could not be mounted.'].join(' ');
-      });
-    };
-    
-    $scope.connect = function(ne) {
-      ne.connectionStatus = 'connecting...';
-      $mwtnConnect.mount(ne).then(function(success){
-        // ne.connectionStatus = 'connected';
-      }, function(error){
-        // ne.connectionStatus = 'connected';
-      });
-    };
-    
-    $scope.disconnect = function(ne) {
-      ne.connectionStatus = 'connecting...';
-      $mwtnConnect.unmount(ne.name).then(function(success){
-        ne.connectionStatus = 'disconnected';
-      }, function(error){
-        ne.connectionStatus = 'unknown';
-      });
-    };
-        
-    $scope.showDetails = function(ne, required) {
-      $scope.currentNetworkElement = ne;
-      $scope.currentNetworkElement.required = required;
-      if (required !== false) {
-        $scope.currentNetworkElement.required = true;
-      }
-      var modalInstance = $uibModal.open({
-        animation: true,
-        ariaLabelledBy: 'modal-title',
-        ariaDescribedBy: 'modal-body',
-        templateUrl: 'src/app/mwtnConnect/templates/mountPointDetails.tpl.html',
-        controller: 'MountPointDetailsCtrl',
-        size: 'lg',
-        resolve: {
-          currentNetworkElement: function () {
-            return $scope.currentNetworkElement;
-          }
-        }
-      });
-
-      modalInstance.result.then(function(success) {
-        if (success.hide || success.delete) {
-          var nodeId = success.hide || success.delete;
-          $scope.requiredNesGridOptions.data.map(function(item, index, array){
-            if (item.name === nodeId) {
-              array.splice(index, 1);
-            }
-          });
-        }
-        $mwtnLog.info({component: COMPONENT, message: 'Mointpoint details closed'});
-      }, function (error) {
-        $mwtnLog.info({component: COMPONENT, message: 'Mointpoint details dismissed!'});
-      });
-    };
-                  
-    var removeFromNodeList = function(nodeId) {
-      var index = $scope.unknownNesGridOptions.data.length;
-      while (index--) {
-        if ($scope.unknownNesGridOptions.data[index]['node-id'] === nodeId) {
-          $scope.unknownNesGridOptions.data.splice(index, 1);
-        } 
-      }
-    };
-    
-    $scope.unmount = function(netConfServer) {
-      netConfServer['netconf-node-topology:connection-status'] = 'disconnecting...';
-      $mwtnConnect.unmount(netConfServer['node-id']).then(function(response) {
-        $mwtnLog.info({component: COMPONENT, message: 'Mounting point deleted: ' + netConfServer['node-id'] });
-        removeFromNodeList(netConfServer['node-id']);
-      }, function(error){
-        $mwtnLog.info({component: COMPONENT, message: 'Unmounting of '+netConfServer['node-id']+' failed!'});
-        removeFromNodeList(netConfServer['node-id']);
-      });
-    };
-    
-    $scope.edit = function(row) {
-      console.info(JSON.stringify(row));
-    };
-    $scope.delete = function(row) {
-      console.info(JSON.stringify(row));
-    };
-    
-    // Connection status log
-    $scope.gridOptionsConnectionStatusLog = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        useExternalPagination: true,
-        useExternalSorting: true,
-        enablePaginationControls: false,
-        enableFiltering: true,
-        useExternalFiltering: true,
-        maxCount: 0,
-        columnDefs : [
-           // { field: 'id', type: 'number', displayName: 'No.',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true },
-           { field: 'timestamp',  type: 'string', displayName: 'Timestamp',  headerCellClass: $scope.highlightFilteredHeader, width : 200, sort: {
-           direction: uiGridConstants.DESC,
-           priority: 1
-           } },
-           { field: 'nodeName',  type: 'string', displayName: 'Node name',  headerCellClass: $scope.highlightFilteredHeader, width: 200 },
-           { field: 'connectionStatus',  type: 'string', displayName: 'Connection status',  headerCellClass: $scope.highlightFilteredHeader, width: 500, cellTemplate: requiredNesConnectionStatusCellTemplate }
-        ],
-        data: 'data',
-        onRegisterApi: function(gridApi) {
-          $scope.gridApi = gridApi;
-          $scope.gridApi.core.on.filterChanged( $scope, $scope.filter);
-          $scope.gridApi.core.on.sortChanged( $scope, $scope.sortChanged );
-          $scope.sortChanged($scope.gridApi.grid, [ $scope.gridOptionsConnectionStatusLog.columnDefs[1] ] );
-
-          $scope.gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-            $scope.paginationOptions.pageNumber = newPage;
-            $scope.paginationOptions.pageSize = pageSize;
-            getPage();
-          });
-        }
-    };
-
-    // data visible in connection status log
-    $scope.data = [];
-
-    //stateobject
-    $scope.state = {
-      filter: false,
-      sort: false,
-      lastfilter: null,
-      lastSort: null
-    };
-
-   //filter 
-   $scope.filter = function() {
-     var grid = this.grid;
-     var columns=[];
-
-     //get all columns where data was typed in
-     angular.forEach(grid.columns, function(value, key) {
-       if(value.filters[0].term) {
-
-         var col = findColumn(value.displayName);
-         var val = value.filters[0].term;
-         
-         switch (col) {
-         case 'event.timeStamp':
-           //convert timestamp to db format
-           val = $mwtnConnect.TimeStampToONFFormat(value.filters[0].term);
-           break;
-         case 'event.type':
-           if ('connected'.startsWith(value.filters[0].term.toLowerCase())) {
-             val = 'ObjectCreationNotificationXml'.toLowerCase();
-           }
-           if ('disconnected'.startsWith(value.filters[0].term.toLowerCase())) {
-             val = 'ObjectDeletionNotificationXml'.toLowerCase();
-           }
-           break;
-         }       
-         columns.push({ column: col, value: val }); //create column object
-       }
-    });
-
-    if (columns.length ===0 ) { //all filter data cleared away
-      $scope.state.filter = false;
-      $scope.state.lastfilter = null;
-
-      //get unfiltered data
-      $mwtnConnect.getData(($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize,
-                           $scope.paginationOptions.pageSize,
-                           $scope.state.lastSort,
-                           $scope.state.lastfilter).then(function(response) {
-        if (response.data.hits.hits) { 
-          processResponseRecreateList(response);
-        }
-      });
-    } else {
-      //base filter string
-      var filter = {"query": {"bool":{"must":[]}}};
-      //create filter objects
-      var prefixs = columns.map(function(obj){
-        var prefixObj={};
-        prefixObj[obj.column] = obj.value;//add  like: {column: "fault.counter", value: "1"} => {"fault.counter":1}
-        return {prefix:prefixObj}; // => {"prefix":{...}}
-      });
-      prefixs.push({"match":{"event.nodeName":"SDN-Controller"}});
-      
-      //add objects to must property
-      filter.query.bool.must = prefixs;
-      //save filter
-      $scope.state.lastfilter=filter;
-      $scope.state.filter=true;
-     
-      //send data to sdnevents/eventlog/_search
-      $mwtnConnect.getData(($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize,
-                            $scope.paginationOptions.pageSize,
-                            $scope.state.lastSort,
-                            $scope.state.lastfilter).then(function(response) {
-        if (response.data.hits.total>0) { //only, when hits exist
-          processResponseRecreateList(response);
-          $scope.gridOptionsConnectionStatusLog.totalItems = response.data.hits.total;
-        } else {
-          //clear data from list
-          $scope.data=[];
-          $scope.gridOptionsConnectionStatusLog.totalItems = 0;
-          $scope.gridOptionsConnectionStatusLog.maxCount = 0;
-          $scope.state.filter=false;
-          $scope.state.lastfilter=null;
-        }
-      });
-    }
-   };
-  
-    //sort
-    $scope.sortChanged=function(grid, sortColumns){    // sortColumns is an array containing just the column sorted in the grid
-      if (sortColumns.length > 0) {
-        if (sortColumns[0].sort) {
-          var name = sortColumns[0].displayName; // the name of the column sorted
-          var direction = sortColumns[0].sort.direction; // the direction of the column sorted: "desc" or "asc"
-          sort(direction, findColumn(name) );
-        }
-      } else {
-         $scope.state.sort = false;
-         $scope.state.lastSort=null;
-         //get unsorted data
-         $mwtnConnect.getData( ($scope.paginationOptions.pageNumber-1) * $scope.paginationOptions.pageSize,
-                               $scope.paginationOptions.pageSize,
-                               $scope.state.lastSort,
-                               $scope.state.lastfilter).then(function(response) {
-           processResponseRecreateList(response);
-         }, function(error) {
-           processResponseRecreateList([]);
-         });
-      }
-    };
-
-    var processResponseRecreateList = function(response) {
-      if (!response.data || !response.data.hits) {
-        $scope.data = [];
-        $scope.gridOptionsConnectionStatusLog.totalItems = 0; // needed by ui-grid to calculate page number, always update!
-        $scope.gridOptionsConnectionStatusLog.maxCount = 0;
-        return;
-      }
-      
-      if($scope.gridOptionsConnectionStatusLog.maxCount < response.data.hits.total){
-        $scope.gridOptionsConnectionStatusLog.maxCount = response.data.hits.total; //only if total is higher (can be lower due to eg filtering)
-      }
-      var list = response.data.hits.hits.map(function(entry) {
-        
-        var status = 'unknown';
-        if (entry._source.event.type === 'ObjectCreationNotificationXml' ) {
-          status = 'connected';
-        } else if (entry._source.event.type === 'ObjectDeletionNotificationXml' ) {
-          status = 'disconnected';
-        }
-        return {
-          id: entry._id,
-          timestamp: $mwtnConnect.formatTimeStamp(entry._source.event.timeStamp),
-          nodeName: entry._source.event.objectId,
-          connectionStatus: status
-        };
-      });
-      $scope.data=list;
-      $scope.gridOptionsConnectionStatusLog.totalItems = response.data.hits.total; // needed by ui-grid to calculate page number, always update!
-    };
-
-    $scope.paginationOptions = {
-      pageNumber: 1,
-      pageSize: 25,
-      sort: null
-    };
-
-    var getPage = function() {
-       //from, how many, sort, filter
-       $mwtnConnect.getData( ($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize, 
-                 $scope.paginationOptions.pageSize,
-                 $scope.state.lastSort,
-                 $scope.state.lastfilter).then(function (success) {
-         $scope.gridOptionsConnectionStatusLog.totalItems = success.data.hits.total;
-         processResponseRecreateList(success);
-       }, function(error) {
-         $scope.gridOptionsConnectionStatusLog.totalItems = success.data.hits.total;
-         processResponseRecreateList([]);
-         $mwtnLog.info({component: COMPONENT, message: JSON.stringify(error)});
-       });
-     };
-     
-     var processResponseAddToList = function(response) {
-       if (response.data.hits.hits) {
-         if($scope.gridOptionsConnectionStatusLog.maxCount < response.data.hits.total) {
-           $scope.gridOptionsConnectionStatusLog.maxCount = response.data.hits.total; //only if total is higher (can be lower due to eg filtering)
-         }
-         response.data.hits.hits.map(function(entry) {
-           var status = 'disconnected';
-           if (entry._source.event.type === 'ObjectCreationNotificationXml' ) {
-             status = 'connected';
-           }
-           var log = {
-             id: entry._id,
-             timestamp: $mwtnConnect.formatTimeStamp(entry._source.event.timeStamp),
-             nodeName: entry._source.event.objectId,
-             connectionStatus: status
-           };
-           $scope.data.push(log);
-         });
-       }
-       $scope.gridOptionsConnectionStatusLog.totalItems = response.data.hits.total; // needed by ui-grid to calculate page number, always update!
-    };
-
-    var sort = function (direction, columnName) {
-
-      var sortObj={};
-      var sort = [ sortObj ];
-      switch (direction) {
-        case uiGridConstants.ASC:
-           //create sort object
-           sortObj[columnName]={order : 'asc'};
-           sort = [ sortObj ];
-           //save last sort
-           $scope.state.lastSort=sort;
-
-           $mwtnConnect.getData(($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize,
-                                 $scope.paginationOptions.pageSize,
-                                 $scope.state.lastSort,
-                                 $scope.state.lastfilter).then(function(response) {
-              if (response.data.hits.hits) {
-                  processResponseRecreateList(response);
-                  $scope.state.sort=true;
-              }
-           });
-           break;
-
-        case uiGridConstants.DESC:
-          sortObj[columnName]={order : 'desc'};
-          sort = [ sortObj];
-          $scope.state.lastSort=sort;
-
-          $mwtnConnect.getData(($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize,$scope.paginationOptions.pageSize,$scope.state.lastSort,$scope.state.lastfilter).then(function(response) {
-            if (response.data.hits.hits) {
-              processResponseRecreateList(response);
-              $scope.state.sort=true;
-            }
-          });
-          break;
-
-        case undefined:
-            
-         $scope.state.sort=false;
-         $scope.state.lastSort=null;
-
-         $mwtnConnect.getData(($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize,
-                               $scope.paginationOptions.pageSize,
-                               $scope.state.lastSort,
-                               $scope.state.lastfilter).then(function(response) {
-              processResponseRecreateList(response);
-         });
-         break;
-      }
-    };
-
-    var findColumn= function(name) {
-      if(name === 'Timestamp'){ return 'event.timeStamp'; }
-      else if(name === 'Node name'){ return 'event.objectId'; }
-      else if(name === 'Connection status'){ return 'event.type'; }
-    };
-
-    $scope.paginationStatusMessage = function() {
-      
-      var startnum=($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize+1;
-      var pagenednum=($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize+1+$scope.data.length;
-      if(pagenednum>$scope.gridOptionsConnectionStatusLog.totalItems) pagenednum=pagenednum-1; //reduce by initial added 1
-      
-      if($scope.state.filter){
-        var filterTpl = 'Showing {0} to {1} of {2} items (filtered from {3} total items)';
-        return filterTpl.format(startnum, pagenednum, $scope.gridOptionsConnectionStatusLog.totalItems, $scope.gridOptionsConnectionStatusLog.maxCount);
-
-      } else {
-        var defaultTpl = 'Showing {0} to {1} of {2} total items';
-        return defaultTpl.format( startnum, pagenednum, $scope.gridOptionsConnectionStatusLog.maxCount);
-      }
-    };
-
-    $scope.refreshLog = function() {
-       
-      
-       var from =  ($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize;
-       var size = $scope.paginationOptions.pageSize;
-       $scope.processing = true;
-       $scope.spinner.connectionStatusLog = true;
-       $mwtnConnect.getData(from, size, $scope.state.lastSort, $scope.state.lastfilter).then(function(logEntries){
-         $scope.processing = false;
-         $scope.spinner.connectionStatusLog = false;
-         processResponseRecreateList(logEntries);
-       }, function(error){
-         $scope.processing = false;
-         $scope.spinner.connectionStatusLog = false;
-         console.error(JSON.stringify(error));
-       });      
-     };
-    
-    // browser events
-    $scope.status = {requiredNes : true};
-    $scope.separator = $mwtnConnect.separator; //'&nbsp;'
-    $scope.$watch('status', function(status, oldValue) {
-      Object.keys(status).map(function(key){
-        if (status[key] && status[key] !== oldValue[key]) {
-          switch (key) {
-          case 'requiredNes':
-            getRequiredNetworkElements();
-            break;
-          case 'unkownNes':
-            getActualNetworkElements();
-            break;
-          case 'mount':
-            $scope.mountSuccess = undefined;
-            $scope.mountError = undefined;
-            break;
-          case 'connectionStatusLog':
-            $window.dispatchEvent(new Event("resize"));
-            $scope.refreshLog();
-            break;
-          }
-        }
-      });
-    }, true);
-    
-    // odl events
-    // actualNetworkElements - NE added/deleted
-    var listenToActualNetworkElementsNotifications = function(socketLocation) {
-      try {
-        var notificatinSocket = new WebSocket(socketLocation);
-
-        notificatinSocket.onmessage = function(event) {
-          console.log('Event received.');
-          setTimeout(function() {
-            getActualNetworkElements();
-          }, 1000);
-        };
-        notificatinSocket.onerror = function(error) {
-          console.error("Socket error: " + error);
-        };
-        notificatinSocket.onopen = function(event) {
-          console.info("Socket connection opened.");
-        };
-        notificatinSocket.onclose = function(event) {
-          console.info("Socket connection closed.");
-        };
-      } catch (e) {
-        console.error("Error when creating WebSocket" + e);
-      }
-    };
-    
-    // var path = '/network-topology:network-topology/network-topology:topology[network-topology:topology-id = "topology-netconf"]'; 
-    // var path = "/opendaylight-inventory:nodes";  // [sko] works!
-    var path = '/network-topology:network-topology'; // for whatever reason it does not work, but work in Lithium.
-    $mwtnConnect.registerForOdlEvents(path, function(socketLocation) {
-      listenToActualNetworkElementsNotifications(socketLocation);
-    });
-    
-    var listenToEventManagerNotifications = function() {
-      $mwtnConnect.getMwtnWebSocketUrl().then(function(success){
-        try {
-          var notificationSocket = new WebSocket(success);
-
-          notificationSocket.onmessage = function(event) {
-            // we process our received event here
-            if (typeof event.data === 'string') {
-              // console.log("Client Received:\n" + event.data);
-              // console.log("---------------------------");
-              $mwtnConnect.formatData(event).then(function(formated) {
-                switch (formated.notifType) {
-                case 'ProblemNotification':
-                case 'AttributeValueChangedNotification':
-                  // ignore
-                  break;
-                case 'ObjectCreationNotification':
-                case 'ObjectDeletionNotification':
-                  if (formated.nodeName === 'SDN-Controller') {
-                    $timeout(function() {getActualNetworkElements();}, 500); 
-                  }
-                  break;
-                default:
-                  console.error('Missing implementation for', formated.notifType);
-                }
-              }, function(error) {
-                // do nothing
-              });
-            }
-          };
-
-          notificationSocket.onerror = function(error) {
-            console.log("Socket error: " + error);
-          };
-
-          notificationSocket.onopen = function(event) {
-            console.log("Socket connection opened.");
-
-            function subscribe() {
-              if (notificationSocket.readyState === notificationSocket.OPEN) {
-                var data = {
-                  'data' : 'scopes',
-                  'scopes' : [ 'ObjectCreationNotification', 'ObjectDeletionNotification' ]
-                };
-                notificationSocket.send(JSON.stringify(data));
-              }
-            }
-            subscribe();
-          };
-
-          notificationSocket.onclose = function(event) {
-            console.log("Socket connection closed.");
-          };
-        } catch (e) {
-          console.error("Error when creating WebSocket.\n" + e);
-        }
-      }, function(error){
-        console.error("Error when creating WebSocket.\n" + error);
-      });
-    };
-    listenToEventManagerNotifications();
-    
-  }]);
-
-  mwtnConnectApp.register.controller('AddToRequiredMessageCtrl', ['$scope', '$uibModalInstance', '$mwtnConnect', 'netconfServer', 
-                                                         function ($scope, $uibModalInstance, $mwtnConnect, netconfServer) {
-
-    $scope.netconfServer = netconfServer;
-    
-    $mwtnConnect.getMountPoint(netconfServer['node-id']).then(
-      /**
-       * @param {{'node-id':string, 'netconf-node-topology:tcp-only': boolean, 'netconf-node-topology:host', string, 'netconf-node-topology:keepalive-delay':number, 'netconf-node-topology:port':number, 'netconf-node-topology:username':string, 'netconf-node-topology:password': string}} mountpoint - The mointpoint form topology-netconf
-       */
-      function(mountpoint) {
-        $scope.netconfServer.username = mountpoint['netconf-node-topology:username'];
-        $scope.netconfServer.password = mountpoint['netconf-node-topology:password'];
-      }, 
-      function(error){
-        console.log(JSON.stringify(error));
-      }
-    );
-
-    $scope.sites = [];
-    var sort = [ {
-      id : {
-        order : 'asc'
-      }
-    }];
-    $mwtnConnect.getAllData('mwtn', 'site', 0, 20, sort).then(
-      function(sites){
-        // console.log(JSON.stringify(sites));
-        if (sites.data.hits.hits) {
-          sites.data.hits.hits.map(function(site){
-            $scope.sites.push({id:site._source.id, name:site._source.name});
-          });
-          // console.log($scope.sites);
-        }
-      }, 
-      function(error){
-        $scope.sites = [];
-      }
-    );
-  
-    $scope.ok = function () {
-      $uibModalInstance.close($scope.netconfServer);
-    };
-  
-    $scope.cancel = function () {
-      $uibModalInstance.dismiss('cancel');
-    };
-
-    $scope.$watch('netconfServer.site', function(newValue, oldValue) {
-      if (newValue !== oldValue) {
-        var sort = [ {
-          id : {
-            order : 'asc'
-          }
-        }];
-        var query = {
-          prefix: {
-            name: newValue
-          }
-        };
-
-        $mwtnConnect.getFilteredSortedData('mwtn', 'site', 0, 20, sort, query).then(
-          function(sites){
-            // console.log(JSON.stringify(sites));
-            if (sites.data.hits.hits) {
-              $scope.sites = sites.data.hits.hits.map(function(site){
-                return {id:site._source.id, name:site._source.name};
-              });
-              // console.log($scope.sites);
-            }
-          }, 
-          function(error){
-            $scope.sites = [];
-          }
-        );
-      }
-    });
-  }]);
-
-  mwtnConnectApp.register.controller('MountPointDetailsCtrl', ['$scope', '$uibModalInstance', '$uibModal', '$mwtnConnect', '$mwtnLog', 'currentNetworkElement', 
-                                                                  function ($scope, $uibModalInstance, $uibModal, $mwtnConnect, $mwtnLog, currentNetworkElement) {
-
-    var COMPONENT = 'MountPointDetailsCtrl';
-    // $mwtnLog.info({component: COMPONENT, message: 'MountPointDetailsCtrl started!'});
-
-    $scope.data = {
-        ne: currentNetworkElement,
-        web: {
-          supported: false,
-          protocol: 'http',
-          ipAddress: '127.0.0.1',
-          port: 80,
-          url: '/',
-          getLink : function() {
-            if (currentNetworkElement.webUri) {
-              return currentNetworkElement.webUri;
-            }
-            return [this.protocol,'://', this.ipAddress, this.url ].join('');
-          }
-        },
-        terminal: {
-          supported: false,
-          copied: false,
-          protocol: 'ssh',
-          user: 'cli',
-          ipAddress: '127.0.0.1',
-          getCommand : function() {
-            if (currentNetworkElement.cliAddress) { 
-              return currentNetworkElement.cliAddress;
-            }
-            return [this.protocol, ' ', this.user, '@', this.ipAddress].join('');
-          },
-          copyToClipboard : function () {
-            $scope.data.application.copied = false;
-            this.copied =  true;
-            var message = 'Copied to clipboard! ' + this.getCommand();
-            $mwtnLog.info({component: COMPONENT, message: message});
-          }
-        },
-        application: {
-          supported: false,
-          copied: false,
-          commandTemplate: 'VendorApp --ne {0}',
-          ipAddress: '127.0.0.1',
-          getCommand : function() {
-            if (currentNetworkElement.appCommand) {
-              return currentNetworkElement.appCommand;
-            }
-            return this.commandTemplate.format(this.ipAddress);
-          },
-          copyToClipboard : function () {
-            $scope.data.terminal.copied = false;
-            $scope.data.application.copied =  true;
-            var message = 'Copied to clipboard! ' + this.getCommand();
-            $mwtnLog.info({component: COMPONENT, message: message});
-          }
-        }
-    };
-
-    var nodeId = $scope.data.ne.name || $scope.data.ne['node-id'];
-    $mwtnConnect.getMountPoint(nodeId).then(function(success){
-      $scope.data.mountpoint = success;
-    }, function(error){
-      $scope.data.mountpoint = undefined;
-    });
-    
-    if (currentNetworkElement.webUri && currentNetworkElement.webUri !== '') {
-      $scope.data.web.supported = true;
-      $scope.data.web.protocol = currentNetworkElement.webUri.split(':')[0];
-      var matches = currentNetworkElement.webUri.match(/^https?\:\/\/([^\/?#]+)(?:[\/?#]|$)/i);
-      $scope.data.web.ipAddress = matches && matches[1];  // ipAddress will be null if no match is found
-    }
-    if (currentNetworkElement.cliAddress && currentNetworkElement.cliAddress !== '') {
-      $scope.data.terminal.supported = true;
-      var matches = currentNetworkElement.cliAddress.match(/([^@]+)@([^@]+)/i);
-      $scope.data.terminal.user = matches && matches[1];
-      $scope.data.terminal.ipAddress = matches && matches[2];
-    }
-    if (currentNetworkElement.appCommand && currentNetworkElement.appCommand !== '') {
-      $scope.data.application.supported = true;
-      // [sko] TODO once a mediator supports it
-    }
-
-    $scope.yangCapabilitiesGridOptions = JSON.parse(JSON.stringify($mwtnConnect.gridOptions));
-    $scope.yangCapabilitiesGridOptions.columnDefs = [
-       { field: 'module', type: 'string', displayName: 'module',  headerCellClass: $scope.highlightFilteredHeader, width : 600 },
-       { field: 'revision', type: 'string', displayName: 'Revision',  headerCellClass: $scope.highlightFilteredHeader, width : 150}
-     ];
-    $scope.yangCapabilitiesGridOptions.data = currentNetworkElement.onfCapabilities;
-    
-    // clipboard
-    $scope.supported = false;
-    $scope.error = function (err) {
-      $mwtnLog.error({component: COMPONENT, message: err});
-    };    
-    
-    $scope.ok = function () {
-      $uibModalInstance.close({ne: currentNetworkElement});
-    };
-  
-    $scope.hide = function (ne) {
-      $scope.hideNe = ne;
-      var modalInstance = $uibModal.open({
-        animation: true,
-        ariaLabelledBy: 'modal-title',
-        ariaDescribedBy: 'modal-body',
-        templateUrl: 'src/app/mwtnConnect/templates/confirmHide.tpl.html',
-        controller: 'MountPointHideCtrl',
-        size: 'lg',
-        resolve: {
-          hideNe: function () {
-            return $scope.hideNe;
-          }
-        }
-      });
-
-      modalInstance.result.then(
-        function(neId) {
-          $mwtnConnect.getSingleDocument('mwtn', 'required-networkelement', neId).then(
-            function(doc){
-              doc.required = false;
-              $mwtnConnect.createSingleDocument('mwtn', 'required-networkelement', neId, doc).then(
-                function(success){
-                  $uibModalInstance.close({hide: neId});
-                }, 
-                function(error) {
-                  $uibModalInstance.close({hide: neId});
-                }
-              );
-            },  
-            function(error) {
-              $uibModalInstance.close({hide: neId});
-            }
-          );
-          $mwtnLog.info({component: COMPONENT, message: 'Confirm hide closed'});
-        }, 
-        function (error) {
-          $mwtnLog.info({component: COMPONENT, message: 'Confirm hide dismissed!'});
-        }
-      );
-    };
-  
-    $scope.delete = function (ne) {
-      $scope.deleteNe = ne;
-      var modalInstance = $uibModal.open({
-        animation: true,
-        ariaLabelledBy: 'modal-title',
-        ariaDescribedBy: 'modal-body',
-        templateUrl: 'src/app/mwtnConnect/templates/confirmDelete.tpl.html',
-        controller: 'MountPointDeleteCtrl',
-        size: 'lg',
-        resolve: {
-          deleteNe: function () {
-            return $scope.deleteNe;
-          }
-        }
-      });
-
-      modalInstance.result.then(function(success) {
-        // delete from AAi
-        // $onapAai.deletePnf(success).then(function(deleted){
-        //   $mwtnLog.info({component: COMPONENT, message: success + ' deleted from AAI.'});
-        // }, function(error){
-        //   $mwtnLog.info({component: COMPONENT, message: 'Deletion from AAI failed: ' + success + '\n' + error});
-        // });
-        // delete from ES
-        $mwtnConnect.deleteSingleDocument('mwtn', 'required-networkelement', success).then(function(deleted){
-          $mwtnLog.info({component: COMPONENT, message: success + ' deleted from database.'});
-          $uibModalInstance.close({hide: success});
-        }, function(error){
-          $mwtnLog.info({component: COMPONENT, message: 'Deletion from database failed: ' + success + '\n' + error});
-        });
-      }, function (error) {
-        $mwtnLog.info({component: COMPONENT, message: 'Confirm delete dismissed!'});
-      });
-    };
-  
-    $scope.cancel = function () {
-      $uibModalInstance.dismiss('cancel');
-    };
-  }]);
-
-  mwtnConnectApp.register.controller('MountPointHideCtrl', ['$scope', '$uibModalInstance', '$mwtnConnect', '$mwtnLog', 'hideNe', 
-                                                   function ($scope, $uibModalInstance, $mwtnConnect, $mwtnLog, hideNe) {
-    $scope.hideNe = hideNe;
-    $scope.ok = function () {
-      $uibModalInstance.close($scope.hideNe.name);
-    };
-    $scope.cancel = function () {
-      $uibModalInstance.dismiss('cancel');
-    };
-
-  }]);
-
-  mwtnConnectApp.register.controller('MountPointDeleteCtrl', ['$scope', '$uibModalInstance', '$mwtnConnect', '$mwtnLog', 'deleteNe', 
-                                                   function ($scope, $uibModalInstance, $mwtnConnect, $mwtnLog, deleteNe) {
-    $scope.deleteNe = deleteNe;
-    $scope.ok = function () {
-      $uibModalInstance.close($scope.deleteNe.name);
-    };
-    $scope.cancel = function () {
-      $uibModalInstance.dismiss('cancel');
-    };
-
-  }]);
-
-});
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.module.js
deleted file mode 100644 (file)
index c280a95..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var mwtnConnectApp = angular.module('app.mwtnConnect', [ 'ui.grid', 'ui.bootstrap', 'app.core',
-      'ui.router.state', 'config', 'ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns', 'angular-clipboard' ]);
-
-  mwtnConnectApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-
-    mwtnConnectApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-    NavHelperProvider.addControllerUrl('app/mwtnConnect/mwtnConnect.controller');
-    NavHelperProvider.addToMenu('mwtnConnect', {
-     "link" : "#/connect",
-     "active" : "main.mwtnConnect",
-     "title" : "Connect",
-     "icon" : "fa fa-plug",  // Add navigation icon css class here
-     "page" : {
-        "title" : "Connect",
-        "description" : "Connection supervision of physical network function to ONAP SDN-C-4-Wireless"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnConnect', {
-        url: 'connect',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/mwtnConnect/mwtnConnect.tpl.html',
-                controller: 'mwtnConnectCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnConnectApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.services.js
deleted file mode 100644 (file)
index 8f8b55c..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnConnect/mwtnConnect.module','app/mwtnCommons/mwtnCommons.services'],function(mwtnConnectApp) {
-
-
-  mwtnConnectApp.register.factory('$mwtnConnect', function($q, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-
-    var COMPONENT = '$mwtnConnect';
-    $mwtnLog.info({component: COMPONENT, message: '$mwtnConnect started!'});
-
-    var service = {};
-    
-    service.addRequiredNetworkElement = $mwtnCommons.addRequiredNetworkElement;
-    service.createSingleDocument = $mwtnDatabase.createSingleDocument;
-    service.deleteSingleDocument = $mwtnDatabase.deleteSingleDocument;
-    service.formatData = $mwtnCommons.formatData;
-    service.formatTimeStamp = $mwtnCommons.formatTimeStamp;
-    service.getAllData = $mwtnDatabase.getAllData;
-    service.getFilteredSortedData = $mwtnDatabase.getFilteredSortedData;
-    service.getMountPoint = $mwtnCommons.getMountPoint;
-    service.getMountPoints = $mwtnCommons.getMountPoints;
-    service.getActualNetworkElement = $mwtnCommons.getActualNetworkElement;
-    service.getRequiredNetworkElements = $mwtnCommons.getRequiredNetworkElements;
-    service.getMwtnWebSocketUrl = $mwtnCommons.getMwtnWebSocketUrl;
-    service.getSingleDocument = $mwtnDatabase.getSingleDocument;
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.highlightFilteredHeader = $mwtnCommons.highlightFilteredHeader;
-    
-    service.registerForOdlEvents = $mwtnCommons.registerForOdlEvents;
-    service.separator = $mwtnCommons.separator;
-    
-    service.mount = $mwtnCommons.mount;
-    service.unmount = $mwtnCommons.unmount;
-    service.yangifyObject = $mwtnCommons.yangifyObject;
-
-    service.getData = function(from, size, sort, query){
-      if (!sort) { //default sort value
-        sort = [ { 'event.timeStamp' : {order : 'desc'}}];
-      }
-      if (!query) { //default filter value
-        query= {prefix: {'event.nodeName': 'SDN-Controller'}};
-      }
-      return getFilteredSortedData(from, size, sort, query);
-    };
-    
-    var getFilteredSortedData = function(from, size, sort, query){
-      var deferred = $q.defer();
-      $mwtnDatabase.getFilteredSortedData('sdnevents', 'eventlog', from, size, sort, query).then(function(success){
-        deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: 'private getFilteredSortedData', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-
-    service.TimeStampToONFFormat = function(timestamp) {
-      timestamp=timestamp.split('-').join('');
-      timestamp=timestamp.split(':').join('');
-      timestamp=timestamp.split(' ').join('');
-      timestamp=timestamp.replace('UTC','Z');
-      return timestamp;
-    };
-
-    return service;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/mwtnConnect.tpl.html
deleted file mode 100644 (file)
index 73fc0fc..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-<ht-header help-link='sdnr/connect/0.4.0/README.md'></ht-header>
-
-<uib-accordion close-others="oneAtATime">
-
-<div uib-accordion-group class="panel-primary"
-       is-open="status.requiredNes">
-       <uib-accordion-heading>
-           <i class="pull-left fa" ng-class="{'fa-chevron-down': status.requiredNes, 'fa-chevron-right': !status.requiredNes}"></i>
-           <span>{{'MWTN_REQUIRED_NETWORK_ELEMENTS' | translate}}</span>
-       </uib-accordion-heading>
-       <div id="requiredNesGrid" ui-grid="requiredNesGridOptions"
-               ui-grid-exporter ui-grid-selection ui-grid-pinning
-               ui-grid-resize-columns ui-grid-move-columns class="requiredNesGrid">
-       </div>
-</div>
-
-<div uib-accordion-group class="panel-default"
-       is-open="status.unkownNes">
-       <uib-accordion-heading>
-           <i class="pull-left fa" ng-class="{'fa-chevron-down': status.unkownNes, 'fa-chevron-right': !status.unkownNes}"></i>
-           <span>{{'MWTN_UNKNOWN_NETWORK_ELEMENTS' | translate}}</span>
-       </uib-accordion-heading>
-       <div id="unknownNesGrid" ui-grid="unknownNesGridOptions"
-               ui-grid-exporter ui-grid-selection ui-grid-pinning
-               ui-grid-resize-columns ui-grid-move-columns class="unknownNesGrid">
-       </div>
-</div>
-
-<div uib-accordion-group class="panel-default"
-       is-open="status.mount">
-       <uib-accordion-heading>
-           <i class="pull-left fa" ng-class="{'fa-chevron-down': status.mount, 'fa-chevron-right': !status.mount}"></i>
-           <span>{{'Mount NETCONF Servers (devices, nodes, mediators, controllers, ...)' | translate}}</span>
-       </uib-accordion-heading>
-       <div class="container">
-               <div class="row" ng-repeat="(key, value) in newMountingPoint">
-                       <div class="col-md-2 text-right">
-                               <span>{{['mwtn', key].join('_').toUpperCase() | translate}}</span>
-                       </div>
-                       <div class="col-md-4">
-                               <input type="text" class="form-control"
-                                       ng-model="newMountingPoint[key]"></input>
-                       </div>
-               </div>
-               <div class="row">
-                       <div class="col-md-6 text-right">
-                                       <br />
-                                <button type="button" class="btn btn-primary" ng-click="mount()">
-                                 <i class="fa fa-spinner" ng-class="{'fa-pulse':processing}" ng-show="processing" aria-hidden="true"></i>
-                                 <span>{{'MWTN_MOUNT' | translate}}</span>
-                                </button>
-                       </div>
-               </div>
-               <div class="row">
-                       <div class="col-md-6">
-                                       <br />
-                                       <span class="mwtnSuccess" style="color: darkgreen;">{{mountSuccess}}</span>
-                                       <span class="mwtnError" style="color: red;">{{mountError}}</span>
-                       </div>
-               </div>
-       </div>
-</div>
-
-<div uib-accordion-group class="panel-default"
-  is-open="status.connectionStatusLog">
-  <uib-accordion-heading>
-      <i class="pull-left fa" ng-class="{'fa-chevron-down': status.connectionStatusLog, 'fa-chevron-right': !status.connectionStatusLog}"></i>
-      <span>{{'MWTN_CONNECTION_STATUS_LOG' | translate}}</span>
-      <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.connectionStatusLog"></i>
-  </uib-accordion-heading>
-  
-    <div id="mwtnConnectGridConnectionStatusLog" 
-         ui-grid="gridOptionsConnectionStatusLog"
-         ui-grid-pagination 
-         ui-grid-exporter 
-         ui-grid-selection 
-         ui-grid-pinning 
-         ui-grid-resize-columns 
-         ui-grid-move-columns class="mwtnConnectGrid">
-    </div>
-    
-    <div class="ht-pagination">
-      <button class="btn btn-default"
-            ng-disabled="paginationOptions.pageNumber === 1"
-            ng-click="gridApi.pagination.seek(1)"
-            ng-class="{'cancelCursor':paginationOptions.pageNumber === 1}"
-            role="menuitem" type="button" title="Page to first" aria-label="Page to first">
-        <i class="fa fa-step-backward "></i>
-      </button>
-      <button class="btn btn-default"
-            ng-disabled="paginationOptions.pageNumber === 1"
-            ng-class="{'cancelCursor':paginationOptions.pageNumber === 1}"
-            ng-click="gridApi.pagination.previousPage()"
-
-            role="menuitem" type="button" title="Previous Page" aria-label="Previous Page">
-        <i class="fa fa-play fa-rotate-180 "></i>
-      </button>
-      <input class="btn btn-default" style="text-align:right;"  border="1" 
-           ng-model="paginationOptions.pageNumber"
-           ng-change="seekPage(paginationOptions.pageNumber)"
-           type="text" style="width:20px;"/>
-      <span class="dark">&nbsp;/ {{ gridApi.pagination.getTotalPages() }}</span>
-
-      <button class="btn btn-default" role="menuitem" type="button" title="Next Page" aria-label="Next Page"
-            ng-disabled="gridApi.pagination.pageNumber === gridApi.pagination.getTotalPages()"
-            ng-click="gridApi.pagination.nextPage()">
-          <i class="fa fa-play "></i>
-      </button>
-      <button class="btn btn-default" ng-disabled="gridApi.pagination.pageNumber === gridApi.pagination.getTotalPages()"
-            ng-click="gridApi.pagination.seek(gridApi.pagination.getTotalPages())"
-            role="menuitem" type="button" title="Page to last" aria-label="Page to last">
-        <i class="fa fa-step-forward "></i>
-      </button>
-    
-      <select 
-        class="btn btn-default" name="repeatSelect" id="repeatSelect" 
-        ng-init="gridOptionsConnectionStatusLog.paginationPageSize = gridOptionsConnectionStatusLog.paginationPageSizes[0]" 
-        ng-model="gridOptionsConnectionStatusLog.paginationPageSize" 
-        ng-options="option for option in gridOptionsConnectionStatusLog.paginationPageSizes"></select>
-    
-      <span class="dark"> items per page </span>
-
-      <span class="pull-right dark">{{ paginationStatusMessage() }}</span>
-    
-    </div>
-
-    <div class="text-right">
-     <!-- 
-     <button type="button" id="clearLog" class="btn btn-warning" ng-click="clearLog()">
-      <i class="fa fa-times" aria-hidden="true"></i>
-      <span>Clear log...</span>
-     </button>
-      see gird menu Export ...
-     <button type="button" id="saveLog" class="btn btn-default" ng-click="saveLog()">
-      <i class="fa fa-save" aria-hidden="true"></i>
-      <span>Save...</span>
-     </button>  -->
-     <button type="button" id="refreshLog" class="btn btn-primary" ng-click="refreshLog()">
-      <span>{{'MWTN_REFRESH' | translate}}</span>
-     </button> 
-    </div>
-  
-</div>
-
-</uib-accordion>
-
-<hr />
-<div class="owl">
-       <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/addToRequired.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/addToRequired.tpl.html
deleted file mode 100644 (file)
index d2a0903..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{'Add to required NetworkElements' | translate}}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-
-       <div class="container" style="max-width: 600px;">
-
-               <div class="row">
-                       <div class="col-md-12">
-                               <span>Create a new NetworkElement in planning database as clone of existing real NetworkElement.</span>
-                       </div>
-               </div>
-
-               <div class="row">
-                       <div class="col-md-4 text-right">
-                               <span>{{'MWTN_NAME' | translate}}</span>
-                       </div>
-                       <div class="col-md-4">
-                               <input class="form-control" type="text" ng-model="netconfServer['node-id']"></input>
-                       </div>
-               </div>
-
-               <div class="row">
-                       <div class="col-md-4 text-right">
-                               <span>{{'MWTN_IPADDRESS' | translate}}</span>
-                       </div>
-                       <div class="col-md-4">
-                               <input class="form-control" type="text" ng-model="netconfServer['netconf-node-topology:host']"></input>
-                       </div>
-               </div>
-
-               <div class="row">
-                       <div class="col-md-4 text-right">
-                               <span>{{'MWTN_NETCONF_PORT' | translate}}</span>
-                       </div>
-                       <div class="col-md-4">
-                               <input class="form-control" type="text" ng-model="netconfServer['netconf-node-topology:port']"></input>
-                       </div>
-               </div>
-
-               <div class="row">
-                       <div class="col-md-4 text-right">
-                               <span>{{'MWTN_USERNAME' | translate}}</span>
-                       </div>
-                       <div class="col-md-4">
-                               <input class="form-control" type="text" ng-model="netconfServer.username"></input>
-                       </div>
-               </div>
-
-               <div class="row">
-                       <div class="col-md-4 text-right">
-                               <span>{{'MWTN_PASSWORD' | translate}}</span>
-                       </div>
-                       <div class="col-md-4">
-                               <input class="form-control" type="password" ng-model="netconfServer.password"></input>
-                       </div>
-               </div>
-
-               <div class="row">
-                       <div class="col-md-4 text-right">
-                               <span>{{'MWTN_SITE' | translate}}</span>
-                       </div>
-                       <div class="col-md-4">
-                               <div class="form-group">
-                                       <input list="sites" class="form-control" ng-model="netconfServer.site">
-                    <datalist id="sites">
-                                     <option ng-repeat="site in sites" value="{{site.id}}" >{{site.name}}</option>
-                    </datalist>
-                               </div>
-                       </div>
-               </div>
-      
-       </div>
-</div>
-<div class="modal-footer">
-       <button class="btn btn-primary" type="button" ng-click="ok()">{{'MWTN_ADD_TO_REQUIRED_NETWORKELEMENTS' | translate}}</button>
-       <button class="btn btn-warning" type="button" ng-click="cancel()">{{'MWTN_CANCEL' | translate}}</button>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/confirmDelete.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/confirmDelete.tpl.html
deleted file mode 100644 (file)
index 03a7de7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{'MWTN_DELETE' | translate}}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-       <div class="container" style="max-width: 600px;">
-               <div class="row">
-                       <div class="col-md-12">
-                               <span>Delete {{node.id}} from the planning database.</span>
-                               <br/>
-                               <span>All the planning data for this network element will be lost.</span>
-                       </div>
-               </div>    
-       </div>
-</div>
-<div class="modal-footer">
-       <button class="btn btn-danger" type="button" ng-click="ok()">
-               <i class="fa fa-trash" aria-hidden="true"></i>
-               <span>{{'MWTN_DELETE' | translate}}</span>
-       </button>
-       <button class="btn btn-warning" type="button" ng-click="cancel()">
-               <span>{{'MWTN_CANCEL' | translate}}</span>
-       </button>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/confirmHide.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/confirmHide.tpl.html
deleted file mode 100644 (file)
index c52ee3f..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{'MWTN_HIDE' | translate}}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-       <div class="container" style="max-width: 600px;">
-               <div class="row">
-                       <div class="col-md-12">
-                               <span>Remove {{node.id}} from the list of required network elements.</span>
-                       </div>
-               </div>    
-       </div>
-</div>
-<div class="modal-footer">
-       <button class="btn btn-primary" type="button" ng-click="ok()">
-               <i class="fa fa-times" aria-hidden="true"></i>
-               <span>{{'MWTN_HIDE' | translate}}</span>
-   </button>
-       <button class="btn btn-warning" type="button" ng-click="cancel()">
-               <span>{{'MWTN_CANCEL' | translate}}</span>
-       </button>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/mountPointDetails.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/mwtnConnect-module/src/main/resources/mwtnConnect/templates/mountPointDetails.tpl.html
deleted file mode 100644 (file)
index 56563b4..0000000
+++ /dev/null
@@ -1,125 +0,0 @@
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{ data.ne.name }}{{ data.ne['node-id'] }}</h3>
-</div>
-<div class="modal-body" id="modal-body" ng-hide="data.ne.required">
-  <div class="row">
-    <div class="col-md-2 text-right">
-      <span>{{'MWTN_NETWORKELEMENT' | translate}}</span>
-    </div>
-    <div class="col-md-10">
-      <b>{{data.ne['node-id']}}</b>
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-2 text-right">
-      <span>{{'MWTN_IPADDRESS' | translate}}</span>
-    </div>
-    <div class="col-md-10">
-      <b>{{data.ne['netconf-node-topology:host']}}</b>
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-2 text-right">
-      <span>{{'MWTN_PORT' | translate}}</span>
-    </div>
-    <div class="col-md-10">
-      <b>{{data.ne['netconf-node-topology:port']}}</b>
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-2 text-right">
-      <span>{{'MWTN_USERNAME' | translate}}</span>
-    </div>
-    <div class="col-md-10">
-      <b>{{data.mountpoint['netconf-node-topology:username']}}</b>
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-2 text-right">
-      <span>{{'MWTN_PASSWORD' | translate}}</span>
-    </div>
-    <div class="col-md-10">
-      <b>{{data.mountpoint['netconf-node-topology:password']}}</b>
-    </div>
-  </div>
-</div>
-<div class="modal-body" id="modal-body" ng-show="data.ne.required">
-  <!-- web -->
-  <div ng-show="data.web.supported">
-      <p>
-        <span>The network element supports a native web user interface.</span>
-        <br/>
-        <span> Please use following link:</span>
-        <div class="input-append">
-          <input class="mwtn-form-control" type="text" value="{{ data.web.getLink() }}" readonly></input>
-          <a class="btn btn-default" href="{{ data.web.getLink() }}" target="_blank">
-            <i class="fa fa-external-link" aria-hidden="true"></i>
-          </a>
-        </div>
-      <p>
-  </div>
-  <div ng-show="!data.web.supported">
-      <p>The network element does not support a native web user interface.</p>
-  </div>
-  <!-- terminal -->
-  <hr/>
-  <div ng-show="data.terminal.supported">
-    <p>
-      <span>The network element supports a native terminal or console application.</span>
-      <br/>
-      <span>Please the copy button and paste the command into a terminal window:</span>
-    <p>
-    <div class="input-append">
-      <input class="mwtn-form-control" type="text" value="{{ data.terminal.getCommand() }}" readonly></input>
-      <button class="btn btn-default" type="button" clipboard supported="supported" text="data.terminal.getCommand()" on-copied="data.terminal.copyToClipboard()" on-error="error(err)">
-        <i class="fa fa-clipboard" aria-hidden="true"></i>
-      </button>
-      <span ng-show="data.terminal.copied === true" class="green">Check your clipboard.</span>
-    </div>
-  </div>
-  <div ng-show="!data.web.supported">
-    <p>The network element does not support a native terminal or console application.</p>
-  </div>
-
-  <!-- application -->
-  <hr/>
-  <div ng-show="data.application.supported">
-    <p>
-      <span>The network element can be managed via a pre-installed application.</span>
-      <br/>
-      <span>Please the copy button and paste the command into a terminal window:</span>
-    <p>
-    <div class="input-append">
-      <input class="mwtn-form-control" type="text" value="{{ data.application.getCommand() }}" readonly></input>
-      <button class="btn btn-default" type="button" clipboard supported="supported" text="data.application.getCommand()" on-copied="data.application.copyToClipboard()" on-error="error(err)">
-        <i class="fa fa-clipboard" aria-hidden="true"></i>
-      </button>
-      <span ng-show="data.application.copied === true" class="green">Check your clipboard.</span>
-    </div>
-  </div>
-  
-</div>
-<div class="modal-body" id="modal-body">
-  <!-- yang capabilites -->
-  <hr/>
-  <h3>{{ 'MWTN_YANG_CAPABILITIES' | translate }}</h3>
-  <div id="yangCapabilitiesGrid" 
-        ui-grid="yangCapabilitiesGridOptions"
-        ui-grid-exporter ui-grid-selection ui-grid-pinning
-        ui-grid-resize-columns 
-        ui-grid-move-columns class="yangCapabilitiesGrid">
-  </div>
-</div>
-<div class="modal-footer">
-       <button class="btn btn-danger" type="button" ng-show="data.ne.required" ng-click="delete(data.ne)">
-    <i class="fa fa-trash" aria-hidden="true"></i>
-    <span>{{'MWTN_DELETE' | translate}}...</span>
-  </button>
-       <button class="btn btn-warning" type="button" ng-show="data.ne.required" ng-click="hide(data.ne)">
-    <i class="fa fa-times" aria-hidden="true"></i>
-    <span>{{'MWTN_HIDE' | translate}}...</span>
-  </button>
-       <button class="btn btn-primary" type="button" ng-click="ok()">
-    <span>{{'MWTN_CLOSE' | translate}}</span>
-  </button>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnConnect/pom.xml
deleted file mode 100644 (file)
index 273501d..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>mwtnConnect</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>mwtnConnect-module</module>
-  <module>mwtnConnect-bundle</module>
- </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-bundle/pom.xml
deleted file mode 100644 (file)
index 9a9504a..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnEvents</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnEvents-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnEvents-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnEvents-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 4cac53b..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnEvents"/>
-        <property name="url" value="/src/app/mwtnEvents"/>
-        <property name="directory" value="/mwtnEvents"/>
-        <property name="requireJs" value="app/mwtnEvents/mwtnEvents.module"/>
-        <property name="angularJs" value="app.mwtnEvents"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnEvents/mwtnEvents-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/pom.xml
deleted file mode 100644 (file)
index cf3ec04..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnEvents</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnEvents-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/images/mwtnEvents.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/images/mwtnEvents.png
deleted file mode 100755 (executable)
index d93e6df..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/images/mwtnEvents.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents-custom.css
deleted file mode 100644 (file)
index 211adc4..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-/**
- *  Add your application related css here
- */
-.mwtnEventsGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.mwtnEventsGrid span {
-  color: #393939;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.controller.js
deleted file mode 100644 (file)
index 1a545ad..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (c) 2016 Tech Mahindra Ltd. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(
-    [ 'app/mwtnEvents/mwtnEvents.module', 'app/mwtnEvents/mwtnEvents.services', 'app/mwtnCommons/mwtnCommons.services'],
-    function(mwtnEventsApp) {
-
-      mwtnEventsApp.register
-          .controller(
-              'mwtnEventsCtrl',
-              [
-                  '$scope',
-                  '$rootScope',
-                  '$mwtnEvents',
-                  'uiGridConstants',
-                  function($scope, $rootScope, $mwtnEvents, uiGridConstants) {
-
-                    $rootScope.section_logo = 'src/app/mwtnEvents/images/mwtnEvents.png';
-
-                    $scope.status = {alarms:true};
-                    $scope.oneATime = true;
-                    
-                    $scope.gridOptionsAlarms = JSON.parse(JSON.stringify($mwtnEvents.gridOptions));
-                    $scope.gridOptionsAlarms.columnDefs = [
-                      // { field: 'id', type: 'number', displayName: 'No.',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true },
-                      // { field: 'icon',  type: 'string', displayName: '',  headerCellClass: $scope.highlightFilteredHeader, width: 25, enableSorting: false, enableFiltering:false, cellTemplate: iconCell },
-                      { field: 'timeStamp',  type: 'string', displayName: 'Timestamp',  headerCellClass: $scope.highlightFilteredHeader, width : 200,sort: {
-                        direction: uiGridConstants.DESC,
-                        priority: 1
-                      } },
-                      { field: 'counter',  type: 'number', displayName: 'Counter',  headerCellClass: $scope.highlightFilteredHeader, width: 90 },
-                      { field: 'nodeName',  type: 'string', displayName: 'NetworkElement',  headerCellClass: $scope.highlightFilteredHeader, width: 170 },
-                      { field: 'objectId',  type: 'string', displayName: 'Object',  headerCellClass: $scope.highlightFilteredHeader, width: 400 },
-
-                      { field: 'problem',  type: 'string', displayName: 'Alarm',  headerCellClass: $scope.highlightFilteredHeader, width : 140 },
-                      { field: 'severity',  type: 'string', displayName: 'Severity',  headerCellClass: $scope.highlightFilteredHeader, width : 100 }
-                    ];
-
-                    $scope.gridOptionsAVC = JSON.parse(JSON.stringify($mwtnEvents.gridOptions));
-                    $scope.gridOptionsAVC.columnDefs = [
-                      // { field: 'id', type: 'number', displayName: 'No.',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true },
-                      // { field: 'icon',  type: 'string', displayName: '',  headerCellClass: $scope.highlightFilteredHeader, width: 25, enableSorting: false, enableFiltering:false, cellTemplate: iconCell },
-                      { field: 'timeStamp',  type: 'string', displayName: 'Timestamp',  headerCellClass: $scope.highlightFilteredHeader, width : 200,sort: {
-                        direction: uiGridConstants.DESC,
-                        priority: 1
-                      } },
-                      { field: 'counter',  type: 'number', displayName: 'Counter',  headerCellClass: $scope.highlightFilteredHeader, width: 90 },
-                      { field: 'nodeName',  type: 'string', displayName: 'NetworkElement',  headerCellClass: $scope.highlightFilteredHeader, width: 170 },
-                      { field: 'objectId',  type: 'string', displayName: 'Object',  headerCellClass: $scope.highlightFilteredHeader, width: 400 },
-                      { field: 'attributeName',  type: 'string', displayName: 'Attribute',  headerCellClass: $scope.highlightFilteredHeader, width : 140 },
-                      { field: 'newValue',  type: 'string', displayName: 'New value',  headerCellClass: $scope.highlightFilteredHeader, width : 140 }
-                    ];
-
-                    $scope.gridOptionsObject = JSON.parse(JSON.stringify($mwtnEvents.gridOptions));
-                    $scope.gridOptionsObject.columnDefs = [
-                      // { field: 'id', type: 'number', displayName: 'No.',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true },
-                      // { field: 'icon',  type: 'string', displayName: '',  headerCellClass: $scope.highlightFilteredHeader, width: 25, enableSorting: false, enableFiltering:false, cellTemplate: iconCell },
-                      { field: 'timeStamp',  type: 'string', displayName: 'Timestamp',  headerCellClass: $scope.highlightFilteredHeader, width : 200,sort: {
-                        direction: uiGridConstants.DESC,
-                        priority: 1
-                      } },
-                      { field: 'counter',  type: 'number', displayName: 'Counter',  headerCellClass: $scope.highlightFilteredHeader, width: 90 },
-                      { field: 'nodeName',  type: 'string', displayName: 'NetworkElement',  headerCellClass: $scope.highlightFilteredHeader, width: 170 },
-                      { field: 'objectId',  type: 'string', displayName: 'Object',  headerCellClass: $scope.highlightFilteredHeader, width: 400 },
-                      { field: 'objectType',  type: 'string', displayName: 'Type',  headerCellClass: $scope.highlightFilteredHeader, width: 400 },
-                      { field: 'action',  type: 'string', displayName: 'Action',  headerCellClass: $scope.highlightFilteredHeader, width: 100 }
-                      
-                    ];
-
-                    var listenToNotifications = function() {
-                      $mwtnEvents.getMwtnWebSocketUrl().then(function(success){
-                        
-                        try {
-                          var notificationSocket = new WebSocket(success);
-
-                          notificationSocket.onmessage = function(event) {
-                            // we process our received event here
-                            if (typeof event.data === 'string') {
-                              // console.log("Client Received:\n" + event.data);
-                              // console.log("---------------------------");
-                              $mwtnEvents.formatData(event).then(function(formated) {
-                                switch (formated.notifType) {
-                                case 'ProblemNotification':
-                                  $scope.gridOptionsAlarms.data.push(formated);
-                                  break;
-                                case 'AttributeValueChangedNotification':
-                                  $scope.gridOptionsAVC.data.push(formated);
-                                  break;                                
-                                case 'ObjectCreationNotification':
-                                  formated.action = 'created';
-                                  if (formated.nodeName.contains('SDN-Controller')) {
-                                    formated.objectType = 'NETCONF session';
-                                  }
-                                  $scope.gridOptionsObject.data.push(formated);
-                                  break;
-                                case 'ObjectDeletionNotification':
-                                  formated.action = 'deleted';
-                                  if (formated.nodeName.contains('SDN-Controller')) {
-                                    formated.objectType = 'NETCONF session';
-                                  }
-                                  $scope.gridOptionsObject.data.push(formated);
-                                  break;
-                                default:
-                                  console.error('Missing implementation for', formated.notifType);
-                                }
-                              }, function(error) {
-                                // do nothing
-                              });
-                            }
-                          };
-
-                          notificationSocket.onerror = function(error) {
-                            console.log("Socket error: " + error);
-                          };
-
-                          notificationSocket.onopen = function(event) {
-                            console.log("Socket connection opened.");
-                            console.log("---------------------------");
-
-                            function subscribe() {
-                              if (notificationSocket.readyState === notificationSocket.OPEN) {
-                                var data = {
-                                  'data' : 'scopes',
-                                  'scopes' : [ "ObjectCreationNotification",
-                                      "ObjectDeletionNotification",
-                                      "AttributeValueChangedNotification",
-                                      "ProblemNotification" ]
-                                };
-                                notificationSocket.send(JSON.stringify(data));
-                              }
-                            }
-                            subscribe();
-                          };
-
-                          notificationSocket.onclose = function(event) {
-                            console.log("Socket connection closed.");
-                          };
-                        } catch (e) {
-                          console.error("Error when creating WebSocket.\n" + e);
-                        }
-                      }, function(error){
-                        console.error("Error when creating WebSocket.\n" + error);
-                      });
-                    };
-                    listenToNotifications();
-                  } ]);
-
-    });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.module.js
deleted file mode 100644 (file)
index f059d6d..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2016 Tech Mahindra Ltd. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define([ 'angularAMD', 'app/routingConfig', 'app/core/core.services',
-    'common/config/env.module' ,
-    'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var mwtnEventsApp = angular.module('app.mwtnEvents', [ 'app.core',
-      'ui.router.state', 'config' ]);
-
-  mwtnEventsApp.config(function($stateProvider, $compileProvider,
-      $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnEventsApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-
-    };
-
-    NavHelperProvider.addControllerUrl('app/mwtnEvents/mwtnEvents.controller');
-    NavHelperProvider.addToMenu('mwtnEvents', {
-      "link" : "#/pnfEvents",
-      "active" : "main.mwtnEvents",
-      "title" : "pnf Events",
-      "icon" : "fa fa-bolt", // Add navigation icon css class here
-      "page" : {
-        "title" : "pnf Events",
-        "description" : "Events"
-      }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnEvents', {
-      url : 'mwtnEvents',
-      access : access.admin,
-      views : {
-        'content' : {
-          templateUrl : 'src/app/mwtnEvents/mwtnEvents.tpl.html',
-          controller : 'mwtnEventsCtrl'
-        }
-      }
-    });
-
-  });
-
-  return mwtnEventsApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.services.js
deleted file mode 100644 (file)
index 1cd41fb..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2016 Tech Mahindra Ltd. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define([ 'app/mwtnEvents/mwtnEvents.module' ], function(mwtnEventsApp) {
-
-  mwtnEventsApp.register.factory('$mwtnEvents', function($mwtnCommons) {
-
-    var service = {};
-    
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.getMwtnWebSocketUrl = $mwtnCommons.getMwtnWebSocketUrl;
-    service.formatData = $mwtnCommons.formatData;
-    
-    
-    return service;
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/mwtnEvents.tpl.html
deleted file mode 100644 (file)
index b0a2ed4..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-<ht-header help-link='sdnr/mwtnEvents/0.4.0/README.md'></ht-header>
-<div class="mwtnError">{{error}}</div>
-
-<uib-accordion close-others="oneATime">
-
-<div uib-accordion-group class="panel-primary" is-open="status.alarms">
-       <uib-accordion-heading> <i class="pull-left fa"
-               ng-class="{'fa-chevron-down': status.alarms, 'fa-chevron-right': !status.alarms}"></i>
-       <span>{{'MWTN_ALARMS' | translate}}
-               ({{gridOptionsAlarms.data.length}})</span> </uib-accordion-heading>
-
-
-       <div id="mwtnEventsGridAlarms" ui-grid="gridOptionsAlarms"
-               ui-grid-exporter ui-grid-selection ui-grid-pinning
-               ui-grid-resize-columns ui-grid-move-columns class="mwtnEventsGrid"></div>
-</div>
-
-<div uib-accordion-group class="panel-primary" is-open="status.avc">
-       <uib-accordion-heading> <i class="pull-left fa"
-               ng-class="{'fa-chevron-down': status.avc, 'fa-chevron-right': !status.avc}"></i>
-       <span>{{'MWTN_ATTRIBUTE_VALUE_CHANGED' | translate}}
-               ({{gridOptionsAVC.data.length}})</span> </uib-accordion-heading>
-
-
-       <div id="mwtnEventsGridAVC" ui-grid="gridOptionsAVC" ui-grid-exporter
-               ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-               ui-grid-move-columns class="mwtnEventsGrid"></div>
-</div>
-
-<div uib-accordion-group class="panel-primary" is-open="status.object">
-       <uib-accordion-heading> <i class="pull-left fa"
-               ng-class="{'fa-chevron-down': status.object, 'fa-chevron-right': !status.object}"></i>
-       <span>{{'MWTN_OBJECT_DELETION_CREATION' | translate}}
-               ({{gridOptionsObject.data.length}})</span> </uib-accordion-heading>
-
-       <div id="mwtnEventsGridObject" ui-grid="gridOptionsObject"
-               ui-grid-exporter ui-grid-selection ui-grid-pinning
-               ui-grid-resize-columns ui-grid-move-columns class="mwtnEventsGrid"></div>
-</div>
-
-</uib-accordion>
-<hr />
-<div class="owl">
-       <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/xml2json.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/mwtnEvents-module/src/main/resources/mwtnEvents/xml2json.js
deleted file mode 100644 (file)
index 5ff7e57..0000000
+++ /dev/null
@@ -1,567 +0,0 @@
-/*\r
- Copyright 2011-2013 Abdulla Abdurakhmanov\r
- Original sources are available at https://code.google.com/p/x2js/\r
-\r
- Licensed under the Apache License, Version 2.0 (the "License");\r
- you may not use this file except in compliance with the License.\r
- You may obtain a copy of the License at\r
-\r
- http://www.apache.org/licenses/LICENSE-2.0\r
-\r
- Unless required by applicable law or agreed to in writing, software\r
- distributed under the License is distributed on an "AS IS" BASIS,\r
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r
- See the License for the specific language governing permissions and\r
- limitations under the License.\r
- */\r
-\r
-function X2JS(config) {\r
-       'use strict';\r
-               \r
-       var VERSION = "1.1.5";\r
-       \r
-       config = config || {};\r
-       initConfigDefaults();\r
-       initRequiredPolyfills();\r
-       \r
-       function initConfigDefaults() {\r
-               if(config.escapeMode === undefined) {\r
-                       config.escapeMode = true;\r
-               }\r
-               config.attributePrefix = config.attributePrefix || "_";\r
-               config.arrayAccessForm = config.arrayAccessForm || "none";\r
-               config.emptyNodeForm = config.emptyNodeForm || "text";\r
-               if(config.enableToStringFunc === undefined) {\r
-                       config.enableToStringFunc = true; \r
-               }\r
-               config.arrayAccessFormPaths = config.arrayAccessFormPaths || []; \r
-               if(config.skipEmptyTextNodesForObj === undefined) {\r
-                       config.skipEmptyTextNodesForObj = true;\r
-               }\r
-               if(config.stripWhitespaces === undefined) {\r
-                       config.stripWhitespaces = true;\r
-               }\r
-               config.datetimeAccessFormPaths = config.datetimeAccessFormPaths || [];\r
-       }\r
-\r
-       var DOMNodeTypes = {\r
-               ELEMENT_NODE       : 1,\r
-               TEXT_NODE          : 3,\r
-               CDATA_SECTION_NODE : 4,\r
-               COMMENT_NODE       : 8,\r
-               DOCUMENT_NODE      : 9\r
-       };\r
-       \r
-       function initRequiredPolyfills() {\r
-               function pad(number) {\r
-             var r = String(number);\r
-             if ( r.length === 1 ) {\r
-               r = '0' + r;\r
-             }\r
-             return r;\r
-           }\r
-               // Hello IE8-\r
-               if(typeof String.prototype.trim !== 'function') {                       \r
-                       String.prototype.trim = function() {\r
-                               return this.replace(/^\s+|^\n+|(\s|\n)+$/g, '');\r
-                       }\r
-               }\r
-               if(typeof Date.prototype.toISOString !== 'function') {\r
-                       // Implementation from http://stackoverflow.com/questions/2573521/how-do-i-output-an-iso-8601-formatted-string-in-javascript\r
-                       Date.prototype.toISOString = function() {\r
-                     return this.getUTCFullYear()\r
-                       + '-' + pad( this.getUTCMonth() + 1 )\r
-                       + '-' + pad( this.getUTCDate() )\r
-                       + 'T' + pad( this.getUTCHours() )\r
-                       + ':' + pad( this.getUTCMinutes() )\r
-                       + ':' + pad( this.getUTCSeconds() )\r
-                       + '.' + String( (this.getUTCMilliseconds()/1000).toFixed(3) ).slice( 2, 5 )\r
-                       + 'Z';\r
-                   };\r
-               }\r
-       }\r
-       \r
-       function getNodeLocalName( node ) {\r
-               var nodeLocalName = node.localName;                     \r
-               if(nodeLocalName == null) // Yeah, this is IE!! \r
-                       nodeLocalName = node.baseName;\r
-               if(nodeLocalName == null || nodeLocalName=="") // =="" is IE too\r
-                       nodeLocalName = node.nodeName;\r
-               return nodeLocalName;\r
-       }\r
-       \r
-       function getNodePrefix(node) {\r
-               return node.prefix;\r
-       }\r
-               \r
-       function escapeXmlChars(str) {\r
-               if(typeof(str) == "string")\r
-                       return str.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;').replace(/'/g, '&#x27;').replace(/\//g, '&#x2F;');\r
-               else\r
-                       return str;\r
-       }\r
-\r
-       function unescapeXmlChars(str) {\r
-               return str.replace(/&amp;/g, '&').replace(/&lt;/g, '<').replace(/&gt;/g, '>').replace(/&quot;/g, '"').replace(/&#x27;/g, "'").replace(/&#x2F;/g, '\/');\r
-       }\r
-       \r
-       function toArrayAccessForm(obj, childName, path) {\r
-               switch(config.arrayAccessForm) {\r
-               case "property":\r
-                       if(!(obj[childName] instanceof Array))\r
-                               obj[childName+"_asArray"] = [obj[childName]];\r
-                       else\r
-                               obj[childName+"_asArray"] = obj[childName];\r
-                       break;          \r
-               /*case "none":\r
-                       break;*/\r
-               }\r
-               \r
-               if(!(obj[childName] instanceof Array) && config.arrayAccessFormPaths.length > 0) {\r
-                       var idx = 0;\r
-                       for(; idx < config.arrayAccessFormPaths.length; idx++) {\r
-                               var arrayPath = config.arrayAccessFormPaths[idx];\r
-                               if( typeof arrayPath === "string" ) {\r
-                                       if(arrayPath == path)\r
-                                               break;\r
-                               }\r
-                               else\r
-                               if( arrayPath instanceof RegExp) {\r
-                                       if(arrayPath.test(path))\r
-                                               break;\r
-                               }                               \r
-                               else\r
-                               if( typeof arrayPath === "function") {\r
-                                       if(arrayPath(obj, childName, path))\r
-                                               break;\r
-                               }\r
-                       }\r
-                       if(idx!=config.arrayAccessFormPaths.length) {\r
-                               obj[childName] = [obj[childName]];\r
-                       }\r
-               }\r
-       }\r
-       \r
-       function fromXmlDateTime(prop) {\r
-               // Implementation based up on http://stackoverflow.com/questions/8178598/xml-datetime-to-javascript-date-object\r
-               // Improved to support full spec and optional parts\r
-               var bits = prop.split(/[-T:+Z]/g);\r
-               \r
-               var d = new Date(bits[0], bits[1]-1, bits[2]);                  \r
-               var secondBits = bits[5].split("\.");\r
-               d.setHours(bits[3], bits[4], secondBits[0]);\r
-               if(secondBits.length>1)\r
-                       d.setMilliseconds(secondBits[1]);\r
-\r
-               // Get supplied time zone offset in minutes\r
-               if(bits[6] && bits[7]) {\r
-                       var offsetMinutes = bits[6] * 60 + Number(bits[7]);\r
-                       var sign = /\d\d-\d\d:\d\d$/.test(prop)? '-' : '+';\r
-\r
-                       // Apply the sign\r
-                       offsetMinutes = 0 + (sign == '-'? -1 * offsetMinutes : offsetMinutes);\r
-\r
-                       // Apply offset and local timezone\r
-                       d.setMinutes(d.getMinutes() - offsetMinutes - d.getTimezoneOffset())\r
-               }\r
-               else\r
-                       if(prop.indexOf("Z", prop.length - 1) !== -1) {\r
-                               d = new Date(Date.UTC(d.getFullYear(), d.getMonth(), d.getDate(), d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds()));                                  \r
-                       }\r
-\r
-               // d is now a local time equivalent to the supplied time\r
-               return d;\r
-       }\r
-       \r
-       function checkFromXmlDateTimePaths(value, childName, fullPath) {\r
-               if(config.datetimeAccessFormPaths.length > 0) {\r
-                       var path = fullPath.split("\.#")[0];\r
-                       var idx = 0;\r
-                       for(; idx < config.datetimeAccessFormPaths.length; idx++) {\r
-                               var dtPath = config.datetimeAccessFormPaths[idx];\r
-                               if( typeof dtPath === "string" ) {\r
-                                       if(dtPath == path)\r
-                                               break;\r
-                               }\r
-                               else\r
-                               if( dtPath instanceof RegExp) {\r
-                                       if(dtPath.test(path))\r
-                                               break;\r
-                               }                               \r
-                               else\r
-                               if( typeof dtPath === "function") {\r
-                                       if(dtPath(obj, childName, path))\r
-                                               break;\r
-                               }\r
-                       }\r
-                       if(idx!=config.datetimeAccessFormPaths.length) {\r
-                               return fromXmlDateTime(value);\r
-                       }\r
-                       else\r
-                               return value;\r
-               }\r
-               else\r
-                       return value;\r
-       }\r
-\r
-       function parseDOMChildren( node, path ) {\r
-               if(node.nodeType == DOMNodeTypes.DOCUMENT_NODE) {\r
-                       var result = new Object;\r
-                       var nodeChildren = node.childNodes;\r
-                       // Alternative for firstElementChild which is not supported in some environments\r
-                       for(var cidx=0; cidx <nodeChildren.length; cidx++) {\r
-                               var child = nodeChildren.item(cidx);\r
-                               if(child.nodeType == DOMNodeTypes.ELEMENT_NODE) {\r
-                                       var childName = getNodeLocalName(child);\r
-                                       result[childName] = parseDOMChildren(child, childName);\r
-                               }\r
-                       }\r
-                       return result;\r
-               }\r
-               else\r
-               if(node.nodeType == DOMNodeTypes.ELEMENT_NODE) {\r
-                       var result = new Object;\r
-                       result.__cnt=0;\r
-                       \r
-                       var nodeChildren = node.childNodes;\r
-                       \r
-                       // Children nodes\r
-                       for(var cidx=0; cidx <nodeChildren.length; cidx++) {\r
-                               var child = nodeChildren.item(cidx); // nodeChildren[cidx];\r
-                               var childName = getNodeLocalName(child);\r
-                               \r
-                               if(child.nodeType!= DOMNodeTypes.COMMENT_NODE) {\r
-                                       result.__cnt++;\r
-                                       if(result[childName] == null) {\r
-                                               result[childName] = parseDOMChildren(child, path+"."+childName);\r
-                                               toArrayAccessForm(result, childName, path+"."+childName);                                       \r
-                                       }\r
-                                       else {\r
-                                               if(result[childName] != null) {\r
-                                                       if( !(result[childName] instanceof Array)) {\r
-                                                               result[childName] = [result[childName]];\r
-                                                               toArrayAccessForm(result, childName, path+"."+childName);\r
-                                                       }\r
-                                               }\r
-                                               (result[childName])[result[childName].length] = parseDOMChildren(child, path+"."+childName);\r
-                                       }\r
-                               }                                                               \r
-                       }\r
-                       \r
-                       // Attributes\r
-                       for(var aidx=0; aidx <node.attributes.length; aidx++) {\r
-                               var attr = node.attributes.item(aidx); // [aidx];\r
-                               result.__cnt++;\r
-                               result[config.attributePrefix+attr.name]=attr.value;\r
-                       }\r
-                       \r
-                       // Node namespace prefix\r
-                       var nodePrefix = getNodePrefix(node);\r
-                       if(nodePrefix!=null && nodePrefix!="") {\r
-                               result.__cnt++;\r
-                               result.__prefix=nodePrefix;\r
-                       }\r
-                       \r
-                       if(result["#text"]!=null) {                             \r
-                               result.__text = result["#text"];\r
-                               if(result.__text instanceof Array) {\r
-                                       result.__text = result.__text.join("\n");\r
-                               }\r
-                               if(config.escapeMode)\r
-                                       result.__text = unescapeXmlChars(result.__text);\r
-                               if(config.stripWhitespaces)\r
-                                       result.__text = result.__text.trim();\r
-                               delete result["#text"];\r
-                               if(config.arrayAccessForm=="property")\r
-                                       delete result["#text_asArray"];\r
-                               result.__text = checkFromXmlDateTimePaths(result.__text, childName, path+"."+childName);\r
-                       }\r
-                       if(result["#cdata-section"]!=null) {\r
-                               result.__cdata = result["#cdata-section"];\r
-                               delete result["#cdata-section"];\r
-                               if(config.arrayAccessForm=="property")\r
-                                       delete result["#cdata-section_asArray"];\r
-                       }\r
-                       \r
-                       if( result.__cnt == 1 && result.__text!=null  ) {\r
-                               result = result.__text;\r
-                       }\r
-                       else\r
-                       if( result.__cnt == 0 && config.emptyNodeForm=="text" ) {\r
-                               result = '';\r
-                       }\r
-                       else\r
-                       if ( result.__cnt > 1 && result.__text!=null && config.skipEmptyTextNodesForObj) {\r
-                               if( (config.stripWhitespaces && result.__text=="") || (result.__text.trim()=="")) {\r
-                                       delete result.__text;\r
-                               }\r
-                       }\r
-                       delete result.__cnt;                    \r
-                       \r
-                       if( config.enableToStringFunc && (result.__text!=null || result.__cdata!=null )) {\r
-                               result.toString = function() {\r
-                                       return (this.__text!=null? this.__text:'')+( this.__cdata!=null ? this.__cdata:'');\r
-                               };\r
-                       }\r
-                       \r
-                       return result;\r
-               }\r
-               else\r
-               if(node.nodeType == DOMNodeTypes.TEXT_NODE || node.nodeType == DOMNodeTypes.CDATA_SECTION_NODE) {\r
-                       return node.nodeValue;\r
-               }       \r
-       }\r
-       \r
-       function startTag(jsonObj, element, attrList, closed) {\r
-               var resultStr = "<"+ ( (jsonObj!=null && jsonObj.__prefix!=null)? (jsonObj.__prefix+":"):"") + element;\r
-               if(attrList!=null) {\r
-                       for(var aidx = 0; aidx < attrList.length; aidx++) {\r
-                               var attrName = attrList[aidx];\r
-                               var attrVal = jsonObj[attrName];\r
-                               if(config.escapeMode)\r
-                                       attrVal=escapeXmlChars(attrVal);\r
-                               resultStr+=" "+attrName.substr(config.attributePrefix.length)+"='"+attrVal+"'";\r
-                       }\r
-               }\r
-               if(!closed)\r
-                       resultStr+=">";\r
-               else\r
-                       resultStr+="/>";\r
-               return resultStr;\r
-       }\r
-       \r
-       function endTag(jsonObj,elementName) {\r
-               return "</"+ (jsonObj.__prefix!=null? (jsonObj.__prefix+":"):"")+elementName+">";\r
-       }\r
-       \r
-       function endsWith(str, suffix) {\r
-           return str.indexOf(suffix, str.length - suffix.length) !== -1;\r
-       }\r
-       \r
-       function jsonXmlSpecialElem ( jsonObj, jsonObjField ) {\r
-               if((config.arrayAccessForm=="property" && endsWith(jsonObjField.toString(),("_asArray"))) \r
-                               || jsonObjField.toString().indexOf(config.attributePrefix)==0 \r
-                               || jsonObjField.toString().indexOf("__")==0\r
-                               || (jsonObj[jsonObjField] instanceof Function) )\r
-                       return true;\r
-               else\r
-                       return false;\r
-       }\r
-       \r
-       function jsonXmlElemCount ( jsonObj ) {\r
-               var elementsCnt = 0;\r
-               if(jsonObj instanceof Object ) {\r
-                       for( var it in jsonObj  ) {\r
-                               if(jsonXmlSpecialElem ( jsonObj, it) )\r
-                                       continue;                       \r
-                               elementsCnt++;\r
-                       }\r
-               }\r
-               return elementsCnt;\r
-       }\r
-       \r
-       function parseJSONAttributes ( jsonObj ) {\r
-               var attrList = [];\r
-               if(jsonObj instanceof Object ) {\r
-                       for( var ait in jsonObj  ) {\r
-                               if(ait.toString().indexOf("__")== -1 && ait.toString().indexOf(config.attributePrefix)==0) {\r
-                                       attrList.push(ait);\r
-                               }\r
-                       }\r
-               }\r
-               return attrList;\r
-       }\r
-       \r
-       function parseJSONTextAttrs ( jsonTxtObj ) {\r
-               var result ="";\r
-               \r
-               if(jsonTxtObj.__cdata!=null) {                                                                          \r
-                       result+="<![CDATA["+jsonTxtObj.__cdata+"]]>";                                   \r
-               }\r
-               \r
-               if(jsonTxtObj.__text!=null) {                   \r
-                       if(config.escapeMode)\r
-                               result+=escapeXmlChars(jsonTxtObj.__text);\r
-                       else\r
-                               result+=jsonTxtObj.__text;\r
-               }\r
-               return result;\r
-       }\r
-       \r
-       function parseJSONTextObject ( jsonTxtObj ) {\r
-               var result ="";\r
-\r
-               if( jsonTxtObj instanceof Object ) {\r
-                       result+=parseJSONTextAttrs ( jsonTxtObj );\r
-               }\r
-               else\r
-                       if(jsonTxtObj!=null) {\r
-                               if(config.escapeMode)\r
-                                       result+=escapeXmlChars(jsonTxtObj);\r
-                               else\r
-                                       result+=jsonTxtObj;\r
-                       }\r
-               \r
-               return result;\r
-       }\r
-       \r
-       function parseJSONArray ( jsonArrRoot, jsonArrObj, attrList ) {\r
-               var result = ""; \r
-               if(jsonArrRoot.length == 0) {\r
-                       result+=startTag(jsonArrRoot, jsonArrObj, attrList, true);\r
-               }\r
-               else {\r
-                       for(var arIdx = 0; arIdx < jsonArrRoot.length; arIdx++) {\r
-                               result+=startTag(jsonArrRoot[arIdx], jsonArrObj, parseJSONAttributes(jsonArrRoot[arIdx]), false);\r
-                               result+=parseJSONObject(jsonArrRoot[arIdx]);\r
-                               result+=endTag(jsonArrRoot[arIdx],jsonArrObj);                                          \r
-                       }\r
-               }\r
-               return result;\r
-       }\r
-       \r
-       function parseJSONObject ( jsonObj ) {\r
-               var result = "";        \r
-\r
-               var elementsCnt = jsonXmlElemCount ( jsonObj );\r
-               \r
-               if(elementsCnt > 0) {\r
-                       for( var it in jsonObj ) {\r
-                               \r
-                               if(jsonXmlSpecialElem ( jsonObj, it) )\r
-                                       continue;                       \r
-                               \r
-                               var subObj = jsonObj[it];                                               \r
-                               \r
-                               var attrList = parseJSONAttributes( subObj )\r
-                               \r
-                               if(subObj == null || subObj == undefined) {\r
-                                       result+=startTag(subObj, it, attrList, true);\r
-                               }\r
-                               else\r
-                               if(subObj instanceof Object) {\r
-                                       \r
-                                       if(subObj instanceof Array) {                                   \r
-                                               result+=parseJSONArray( subObj, it, attrList );                                 \r
-                                       }\r
-                                       else if(subObj instanceof Date) {\r
-                                               result+=startTag(subObj, it, attrList, false);\r
-                                               result+=subObj.toISOString();\r
-                                               result+=endTag(subObj,it);\r
-                                       }\r
-                                       else {\r
-                                               var subObjElementsCnt = jsonXmlElemCount ( subObj );\r
-                                               if(subObjElementsCnt > 0 || subObj.__text!=null || subObj.__cdata!=null) {\r
-                                                       result+=startTag(subObj, it, attrList, false);\r
-                                                       result+=parseJSONObject(subObj);\r
-                                                       result+=endTag(subObj,it);\r
-                                               }\r
-                                               else {\r
-                                                       result+=startTag(subObj, it, attrList, true);\r
-                                               }\r
-                                       }\r
-                               }\r
-                               else {\r
-                                       result+=startTag(subObj, it, attrList, false);\r
-                                       result+=parseJSONTextObject(subObj);\r
-                                       result+=endTag(subObj,it);\r
-                               }\r
-                       }\r
-               }\r
-               result+=parseJSONTextObject(jsonObj);\r
-               \r
-               return result;\r
-       }\r
-       \r
-       this.parseXmlString = function(xmlDocStr) {\r
-               var isIEParser = window.ActiveXObject || "ActiveXObject" in window;\r
-               if (xmlDocStr === undefined) {\r
-                       return null;\r
-               }\r
-               var xmlDoc;\r
-               if (window.DOMParser) {\r
-                       var parser=new window.DOMParser();                      \r
-                       var parsererrorNS = null;\r
-                       // IE9+ now is here\r
-                       if(!isIEParser) {\r
-                               try {\r
-                                       parsererrorNS = parser.parseFromString("INVALID", "text/xml").childNodes[0].namespaceURI;\r
-                               }\r
-                               catch(err) {                                    \r
-                                       parsererrorNS = null;\r
-                               }\r
-                       }\r
-                       try {\r
-                               xmlDoc = parser.parseFromString( xmlDocStr, "text/xml" );\r
-                               if( parsererrorNS!= null && xmlDoc.getElementsByTagNameNS(parsererrorNS, "parsererror").length > 0) {\r
-                                       //throw new Error('Error parsing XML: '+xmlDocStr);\r
-                                       xmlDoc = null;\r
-                               }\r
-                       }\r
-                       catch(err) {\r
-                               xmlDoc = null;\r
-                       }\r
-               }\r
-               else {\r
-                       // IE :(\r
-                       if(xmlDocStr.indexOf("<?")==0) {\r
-                               xmlDocStr = xmlDocStr.substr( xmlDocStr.indexOf("?>") + 2 );\r
-                       }\r
-                       xmlDoc=new ActiveXObject("Microsoft.XMLDOM");\r
-                       xmlDoc.async="false";\r
-                       xmlDoc.loadXML(xmlDocStr);\r
-               }\r
-               return xmlDoc;\r
-       };\r
-       \r
-       this.asArray = function(prop) {\r
-               if(prop instanceof Array)\r
-                       return prop;\r
-               else\r
-                       return [prop];\r
-       };\r
-       \r
-       this.toXmlDateTime = function(dt) {\r
-               if(dt instanceof Date)\r
-                       return dt.toISOString();\r
-               else\r
-               if(typeof(dt) === 'number' )\r
-                       return new Date(dt).toISOString();\r
-               else    \r
-                       return null;\r
-       };\r
-       \r
-       this.asDateTime = function(prop) {\r
-               if(typeof(prop) == "string") {\r
-                       return fromXmlDateTime(prop);\r
-               }\r
-               else\r
-                       return prop;\r
-       };\r
-\r
-       this.xml2json = function (xmlDoc) {\r
-               return parseDOMChildren ( xmlDoc );\r
-       };\r
-       \r
-       this.xml_str2json = function (xmlDocStr) {\r
-               var xmlDoc = this.parseXmlString(xmlDocStr);\r
-               if(xmlDoc!=null)\r
-                       return this.xml2json(xmlDoc);\r
-               else\r
-                       return null;\r
-       };\r
-\r
-       this.json2xml_str = function (jsonObj) {\r
-               return parseJSONObject ( jsonObj );\r
-       };\r
-\r
-       this.json2xml = function (jsonObj) {\r
-               var xmlDocStr = this.json2xml_str (jsonObj);\r
-               return this.parseXmlString(xmlDocStr);\r
-       };\r
-       \r
-       this.getVersion = function () {\r
-               return VERSION;\r
-       };\r
-       \r
-}\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnEvents/pom.xml
deleted file mode 100644 (file)
index e898be3..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
-  <relativePath>..</relativePath>
- </parent>
-
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>mwtnEvents</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>mwtnEvents-module</module>
-  <module>mwtnEvents-bundle</module>
- </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-bundle/pom.xml
deleted file mode 100644 (file)
index bceb908..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnFault</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnFault-bundle</artifactId>
- <packaging>bundle</packaging>
- <name>${prefix} ${project.artifactId}</name>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnFault-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnFault-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 2f89a41..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnFault"/>
-        <property name="url" value="/src/app/mwtnFault"/>
-        <property name="directory" value="/mwtnFault"/>
-        <property name="requireJs" value="app/mwtnFault/mwtnFault.module"/>
-        <property name="angularJs" value="app.mwtnFault"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnFault/mwtnFault-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/pom.xml
deleted file mode 100644 (file)
index f0d7215..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnFault</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnFault-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/images/mwtnFault.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/images/mwtnFault.png
deleted file mode 100755 (executable)
index 47bfc70..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/images/mwtnFault.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault-custom.css
deleted file mode 100644 (file)
index 7e959b1..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/**
- *  Add your application related css here
- */
-.global-alarm-status {
-  float: left;
-  margin: 5px;
-  margin-left: 8px;
-}
-
-.global-alarm-status a {
-  color:azure; 
-  text-decoration: none;
-}
-
-.global-alarm-status a:visited {
-  color:azure; 
-   text-decoration: none;
-}
-
-.global-alarm-status a:hover {
-  color:bisque; 
-}
-s
-.mwtn span {
-  color: white;
-}
-.mwtn a span {
-  color: white;
-}
-.Critical {
-  color: red;
-}
-.Major {
-  color: orange;
-}
-.Minor {
-  color: yellow;
-}
-.Warning {
-  color: #428bca;
-}
-.cleared {
-  color: lightgreen;
-}
-
-.mwtnFaultGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.mwtnFaultGrid span {
-  color: #393939;
-}
-.ht-pagination span {
-  color: #393939;
-}
-.ht-pagination span.dark {
-  color: #393939;
-}
-.dark {
-  color: #393939;
-}
-
-
-
-.mwtnFaultGrid div.debug {
-  color: #393939;
-  background-color: white;
-}
-.mwtnFaultGrid div.error {
-  color: #ff0000;
-  background-color: #ffeeee;
-  font-weight: bold;
-}
-
-.mwtnFaultGrid div.info {
-  color: #3276b1;
-  background-color: #eeeeff;
-}
-
-.mwtnFaultGrid div.warning {
-  color: #ffa500;
-  background-color: #ffeedd;
-}
-
-.rotated {
-    transform: rotate(180deg);
-    -webkit-transform: rotate(180deg);
-    -ms-transform: rotate(180deg);
-    -moz-transform: rotate(180deg);
-    -o-transform: rotate(180deg);
-}
-
-h3.modal-title {
-  color: #393939;
-}
-
-.modal-body span {
-  color: #393939;
-} 
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.controller.js
deleted file mode 100644 (file)
index d29d547..0000000
+++ /dev/null
@@ -1,597 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnFault/mwtnFault.module',
-        'app/mwtnFault/mwtnFault.services',
-        'app/mwtnFault/mwtnFault.directives'], 
-        function(mwtnFaultApp) {
-    
-  mwtnFaultApp.register.controller('mwtnFaultCtrl', ['uiGridConstants', '$uibModal', '$scope', '$rootScope', '$window', '$timeout', '$mwtnFault', '$mwtnLog', '$http',
-                                                 function(uiGridConstants, $uibModal, $scope, $rootScope, $window, $timeout, $mwtnFault,  $mwtnLog, $http) {
-
-                                                    
-    var COMPONENT = 'mwtnFaultCtrl';
-    $mwtnLog.info({component: COMPONENT, message: 'mwtnFaultCtrl started!'});
-    
-    $rootScope.section_logo = 'src/app/mwtnFault/images/mwtnFault.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-    $scope.date = new Date().toISOString().toHumanReadableTimeFormat();
-    $scope.highlightFilteredHeader = $mwtnFault.highlightFilteredHeader;
-    $scope.oneATime = true;
-    
-    // var rowTemplate = '<div ng-click="grid.appScope.fnOne(row)" ng-repeat="col in colContainer.renderedColumns track by col.colDef.name" ng-class="[\'ui-grid-cell\', row.entity.type]" ui-grid-cell></div>';
-    var iconCell = '<div class="ui-grid-cell-contents tooltip-uigrid" title="TOOLTIP"><i class="fa {{COL_FIELD}}" aria-hidden="true"></i></div>';
-    var getIconFromSeverity = function(severity) {
-      var mapping = {
-        Cleared : '',
-        NonAlarmed : '',
-        Critical : 'fa-exclamation-triangle',
-        Major : 'fa-exclamation-triangle',
-        Minor : 'fa-exclamation-triangle',
-        Warning : 'fa-times-circle'
-      };
-      return mapping[severity];
-    };
-    
-    // Current Problem List
-    $scope.gridOptionsCurrentProblemList = JSON.parse(JSON.stringify($mwtnFault.gridOptions));
-    $scope.gridOptionsCurrentProblemList.columnDefs = [
-     // { field: 'id', type: 'number', displayName: 'No.',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true },
-     { field: 'icon',  type: 'string', displayName: '',  headerCellClass: $scope.highlightFilteredHeader, width: 25, enableSorting: false, enableFiltering:false, cellTemplate: iconCell },
-     { field: 'timestamp',  type: 'string', displayName: 'Timestamp',  headerCellClass: $scope.highlightFilteredHeader, width : 200, sort: {
-       direction: uiGridConstants.DESC,
-       priority: 1
-     } },
-     { field: 'node',  type: 'string', displayName: 'Node name',  headerCellClass: $scope.highlightFilteredHeader, width: 200 },
-     { field: 'counter',  type: 'number', displayName: 'Counter',  headerCellClass: $scope.highlightFilteredHeader, width: 70, cellClass: 'number' },
-     { field: 'object',  type: 'string', displayName: 'Object Id',  headerCellClass: $scope.highlightFilteredHeader, width: 300 },
-     { field: 'problem',  type: 'string', displayName: 'Alarm type',  headerCellClass: $scope.highlightFilteredHeader, width : 200 },
-     { field: 'severity',  type: 'string', displayName: 'Severity',  headerCellClass: $scope.highlightFilteredHeader, width : 150 }
-     
-   ];
-    
-    var processCurrentProblemEntries = function(logEntries) {
-      if (logEntries.data.hits.hits) {
-        $scope.gridOptionsCurrentProblemList.data = logEntries.data.hits.hits.map(function(entry){
-          return {
-              id: entry._id,
-              icon: getIconFromSeverity(entry._source.faultCurrent.severity),
-              timestamp: $mwtnFault.formatTimeStamp(entry._source.faultCurrent.timeStamp),
-              node: entry._source.faultCurrent.nodeName,
-              counter: entry._source.faultCurrent.counter,
-              object: entry._source.faultCurrent.objectId,
-              problem: entry._source.faultCurrent.problem,
-              severity: entry._source.faultCurrent.severity,
-          };
-        });
-        $scope.progress.max = logEntries.data.hits.total;         
-        $scope.progress.value = $scope.gridOptionsCurrentProblemList.data.length;         
-        $scope.progress.show = $scope.gridOptionsCurrentProblemList.data.length < logEntries.data.hits.total;
-      }
-    };
-    
-    $scope.refreshCurrentProblemList = function() {
-      // $scope.gridOptionsCurrentProblemList.data = [];
-      var from = 0;
-      var size = 10000;
-      $scope.processing = true;
-      $mwtnFault.getAllCurrentProblemEntries(from, size).then(function(logEntries){
-        $scope.processing = false;
-        $scope.spinner.currentProblemList = false;
-        processCurrentProblemEntries(logEntries);
-        from = from + size;
-        while (from < $scope.progress.max) {
-          $mwtnFault.getAllCurrentProblemEntries(from, size).then(function(logEntries){
-            processCurrentProblemEntries(logEntries);
-          }, function(error){
-            console.error(JSON.stringify(error));
-          });
-          from = from + size;
-        }
-      }, function(error){
-        $scope.processing = false;
-        $scope.spinner.currentProblemList = false;
-        console.error(JSON.stringify(error));
-      });      
-    };
-
-    // Alarm Notifications
-    $scope.gridOptionsAlarmNotifications = JSON.parse(JSON.stringify($mwtnFault.gridOptions));
-    $scope.gridOptionsAlarmNotifications.columnDefs = [
-      // { field: 'id', type: 'number', displayName: 'No.',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true },
-      { field: 'icon',  type: 'string', displayName: '',  headerCellClass: $scope.highlightFilteredHeader, width: 25, enableSorting: false, enableFiltering:false, cellTemplate: iconCell },
-      { field: 'timeStamp',  type: 'string', displayName: 'Timestamp',  headerCellClass: $scope.highlightFilteredHeader, width : 200,sort: {
-        direction: uiGridConstants.DESC,
-        priority: 1
-      } },
-      { field: 'counter',  type: 'number', displayName: 'Counter',  headerCellClass: $scope.highlightFilteredHeader, width: 90 },
-      { field: 'nodeName',  type: 'string', displayName: 'NetworkElement',  headerCellClass: $scope.highlightFilteredHeader, width: 170 },
-      { field: 'objectId',  type: 'string', displayName: 'Object',  headerCellClass: $scope.highlightFilteredHeader, width: 400 },
-
-      { field: 'problem',  type: 'string', displayName: 'Alarm',  headerCellClass: $scope.highlightFilteredHeader, width : 140 },
-      { field: 'severity',  type: 'string', displayName: 'Severity',  headerCellClass: $scope.highlightFilteredHeader, width : 100 }
-    ];
-    var listenToNotifications = function() {
-      $mwtnFault.getMwtnWebSocketUrl().then(function(success){
-        try {
-          var notificationSocket = new WebSocket(success);
-
-          notificationSocket.onmessage = function(event) {
-            // we process our received event here
-            if (typeof event.data === 'string') {
-              // console.log("Client Received:\n" + event.data);
-              // console.log("---------------------------");
-              $mwtnFault.formatData(event).then(function(formated) {
-                switch (formated.notifType) {
-                case 'ProblemNotification':
-                  formated.icon = getIconFromSeverity(formated.severity);
-                  $scope.gridOptionsAlarmNotifications.data.push(formated);
-                  $timeout(function(){$scope.refreshCurrentProblemList();}, 500);
-                  break;
-                case 'AttributeValueChangedNotification':
-                case 'ObjectCreationNotification':
-                case 'ObjectDeletionNotification':
-                  // ignore
-                  break;
-                default:
-                  console.error('Missing implementation for', formated.notifType);
-                }
-              }, function(error) {
-                // do nothing
-              });
-            }
-          };
-
-          notificationSocket.onerror = function(error) {
-            console.log("Socket error: " + error);
-          };
-
-          notificationSocket.onopen = function(event) {
-            console.log("Socket connection opened.");
-
-            function subscribe() {
-              if (notificationSocket.readyState === notificationSocket.OPEN) {
-                var data = {
-                  'data' : 'scopes',
-                  'scopes' : [ "ProblemNotification" ]
-                };
-                notificationSocket.send(JSON.stringify(data));
-              }
-            }
-            subscribe();
-          };
-
-          notificationSocket.onclose = function(event) {
-            console.log("Socket connection closed.");
-          };
-        } catch (e) {
-          console.error("Error when creating WebSocket.\n" + e);
-        }
-      }, function(error){
-        console.error("Error when creating WebSocket.\n" + error);
-      });
-    };
-    listenToNotifications();
-    
-    // Alarm Log
-   // $scope.gridOptionsAlarmLog = JSON.parse(JSON.stringify($mwtnFault.gridOptions));
-
-  $scope.paginationOptions = {
-    pageNumber: 1,
-    pageSize: 25,
-    sort: null
-  };
-
-  $scope.gridOptionsAlarmLog = {
-    paginationPageSizes: [25, 100, 1000, 10000],
-    paginationPageSize: 25,
-    useExternalPagination: true,
-    useExternalSorting: true,
-    enablePaginationControls: false,
-    enableFiltering: true,
-    useExternalFiltering: true,
-    columnDefs : [
-       // { field: 'id', type: 'number', displayName: 'No.',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true },
-       { field: 'icon',  type: 'string', displayName: '',  headerCellClass: $scope.highlightFilteredHeader, width: 25, enableSorting: false, enableFiltering:false, cellTemplate: iconCell },
-       { field: 'timestamp',  type: 'string', displayName: 'Timestamp',  headerCellClass: $scope.highlightFilteredHeader, width : 200, sort: {
-       direction: uiGridConstants.DESC,
-       priority: 1
-       } },
-       { field: 'node',  type: 'string', displayName: 'Node name',  headerCellClass: $scope.highlightFilteredHeader, width: 200 },
-       { field: 'counter',  type: 'number', displayName: 'Counter',  headerCellClass: $scope.highlightFilteredHeader, width: 70, cellClass: 'number' },
-       { field: 'object',  type: 'string', displayName: 'Object Id',  headerCellClass: $scope.highlightFilteredHeader, width: 300 },
-       { field: 'problem',  type: 'string', displayName: 'Alarm type',  headerCellClass: $scope.highlightFilteredHeader, width : 200 },
-       { field: 'severity',  type: 'string', displayName: 'Severity',  headerCellClass: $scope.highlightFilteredHeader, width : 150 }
-    ],
-    data: 'data',
-    onRegisterApi: function(gridApi) {
-      $scope.gridApi = gridApi;
-      $scope.gridApi.core.on.filterChanged( $scope, $scope.filter);
-      $scope.gridApi.core.on.sortChanged( $scope, $scope.sortChanged );
-      $scope.sortChanged($scope.gridApi.grid, [ $scope.gridOptionsAlarmLog.columnDefs[1] ] );
-
-      $scope.gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-        $scope.paginationOptions.pageNumber = newPage;
-        $scope.paginationOptions.pageSize = pageSize;
-        getPage();
-      });
-    }
-};
-
- //stateobject
- $scope.state={};
- $scope.state.filter=false;
- $scope.state.sort=false;
- $scope.state.lastfilter=null;
- $scope.state.lastSort=null;
-
- $scope.maxCount=0; //value shown on screen
-
- $scope.seekPage= function(page){
-   if(!page){ //catch NaN values
-     page=1;
-     return;
-   }
-     $scope.gridApi.pagination.seek(parseInt(page));
- };
-
- $scope.paginationStatusMessage = function() {
-   
-   var startnum=($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize+1;
-   var pagenednum=($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize+1+$scope.data.length;
-   if(pagenednum>$scope.gridOptionsAlarmLog.totalItems) pagenednum=pagenednum-1; //reduce by initial added 1
-   
-   if($scope.state.filter){
-     var filterTpl = 'Showing {0} to {1} of {2} items (filtered from {3} total items)';
-     return filterTpl.format(startnum, pagenednum, $scope.gridOptionsAlarmLog.totalItems, $scope.maxCount);
-
-   } else {
-     var defaultTpl = 'Showing {0} to {1} of {2} total items';
-     return defaultTpl.format( startnum, pagenednum, $scope.maxCount);
-   }
- };
-
-//list visible on screen
- $scope.data = [];
-
- var getPage = function() {
-    //from, how many, sort, filter
-    getData(($scope.gridOptionsAlarmLog.paginationCurrentPage-1)*$scope.paginationOptions.pageSize, $scope.paginationOptions.pageSize,$scope.state.lastSort,$scope.state.lastfilter)
-    .then(function (data) {
-      $scope.gridOptionsAlarmLog.totalItems = data.data.hits.total;
-      processResponseRecreateList(data);
-    });
-  };
-
-  //filter 
-  $scope.filter = function()
-  {
-     var grid = this.grid;
-     var columns=[];
-
-     //get all columns where data was typed in
-     angular.forEach(grid.columns, function(value, key) {
-        if(value.filters[0].term) {
-             var col=findColumn(value.displayName);
-             if(col==="fault.timeStamp"){
-                //convert timestamp to db format
-                var timestamp= $mwtnFault.TimeStampToONFFormat(value.filters[0].term);
-                columns.push({ column: col ,value: timestamp });
-             }
-             else
-                columns.push({ column: col ,value: value.filters[0].term }); //create column object
-          }
-    });
-
-  if(columns.length === 0){ //all filter data cleared away
-      $scope.state.filter=false;
-      $scope.state.lastfilter=null;
-
-      //get unfiltered data
-      getData(($scope.gridOptionsAlarmLog.paginationCurrentPage-1)*$scope.paginationOptions.pageSize,$scope.paginationOptions.pageSize,$scope.state.lastSort,$scope.state.lastfilter).then(function(response) {
-        if (response.data.hits.hits) { 
-               processResponseRecreateList(response);
-              
-            }
-         });
-     
-  }else{
-      //base filter string
-      var filter={"query":{"bool":{"must":[]}}};
-
-      //create filter objects
-      var prefixs=[];
-      for(var obj of columns){
-           var prefixObj={};
-           prefixObj[obj.column]=obj.value;//add  like: {column: "fault.counter", value: "1"} => {"fault.counter":1}
-           prefixs.push({prefix:prefixObj}); // => {"prefix":{...}}
-      }
-
-     //add objects to must property
-     filter.query.bool.must=prefixs;
-    
-    //save filter
-    $scope.state.lastfilter=filter;
-    $scope.state.filter=true;
-     
-    //send data to sdnevents/faultlog/_search
-    getData(($scope.gridOptionsAlarmLog.paginationCurrentPage-1)*$scope.paginationOptions.pageSize,$scope.paginationOptions.pageSize,$scope.state.lastSort,$scope.state.lastfilter).then(function(response) {
-        if (response.data.hits.total>0) { //only, when hits exist
-                processResponseRecreateList(response);
-                $scope.gridOptionsAlarmLog.totalItems = response.data.hits.total;
-        }else{
-               //clear data from list
-                $scope.data=[];
-                 $scope.gridOptionsAlarmLog.totalItems =0;
-                $scope.state.filter=false;
-                $scope.state.lastfilter=null;
-        }
-      });
-  }
-};
-
-  //sort
-
-  $scope.sortChanged=function(grid, sortColumns){    // sortColumns is an array containing just the column sorted in the grid
-
-
-          if(sortColumns.length>0){
-              if(sortColumns[0].sort){
-                var name = sortColumns[0].displayName; // the name of the column sorted
-                var direction = sortColumns[0].sort.direction; // the direction of the column sorted: "desc" or "asc"
-                sort(direction,findColumn(name));
-              }
-          }else{
-              $scope.state.sort=false;
-              $scope.state.lastSort=null;
-
-              //get unsorted data
-              getData(($scope.gridOptionsAlarmLog.paginationCurrentPage-1)*$scope.paginationOptions.pageSize,$scope.paginationOptions.pageSize,$scope.state.lastSort,$scope.state.lastfilter).then(function(response) {
-              if (response.data.hits.hits) { 
-                    processResponseRecreateList(response);
-                }
-              });
-          }
-  };
-
-  function sort(direction, columnName){
-
-    var sortObj={};
-    var sort = [ sortObj];
-    switch(direction) {
-        case uiGridConstants.ASC:
-             
-             //create sort object
-             sortObj[columnName]={order : 'asc'};
-             sort = [ sortObj];
-             //save last sort
-             $scope.state.lastSort=sort;
-
-             getData(($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize,$scope.paginationOptions.pageSize,$scope.state.lastSort,$scope.state.lastfilter).then(function(response) {
-                if (response.data.hits.hits) {
-                    processResponseRecreateList(response);
-                    $scope.state.sort=true;
-                }
-              });
-
-          break;
-
-        case uiGridConstants.DESC:
-           
-             sortObj[columnName]={order : 'desc'};
-             sort = [ sortObj];
-             $scope.state.lastSort=sort;
-
-             getData(($scope.paginationOptions.pageNumber-1)*$scope.paginationOptions.pageSize,$scope.paginationOptions.pageSize,$scope.state.lastSort,$scope.state.lastfilter).then(function(response) {
-                 if (response.data.hits.hits) {
-                      processResponseRecreateList(response);
-                       $scope.state.sort=true;
-                   }
-              });
-          break;
-
-        case undefined:
-          
-            $scope.state.sort=false;
-            $scope.state.lastSort=null;
-
-            getData(($scope.gridOptionsAlarmLog.paginationCurrentPage-1)*$scope.paginationOptions.pageSize,$scope.paginationOptions.pageSize,$scope.state.lastSort,$scope.state.lastfilter)
-           .then(function(response) {
-                if (response.data.hits.hits) {
-                     processResponseRecreateList(response);
-               }
-            });
-
-          break;
-    }
-  }
-
-  var findColumn = function(name) {
-
-    if(name==="Timestamp"){ return "fault.timeStamp"; }
-    else if(name==="Node name"){ return "fault.nodeName"; }
-    else if(name==="Counter"){ return "fault.counter"; }
-    else if(name==="Object Id"){ return "fault.objectId"; }
-    else if(name==="Alarm type"){return "fault.problem"; }
-    else if(name==="Severity"){ return "fault.severity"; }
-
-  };
-
-  var getData = function(from, size, sort, query){
-    if(sort === null){ //default sort value
-      sort = [ { "fault.timeStamp" : {order : 'desc'}}];
-    }
-    if(query === null){ //default filter value
-      query= {match_all: {}};
-    }
-    return $mwtnFault.getFilteredSortedData(from, size, sort, query);
-  };
-
-  var processResponseAddToList=function(response) {
-        if (response.data.hits.hits) {
-                                               response.data.hits.hits.map(function(entry){
-            var log = {
-              id: entry._id,
-              icon: getIconFromSeverity(entry._source.fault.severity),
-              timestamp: $mwtnFault.formatTimeStamp(entry._source.fault.timeStamp),
-              node: entry._source.fault.nodeName,
-              counter: entry._source.fault.counter,
-              object: entry._source.fault.objectId,
-              problem: entry._source.fault.problem,
-              severity: entry._source.fault.severity,
-          };
-
-         $scope.data.push(log);
-        });
-
-          $scope.gridOptionsAlarmLog.totalItems = response.data.hits.total; // needed by ui-grid to calculate page number, always update!
-          if($scope.maxCount<response.data.hits.total){
-            $scope.maxCount=response.data.hits.total; //only if total is higher (can be lower due to eg filtering)
-          }
-   }};
-
- function processResponseRecreateList(response){
-            var list=[];
-                                               response.data.hits.hits.map(function(entry){
-            var log = {
-              id: entry._id,
-              icon: getIconFromSeverity(entry._source.fault.severity),
-              timestamp: $mwtnFault.formatTimeStamp(entry._source.fault.timeStamp),
-              node: entry._source.fault.nodeName,
-              counter: entry._source.fault.counter,
-              object: entry._source.fault.objectId,
-              problem: entry._source.fault.problem,
-              severity: entry._source.fault.severity,
-          };
-
-         list.push(log);
-        });
-      $scope.data=list;
-      $scope.gridOptionsAlarmLog.totalItems = response.data.hits.total; // needed by ui-grid to calculate page number, always update!
-       if($scope.maxCount<response.data.hits.total){
-            $scope.maxCount=response.data.hits.total; //only if total is higher (can be lower due to eg filtering)
-          }
-    }
-
-    $scope.refreshLog = function() {
-     
-      var from =  ($scope.gridOptionsAlarmLog.paginationCurrentPage-1)*$scope.paginationOptions.pageSize;
-      var size = $scope.paginationOptions.pageSize;
-      $scope.processing = true;
-      getData(from, size,$scope.state.lastSort,$scope.state.lastfilter).then(function(logEntries){
-        $scope.processing = false;
-        $scope.spinner.alarmLog = false;
-        processResponseRecreateList(logEntries);
-        
-      }, function(error){
-        $scope.processing = false;
-        $scope.spinner.alarmLog = false;
-        console.error(JSON.stringify(error));
-      });      
-    };
-
-    // [sko] TODO check from here on 
-    $scope.progress = {
-        show: true
-    };
-    
-    $scope.clearLog = function () {
-
-      var modalInstance = $uibModal.open({
-        animation: true,
-        ariaLabelledBy: 'modal-title',
-        ariaDescribedBy: 'modal-body',
-        templateUrl: 'src/app/mwtnFault/templates/clearLogConfirmation.tpl.html',
-        controller: 'ClearFaultLogCtrl',
-        size: 'lg',
-        resolve: {
-          now: function () {
-            var onfDateAndTime = new Date().toISOString().replace(/-/g, '').replace(/T/g, '').replace(/:/g, '').substring(0,16) + 'Z';
-            return {timestamp: onfDateAndTime};
-          }
-        }
-      });
-
-      modalInstance.result.then(function (now) {
-        var spec = {
-          functionId : 'sdnevents',
-          docType : 'faultlog',
-          query: {
-            match_all: {}
-          }
-        };
-        $mwtnFault.deleteDocType(spec).then(function(deleted){
-          //set all to 'null' (empty)
-          $scope.data = [];
-          $scope.maxCount=0;
-          $scope.gridOptionsAlarmLog.totalItems=0;
-
-          $timeout( function() { $scope.refreshLog(); getPage(); }, 1000);
-
-          $mwtnLog.info({component: COMPONENT, message: 'Fault log cleared!'});
-        }, function(error){
-          $mwtnLog.error({component: COMPONENT, message:JSON.stringify(error)});
-        });
-      }, function () {
-        $mwtnLog.info({component: COMPONENT, message: 'Clear fault log dismissed!'});
-      });
-    };    
-
-    
-    // UI events 
-    $scope.status = {currentProblemList: true};
-    $scope.spinner = {currentProblemList: false};
-    $scope.$watch('status', function(status, oldValue) {
-      Object.keys(status).map(function(key){
-        if (status[key] !== oldValue[key]) {
-          $scope.spinner[key] = status[key];
-          
-          switch (key) {
-          case 'currentProblemList':
-            if (status[key]) {
-              $scope.refreshCurrentProblemList();
-            }
-            break;
-          case 'alarmNotifications':
-            $scope.spinner[key] = false;
-            break;
-          case 'alarmLog':
-            $scope.refreshLog();
-            break;
-          default:
-            $mwtnLog.error({component: COMPONENT, message: key + ' is not implemented!'});
-          }
-        }
-      });   
-    }, true);
-
-    // init
-    $scope.refreshCurrentProblemList();
-
-     getPage();
-
-  }]);
-
-  mwtnFaultApp.register.controller('ClearFaultLogCtrl', ['$scope', '$uibModalInstance', '$mwtnFault', 'now',
-                                                    function ($scope, $uibModalInstance, $mwtnFault, now) {
-
-    $scope.now = $mwtnFault.formatTimeStamp(now.timestamp);
-    $scope.processing = false;
-
-    $scope.ok = function () {
-      $uibModalInstance.close(now);
-      $scope.processing = true;
-    };
-
-    $scope.cancel = function () {
-      $uibModalInstance.dismiss();
-    };
-  }]);
-    
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.directives.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.directives.js
deleted file mode 100644 (file)
index ef1c389..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define([ 'app/mwtnCommons/mwtnCommons.module'], function(mwtnCommonsApp) {
-  mwtnCommonsApp.register.directive('alarmStatus', function() {
-    return {
-      restrict : 'E',
-      templateUrl : 'src/app/mwtnFault/templates/alarmStatus.tpl.html',
-      controller :  ['$scope', '$mwtnCommons', '$mwtnDatabase', '$timeout', function($scope, $mwtnCommons, $mwtnDatabase, $timeout){
-        
-        $scope.link = '#/pnfFault/';
-          
-        $scope.nodeCount = 0;
-          
-        $scope.alarmStatus = {
-            Critical:0,
-            Major:0,
-            Minor:0,
-            Warning:0,
-        };
-        
-        $scope.getAlarmStatusSum = function(){
-          var sum = 0;
-          Object.keys($scope.alarmStatus).map(function(severity) {
-            sum = sum + $scope.alarmStatus[severity];
-          });
-          return sum;
-        };
-
-        // Update: request the number of alarms in current alarm list per severity
-        var update = function() {
-          $mwtnCommons.getMountPoints().then(function(mountpoints) {
-            $scope.nodeCount = mountpoints.filter(function(mountpoint) {
-              return mountpoint['netconf-node-topology:connection-status'] === 'connected';
-            }).length;
-          });
-          var functionId = 'sdnevents';
-          var docType = 'faultcurrent';
-          var aggregations = {
-            "size":0,
-            "aggregations": {
-              "severity": {
-                "terms": {
-                  "field": "faultCurrent.severity"
-                }
-              }
-            }
-          };
-          $mwtnDatabase.getAggregations(functionId, docType, aggregations).then(function (success) {
-            var found = success.data.aggregations['severity'].buckets.map(function(bucket){
-              $scope.alarmStatus[bucket.key] = bucket.doc_count;
-              return bucket.key;
-            });
-            Object.keys($scope.alarmStatus).map(function(key){
-              if (!found.contains(key)) {
-                $scope.alarmStatus[key] = 0;
-              }
-            });
-          }, function (error) {
-            console.error(error);
-            $scope.alarmStatus = {
-                Critical:0,
-                Major:0,
-                Minor:0,
-                Warning:0,
-            };
-          });
-
-
-          // Object.keys($scope.alarmStatus).map(function(severity) {
-          //   // usage of the ElasticSearch Count API
-          //   $mwtnDatabase.getBase('sdnevents').then(function(success) {
-          //     var databaseRequest = {
-          //       base : success.base,
-          //       method : 'POST',
-          //       command: '_count',
-          //       index: success.index,
-          //       docType: 'faultcurrent',
-          //       query: {
-          //         match: {
-          //           'faultCurrent.severity': severity
-          //         }
-          //       }
-          //     };
-          //     $mwtnDatabase.genericRequest(databaseRequest).then(function(success){
-          //       $scope.alarmStatus[severity] = success.data.count;
-          //     }, function(error){
-          //       console.error('severity', severity, error);
-          //     });
-          //   }, function(error) {
-          //     console.error('severity', severity, error);
-          //   });
-          // });
-        };
-        update();
-        
-        var listenToNotifications = function() {
-          $mwtnCommons.getMwtnWebSocketUrl().then(function(success){
-            try {
-              var notificationSocket = new WebSocket(success);
-
-              notificationSocket.onmessage = function(event) {
-                // we process our received event here
-                if (typeof event.data === 'string') {
-                  // console.log('Client Received:\n', event.data);
-                  $mwtnCommons.formatData(event).then(function(formated) {
-                    switch (formated.notifType) {
-                    case 'ProblemNotification':
-                      $timeout(function(){update();}, 500);
-                      break;
-                    case 'AttributeValueChangedNotification':
-                    case 'ObjectCreationNotification':
-                    case 'ObjectDeletionNotification':
-                      // ignore
-                      break;
-                    default:
-                      console.error('Missing implementation for', formated.notifType);
-                    }
-                  }, function(error) {
-                    // do nothing
-                  });
-                }
-              };
-
-              notificationSocket.onerror = function(error) {
-                console.log("Socket error: " + error);
-              };
-
-              notificationSocket.onopen = function(event) {
-                console.log("Socket connection opened.");
-                function subscribe() {
-                  if (notificationSocket.readyState === notificationSocket.OPEN) {
-                    var data = {
-                      'data' : 'scopes',
-                      'scopes' : [ "ProblemNotification" ]
-                    };
-                    notificationSocket.send(JSON.stringify(data));
-                  }
-                }
-                subscribe();
-              };
-
-              notificationSocket.onclose = function(event) {
-                console.log("Socket connection closed.");
-              };
-            } catch (e) {
-              console.error("Error when creating WebSocket.\n" + e);
-            }
-          }, function(error){
-            console.error("Error when creating WebSocket.\n" + error);
-          });
-        };
-        listenToNotifications();
-      }]
-    };
-  });
-
-});
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.module.js
deleted file mode 100644 (file)
index 0da8e76..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var mwtnFaultApp = angular.module('app.mwtnFault', ['ui.grid', 'ui.bootstrap', 'app.core',
-      'ui.router.state', 'config', 'ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns', 'ui.grid.infiniteScroll','ui.grid.pagination' ]);
-
-  mwtnFaultApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnFaultApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/mwtnFault/mwtnFault.controller');
-    NavHelperProvider.addToMenu('mwtnFault', {
-     "link" : "#/pnfFault/",
-     "active" : "main.mwtnFault",
-     "title" : "pnf Fault",
-     "icon" : "fa fa-bell",  // Add navigation icon css class here
-     "page" : {
-        "title" : "pnf Fault",
-        "description" : "mwtnFault"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnFault', {
-        url: 'pnfFault/:nodeId',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/mwtnFault/mwtnFault.tpl.html',
-                controller: 'mwtnFaultCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnFaultApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.services.js
deleted file mode 100644 (file)
index f07e4d0..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnFault/mwtnFault.module','app/mwtnCommons/mwtnCommons.services'],function(mwtnFaultApp) {
-
-  mwtnFaultApp.register.factory('$mwtnFault', function($q, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-    
-    var service = {};
-
-    service.checkModules = $mwtnCommons.checkModules;
-    service.getMwtnWebSocketUrl = $mwtnCommons.getMwtnWebSocketUrl;
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.formatData = $mwtnCommons.formatData;
-    service.formatTimeStamp = $mwtnCommons.formatTimeStamp;
-    service.deleteDocType = $mwtnDatabase.deleteDocType;
-    
-    
-    service.TimeStampToONFFormat=function(timestamp){
-
-      timestamp=timestamp.split('-').join('');
-      timestamp=timestamp.split(':').join('');
-      timestamp=timestamp.split(' ').join('');
-      timestamp=timestamp.replace('UTC','Z');
-      return timestamp;
-    };
-
-    service.getAllLogEntries = function(from, size) {
-      var sort = [ {
-        "fault.timeStamp" : {
-          order : 'desc'
-        }
-      }];
-      var deferred = $q.defer();
-      $mwtnDatabase.getAllData('sdnevents', 'faultlog', from, size, sort).then(function(success){
-        deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnFault.getAllLogEntries', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-
-    service.getAllLogEntriesWithSort= function(from, size, sort){
-         var deferred = $q.defer();
-         $mwtnDatabase.getAllData('sdnevents', 'faultlog', from, size, sort).then(function(success){
-         deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnFault.getAllLogEntries', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-
-    service.getFilteredSortedData=function(from, size, sort,query){
-      var deferred = $q.defer();
-         $mwtnDatabase.getFilteredSortedData('sdnevents', 'faultlog', from, size,sort, query).then(function(success){
-         deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnFault.getFilteredSortedData', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-
-    };
-
-    service.getFilteredData= function(from, size, query){
-         var deferred = $q.defer();
-         $mwtnDatabase.getFilteredData('sdnevents', 'faultlog', from, size, query).then(function(success){
-         deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnFault.getFilteredData', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-
-    service.getAllCurrentProblemEntries = function(from, size) {
-      var sort = [ {
-        "faultCurrent.timeStamp" : {
-          order : 'desc'
-        }
-      }];
-      var deferred = $q.defer();
-      $mwtnDatabase.getAllData('sdnevents', 'faultcurrent', from, size, sort).then(function(success){
-        deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnFault.getAllCurrentLogEntries', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-
-    return service;
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/mwtnFault.tpl.html
deleted file mode 100644 (file)
index dd23d26..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<ht-header help-link='sdnr/pnfFault/0.4.0/README.md'></ht-header>
-<div class="mwtnError">{{error}}</div>
-
-<uib-accordion close-others="oneATime">
-
-<div uib-accordion-group class="panel-primary" is-open="status.currentProblemList">
-  <uib-accordion-heading> <i class="pull-left fa"
-    ng-class="{'fa-chevron-down': status.currentProblemList, 'fa-chevron-right': !status.currentProblemList}"></i>
-  <span>{{'MWTN_CURRENT_PROBLEM_LIST' | translate}}
-    ({{gridOptionsCurrentProblemList.data.length}})</span> 
-        <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.currentProblemList"></i>
-    </uib-accordion-heading>
-
-
-  <div id="mwtnFaultGridCurrentProblemList" ui-grid="gridOptionsCurrentProblemList" ui-grid-exporter
-    ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-    ui-grid-move-columns class="mwtnFaultGrid"></div>
-</div>
-
-<div uib-accordion-group class="panel-primary" is-open="status.alarmNotifications">
-  <uib-accordion-heading> <i class="pull-left fa"
-    ng-class="{'fa-chevron-down': status.alarmNotifications, 'fa-chevron-right': !status.alarmNotifications}"></i>
-  <span>{{'MWTN_ALARM_NOTIFICATIONS' | translate}}
-    ({{gridOptionsAlarmNotifications.data.length}} since {{date}})</span>
-    <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.alarmNotifications"></i>
-    </uib-accordion-heading>
-
-
-  <div id="mwtnFaultGridAlarmNotifications" ui-grid="gridOptionsAlarmNotifications"
-    ui-grid-exporter ui-grid-selection ui-grid-pinning
-    ui-grid-resize-columns ui-grid-move-columns class="mwtnFaultGrid"></div>
-</div>
-
-<div uib-accordion-group class="panel-primary" is-open="status.alarmLog">
-  <uib-accordion-heading> <i class="pull-left fa"
-    ng-class="{'fa-chevron-down': status.alarmLog, 'fa-chevron-right': !status.alarmLog}"></i>
-  <span>{{'MWTN_ALARM_LOG' | translate}}
-    ({{maxCount}})</span>
-    <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.alarmLog"></i>
-    </uib-accordion-heading>
-
-    <div id="mwtnFaultGridAlarmLog" 
-         ui-grid="gridOptionsAlarmLog"
-         ui-grid-pagination 
-         ui-grid-exporter 
-         ui-grid-selection 
-         ui-grid-pinning 
-         ui-grid-resize-columns 
-         ui-grid-move-columns class="mwtnFaultGrid">
-    </div>
-    
-    <div class="ht-pagination">
-      <button class="btn btn-default"
-            ng-disabled="paginationOptions.pageNumber === 1"
-            ng-click="gridApi.pagination.seek(1)"
-            ng-class="{'cancelCursor':paginationOptions.pageNumber === 1}"
-            role="menuitem" type="button" title="Page to first" aria-label="Page to first">
-        <i class="fa fa-step-backward "></i>
-      </button>
-      <button class="btn btn-default"
-            ng-disabled="paginationOptions.pageNumber === 1"
-            ng-class="{'cancelCursor':paginationOptions.pageNumber === 1}"
-            ng-click="gridApi.pagination.previousPage()"
-
-            role="menuitem" type="button" title="Previous Page" aria-label="Previous Page">
-        <i class="fa fa-play fa-rotate-180 "></i>
-      </button>
-      <input class="btn btn-default" style="text-align:right;"  border="1" 
-           ng-model="gridOptionsAlarmLog.paginationCurrentPage"
-           ng-change="seekPage(gridOptionsAlarmLog.paginationCurrentPage)"
-           type="number" style="width:20px;"/>
-      <span class="dark">&nbsp;/ {{ gridApi.pagination.getTotalPages() }}</span>
-
-      <button class="btn btn-default" role="menuitem" type="button" title="Next Page" aria-label="Next Page"
-            ng-disabled="gridOptionsAlarmLog.paginationCurrentPage === gridApi.pagination.getTotalPages()"
-            ng-click="gridApi.pagination.nextPage()">
-          <i class="fa fa-play "></i>
-      </button>
-      <button class="btn btn-default" ng-disabled="gridOptionsAlarmLog.paginationCurrentPage === gridApi.pagination.getTotalPages()"
-            ng-click="gridApi.pagination.seek(gridApi.pagination.getTotalPages())"
-            role="menuitem" type="button" title="Page to last" aria-label="Page to last">
-        <i class="fa fa-step-forward "></i>
-      </button>
-    
-      <select 
-        class="btn btn-default" name="repeatSelect" id="repeatSelect" 
-        ng-init="gridOptionsAlarmLog.paginationPageSize = gridOptionsAlarmLog.paginationPageSizes[0]" 
-        ng-model="gridOptionsAlarmLog.paginationPageSize" 
-        ng-options="option for option in gridOptionsAlarmLog.paginationPageSizes"></select>
-    
-      <span class="dark"> items per page </span>
-
-      <span class="pull-right dark">{{ paginationStatusMessage() }}</span>
-    
-    </div>
-
-    <div class="text-right">
-     <button type="button" id="clearLog" class="btn btn-warning" ng-click="clearLog()">
-      <i class="fa fa-times" aria-hidden="true"></i>
-      <span>Clear log...</span>
-     </button>
-     <!-- 
-      see gird menu Export ...
-     <button type="button" id="saveLog" class="btn btn-default" ng-click="saveLog()">
-      <i class="fa fa-save" aria-hidden="true"></i>
-      <span>Save...</span>
-     </button>  -->
-     <button type="button" id="refreshLog" class="btn btn-primary" ng-click="refreshLog()">
-      <span>{{'MWTN_REFRESH' | translate}}</span>
-     </button> 
-    </div>
-  
-  </div>
-</uib-accordion>
-
-<hr />
-<div class="owl">
- <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/templates/alarmStatus.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/templates/alarmStatus.tpl.html
deleted file mode 100644 (file)
index b57a614..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-<div class="text-right margin5 mwtn global-alarm-status">
-  <a href="{{link}}" title="{{'MWTN_NODES' | translate}}">
-    <span>{{ 'MWTN_NODES' | translate }}:</span>
-    <i class="fa fa-link cleared" aria-hidden="true"></i>
-    <span> {{nodeCount}} </span>
-    <span> || </span>
-  </a> 
-  <a href="{{link}}" title="{{'MWTN_NODES' | translate}}">
-   <span>{{ 'MWTN_ALARM_STATUS' | translate }}:</span>
-  </a> 
-  <a href="{{link}}" ng-repeat="(key, value) in alarmStatus" title="{{key}}">
-    <span ng-show="$index !== 0"> | </span>
-    <i class="fa fa-exclamation-triangle" ng-class="{ {{key}} : value !== 0, 'cleared': value === 0}" aria-hidden="true" ></i>
-    <span> {{value}} </span>
-  </a> 
-  <a href="{{link}}" title="{{key}}">
-    <span> | </span>
-    <span>{{ 'MWTN_SUM' | translate }}: </span>
-    <span> {{getAlarmStatusSum()}} </span>
-  </a> 
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/templates/clearLogConfirmation.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/mwtnFault-module/src/main/resources/mwtnFault/templates/clearLogConfirmation.tpl.html
deleted file mode 100644 (file)
index 3e58a3a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{'Clear Log Confirmation' | translate}}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-       <p>
-         <span>All alarm log entries will be deleted.</span>
-       </p>
-       <p>Please make sure, you have exported the log entries, otherwise they will get lost.</p>
-</div>
-<div class="modal-footer">
-       <button class="btn btn-primary" type="button" ng-click="ok()">
-       <i class="pull-left fa fa-spinner fa-pulse" ng-show="processing"></i>
-            <span>{{'Clear log' | translate}}</span>
-       </button>
-       <button class="btn btn-warning" type="button" ng-click="cancel()">{{'Cancel' | translate}}</button>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnFault/pom.xml
deleted file mode 100644 (file)
index 64df3af..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>mwtnFault</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>mwtnFault-module</module>
-  <module>mwtnFault-bundle</module>
- </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-bundle/pom.xml
deleted file mode 100644 (file)
index ea013df..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnInventory</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnInventory-bundle</artifactId>
- <packaging>bundle</packaging>
- <name>${prefix} ${project.artifactId}</name>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnInventory-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnInventory-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 1075069..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnInventory"/>
-        <property name="url" value="/src/app/mwtnInventory"/>
-        <property name="directory" value="/mwtnInventory"/>
-        <property name="requireJs" value="app/mwtnInventory/mwtnInventory.module"/>
-        <property name="angularJs" value="app.mwtnInventory"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnInventory/mwtnInventory-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/pom.xml
deleted file mode 100644 (file)
index 5a72f5e..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnInventory</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnInventory-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-
- </project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipment.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipment.html
deleted file mode 100755 (executable)
index 5b0f5f6..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-<div uib-accordion-group="" class="panel-primary" template-url="src/app/mwtnInventory/templates/accordeonHeader.tpl.html"
- heading="{{equipment.uuid + ' | '+ equipment.name || equipment.label }}">
-       <div class="row">
-               <div class="col">
-                       Manufacturer: <br /> <b> {{ equipment.manufacturer.id }} </b>
-               </div>
-               <div class="col">
-                       Serial:  <br /> <b> {{ equipment.manufacturer.serial }} </b>
-               </div>
-    
-         <div class="col">
-      Version: <br /> <b> {{ equipment.manufacturer.version }} </b>
-         </div>
-    <div class="col">
-               Date:  <br /> <b> {{ equipment.manufacturer.date | date }} </b>
-         </div>
-
-               <div class="col">
-                       Description: <br /> <b> {{ equipment.manufacturer.description }} </b>
-               </div>
-               <div class="col">
-                       Part Type Id:  <br /> <b> {{ equipment.manufacturer.partTypeIdentifier }} </b>
-               </div>
-    
-               <div class="col">
-      Model Identifier: <br /> <b> {{ equipment.manufacturer.modelIdentifier }} </b>
-               </div>
-    <div class="col">
-                       Type Name:  <br /> <b> {{ equipment.manufacturer.partTypeIdetypeNamentifier }} </b>
-               </div>
-       </div>
-       <div class="row">
-                       <mwtn-equipment-group equipments="equipment.children" />
-  </div>
-               <div class="row">
-  </div>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipment.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipment.ts
deleted file mode 100755 (executable)
index 0ea067c..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-declare var angular: angular.IAngularStatic;  
-
-import { Equipment } from '../models/equipment';
-
-const mwtnInventory = angular.module('app.mwtnInventory');
-
-const EquipmentDirective = () => {
-  return {
-    templateUrl: 'src/app/mwtnInventory/components/equipment.html',
-    controller: 'mwtnEquipmentCtrl',
-    controllerAs: 'vm',
-    scope: {
-      equipment: "="
-    }
-  }
-};
-
-mwtnInventory.directive('mwtnEquipment', EquipmentDirective);
-
-export class EquipmentController {
-  constructor(private $scope: ng.IScope & { equipment: Equipment }) {
-   
-  }
-
-}
-
-mwtnInventory.controller('mwtnEquipmentCtrl', ['$scope', EquipmentController]);
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipmentGroup.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipmentGroup.html
deleted file mode 100755 (executable)
index ad43bff..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<div class="app-mwtnInventory-components-equipmentGroup">
-<uib-accordion close-others="false">
-  <mwtn-equipment ng-repeat="eq in equipments" equipment="eq" />
-</uib-accordion>
-</div >
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipmentGroup.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/components/equipmentGroup.ts
deleted file mode 100755 (executable)
index ee0945d..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-declare var angular: angular.IAngularStatic; 
-
-import { Equipment } from '../models/equipment';
-
-const mwtnInventory = angular.module('app.mwtnInventory');
-
-const EquipmentGroupDirective = ($compile) => {
-  return {
-    templateUrl: 'src/app/mwtnInventory/components/equipmentGroup.html',
-    controller: 'mwtnEquipmentGroupCtrl',
-    controllerAs: 'vm',
-    scope: {
-      equipments: "="
-    },
-    // HACK: for angular 1.4. compatibility
-    compile: function (tElement, tAttr, transclude) {
-      var contents = tElement.contents().remove();
-      var compiledContents;
-      return function (scope, iElement, iAttr) {
-        if (!compiledContents) {
-          compiledContents = $compile(contents, transclude);
-        }
-        compiledContents(scope, function (clone, scope) {
-          iElement.append(clone);
-        });
-      };
-    }
-  }
-};
-
-mwtnInventory.directive('mwtnEquipmentGroup', ['$compile', EquipmentGroupDirective]);
-
-export class EquipmentGroupController {
-  constructor(private $scope: ng.IScope & { equipments: Equipment[] }) {
-    //console.log("EquipmentGroupController", $scope.equipments);
-    
-  }
-
-}
-
-mwtnInventory.controller('mwtnEquipmentGroupCtrl', ['$scope', EquipmentGroupController]);
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/images/mwtnInventory.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/images/mwtnInventory.png
deleted file mode 100755 (executable)
index 02e626d..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/images/mwtnInventory.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/models/equipment.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/models/equipment.ts
deleted file mode 100755 (executable)
index edc4fc5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-export class Equipment {
-  uuid: string;
-  name: string;
-  label: string;
-  children: Equipment[];
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory-custom.css
deleted file mode 100644 (file)
index 2eb9261..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-
-.app-mwtnInventory * {
-    box-sizing: border-box;
-}
-
-.app-mwtnInventory .col {
-  height: 70px;
-  width: 12.5%;
-  float: left;
-  padding: 15px;
-}
-
-.app-mwtnInventory .row::after {
-    content: "";
-    clear: both;
-    display: table;
-}
-
-@media (max-width: 1600px) {
- .app-mwtnInventory .col { width: 25%; }
-
-}
-
-@media (max-width: 1200px) {
- .app-mwtnInventory .col { width: 33.3%; }
-}
-
-.app-mwtnInventory-components-equipmentGroup {
-  padding-left: 15px;
-  padding-right: 15px; 
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.controller.js
deleted file mode 100644 (file)
index fa6a85f..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
-    return new (P || (P = Promise))(function (resolve, reject) {
-        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
-        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
-        function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
-        step((generator = generator.apply(thisArg, _arguments || [])).next());
-    });
-};
-var __generator = (this && this.__generator) || function (thisArg, body) {
-    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
-    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
-    function verb(n) { return function (v) { return step([n, v]); }; }
-    function step(op) {
-        if (f) throw new TypeError("Generator is already executing.");
-        while (_) try {
-            if (f = 1, y && (t = y[op[0] & 2 ? "return" : op[0] ? "throw" : "next"]) && !(t = t.call(y, op[1])).done) return t;
-            if (y = 0, t) op = [0, t.value];
-            switch (op[0]) {
-                case 0: case 1: t = op; break;
-                case 4: _.label++; return { value: op[1], done: false };
-                case 5: _.label++; y = op[1]; op = [0]; continue;
-                case 7: op = _.ops.pop(); _.trys.pop(); continue;
-                default:
-                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
-                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
-                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
-                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
-                    if (t[2]) _.ops.pop();
-                    _.trys.pop(); continue;
-            }
-            op = body.call(thisArg, _);
-        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
-        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
-    }
-};
-define("mwtnInventory.service", ["require", "exports", "angularAMD"], function (require, exports, angular) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var mwtnInventory = angular.module('app.mwtnInventory');
-    var ExtensionResult = /** @class */ (function () {
-        function ExtensionResult() {
-        }
-        return ExtensionResult;
-    }());
-    var InventoryService = /** @class */ (function () {
-        function InventoryService($q, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-            var _this = this;
-            this.$q = $q;
-            this.$mwtnCommons = $mwtnCommons;
-            this.$mwtnDatabase = $mwtnDatabase;
-            this.$mwtnLog = $mwtnLog;
-            /**
-             * Helperfunction to detect and convert the 'value-name-group' .
-             * @param propertyName Name of the object property.
-             * @param propertyValue Value of the object property.
-             * @param valueName Optional: The value-name to be used instaed of the propertyName.
-             * @returns A simplified property value if this is a 'value-name-group' otherwhise the propertyValue. */
-            this.convertValue = function (propertyName, propertyValue, valueName) {
-                if (valueName === void 0) { valueName = ''; }
-                if (propertyValue && propertyValue instanceof Array && propertyValue.length == 1 && (valueName == null ||
-                    propertyValue[0]["value-name"] === propertyName ||
-                    propertyValue[0]["value-name"] === valueName)) {
-                    return propertyValue[0]["value"];
-                }
-                return propertyValue;
-            };
-            /**
-             *  Converts an API object to a simplified local object.
-             *  @param apiResult The API object to convert.
-             *  @param valueName Optional: The value-name to be used instaed of the propertyName.
-             *  @returns The simplified local object.
-            */
-            this.convertObject = function (apiResult, valueName) {
-                if (valueName === void 0) { valueName = ''; }
-                if (apiResult instanceof Array) {
-                    return apiResult.map(function (elm) { return _this.convertObject(elm, valueName); });
-                }
-                else if (apiResult instanceof Object) {
-                    var keys = Object.keys(apiResult);
-                    var result_1 = {};
-                    keys.forEach(function (key) {
-                        var value = _this.convertValue(key, apiResult[key], valueName);
-                        result_1[key] = (value instanceof Object || value instanceof Array)
-                            ? _this.convertObject(value)
-                            : value;
-                    });
-                    return result_1;
-                }
-                return apiResult;
-            };
-        }
-        /** Requests all active moint points */
-        InventoryService.prototype.getConnectedMountpoints = function () {
-            return this.$mwtnCommons.getMountPoints().then(function (mountpoints) {
-                //console.log(mountpoints);
-                return mountpoints.reduce(function (acc, cur, ind, arr) {
-                    if (cur['netconf-node-topology:connection-status'] === 'connected')
-                        acc.push(cur["node-id"]);
-                    return acc;
-                }, []);
-            });
-        };
-        /**
-         * Requests all 'root identifiers' for the given 'node id'.
-         * @param nodeId The id of the node to request the root identifiers for.
-         * @returns A q.Promise containing an array of all root identifiers for the requested node id.
-         * */
-        InventoryService.prototype.getRootIdentifiers = function (nodeId) {
-            var _this = this;
-            var request = {
-                url: "operational/network-topology:network-topology/topology/topology-netconf/node/" + nodeId + "/yang-ext:mount/core-model:network-element/extension/top-level-equipment",
-                method: "GET"
-            };
-            return this.$mwtnCommons.genericRequest(request).then(function (result) {
-                if (result && result.status == 200 && result.data) {
-                    var topLevelEquipment = _this.convertObject(result.data, 'top-level-equipment');
-                    var rootIdentifiers = topLevelEquipment && topLevelEquipment.extension && topLevelEquipment.extension.split(',');
-                    return rootIdentifiers && rootIdentifiers.map(function (identifier) { return identifier && identifier.trim(); });
-                }
-                return null;
-            }, function (err) { return (null); });
-        };
-        /**
-         * Requests the detail information for the given combination of 'nodeId' and 'equipmentIdentifier'.
-         * @param nodeId The id of the root node.
-         * @param identifier The identifier to request the details for.
-         * @returns A q.Promise containing an object with all the details.
-         * */
-        InventoryService.prototype.getEquipmentDetails = function (nodeId, identifier) {
-            var _this = this;
-            var request = {
-                url: "operational/network-topology:network-topology/topology/topology-netconf/node/" + nodeId + "/yang-ext:mount/core-model:equipment/" + identifier,
-                method: "GET"
-            };
-            return this.$mwtnCommons.genericRequest(request).then(function (result) {
-                if (result && result.status == 200 && result.data) {
-                    return _this.convertObject(result.data);
-                }
-                return null;
-            }, function (err) { return (null); });
-        };
-        /**
-         * Requests the conditional information for the given combination of 'nodeId' and 'equipmentIdentifier'.
-         * @param nodeId The id of the root node.
-         * @param identifier The identifier to request the conditionals for.
-         * @returns A q.Promise containing an object with all the conditional informations.
-         * */
-        InventoryService.prototype.getEquipmentConditionals = function (nodeId, identifier) {
-            var _this = this;
-            var request = {
-                url: "operational/network-topology:network-topology/topology/topology-netconf/node/" + nodeId + "/yang-ext:mount/onf-core-model-conditional-packages:equipment-pac/" + identifier,
-                method: "GET"
-            };
-            return this.$mwtnCommons.genericRequest(request).then(function (result) {
-                if (result && result.status == 200 && result.data) {
-                    return _this.convertObject(result.data);
-                }
-                return {"equipment-pac":[]};
-            }, function (err) { return ({"equipment-pac":[]}); });
-        };
-        return InventoryService;
-    }());
-    exports.InventoryService = InventoryService;
-    mwtnInventory.service('mwtnInventoryService', ["$q", "$mwtnCommons", "$mwtnDatabase", "$mwtnLog", InventoryService]);
-});
-define("models/equipment", ["require", "exports"], function (require, exports) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var Equipment = /** @class */ (function () {
-        function Equipment() {
-        }
-        return Equipment;
-    }());
-    exports.Equipment = Equipment;
-});
-define("components/equipment", ["require", "exports"], function (require, exports) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var mwtnInventory = angular.module('app.mwtnInventory');
-    var EquipmentDirective = function () {
-        return {
-            templateUrl: 'src/app/mwtnInventory/components/equipment.html',
-            controller: 'mwtnEquipmentCtrl',
-            controllerAs: 'vm',
-            scope: {
-                equipment: "="
-            }
-        };
-    };
-    mwtnInventory.directive('mwtnEquipment', EquipmentDirective);
-    var EquipmentController = /** @class */ (function () {
-        function EquipmentController($scope) {
-            this.$scope = $scope;
-        }
-        return EquipmentController;
-    }());
-    exports.EquipmentController = EquipmentController;
-    mwtnInventory.controller('mwtnEquipmentCtrl', ['$scope', EquipmentController]);
-});
-define("components/equipmentGroup", ["require", "exports"], function (require, exports) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var mwtnInventory = angular.module('app.mwtnInventory');
-    var EquipmentGroupDirective = function ($compile) {
-        return {
-            templateUrl: 'src/app/mwtnInventory/components/equipmentGroup.html',
-            controller: 'mwtnEquipmentGroupCtrl',
-            controllerAs: 'vm',
-            scope: {
-                equipments: "="
-            },
-            // HACK: for angular 1.4. compatibility
-            compile: function (tElement, tAttr, transclude) {
-                var contents = tElement.contents().remove();
-                var compiledContents;
-                return function (scope, iElement, iAttr) {
-                    if (!compiledContents) {
-                        compiledContents = $compile(contents, transclude);
-                    }
-                    compiledContents(scope, function (clone, scope) {
-                        iElement.append(clone);
-                    });
-                };
-            }
-        };
-    };
-    mwtnInventory.directive('mwtnEquipmentGroup', ['$compile', EquipmentGroupDirective]);
-    var EquipmentGroupController = /** @class */ (function () {
-        function EquipmentGroupController($scope) {
-            //console.log("EquipmentGroupController", $scope.equipments);
-            this.$scope = $scope;
-        }
-        return EquipmentGroupController;
-    }());
-    exports.EquipmentGroupController = EquipmentGroupController;
-    mwtnInventory.controller('mwtnEquipmentGroupCtrl', ['$scope', EquipmentGroupController]);
-});
-define( ["require", "exports", "mwtnInventory.service", "components/equipment", "components/equipmentGroup"], function (require, exports) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var mwtnInventory = angular.module('app.mwtnInventory');
-    var MwtnInventoryCtrl = /** @class */ (function () {
-        function MwtnInventoryCtrl($rootScope, $scope, $state, $timeout, mwtnInventoryService) {
-            var _this = this;
-            this.$rootScope = $rootScope;
-            this.$scope = $scope;
-            this.$state = $state;
-            this.$timeout = $timeout;
-            this.mwtnInventoryService = mwtnInventoryService;
-            // todo: change this
-            $rootScope.section_logo = 'src/app/mwtnInventory/images/mwtnInventory.png';
-            $scope.loading = false;
-            $scope.message = "Empty";
-            $scope.equipments = [];
-            $scope.selectedMountPoint = null;
-            $scope.activeMountPoints = [];
-            var getAllChildEquipments = function (equipmentsRootId, equimentIds) { return __awaiter(_this, void 0, void 0, function () {
-                var equipmentObjects, equipmentConditionals, results;
-                return __generator(this, function (_a) {
-                    switch (_a.label) {
-                        case 0:
-                            if (!equimentIds || !equimentIds.length) {
-                                return [2 /*return*/, []];
-                            }
-                            return [4 /*yield*/, Promise.all(equimentIds.map(function (id) {
-                                    return mwtnInventoryService.getEquipmentDetails(equipmentsRootId, id);
-                                }))];
-                        case 1:
-                            equipmentObjects = (_a.sent()).map(function (eq) { return (eq["equipment"][0]); });
-                            return [4 /*yield*/, Promise.all(equimentIds.map(function (id) {
-                                    return mwtnInventoryService.getEquipmentConditionals(equipmentsRootId, id);
-                                }))];
-                        case 2:
-                            equipmentConditionals = (_a.sent()).map(function (eq) { return (eq["equipment-pac"][0]); });
-                            return [4 /*yield*/, Promise.all(equipmentObjects.map(function (eq) {
-                                    var fruNames = (eq["contained-holder"] || []).map(function (ch) { return ch["occupying-fru"]; }).filter(function (fru) { return !!fru; });
-                                    return getAllChildEquipments(equipmentsRootId, fruNames);
-                                }))];
-                        case 3:
-                            results = _a.sent();
-                            return [2 /*return*/, equipmentObjects.reduce(function (acc, cur, ind, arr) {
-                                    var conditional = equipmentConditionals[ind] || null;
-                                    // ensure EVERY property can be null or undefined
-                                    var manufacturedThing = cur['manufactured-thing'];
-                                    var equipmentType = manufacturedThing && manufacturedThing['equipment-type'];
-                                    var manufacturerProperties = manufacturedThing && manufacturedThing['manufacturer-properties'];
-                                    var equipmentInstance = manufacturedThing && manufacturedThing['equipment-instance'];
-                                    var card = {
-                                        name: cur.name,
-                                        label: cur.label,
-                                        uuid: cur.uuid,
-                                        manufacturer: {
-                                            version: equipmentType && equipmentType["version"],
-                                            description: equipmentType && equipmentType["description"],
-                                            partTypeIdentifier: equipmentType && equipmentType["part-type-identifier"],
-                                            modelIdentifier: equipmentType && equipmentType["model-identifier"],
-                                            partTypeIdetypeNamentifier: equipmentType && equipmentType["type-name"],
-                                            id: manufacturerProperties && manufacturerProperties['manufacturer-identifier'],
-                                            date: equipmentInstance && equipmentInstance['manufacture-date'] && Date.parse(equipmentInstance && equipmentInstance['manufacture-date']),
-                                            serial: equipmentInstance && equipmentInstance['serial-number']
-                                        },
-                                        conditional: conditional
-                                    };
-                                    (results[ind].length ? card['children'] = results[ind] : null);
-                                    acc.push(card);
-                                    return acc;
-                                }, [])];
-                    }
-                });
-            }); };
-            var pleaseSelect = "... please select a mount point";
-            var refresh = function (equipmentsRootId) { return __awaiter(_this, void 0, void 0, function () {
-                var rootIdentifiers, equipments, _a;
-                return __generator(this, function (_b) {
-                    switch (_b.label) {
-                        case 0: return [4 /*yield*/, mwtnInventoryService.getRootIdentifiers(equipmentsRootId)];
-                        case 1:
-                            rootIdentifiers = _b.sent();
-                            _a = rootIdentifiers;
-                            if (!_a) return [3 /*break*/, 3];
-                            return [4 /*yield*/, getAllChildEquipments(equipmentsRootId, rootIdentifiers)];
-                        case 2:
-                            _a = (_b.sent());
-                            _b.label = 3;
-                        case 3:
-                            equipments = _a;
-                            $timeout(function () {
-                                $scope.equipments = equipments;
-                            });
-                            return [2 /*return*/];
-                    }
-                });
-            }); };
-            mwtnInventoryService.getConnectedMountpoints().then(function (res) {
-                $scope.activeMountPoints = [pleaseSelect].concat(res);
-                $scope.selectedMountPoint = $scope.selectedMountPoint || pleaseSelect;
-            });
-            $scope.$watch(function () { return ($state.params.nodeId); }, function (newVal, oldVal) {
-                $scope.selectedMountPoint = newVal;
-            });
-            $scope.$watch("selectedMountPoint", function (newVal, oldVal) { return __awaiter(_this, void 0, void 0, function () {
-                var _a;
-                return __generator(this, function (_b) {
-                    switch (_b.label) {
-                        case 0:
-                            if (!newVal || newVal === pleaseSelect) {
-                                $scope.equipments = [];
-                                return [2 /*return*/];
-                            }
-                            if ($scope.activeMountPoints[0] === pleaseSelect) {
-                                _a = $scope.activeMountPoints, $scope.activeMountPoints = _a.slice(1);
-                            }
-                            $scope.loading = true;
-                            if ($state.params.nodeId !== newVal) {
-                                $state.go('main.mwtnInventory', { nodeId: newVal }, { notify: false });
-                            }
-                            return [4 /*yield*/, refresh(newVal).catch(function (err) {
-                                    $timeout(function () { $scope.equipments = null; });
-                                })];
-                        case 1:
-                            _b.sent();
-                            $timeout(function () { $scope.loading = false; });
-                            return [2 /*return*/];
-                    }
-                });
-            }); });
-        }
-        return MwtnInventoryCtrl;
-    }());
-    mwtnInventory.controller('mwtnInventoryCtrl', ['$rootScope', '$scope', '$state', '$timeout', 'mwtnInventoryService', MwtnInventoryCtrl]);
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXd0bkludmVudG9yeS5jb250cm9sbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2FwcC9td3RuSW52ZW50b3J5L213dG5JbnZlbnRvcnkuc2VydmljZS50cyIsInNyYy9hcHAvbXd0bkludmVudG9yeS9tb2RlbHMvZXF1aXBtZW50LnRzIiwic3JjL2FwcC9td3RuSW52ZW50b3J5L2NvbXBvbmVudHMvZXF1aXBtZW50LnRzIiwic3JjL2FwcC9td3RuSW52ZW50b3J5L2NvbXBvbmVudHMvZXF1aXBtZW50R3JvdXAudHMiLCJzcmMvYXBwL213dG5JbnZlbnRvcnkvbXd0bkludmVudG9yeS5jb250cm9sbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0lBRUEsSUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRTFEO1FBQUE7UUFJQSxDQUFDO1FBQUQsc0JBQUM7SUFBRCxDQUFDLEFBSkQsSUFJQztJQW1CRDtRQUNFLDBCQUFvQixFQUFnQixFQUFVLFlBQTJCLEVBQVUsYUFBYSxFQUFVLFFBQVE7WUFBbEgsaUJBRUM7WUFGbUIsT0FBRSxHQUFGLEVBQUUsQ0FBYztZQUFVLGlCQUFZLEdBQVosWUFBWSxDQUFlO1lBQVUsa0JBQWEsR0FBYixhQUFhLENBQUE7WUFBVSxhQUFRLEdBQVIsUUFBUSxDQUFBO1lBSWxIOzs7OztvSEFLd0c7WUFDaEcsaUJBQVksR0FBRyxVQUFDLFlBQW9CLEVBQUUsYUFBa0IsRUFBRSxTQUFzQjtnQkFBdEIsMEJBQUEsRUFBQSxjQUFzQjtnQkFDdEYsRUFBRSxDQUFDLENBQUMsYUFBYSxJQUFJLGFBQWEsWUFBWSxLQUFLLElBQUksYUFBYSxDQUFDLE1BQU0sSUFBSSxDQUFDLElBQUksQ0FDbEYsU0FBUyxJQUFJLElBQUk7b0JBQ2pCLGFBQWEsQ0FBQyxDQUFDLENBQUMsQ0FBQyxZQUFZLENBQUMsS0FBSyxZQUFZO29CQUMvQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEtBQUssU0FBUyxDQUM5QyxDQUFDLENBQUMsQ0FBQztvQkFDRCxNQUFNLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUNuQyxDQUFDO2dCQUNELE1BQU0sQ0FBQyxhQUFhLENBQUM7WUFDdkIsQ0FBQyxDQUFBO1lBRUQ7Ozs7O2NBS0U7WUFDTSxrQkFBYSxHQUFHLFVBQUMsU0FBYyxFQUFFLFNBQXNCO2dCQUF0QiwwQkFBQSxFQUFBLGNBQXNCO2dCQUM3RCxFQUFFLENBQUMsQ0FBQyxTQUFTLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQztvQkFDL0IsTUFBTSxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsVUFBQSxHQUFHLElBQU0sTUFBTSxDQUFDLEtBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzlFLENBQUM7Z0JBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDLFNBQVMsWUFBWSxNQUFNLENBQUMsQ0FBQyxDQUFDO29CQUN2QyxJQUFNLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO29CQUNwQyxJQUFJLFFBQU0sR0FBRyxFQUFFLENBQUM7b0JBQ2hCLElBQUksQ0FBQyxPQUFPLENBQUMsVUFBQSxHQUFHO3dCQUNkLElBQU0sS0FBSyxHQUFHLEtBQUksQ0FBQyxZQUFZLENBQUMsR0FBRyxFQUFFLFNBQVMsQ0FBQyxHQUFHLENBQUMsRUFBRSxTQUFTLENBQUMsQ0FBQzt3QkFDaEUsUUFBTSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxZQUFZLE1BQU0sSUFBSSxLQUFLLFlBQVksS0FBSyxDQUFDOzRCQUMvRCxDQUFDLENBQUMsS0FBSSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUM7NEJBQzNCLENBQUMsQ0FBQyxLQUFLLENBQUM7b0JBQ1osQ0FBQyxDQUFDLENBQUM7b0JBQ0gsTUFBTSxDQUFDLFFBQU0sQ0FBQztnQkFDaEIsQ0FBQztnQkFDRCxNQUFNLENBQUMsU0FBUyxDQUFDO1lBQ25CLENBQUMsQ0FBQTtRQXhDRCxDQUFDO1FBMENELHVDQUF1QztRQUNoQyxrREFBdUIsR0FBOUI7WUFDRSxNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLEVBQU0sQ0FBQyxJQUFJLENBQUMsVUFBQyxXQUFpQjtnQkFDbkUsMkJBQTJCO2dCQUMzQixNQUFNLENBQVcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxVQUFDLEdBQWEsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7b0JBQy9ELEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsQ0FBQyxLQUFLLFdBQVcsQ0FBQzt3QkFBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDO29CQUM3RixNQUFNLENBQUMsR0FBRyxDQUFDO2dCQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztZQUNULENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVEOzs7O2FBSUs7UUFDRSw2Q0FBa0IsR0FBekIsVUFBMEIsTUFBYztZQUF4QyxpQkFlQztZQWJDLElBQU0sT0FBTyxHQUFzQjtnQkFDakMsR0FBRyxFQUFFLGtGQUFnRixNQUFNLDZFQUEwRTtnQkFDckssTUFBTSxFQUFFLEtBQUs7YUFDZCxDQUFDO1lBRUYsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFrQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxNQUFNO2dCQUM1RSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ2xELElBQU0saUJBQWlCLEdBQUcsS0FBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLHFCQUFxQixDQUFDLENBQUM7b0JBQ2pGLElBQU0sZUFBZSxHQUFHLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLFNBQVMsSUFBSSxpQkFBaUIsQ0FBQyxTQUFTLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNuSCxNQUFNLENBQUMsZUFBZSxJQUFJLGVBQWUsQ0FBQyxHQUFHLENBQUMsVUFBQSxVQUFVLElBQUksT0FBQSxVQUFVLElBQUksVUFBVSxDQUFDLElBQUksRUFBRSxFQUEvQixDQUErQixDQUFDLENBQUM7Z0JBQy9GLENBQUM7Z0JBQ0QsTUFBTSxDQUFDLElBQUksQ0FBQztZQUNkLENBQUMsRUFBRSxVQUFBLEdBQUcsSUFBSSxPQUFBLENBQUMsSUFBSSxDQUFDLEVBQU4sQ0FBTSxDQUFDLENBQUM7UUFDcEIsQ0FBQztRQUVEOzs7OzthQUtLO1FBQ0UsOENBQW1CLEdBQTFCLFVBQTJCLE1BQWMsRUFBRSxVQUFrQjtZQUE3RCxpQkFXQztZQVZDLElBQU0sT0FBTyxHQUFzQjtnQkFDakMsR0FBRyxFQUFFLGtGQUFnRixNQUFNLDZDQUF3QyxVQUFZO2dCQUMvSSxNQUFNLEVBQUUsS0FBSzthQUNkLENBQUM7WUFDRixNQUFNLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxjQUFjLENBQWtCLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLE1BQU07Z0JBQzVFLEVBQUUsQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLENBQUMsTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztvQkFDbEQsTUFBTSxDQUFDLEtBQUksQ0FBQyxhQUFhLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDO2dCQUN6QyxDQUFDO2dCQUNELE1BQU0sQ0FBQyxJQUFJLENBQUM7WUFDZCxDQUFDLEVBQUUsVUFBQSxHQUFHLElBQUksT0FBQSxDQUFDLElBQUksQ0FBQyxFQUFOLENBQU0sQ0FBQyxDQUFDO1FBQ3BCLENBQUM7UUFFRDs7Ozs7YUFLSztRQUNFLG1EQUF3QixHQUEvQixVQUFnQyxNQUFjLEVBQUUsVUFBa0I7WUFBbEUsaUJBV0M7WUFWQyxJQUFNLE9BQU8sR0FBc0I7Z0JBQ2pDLEdBQUcsRUFBRSxrRkFBZ0YsTUFBTSwwRUFBcUUsVUFBWTtnQkFDNUssTUFBTSxFQUFFLEtBQUs7YUFDZCxDQUFDO1lBQ0YsTUFBTSxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsY0FBYyxDQUFrQixPQUFPLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQyxNQUFNO2dCQUM1RSxFQUFFLENBQUMsQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7b0JBQ2xELE1BQU0sQ0FBQyxLQUFJLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztnQkFDekMsQ0FBQztnQkFDRCxNQUFNLENBQUMsSUFBSSxDQUFDO1lBQ2QsQ0FBQyxFQUFFLFVBQUEsR0FBRyxJQUFJLE9BQUEsQ0FBQyxJQUFJLENBQUMsRUFBTixDQUFNLENBQUMsQ0FBQztRQUNwQixDQUFDO1FBQ0gsdUJBQUM7SUFBRCxDQUFDLEFBbkhELElBbUhDO0lBbkhZLDRDQUFnQjtJQW9IN0IsYUFBYSxDQUFDLE9BQU8sQ0FBQyxzQkFBc0IsRUFBRSxDQUFDLElBQUksRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFVBQVUsRUFBRSxnQkFBZ0IsQ0FBQyxDQUFDLENBQUM7Ozs7O0lDL0lySDtRQUFBO1FBS0EsQ0FBQztRQUFELGdCQUFDO0lBQUQsQ0FBQyxBQUxELElBS0M7SUFMWSw4QkFBUzs7Ozs7SUNJdEIsSUFBTSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsQ0FBQyxDQUFDO0lBRTFELElBQU0sa0JBQWtCLEdBQUc7UUFDekIsTUFBTSxDQUFDO1lBQ0wsV0FBVyxFQUFFLGlEQUFpRDtZQUM5RCxVQUFVLEVBQUUsbUJBQW1CO1lBQy9CLFlBQVksRUFBRSxJQUFJO1lBQ2xCLEtBQUssRUFBRTtnQkFDTCxTQUFTLEVBQUUsR0FBRzthQUNmO1NBQ0YsQ0FBQTtJQUNILENBQUMsQ0FBQztJQUVGLGFBQWEsQ0FBQyxTQUFTLENBQUMsZUFBZSxFQUFFLGtCQUFrQixDQUFDLENBQUM7SUFFN0Q7UUFDRSw2QkFBb0IsTUFBNEM7WUFBNUMsV0FBTSxHQUFOLE1BQU0sQ0FBc0M7UUFFaEUsQ0FBQztRQUdILDBCQUFDO0lBQUQsQ0FBQyxBQU5ELElBTUM7SUFOWSxrREFBbUI7SUFRaEMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFFBQVEsRUFBRSxtQkFBbUIsQ0FBQyxDQUFDLENBQUM7Ozs7O0lDdkIvRSxJQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFFMUQsSUFBTSx1QkFBdUIsR0FBRyxVQUFDLFFBQVE7UUFDdkMsTUFBTSxDQUFDO1lBQ0wsV0FBVyxFQUFFLHNEQUFzRDtZQUNuRSxVQUFVLEVBQUUsd0JBQXdCO1lBQ3BDLFlBQVksRUFBRSxJQUFJO1lBQ2xCLEtBQUssRUFBRTtnQkFDTCxVQUFVLEVBQUUsR0FBRzthQUNoQjtZQUNELHVDQUF1QztZQUN2QyxPQUFPLEVBQUUsVUFBVSxRQUFRLEVBQUUsS0FBSyxFQUFFLFVBQVU7Z0JBQzVDLElBQUksUUFBUSxHQUFHLFFBQVEsQ0FBQyxRQUFRLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQztnQkFDNUMsSUFBSSxnQkFBZ0IsQ0FBQztnQkFDckIsTUFBTSxDQUFDLFVBQVUsS0FBSyxFQUFFLFFBQVEsRUFBRSxLQUFLO29CQUNyQyxFQUFFLENBQUMsQ0FBQyxDQUFDLGdCQUFnQixDQUFDLENBQUMsQ0FBQzt3QkFDdEIsZ0JBQWdCLEdBQUcsUUFBUSxDQUFDLFFBQVEsRUFBRSxVQUFVLENBQUMsQ0FBQztvQkFDcEQsQ0FBQztvQkFDRCxnQkFBZ0IsQ0FBQyxLQUFLLEVBQUUsVUFBVSxLQUFLLEVBQUUsS0FBSzt3QkFDNUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztvQkFDekIsQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQyxDQUFDO1lBQ0osQ0FBQztTQUNGLENBQUE7SUFDSCxDQUFDLENBQUM7SUFFRixhQUFhLENBQUMsU0FBUyxDQUFDLG9CQUFvQixFQUFFLENBQUMsVUFBVSxFQUFFLHVCQUF1QixDQUFDLENBQUMsQ0FBQztJQUVyRjtRQUNFLGtDQUFvQixNQUErQztZQUNqRSw2REFBNkQ7WUFEM0MsV0FBTSxHQUFOLE1BQU0sQ0FBeUM7UUFHbkUsQ0FBQztRQUVILCtCQUFDO0lBQUQsQ0FBQyxBQU5ELElBTUM7SUFOWSw0REFBd0I7SUFRckMsYUFBYSxDQUFDLFVBQVUsQ0FBQyx3QkFBd0IsRUFBRSxDQUFDLFFBQVEsRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLENBQUM7Ozs7O0lDakN6RixJQUFNLGFBQWEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLG1CQUFtQixDQUFDLENBQUM7SUFVMUQ7UUFDRSwyQkFBb0IsVUFBVSxFQUFVLE1BQTJCLEVBQVUsTUFBTSxFQUFVLFFBQVEsRUFBVSxvQkFBc0M7WUFBckosaUJBOEZDO1lBOUZtQixlQUFVLEdBQVYsVUFBVSxDQUFBO1lBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBcUI7WUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFBO1lBQVUsYUFBUSxHQUFSLFFBQVEsQ0FBQTtZQUFVLHlCQUFvQixHQUFwQixvQkFBb0IsQ0FBa0I7WUFDbkosb0JBQW9CO1lBQ3BCLFVBQVUsQ0FBQyxZQUFZLEdBQUcsZ0RBQWdELENBQUM7WUFFM0UsTUFBTSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7WUFDdkIsTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDekIsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7WUFDdkIsTUFBTSxDQUFDLGtCQUFrQixHQUFHLElBQUksQ0FBQztZQUVqQyxNQUFNLENBQUMsaUJBQWlCLEdBQUcsRUFBRSxDQUFDO1lBRTlCLElBQU0scUJBQXFCLEdBQUcsVUFBTyxnQkFBd0IsRUFBRSxXQUFxQjs7Ozs7NEJBQ2xGLEVBQUUsQ0FBQyxDQUFDLENBQUMsV0FBVyxJQUFJLENBQUMsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7Z0NBQ3hDLE1BQU0sZ0JBQUMsRUFBRSxFQUFDOzRCQUNaLENBQUM7NEJBQ3lCLHFCQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDLEdBQUcsQ0FBQyxVQUFBLEVBQUU7b0NBQzVELE1BQU0sQ0FBQyxvQkFBb0IsQ0FBQyxtQkFBbUIsQ0FBQyxnQkFBZ0IsRUFBRSxFQUFFLENBQUMsQ0FBQztnQ0FDeEUsQ0FBQyxDQUFDLENBQUMsRUFBQTs7NEJBRkcsZ0JBQWdCLEdBQUcsQ0FBQyxTQUV2QixDQUFDLENBQUMsR0FBRyxDQUFDLFVBQUEsRUFBRSxJQUFJLE9BQUEsQ0FBQyxFQUFFLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBcEIsQ0FBb0IsQ0FBQzs0QkFFTCxxQkFBTSxPQUFPLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQyxHQUFHLENBQUMsVUFBQSxFQUFFO29DQUNqRSxNQUFNLENBQUMsb0JBQW9CLENBQUMsd0JBQXdCLENBQUMsZ0JBQWdCLEVBQUUsRUFBRSxDQUFDLENBQUM7Z0NBQzdFLENBQUMsQ0FBQyxDQUFDLEVBQUE7OzRCQUZHLHFCQUFxQixHQUFHLENBQUMsU0FFNUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxVQUFBLEVBQUUsSUFBSSxPQUFBLENBQUMsRUFBRSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQXhCLENBQXdCLENBQUM7NEJBRTFCLHFCQUFNLE9BQU8sQ0FBQyxHQUFHLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFVBQUEsRUFBRTtvQ0FDckQsSUFBSSxRQUFRLEdBQWEsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQSxFQUFFLElBQUksT0FBQSxFQUFFLENBQUMsZUFBZSxDQUFDLEVBQW5CLENBQW1CLENBQUMsQ0FBQyxNQUFNLENBQUMsVUFBQSxHQUFHLElBQUksT0FBQSxDQUFDLENBQUMsR0FBRyxFQUFMLENBQUssQ0FBQyxDQUFDO29DQUM1RyxNQUFNLENBQUMscUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsUUFBUSxDQUFDLENBQUM7Z0NBQzNELENBQUMsQ0FBQyxDQUFDLEVBQUE7OzRCQUhDLE9BQU8sR0FBRyxTQUdYOzRCQUVILHNCQUFPLGdCQUFnQixDQUFDLE1BQU0sQ0FBQyxVQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUc7b0NBQ2hELElBQUksV0FBVyxHQUFHLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksQ0FBQztvQ0FDckQsa0RBQWtEO29DQUNsRCxJQUFJLGlCQUFpQixHQUFHLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxDQUFDO29DQUNsRCxJQUFJLGFBQWEsR0FBRyxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO29DQUM3RSxJQUFJLHNCQUFzQixHQUFHLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLHlCQUF5QixDQUFDLENBQUM7b0NBQy9GLElBQUksaUJBQWlCLEdBQUcsaUJBQWlCLElBQUksaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsQ0FBQztvQ0FFckYsSUFBSSxJQUFJLEdBQUc7d0NBQ1QsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO3dDQUNkLEtBQUssRUFBRSxHQUFHLENBQUMsS0FBSzt3Q0FDaEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO3dDQUNkLFlBQVksRUFBRTs0Q0FDWixPQUFPLEVBQUUsYUFBYSxJQUFJLGFBQWEsQ0FBQyxTQUFTLENBQUM7NENBQ2xELFdBQVcsRUFBRSxhQUFhLElBQUksYUFBYSxDQUFDLGFBQWEsQ0FBQzs0Q0FDMUQsa0JBQWtCLEVBQUUsYUFBYSxJQUFJLGFBQWEsQ0FBQyxzQkFBc0IsQ0FBQzs0Q0FDMUUsZUFBZSxFQUFFLGFBQWEsSUFBSSxhQUFhLENBQUMsa0JBQWtCLENBQUM7NENBQ25FLDBCQUEwQixFQUFFLGFBQWEsSUFBSSxhQUFhLENBQUMsV0FBVyxDQUFDOzRDQUN2RSxFQUFFLEVBQUUsc0JBQXNCLElBQUksc0JBQXNCLENBQUMseUJBQXlCLENBQUM7NENBQy9FLElBQUksRUFBRSxpQkFBaUIsSUFBSSxpQkFBaUIsQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsaUJBQWlCLElBQUksaUJBQWlCLENBQUMsa0JBQWtCLENBQUMsQ0FBQzs0Q0FDMUksTUFBTSxFQUFFLGlCQUFpQixJQUFJLGlCQUFpQixDQUFDLGVBQWUsQ0FBQzt5Q0FDaEU7d0NBQ0QsV0FBVyxFQUFFLFdBQVc7cUNBQ3pCLENBQUM7b0NBQ0YsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLEdBQUcsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQztvQ0FDL0QsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztvQ0FDZixNQUFNLENBQUMsR0FBRyxDQUFDO2dDQUNiLENBQUMsRUFBRSxFQUFFLENBQUMsRUFBQzs7O2lCQUNSLENBQUE7WUFFRCxJQUFNLFlBQVksR0FBRyw2QkFBNkIsQ0FBQztZQUVuRCxJQUFNLE9BQU8sR0FBRyxVQUFPLGdCQUF3Qjs7OztnQ0FDdkIscUJBQU0sb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsZ0JBQWdCLENBQUMsRUFBQTs7NEJBQWpGLGVBQWUsR0FBRyxTQUErRDs0QkFDcEUsS0FBQSxlQUFlLENBQUE7cUNBQWYsd0JBQWU7NEJBQUkscUJBQU0scUJBQXFCLENBQUMsZ0JBQWdCLEVBQUUsZUFBZSxDQUFDLEVBQUE7O2tDQUE5RCxTQUE4RDs7OzRCQUE5RixVQUFVLEtBQW9GOzRCQUNsRyxRQUFRLENBQUM7Z0NBQ1AsTUFBTSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7NEJBQ2pDLENBQUMsQ0FBQyxDQUFDOzs7O2lCQUNKLENBQUM7WUFFRixvQkFBb0IsQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFBLEdBQUc7Z0JBQ3JELE1BQU0sQ0FBQyxpQkFBaUIsSUFBSSxZQUFZLFNBQUssR0FBRyxDQUFDLENBQUU7Z0JBQ25ELE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUMsa0JBQWtCLElBQUksWUFBWSxDQUFDO1lBQ3hFLENBQUMsQ0FBQyxDQUFDO1lBRUgsTUFBTSxDQUFDLE1BQU0sQ0FBQyxjQUFNLE9BQUEsQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxFQUF0QixDQUFzQixFQUFFLFVBQUMsTUFBYyxFQUFFLE1BQWM7Z0JBQ3pFLE1BQU0sQ0FBQyxrQkFBa0IsR0FBRyxNQUFNLENBQUM7WUFDckMsQ0FBQyxDQUFDLENBQUM7WUFFSCxNQUFNLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLFVBQU8sTUFBYyxFQUFFLE1BQWM7Ozs7OzRCQUN2RSxFQUFFLENBQUMsQ0FBQyxDQUFDLE1BQU0sSUFBSSxNQUFNLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztnQ0FDdkMsTUFBTSxDQUFDLFVBQVUsR0FBRyxFQUFFLENBQUM7Z0NBQ3ZCLE1BQU0sZ0JBQUM7NEJBQ1QsQ0FBQzs0QkFDRCxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLEtBQUssWUFBWSxDQUFDLENBQUMsQ0FBQztnQ0FDakQsNkJBQTBELEVBQXZELHNDQUEyQixDQUE2Qjs0QkFDN0QsQ0FBQzs0QkFDRCxNQUFNLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQzs0QkFDdEIsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLENBQUMsQ0FBQztnQ0FDcEMsTUFBTSxDQUFDLEVBQUUsQ0FBQyxvQkFBb0IsRUFBRSxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDOzRCQUN6RSxDQUFDOzRCQUNELHFCQUFNLE9BQU8sQ0FBQyxNQUFNLENBQUMsQ0FBQyxLQUFLLENBQUMsVUFBQSxHQUFHO29DQUM3QixRQUFRLENBQUMsY0FBUSxNQUFNLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO2dDQUNoRCxDQUFDLENBQUMsRUFBQTs7NEJBRkYsU0FFRSxDQUFDOzRCQUNILFFBQVEsQ0FBQyxjQUFRLE1BQU0sQ0FBQyxPQUFPLEdBQUcsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Ozs7aUJBQzdDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDSCx3QkFBQztJQUFELENBQUMsQUFoR0QsSUFnR0M7SUFFRCxhQUFhLENBQUMsVUFBVSxDQUFDLG1CQUFtQixFQUFFLENBQUMsWUFBWSxFQUFFLFFBQVEsRUFBRSxRQUFRLEVBQUUsVUFBVSxFQUFFLHNCQUFzQixFQUFFLGlCQUFpQixDQUFDLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCAqIGFzIGFuZ3VsYXIgZnJvbSAnYW5ndWxhckFNRCc7XG5cbmNvbnN0IG13dG5JbnZlbnRvcnkgPSBhbmd1bGFyLm1vZHVsZSgnYXBwLm13dG5JbnZlbnRvcnknKTtcblxuY2xhc3MgRXh0ZW5zaW9uUmVzdWx0IHtcbiAgcHVibGljIGV4dGVuc2lvbjogW1xuICAgIHsgXCJ2YWx1ZS1uYW1lXCI6IHN0cmluZywgXCJ2YWx1ZVwiOiBzdHJpbmcgfVxuICBdXG59XG5cbmludGVyZmFjZSBHZW5lcmljR2V0UmVxdWVzdCB7XG4gIHVybDogc3RyaW5nO1xuICBtZXRob2Q6IFwiR0VUXCI7XG59XG5cbmludGVyZmFjZSBHZW5lcmljUG9zdFJlcXVlc3Q8VD4ge1xuICB1cmw6IHN0cmluZztcbiAgbWV0aG9kOiBcIlBPU1RcIjtcbiAgZGF0YTogVFxufVxuXG5pbnRlcmZhY2UgQ29tbW9uU2VydmljZSB7XG4gIGdlbmVyaWNSZXF1ZXN0PFRSZXN1bHQ+KHJlcXVlc3Q6IEdlbmVyaWNHZXRSZXF1ZXN0KTogbmcuSVByb21pc2U8bmcuSUh0dHBSZXNwb25zZTxUUmVzdWx0Pj47XG4gIGdlbmVyaWNSZXF1ZXN0PFRSZXF1ZXN0LCBUUmVzdWx0PihyZXF1ZXN0OiBHZW5lcmljUG9zdFJlcXVlc3Q8VFJlcXVlc3Q+KTogbmcuSVByb21pc2U8bmcuSUh0dHBSZXNwb25zZTxUUmVzdWx0Pj47XG4gIGdldE1vdW50UG9pbnRzPFRSZXN1bHQ+KCk6IG5nLklQcm9taXNlPFRSZXN1bHQ+O1xufVxuXG5leHBvcnQgY2xhc3MgSW52ZW50b3J5U2VydmljZSB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgJHE6IG5nLklRU2VydmljZSwgcHJpdmF0ZSAkbXd0bkNvbW1vbnM6IENvbW1vblNlcnZpY2UsIHByaXZhdGUgJG13dG5EYXRhYmFzZSwgcHJpdmF0ZSAkbXd0bkxvZykge1xuXG4gIH1cblxuICAvKiogXG4gICAqIEhlbHBlcmZ1bmN0aW9uIHRvIGRldGVjdCBhbmQgY29udmVydCB0aGUgJ3ZhbHVlLW5hbWUtZ3JvdXAnIC5cbiAgICogQHBhcmFtIHByb3BlcnR5TmFtZSBOYW1lIG9mIHRoZSBvYmplY3QgcHJvcGVydHkuXG4gICAqIEBwYXJhbSBwcm9wZXJ0eVZhbHVlIFZhbHVlIG9mIHRoZSBvYmplY3QgcHJvcGVydHkuXG4gICAqIEBwYXJhbSB2YWx1ZU5hbWUgT3B0aW9uYWw6IFRoZSB2YWx1ZS1uYW1lIHRvIGJlIHVzZWQgaW5zdGFlZCBvZiB0aGUgcHJvcGVydHlOYW1lLlxuICAgKiBAcmV0dXJucyBBIHNpbXBsaWZpZWQgcHJvcGVydHkgdmFsdWUgaWYgdGhpcyBpcyBhICd2YWx1ZS1uYW1lLWdyb3VwJyBvdGhlcndoaXNlIHRoZSBwcm9wZXJ0eVZhbHVlLiAqL1xuICBwcml2YXRlIGNvbnZlcnRWYWx1ZSA9IChwcm9wZXJ0eU5hbWU6IHN0cmluZywgcHJvcGVydHlWYWx1ZTogYW55LCB2YWx1ZU5hbWU6IHN0cmluZyA9ICcnKTogYW55ID0+IHtcbiAgICBpZiAocHJvcGVydHlWYWx1ZSAmJiBwcm9wZXJ0eVZhbHVlIGluc3RhbmNlb2YgQXJyYXkgJiYgcHJvcGVydHlWYWx1ZS5sZW5ndGggPT0gMSAmJiAoXG4gICAgICB2YWx1ZU5hbWUgPT0gbnVsbCB8fFxuICAgICAgcHJvcGVydHlWYWx1ZVswXVtcInZhbHVlLW5hbWVcIl0gPT09IHByb3BlcnR5TmFtZSB8fFxuICAgICAgcHJvcGVydHlWYWx1ZVswXVtcInZhbHVlLW5hbWVcIl0gPT09IHZhbHVlTmFtZSlcbiAgICApIHtcbiAgICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlWzBdW1widmFsdWVcIl07XG4gICAgfVxuICAgIHJldHVybiBwcm9wZXJ0eVZhbHVlO1xuICB9XG5cbiAgLyoqIFxuICAgKiAgQ29udmVydHMgYW4gQVBJIG9iamVjdCB0byBhIHNpbXBsaWZpZWQgbG9jYWwgb2JqZWN0LlxuICAgKiAgQHBhcmFtIGFwaVJlc3VsdCBUaGUgQVBJIG9iamVjdCB0byBjb252ZXJ0LlxuICAgKiAgQHBhcmFtIHZhbHVlTmFtZSBPcHRpb25hbDogVGhlIHZhbHVlLW5hbWUgdG8gYmUgdXNlZCBpbnN0YWVkIG9mIHRoZSBwcm9wZXJ0eU5hbWUuXG4gICAqICBAcmV0dXJucyBUaGUgc2ltcGxpZmllZCBsb2NhbCBvYmplY3QuXG4gICovXG4gIHByaXZhdGUgY29udmVydE9iamVjdCA9IChhcGlSZXN1bHQ6IGFueSwgdmFsdWVOYW1lOiBzdHJpbmcgPSAnJyk6IGFueSA9PiB7XG4gICAgaWYgKGFwaVJlc3VsdCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXR1cm4gYXBpUmVzdWx0Lm1hcChlbG0gPT4geyByZXR1cm4gdGhpcy5jb252ZXJ0T2JqZWN0KGVsbSwgdmFsdWVOYW1lKTsgfSk7XG4gICAgfSBlbHNlIGlmIChhcGlSZXN1bHQgaW5zdGFuY2VvZiBPYmplY3QpIHtcbiAgICAgIGNvbnN0IGtleXMgPSBPYmplY3Qua2V5cyhhcGlSZXN1bHQpO1xuICAgICAgbGV0IHJlc3VsdCA9IHt9O1xuICAgICAga2V5cy5mb3JFYWNoKGtleSA9PiB7XG4gICAgICAgIGNvbnN0IHZhbHVlID0gdGhpcy5jb252ZXJ0VmFsdWUoa2V5LCBhcGlSZXN1bHRba2V5XSwgdmFsdWVOYW1lKTtcbiAgICAgICAgcmVzdWx0W2tleV0gPSAodmFsdWUgaW5zdGFuY2VvZiBPYmplY3QgfHwgdmFsdWUgaW5zdGFuY2VvZiBBcnJheSlcbiAgICAgICAgICA/IHRoaXMuY29udmVydE9iamVjdCh2YWx1ZSlcbiAgICAgICAgICA6IHZhbHVlO1xuICAgICAgfSk7XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH1cbiAgICByZXR1cm4gYXBpUmVzdWx0O1xuICB9XG5cbiAgLyoqIFJlcXVlc3RzIGFsbCBhY3RpdmUgbW9pbnQgcG9pbnRzICovXG4gIHB1YmxpYyBnZXRDb25uZWN0ZWRNb3VudHBvaW50cygpOiBuZy5JUHJvbWlzZTxzdHJpbmdbXT4ge1xuICAgIHJldHVybiB0aGlzLiRtd3RuQ29tbW9ucy5nZXRNb3VudFBvaW50czx7fT4oKS50aGVuKChtb3VudHBvaW50czoge31bXSkgPT4ge1xuICAgICAgLy9jb25zb2xlLmxvZyhtb3VudHBvaW50cyk7XG4gICAgICByZXR1cm4gPHN0cmluZ1tdPm1vdW50cG9pbnRzLnJlZHVjZSgoYWNjOiBzdHJpbmdbXSwgY3VyLCBpbmQsIGFycikgPT4ge1xuICAgICAgICBpZiAoY3VyWyduZXRjb25mLW5vZGUtdG9wb2xvZ3k6Y29ubmVjdGlvbi1zdGF0dXMnXSA9PT0gJ2Nvbm5lY3RlZCcpIGFjYy5wdXNoKGN1cltcIm5vZGUtaWRcIl0pO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10pO1xuICAgIH0pO1xuICB9XG5cbiAgLyoqIFxuICAgKiBSZXF1ZXN0cyBhbGwgJ3Jvb3QgaWRlbnRpZmllcnMnIGZvciB0aGUgZ2l2ZW4gJ25vZGUgaWQnLlxuICAgKiBAcGFyYW0gbm9kZUlkIFRoZSBpZCBvZiB0aGUgbm9kZSB0byByZXF1ZXN0IHRoZSByb290IGlkZW50aWZpZXJzIGZvci5cbiAgICogQHJldHVybnMgQSBxLlByb21pc2UgY29udGFpbmluZyBhbiBhcnJheSBvZiBhbGwgcm9vdCBpZGVudGlmaWVycyBmb3IgdGhlIHJlcXVlc3RlZCBub2RlIGlkLlxuICAgKiAqL1xuICBwdWJsaWMgZ2V0Um9vdElkZW50aWZpZXJzKG5vZGVJZDogc3RyaW5nKTogbmcuSVByb21pc2U8c3RyaW5nW10+IHtcblxuICAgIGNvbnN0IHJlcXVlc3Q6IEdlbmVyaWNHZXRSZXF1ZXN0ID0ge1xuICAgICAgdXJsOiBgb3BlcmF0aW9uYWwvbmV0d29yay10b3BvbG9neTpuZXR3b3JrLXRvcG9sb2d5L3RvcG9sb2d5L3RvcG9sb2d5LW5ldGNvbmYvbm9kZS8ke25vZGVJZH0veWFuZy1leHQ6bW91bnQvY29yZS1tb2RlbDpuZXR3b3JrLWVsZW1lbnQvZXh0ZW5zaW9uL3RvcC1sZXZlbC1lcXVpcG1lbnRgLFxuICAgICAgbWV0aG9kOiBcIkdFVFwiXG4gICAgfTtcblxuICAgIHJldHVybiB0aGlzLiRtd3RuQ29tbW9ucy5nZW5lcmljUmVxdWVzdDxFeHRlbnNpb25SZXN1bHQ+KHJlcXVlc3QpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuc3RhdHVzID09IDIwMCAmJiByZXN1bHQuZGF0YSkge1xuICAgICAgICBjb25zdCB0b3BMZXZlbEVxdWlwbWVudCA9IHRoaXMuY29udmVydE9iamVjdChyZXN1bHQuZGF0YSwgJ3RvcC1sZXZlbC1lcXVpcG1lbnQnKTtcbiAgICAgICAgY29uc3Qgcm9vdElkZW50aWZpZXJzID0gdG9wTGV2ZWxFcXVpcG1lbnQgJiYgdG9wTGV2ZWxFcXVpcG1lbnQuZXh0ZW5zaW9uICYmIHRvcExldmVsRXF1aXBtZW50LmV4dGVuc2lvbi5zcGxpdCgnLCcpO1xuICAgICAgICByZXR1cm4gcm9vdElkZW50aWZpZXJzICYmIHJvb3RJZGVudGlmaWVycy5tYXAoaWRlbnRpZmllciA9PiBpZGVudGlmaWVyICYmIGlkZW50aWZpZXIudHJpbSgpKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sIGVyciA9PiAobnVsbCkpO1xuICB9XG5cbiAgLyoqIFxuICAgKiBSZXF1ZXN0cyB0aGUgZGV0YWlsIGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2ZW4gY29tYmluYXRpb24gb2YgJ25vZGVJZCcgYW5kICdlcXVpcG1lbnRJZGVudGlmaWVyJy5cbiAgICogQHBhcmFtIG5vZGVJZCBUaGUgaWQgb2YgdGhlIHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIGlkZW50aWZpZXIgVGhlIGlkZW50aWZpZXIgdG8gcmVxdWVzdCB0aGUgZGV0YWlscyBmb3IuXG4gICAqIEByZXR1cm5zIEEgcS5Qcm9taXNlIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHdpdGggYWxsIHRoZSBkZXRhaWxzLlxuICAgKiAqL1xuICBwdWJsaWMgZ2V0RXF1aXBtZW50RGV0YWlscyhub2RlSWQ6IHN0cmluZywgaWRlbnRpZmllcjogc3RyaW5nKTogbmcuSVByb21pc2U8e30+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBHZW5lcmljR2V0UmVxdWVzdCA9IHtcbiAgICAgIHVybDogYG9wZXJhdGlvbmFsL25ldHdvcmstdG9wb2xvZ3k6bmV0d29yay10b3BvbG9neS90b3BvbG9neS90b3BvbG9neS1uZXRjb25mL25vZGUvJHtub2RlSWR9L3lhbmctZXh0Om1vdW50L2NvcmUtbW9kZWw6ZXF1aXBtZW50LyR7aWRlbnRpZmllcn1gLFxuICAgICAgbWV0aG9kOiBcIkdFVFwiXG4gICAgfTtcbiAgICByZXR1cm4gdGhpcy4kbXd0bkNvbW1vbnMuZ2VuZXJpY1JlcXVlc3Q8RXh0ZW5zaW9uUmVzdWx0PihyZXF1ZXN0KS50aGVuKChyZXN1bHQpID0+IHtcbiAgICAgIGlmIChyZXN1bHQgJiYgcmVzdWx0LnN0YXR1cyA9PSAyMDAgJiYgcmVzdWx0LmRhdGEpIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuY29udmVydE9iamVjdChyZXN1bHQuZGF0YSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9LCBlcnIgPT4gKG51bGwpKTtcbiAgfVxuXG4gIC8qKiBcbiAgICogUmVxdWVzdHMgdGhlIGNvbmRpdGlvbmFsIGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2ZW4gY29tYmluYXRpb24gb2YgJ25vZGVJZCcgYW5kICdlcXVpcG1lbnRJZGVudGlmaWVyJy5cbiAgICogQHBhcmFtIG5vZGVJZCBUaGUgaWQgb2YgdGhlIHJvb3Qgbm9kZS5cbiAgICogQHBhcmFtIGlkZW50aWZpZXIgVGhlIGlkZW50aWZpZXIgdG8gcmVxdWVzdCB0aGUgY29uZGl0aW9uYWxzIGZvci5cbiAgICogQHJldHVybnMgQSBxLlByb21pc2UgY29udGFpbmluZyBhbiBvYmplY3Qgd2l0aCBhbGwgdGhlIGNvbmRpdGlvbmFsIGluZm9ybWF0aW9ucy5cbiAgICogKi9cbiAgcHVibGljIGdldEVxdWlwbWVudENvbmRpdGlvbmFscyhub2RlSWQ6IHN0cmluZywgaWRlbnRpZmllcjogc3RyaW5nKTogbmcuSVByb21pc2U8e30+IHtcbiAgICBjb25zdCByZXF1ZXN0OiBHZW5lcmljR2V0UmVxdWVzdCA9IHtcbiAgICAgIHVybDogYG9wZXJhdGlvbmFsL25ldHdvcmstdG9wb2xvZ3k6bmV0d29yay10b3BvbG9neS90b3BvbG9neS90b3BvbG9neS1uZXRjb25mL25vZGUvJHtub2RlSWR9L3lhbmctZXh0Om1vdW50L29uZi1jb3JlLW1vZGVsLWNvbmRpdGlvbmFsLXBhY2thZ2VzOmVxdWlwbWVudC1wYWMvJHtpZGVudGlmaWVyfWAsXG4gICAgICBtZXRob2Q6IFwiR0VUXCJcbiAgICB9O1xuICAgIHJldHVybiB0aGlzLiRtd3RuQ29tbW9ucy5nZW5lcmljUmVxdWVzdDxFeHRlbnNpb25SZXN1bHQ+KHJlcXVlc3QpLnRoZW4oKHJlc3VsdCkgPT4ge1xuICAgICAgaWYgKHJlc3VsdCAmJiByZXN1bHQuc3RhdHVzID09IDIwMCAmJiByZXN1bHQuZGF0YSkge1xuICAgICAgICByZXR1cm4gdGhpcy5jb252ZXJ0T2JqZWN0KHJlc3VsdC5kYXRhKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBudWxsO1xuICAgIH0sIGVyciA9PiAobnVsbCkpO1xuICB9XG59XG5td3RuSW52ZW50b3J5LnNlcnZpY2UoJ213dG5JbnZlbnRvcnlTZXJ2aWNlJywgW1wiJHFcIiwgXCIkbXd0bkNvbW1vbnNcIiwgXCIkbXd0bkRhdGFiYXNlXCIsIFwiJG13dG5Mb2dcIiwgSW52ZW50b3J5U2VydmljZV0pO1xuIiwiZXhwb3J0IGNsYXNzIEVxdWlwbWVudCB7XG4gIHV1aWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBsYWJlbDogc3RyaW5nO1xuICBjaGlsZHJlbjogRXF1aXBtZW50W107XG59IiwiZGVjbGFyZSB2YXIgYW5ndWxhcjogYW5ndWxhci5JQW5ndWxhclN0YXRpYzsgIFxuXG5pbXBvcnQgeyBFcXVpcG1lbnQgfSBmcm9tICcuLi9tb2RlbHMvZXF1aXBtZW50JztcblxuY29uc3QgbXd0bkludmVudG9yeSA9IGFuZ3VsYXIubW9kdWxlKCdhcHAubXd0bkludmVudG9yeScpO1xuXG5jb25zdCBFcXVpcG1lbnREaXJlY3RpdmUgPSAoKSA9PiB7XG4gIHJldHVybiB7XG4gICAgdGVtcGxhdGVVcmw6ICdzcmMvYXBwL213dG5JbnZlbnRvcnkvY29tcG9uZW50cy9lcXVpcG1lbnQuaHRtbCcsXG4gICAgY29udHJvbGxlcjogJ213dG5FcXVpcG1lbnRDdHJsJyxcbiAgICBjb250cm9sbGVyQXM6ICd2bScsXG4gICAgc2NvcGU6IHtcbiAgICAgIGVxdWlwbWVudDogXCI9XCJcbiAgICB9XG4gIH1cbn07XG5cbm13dG5JbnZlbnRvcnkuZGlyZWN0aXZlKCdtd3RuRXF1aXBtZW50JywgRXF1aXBtZW50RGlyZWN0aXZlKTtcblxuZXhwb3J0IGNsYXNzIEVxdWlwbWVudENvbnRyb2xsZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlICRzY29wZTogbmcuSVNjb3BlICYgeyBlcXVpcG1lbnQ6IEVxdWlwbWVudCB9KSB7XG4gICBcbiAgfVxuXG4gXG59XG5cbm13dG5JbnZlbnRvcnkuY29udHJvbGxlcignbXd0bkVxdWlwbWVudEN0cmwnLCBbJyRzY29wZScsIEVxdWlwbWVudENvbnRyb2xsZXJdKTtcbiIsImRlY2xhcmUgdmFyIGFuZ3VsYXI6IGFuZ3VsYXIuSUFuZ3VsYXJTdGF0aWM7IFxuXG5pbXBvcnQgeyBFcXVpcG1lbnQgfSBmcm9tICcuLi9tb2RlbHMvZXF1aXBtZW50JztcblxuY29uc3QgbXd0bkludmVudG9yeSA9IGFuZ3VsYXIubW9kdWxlKCdhcHAubXd0bkludmVudG9yeScpO1xuXG5jb25zdCBFcXVpcG1lbnRHcm91cERpcmVjdGl2ZSA9ICgkY29tcGlsZSkgPT4ge1xuICByZXR1cm4ge1xuICAgIHRlbXBsYXRlVXJsOiAnc3JjL2FwcC9td3RuSW52ZW50b3J5L2NvbXBvbmVudHMvZXF1aXBtZW50R3JvdXAuaHRtbCcsXG4gICAgY29udHJvbGxlcjogJ213dG5FcXVpcG1lbnRHcm91cEN0cmwnLFxuICAgIGNvbnRyb2xsZXJBczogJ3ZtJyxcbiAgICBzY29wZToge1xuICAgICAgZXF1aXBtZW50czogXCI9XCJcbiAgICB9LFxuICAgIC8vIEhBQ0s6IGZvciBhbmd1bGFyIDEuNC4gY29tcGF0aWJpbGl0eVxuICAgIGNvbXBpbGU6IGZ1bmN0aW9uICh0RWxlbWVudCwgdEF0dHIsIHRyYW5zY2x1ZGUpIHtcbiAgICAgIHZhciBjb250ZW50cyA9IHRFbGVtZW50LmNvbnRlbnRzKCkucmVtb3ZlKCk7XG4gICAgICB2YXIgY29tcGlsZWRDb250ZW50cztcbiAgICAgIHJldHVybiBmdW5jdGlvbiAoc2NvcGUsIGlFbGVtZW50LCBpQXR0cikge1xuICAgICAgICBpZiAoIWNvbXBpbGVkQ29udGVudHMpIHtcbiAgICAgICAgICBjb21waWxlZENvbnRlbnRzID0gJGNvbXBpbGUoY29udGVudHMsIHRyYW5zY2x1ZGUpO1xuICAgICAgICB9XG4gICAgICAgIGNvbXBpbGVkQ29udGVudHMoc2NvcGUsIGZ1bmN0aW9uIChjbG9uZSwgc2NvcGUpIHtcbiAgICAgICAgICBpRWxlbWVudC5hcHBlbmQoY2xvbmUpO1xuICAgICAgICB9KTtcbiAgICAgIH07XG4gICAgfVxuICB9XG59O1xuXG5td3RuSW52ZW50b3J5LmRpcmVjdGl2ZSgnbXd0bkVxdWlwbWVudEdyb3VwJywgWyckY29tcGlsZScsIEVxdWlwbWVudEdyb3VwRGlyZWN0aXZlXSk7XG5cbmV4cG9ydCBjbGFzcyBFcXVpcG1lbnRHcm91cENvbnRyb2xsZXIge1xuICBjb25zdHJ1Y3Rvcihwcml2YXRlICRzY29wZTogbmcuSVNjb3BlICYgeyBlcXVpcG1lbnRzOiBFcXVpcG1lbnRbXSB9KSB7XG4gICAgLy9jb25zb2xlLmxvZyhcIkVxdWlwbWVudEdyb3VwQ29udHJvbGxlclwiLCAkc2NvcGUuZXF1aXBtZW50cyk7XG4gICAgXG4gIH1cblxufVxuXG5td3RuSW52ZW50b3J5LmNvbnRyb2xsZXIoJ213dG5FcXVpcG1lbnRHcm91cEN0cmwnLCBbJyRzY29wZScsIEVxdWlwbWVudEdyb3VwQ29udHJvbGxlcl0pOyIsImRlY2xhcmUgdmFyIGFuZ3VsYXI6IGFuZ3VsYXIuSUFuZ3VsYXJTdGF0aWM7IFxuXG5pbXBvcnQgeyBJbnZlbnRvcnlTZXJ2aWNlIH0gZnJvbSBcIi4vbXd0bkludmVudG9yeS5zZXJ2aWNlXCI7IFxuaW1wb3J0IFwiLi9td3RuSW52ZW50b3J5LnNlcnZpY2VcIjtcbmltcG9ydCBcIi4vY29tcG9uZW50cy9lcXVpcG1lbnRcIjtcbmltcG9ydCBcIi4vY29tcG9uZW50cy9lcXVpcG1lbnRHcm91cFwiO1xuXG5jb25zdCBtd3RuSW52ZW50b3J5ID0gYW5ndWxhci5tb2R1bGUoJ2FwcC5td3RuSW52ZW50b3J5Jyk7XG5cbmludGVyZmFjZSBJTXd0bkludmVudG9yeVNjb3BlIGV4dGVuZHMgbmcuSVNjb3BlIHtcbiAgbWVzc2FnZTogc3RyaW5nLFxuICBlcXVpcG1lbnRzOiB7fVtdO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBhY3RpdmVNb3VudFBvaW50czogc3RyaW5nW107XG4gIHNlbGVjdGVkTW91bnRQb2ludDogc3RyaW5nO1xufVxuXG5jbGFzcyBNd3RuSW52ZW50b3J5Q3RybCB7XG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgJHJvb3RTY29wZSwgcHJpdmF0ZSAkc2NvcGU6IElNd3RuSW52ZW50b3J5U2NvcGUsIHByaXZhdGUgJHN0YXRlLCBwcml2YXRlICR0aW1lb3V0LCBwcml2YXRlIG13dG5JbnZlbnRvcnlTZXJ2aWNlOiBJbnZlbnRvcnlTZXJ2aWNlKSB7XG4gICAgLy8gdG9kbzogY2hhbmdlIHRoaXNcbiAgICAkcm9vdFNjb3BlLnNlY3Rpb25fbG9nbyA9ICdzcmMvYXBwL213dG5JbnZlbnRvcnkvaW1hZ2VzL213dG5JbnZlbnRvcnkucG5nJztcblxuICAgICRzY29wZS5sb2FkaW5nID0gZmFsc2U7XG4gICAgJHNjb3BlLm1lc3NhZ2UgPSBcIkVtcHR5XCI7XG4gICAgJHNjb3BlLmVxdWlwbWVudHMgPSBbXTtcbiAgICAkc2NvcGUuc2VsZWN0ZWRNb3VudFBvaW50ID0gbnVsbDtcblxuICAgICRzY29wZS5hY3RpdmVNb3VudFBvaW50cyA9IFtdO1xuXG4gICAgY29uc3QgZ2V0QWxsQ2hpbGRFcXVpcG1lbnRzID0gYXN5bmMgKGVxdWlwbWVudHNSb290SWQ6IHN0cmluZywgZXF1aW1lbnRJZHM6IHN0cmluZ1tdKSA9PiB7XG4gICAgICBpZiAoIWVxdWltZW50SWRzIHx8ICFlcXVpbWVudElkcy5sZW5ndGgpIHtcbiAgICAgICAgcmV0dXJuIFtdO1xuICAgICAgfVxuICAgICAgY29uc3QgZXF1aXBtZW50T2JqZWN0cyA9IChhd2FpdCBQcm9taXNlLmFsbChlcXVpbWVudElkcy5tYXAoaWQgPT4ge1xuICAgICAgICByZXR1cm4gbXd0bkludmVudG9yeVNlcnZpY2UuZ2V0RXF1aXBtZW50RGV0YWlscyhlcXVpcG1lbnRzUm9vdElkLCBpZCk7XG4gICAgICB9KSkpLm1hcChlcSA9PiAoZXFbXCJlcXVpcG1lbnRcIl1bMF0pKTtcblxuICAgICAgY29uc3QgZXF1aXBtZW50Q29uZGl0aW9uYWxzID0gKGF3YWl0IFByb21pc2UuYWxsKGVxdWltZW50SWRzLm1hcChpZCA9PiB7XG4gICAgICAgIHJldHVybiBtd3RuSW52ZW50b3J5U2VydmljZS5nZXRFcXVpcG1lbnRDb25kaXRpb25hbHMoZXF1aXBtZW50c1Jvb3RJZCwgaWQpO1xuICAgICAgfSkpKS5tYXAoZXEgPT4gKGVxW1wiZXF1aXBtZW50LXBhY1wiXVswXSkpO1xuICAgICAgXG4gICAgICBsZXQgcmVzdWx0cyA9IGF3YWl0IFByb21pc2UuYWxsKGVxdWlwbWVudE9iamVjdHMubWFwKGVxID0+IHtcbiAgICAgICAgbGV0IGZydU5hbWVzOiBzdHJpbmdbXSA9IChlcVtcImNvbnRhaW5lZC1ob2xkZXJcIl0gfHwgW10pLm1hcChjaCA9PiBjaFtcIm9jY3VweWluZy1mcnVcIl0pLmZpbHRlcihmcnUgPT4gISFmcnUpO1xuICAgICAgICByZXR1cm4gZ2V0QWxsQ2hpbGRFcXVpcG1lbnRzKGVxdWlwbWVudHNSb290SWQsIGZydU5hbWVzKTtcbiAgICAgIH0pKTtcblxuICAgICAgcmV0dXJuIGVxdWlwbWVudE9iamVjdHMucmVkdWNlKChhY2MsIGN1ciwgaW5kLCBhcnIpID0+IHtcbiAgICAgICAgbGV0IGNvbmRpdGlvbmFsID0gZXF1aXBtZW50Q29uZGl0aW9uYWxzW2luZF0gfHwgbnVsbDtcbiAgICAgICAgLy8gZW5zdXJlIEVOVkVSWSBwcm9wZXJ0eSBjYW4gYmUgbnVsbCBvciB1bmRlZmluZWRcbiAgICAgICAgbGV0IG1hbnVmYWN0dXJlZFRoaW5nID0gY3VyWydtYW51ZmFjdHVyZWQtdGhpbmcnXTtcbiAgICAgICAgbGV0IGVxdWlwbWVudFR5cGUgPSBtYW51ZmFjdHVyZWRUaGluZyAmJiBtYW51ZmFjdHVyZWRUaGluZ1snZXF1aXBtZW50LXR5cGUnXTtcbiAgICAgICAgbGV0IG1hbnVmYWN0dXJlclByb3BlcnRpZXMgPSBtYW51ZmFjdHVyZWRUaGluZyAmJiBtYW51ZmFjdHVyZWRUaGluZ1snbWFudWZhY3R1cmVyLXByb3BlcnRpZXMnXTtcbiAgICAgICAgbGV0IGVxdWlwbWVudEluc3RhbmNlID0gbWFudWZhY3R1cmVkVGhpbmcgJiYgbWFudWZhY3R1cmVkVGhpbmdbJ2VxdWlwbWVudC1pbnN0YW5jZSddO1xuXG4gICAgICAgIGxldCBjYXJkID0ge1xuICAgICAgICAgIG5hbWU6IGN1ci5uYW1lLFxuICAgICAgICAgIGxhYmVsOiBjdXIubGFiZWwsXG4gICAgICAgICAgdXVpZDogY3VyLnV1aWQsXG4gICAgICAgICAgbWFudWZhY3R1cmVyOiB7XG4gICAgICAgICAgICB2ZXJzaW9uOiBlcXVpcG1lbnRUeXBlICYmIGVxdWlwbWVudFR5cGVbXCJ2ZXJzaW9uXCJdLFxuICAgICAgICAgICAgZGVzY3JpcHRpb246IGVxdWlwbWVudFR5cGUgJiYgZXF1aXBtZW50VHlwZVtcImRlc2NyaXB0aW9uXCJdLFxuICAgICAgICAgICAgcGFydFR5cGVJZGVudGlmaWVyOiBlcXVpcG1lbnRUeXBlICYmIGVxdWlwbWVudFR5cGVbXCJwYXJ0LXR5cGUtaWRlbnRpZmllclwiXSxcbiAgICAgICAgICAgIG1vZGVsSWRlbnRpZmllcjogZXF1aXBtZW50VHlwZSAmJiBlcXVpcG1lbnRUeXBlW1wibW9kZWwtaWRlbnRpZmllclwiXSxcbiAgICAgICAgICAgIHBhcnRUeXBlSWRldHlwZU5hbWVudGlmaWVyOiBlcXVpcG1lbnRUeXBlICYmIGVxdWlwbWVudFR5cGVbXCJ0eXBlLW5hbWVcIl0sXG4gICAgICAgICAgICBpZDogbWFudWZhY3R1cmVyUHJvcGVydGllcyAmJiBtYW51ZmFjdHVyZXJQcm9wZXJ0aWVzWydtYW51ZmFjdHVyZXItaWRlbnRpZmllciddLFxuICAgICAgICAgICAgZGF0ZTogZXF1aXBtZW50SW5zdGFuY2UgJiYgZXF1aXBtZW50SW5zdGFuY2VbJ21hbnVmYWN0dXJlLWRhdGUnXSAmJiBEYXRlLnBhcnNlKGVxdWlwbWVudEluc3RhbmNlICYmIGVxdWlwbWVudEluc3RhbmNlWydtYW51ZmFjdHVyZS1kYXRlJ10pLFxuICAgICAgICAgICAgc2VyaWFsOiBlcXVpcG1lbnRJbnN0YW5jZSAmJiBlcXVpcG1lbnRJbnN0YW5jZVsnc2VyaWFsLW51bWJlciddXG4gICAgICAgICAgfSxcbiAgICAgICAgICBjb25kaXRpb25hbDogY29uZGl0aW9uYWxcbiAgICAgICAgfTtcbiAgICAgICAgKHJlc3VsdHNbaW5kXS5sZW5ndGggPyBjYXJkWydjaGlsZHJlbiddID0gcmVzdWx0c1tpbmRdIDogbnVsbCk7XG4gICAgICAgIGFjYy5wdXNoKGNhcmQpO1xuICAgICAgICByZXR1cm4gYWNjO1xuICAgICAgfSwgW10pO1xuICAgIH1cblxuICAgIGNvbnN0IHBsZWFzZVNlbGVjdCA9IFwiUGxlYXNlIHNlbGVjdCBhIG1vdW50IHBvaW50XCI7XG5cbiAgICBjb25zdCByZWZyZXNoID0gYXN5bmMgKGVxdWlwbWVudHNSb290SWQ6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IHJvb3RJZGVudGlmaWVycyA9IGF3YWl0IG13dG5JbnZlbnRvcnlTZXJ2aWNlLmdldFJvb3RJZGVudGlmaWVycyhlcXVpcG1lbnRzUm9vdElkKTtcbiAgICAgIGxldCBlcXVpcG1lbnRzID0gcm9vdElkZW50aWZpZXJzICYmIGF3YWl0IGdldEFsbENoaWxkRXF1aXBtZW50cyhlcXVpcG1lbnRzUm9vdElkLCByb290SWRlbnRpZmllcnMpO1xuICAgICAgJHRpbWVvdXQoKCkgPT4ge1xuICAgICAgICAkc2NvcGUuZXF1aXBtZW50cyA9IGVxdWlwbWVudHM7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgbXd0bkludmVudG9yeVNlcnZpY2UuZ2V0Q29ubmVjdGVkTW91bnRwb2ludHMoKS50aGVuKHJlcyA9PiB7XG4gICAgICAkc2NvcGUuYWN0aXZlTW91bnRQb2ludHMgPSBbcGxlYXNlU2VsZWN0LCAuLi5yZXNdIDtcbiAgICAgICRzY29wZS5zZWxlY3RlZE1vdW50UG9pbnQgPSAkc2NvcGUuc2VsZWN0ZWRNb3VudFBvaW50IHx8IHBsZWFzZVNlbGVjdDtcbiAgICB9KTtcblxuICAgICRzY29wZS4kd2F0Y2goKCkgPT4gKCRzdGF0ZS5wYXJhbXMubm9kZUlkKSwgKG5ld1ZhbDogc3RyaW5nLCBvbGRWYWw6IHN0cmluZykgPT4ge1xuICAgICAgJHNjb3BlLnNlbGVjdGVkTW91bnRQb2ludCA9IG5ld1ZhbDtcbiAgICB9KTtcblxuICAgICRzY29wZS4kd2F0Y2goXCJzZWxlY3RlZE1vdW50UG9pbnRcIiwgYXN5bmMgKG5ld1ZhbDogc3RyaW5nLCBvbGRWYWw6IHN0cmluZykgPT4ge1xuICAgICAgaWYgKCFuZXdWYWwgfHwgbmV3VmFsID09PSBwbGVhc2VTZWxlY3QpIHtcbiAgICAgICAgJHNjb3BlLmVxdWlwbWVudHMgPSBbXTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgaWYgKCRzY29wZS5hY3RpdmVNb3VudFBvaW50c1swXSA9PT0gcGxlYXNlU2VsZWN0KSB7XG4gICAgICAgIFssIC4uLiRzY29wZS5hY3RpdmVNb3VudFBvaW50c10gPSAkc2NvcGUuYWN0aXZlTW91bnRQb2ludHM7XG4gICAgICB9IFxuICAgICAgJHNjb3BlLmxvYWRpbmcgPSB0cnVlO1xuICAgICAgaWYgKCRzdGF0ZS5wYXJhbXMubm9kZUlkICE9PSBuZXdWYWwpIHtcbiAgICAgICAgJHN0YXRlLmdvKCdtYWluLm13dG5JbnZlbnRvcnknLCB7IG5vZGVJZDogbmV3VmFsIH0sIHsgbm90aWZ5OiBmYWxzZSB9KTtcbiAgICAgIH1cbiAgICAgIGF3YWl0IHJlZnJlc2gobmV3VmFsKS5jYXRjaChlcnIgPT4ge1xuICAgICAgICAkdGltZW91dCgoKSA9PiB7ICRzY29wZS5lcXVpcG1lbnRzID0gbnVsbDsgfSk7XG4gICAgICB9KTtcbiAgICAgICR0aW1lb3V0KCgpID0+IHsgJHNjb3BlLmxvYWRpbmcgPSBmYWxzZTsgfSk7XG4gICAgfSk7XG4gIH1cbn1cblxubXd0bkludmVudG9yeS5jb250cm9sbGVyKCdtd3RuSW52ZW50b3J5Q3RybCcsIFsnJHJvb3RTY29wZScsICckc2NvcGUnLCAnJHN0YXRlJywgJyR0aW1lb3V0JywgJ213dG5JbnZlbnRvcnlTZXJ2aWNlJywgTXd0bkludmVudG9yeUN0cmxdKTtcbiJdfQ==
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.controller.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.controller.ts
deleted file mode 100644 (file)
index f4cb3e8..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-declare var angular: angular.IAngularStatic; 
-
-import { InventoryService } from "./mwtnInventory.service"; 
-import "./mwtnInventory.service";
-import "./components/equipment";
-import "./components/equipmentGroup";
-
-const mwtnInventory = angular.module('app.mwtnInventory');
-
-interface IMwtnInventoryScope extends ng.IScope {
-  message: string,
-  equipments: {}[];
-  loading: boolean;
-  activeMountPoints: string[];
-  selectedMountPoint: string;
-}
-
-class MwtnInventoryCtrl {
-  constructor(private $rootScope, private $scope: IMwtnInventoryScope, private $state, private $timeout, private mwtnInventoryService: InventoryService) {
-    // todo: change this
-    $rootScope.section_logo = 'src/app/mwtnInventory/images/mwtnInventory.png';
-
-    $scope.loading = false;
-    $scope.message = "Empty";
-    $scope.equipments = [];
-    $scope.selectedMountPoint = null;
-
-    $scope.activeMountPoints = [];
-
-    const getAllChildEquipments = async (equipmentsRootId: string, equimentIds: string[]) => {
-      if (!equimentIds || !equimentIds.length) {
-        return [];
-      }
-      const equipmentObjects = (await Promise.all(equimentIds.map(id => {
-        return mwtnInventoryService.getEquipmentDetails(equipmentsRootId, id);
-      }))).map(eq => (eq["equipment"][0]));
-
-      const equipmentConditionals = (await Promise.all(equimentIds.map(id => {
-        return mwtnInventoryService.getEquipmentConditionals(equipmentsRootId, id);
-      }))).map(eq => (eq["equipment-pac"][0]));
-      
-      let results = await Promise.all(equipmentObjects.map(eq => {
-        let fruNames: string[] = (eq["contained-holder"] || []).map(ch => ch["occupying-fru"]).filter(fru => !!fru);
-        return getAllChildEquipments(equipmentsRootId, fruNames);
-      }));
-
-      return equipmentObjects.reduce((acc, cur, ind, arr) => {
-        let conditional = equipmentConditionals[ind] || null;
-        // ensure ENVERY property can be null or undefined
-        let manufacturedThing = cur['manufactured-thing'];
-        let equipmentType = manufacturedThing && manufacturedThing['equipment-type'];
-        let manufacturerProperties = manufacturedThing && manufacturedThing['manufacturer-properties'];
-        let equipmentInstance = manufacturedThing && manufacturedThing['equipment-instance'];
-
-        let card = {
-          name: cur.name,
-          label: cur.label,
-          uuid: cur.uuid,
-          manufacturer: {
-            version: equipmentType && equipmentType["version"],
-            description: equipmentType && equipmentType["description"],
-            partTypeIdentifier: equipmentType && equipmentType["part-type-identifier"],
-            modelIdentifier: equipmentType && equipmentType["model-identifier"],
-            partTypeIdetypeNamentifier: equipmentType && equipmentType["type-name"],
-            id: manufacturerProperties && manufacturerProperties['manufacturer-identifier'],
-            date: equipmentInstance && equipmentInstance['manufacture-date'] && Date.parse(equipmentInstance && equipmentInstance['manufacture-date']),
-            serial: equipmentInstance && equipmentInstance['serial-number']
-          },
-          conditional: conditional
-        };
-        (results[ind].length ? card['children'] = results[ind] : null);
-        acc.push(card);
-        return acc;
-      }, []);
-    }
-
-    const pleaseSelect = "Please select a mount point";
-
-    const refresh = async (equipmentsRootId: string) => {
-      let rootIdentifiers = await mwtnInventoryService.getRootIdentifiers(equipmentsRootId);
-      let equipments = rootIdentifiers && await getAllChildEquipments(equipmentsRootId, rootIdentifiers);
-      $timeout(() => {
-        $scope.equipments = equipments;
-      });
-    };
-
-    mwtnInventoryService.getConnectedMountpoints().then(res => {
-      $scope.activeMountPoints = [pleaseSelect, ...res] ;
-      $scope.selectedMountPoint = $scope.selectedMountPoint || pleaseSelect;
-    });
-
-    $scope.$watch(() => ($state.params.nodeId), (newVal: string, oldVal: string) => {
-      $scope.selectedMountPoint = newVal;
-    });
-
-    $scope.$watch("selectedMountPoint", async (newVal: string, oldVal: string) => {
-      if (!newVal || newVal === pleaseSelect) {
-        $scope.equipments = [];
-        return;
-      }
-      if ($scope.activeMountPoints[0] === pleaseSelect) {
-        [, ...$scope.activeMountPoints] = $scope.activeMountPoints;
-      } 
-      $scope.loading = true;
-      if ($state.params.nodeId !== newVal) {
-        $state.go('main.mwtnInventory', { nodeId: newVal }, { notify: false });
-      }
-      await refresh(newVal).catch(err => {
-        $timeout(() => { $scope.equipments = null; });
-      });
-      $timeout(() => { $scope.loading = false; });
-    });
-  }
-}
-
-mwtnInventory.controller('mwtnInventoryCtrl', ['$rootScope', '$scope', '$state', '$timeout', 'mwtnInventoryService', MwtnInventoryCtrl]);
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.module.js
deleted file mode 100644 (file)
index 5e10494..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-define( ["require", "exports"], function (require, exports) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.mwtnInventory = angular.module('app.mwtnInventory', ['app.core']);
-    exports.mwtnInventory.config(function ($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $httpProvider, $translateProvider, $translatePartialLoaderProvider) {
-        //$translatePartialLoaderProvider.addPart('app/mwtnInventory/locale/locale');
-        NavHelperProvider.addControllerUrl('app/mwtnInventory/mwtnInventory.controller');
-        NavHelperProvider.addToMenu('mwtnInventory', {
-            "link": "#/pnfInventory/",
-            "active": "main.mwtnInventory",
-            "title": "pnf Inventory",
-            "icon": "fa  fa-book",
-            "page": {
-                "title": "pnf Inventory",
-                "description": "mwtnInventory"
-            }
-        });
-        $stateProvider.state('main.mwtnInventory', {
-            url: 'pnfInventory/:nodeId?',
-            access: 2,
-            views: {
-                'content': {
-                    templateUrl: 'src/app/mwtnInventory/mwtnInventory.tpl.html',
-                    controller: 'mwtnInventoryCtrl'
-                }
-            }
-        });
-    });
-});
-/* non ES6 export */
-// export = mwtnInventory;   
-// export default mwtnInventory;
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXd0bkludmVudG9yeS5tb2R1bGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJzcmMvYXBwL213dG5JbnZlbnRvcnkvbXd0bkludmVudG9yeS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0lBR2EsUUFBQSxhQUFhLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUM7SUFFL0UscUJBQWEsQ0FBQyxNQUFNLENBQUMsVUFBVSxjQUFjLEVBQUUsZ0JBQWdCLEVBQUUsbUJBQW1CLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFFLGFBQWEsRUFBRSxrQkFBa0IsRUFBRSwrQkFBK0I7UUFFbkwsNkVBQTZFO1FBRTdFLGlCQUFpQixDQUFDLGdCQUFnQixDQUFDLDRDQUE0QyxDQUFDLENBQUM7UUFDakYsaUJBQWlCLENBQUMsU0FBUyxDQUFDLGVBQWUsRUFBRTtZQUMzQyxNQUFNLEVBQUUsa0JBQWtCO1lBQzFCLFFBQVEsRUFBRSxvQkFBb0I7WUFDOUIsT0FBTyxFQUFFLGdCQUFnQjtZQUN6QixNQUFNLEVBQUUsYUFBYTtZQUNyQixNQUFNLEVBQUU7Z0JBQ04sT0FBTyxFQUFFLFdBQVc7Z0JBQ3BCLGFBQWEsRUFBRSxlQUFlO2FBQy9CO1NBQ0YsQ0FBQyxDQUFDO1FBRUgsY0FBYyxDQUFDLEtBQUssQ0FBQyxvQkFBb0IsRUFBRTtZQUN6QyxHQUFHLEVBQUUsd0JBQXdCO1lBQzdCLE1BQU0sRUFBRSxDQUFDO1lBQ1QsS0FBSyxFQUFFO2dCQUNMLFNBQVMsRUFBRTtvQkFDVCxXQUFXLEVBQUUsOENBQThDO29CQUMzRCxVQUFVLEVBQUUsbUJBQW1CO2lCQUNoQzthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7O0FBRUgsb0JBQW9CO0FBQ3BCLDZCQUE2QjtBQUM3QixnQ0FBZ0MiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgKiBhcyBhbmd1bGFyIGZyb20gJ2FuZ3VsYXJBTUQnO1xuZGVjbGFyZSB2YXIgYW5ndWxhcjogYW5ndWxhci5JQW5ndWxhclN0YXRpYzsgXG5cbmV4cG9ydCBjb25zdCBtd3RuSW52ZW50b3J5ID0gYW5ndWxhci5tb2R1bGUoJ2FwcC5td3RuSW52ZW50b3J5JywgWydhcHAuY29yZSddKTtcblxubXd0bkludmVudG9yeS5jb25maWcoZnVuY3Rpb24gKCRzdGF0ZVByb3ZpZGVyLCAkY29tcGlsZVByb3ZpZGVyLCAkY29udHJvbGxlclByb3ZpZGVyLCAkcHJvdmlkZSwgTmF2SGVscGVyUHJvdmlkZXIsICRodHRwUHJvdmlkZXIsICR0cmFuc2xhdGVQcm92aWRlciwgJHRyYW5zbGF0ZVBhcnRpYWxMb2FkZXJQcm92aWRlcikge1xuXG4gIC8vJHRyYW5zbGF0ZVBhcnRpYWxMb2FkZXJQcm92aWRlci5hZGRQYXJ0KCdhcHAvbXd0bkludmVudG9yeS9sb2NhbGUvbG9jYWxlJyk7XG5cbiAgTmF2SGVscGVyUHJvdmlkZXIuYWRkQ29udHJvbGxlclVybCgnYXBwL213dG5JbnZlbnRvcnkvbXd0bkludmVudG9yeS5jb250cm9sbGVyJyk7XG4gIE5hdkhlbHBlclByb3ZpZGVyLmFkZFRvTWVudSgnbXd0bkludmVudG9yeScsIHtcbiAgICBcImxpbmtcIjogXCIjL213dG5JbnZlbnRvcnkvXCIsXG4gICAgXCJhY3RpdmVcIjogXCJtYWluLm13dG5JbnZlbnRvcnlcIixcbiAgICBcInRpdGxlXCI6IFwiTVdUTiBJbnZlbnRvcnlcIixcbiAgICBcImljb25cIjogXCJmYSAgZmEtYm9va1wiLCAgLy8gQWRkIG5hdmlnYXRpb24gaWNvbiBjc3MgY2xhc3MgaGVyZVxuICAgIFwicGFnZVwiOiB7XG4gICAgICBcInRpdGxlXCI6IFwiTVdUTiBEZW1vXCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwibXd0bkludmVudG9yeVwiXG4gICAgfVxuICB9KTtcblxuICAkc3RhdGVQcm92aWRlci5zdGF0ZSgnbWFpbi5td3RuSW52ZW50b3J5Jywge1xuICAgIHVybDogJ213dG5JbnZlbnRvcnkvOm5vZGVJZD8nLFxuICAgIGFjY2VzczogMixcbiAgICB2aWV3czoge1xuICAgICAgJ2NvbnRlbnQnOiB7XG4gICAgICAgIHRlbXBsYXRlVXJsOiAnc3JjL2FwcC9td3RuSW52ZW50b3J5L213dG5JbnZlbnRvcnkudHBsLmh0bWwnLFxuICAgICAgICBjb250cm9sbGVyOiAnbXd0bkludmVudG9yeUN0cmwnXG4gICAgICB9XG4gICAgfVxuICB9KTtcbn0pO1xuXG4vKiBub24gRVM2IGV4cG9ydCAqL1xuLy8gZXhwb3J0ID0gbXd0bkludmVudG9yeTsgICBcbi8vIGV4cG9ydCBkZWZhdWx0IG13dG5JbnZlbnRvcnk7Il19
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.module.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.module.ts
deleted file mode 100644 (file)
index 6fee700..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-// import * as angular from 'angularAMD';
-declare var angular: angular.IAngularStatic; 
-
-export const mwtnInventory = angular.module('app.mwtnInventory', ['app.core']);
-
-mwtnInventory.config(function ($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $httpProvider, $translateProvider, $translatePartialLoaderProvider) {
-
-  //$translatePartialLoaderProvider.addPart('app/mwtnInventory/locale/locale');
-
-  NavHelperProvider.addControllerUrl('app/mwtnInventory/mwtnInventory.controller');
-  NavHelperProvider.addToMenu('mwtnInventory', {
-    "link": "#/pnfInventory/",
-    "active": "main.mwtnInventory",
-    "title": "pnf Inventory",
-    "icon": "fa  fa-book",  // Add navigation icon css class here
-    "page": {
-      "title": "pnf Inventory",
-      "description": "mwtnInventory"
-    }
-  });
-
-  $stateProvider.state('main.mwtnInventory', {
-    url: 'pnfInventory/:nodeId?',
-    access: 2,
-    views: {
-      'content': {
-        templateUrl: 'src/app/mwtnInventory/mwtnInventory.tpl.html',
-        controller: 'mwtnInventoryCtrl'
-      }
-    }
-  });
-});
-
-/* non ES6 export */
-// export = mwtnInventory;   
-// export default mwtnInventory;
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.service.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.service.ts
deleted file mode 100644 (file)
index be381a4..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-import * as angular from 'angularAMD';
-
-const mwtnInventory = angular.module('app.mwtnInventory');
-
-class ExtensionResult {
-  public extension: [
-    { "value-name": string, "value": string }
-  ]
-}
-
-interface GenericGetRequest {
-  url: string;
-  method: "GET";
-}
-
-interface GenericPostRequest<T> {
-  url: string;
-  method: "POST";
-  data: T
-}
-
-interface CommonService {
-  genericRequest<TResult>(request: GenericGetRequest): ng.IPromise<ng.IHttpResponse<TResult>>;
-  genericRequest<TRequest, TResult>(request: GenericPostRequest<TRequest>): ng.IPromise<ng.IHttpResponse<TResult>>;
-  getMountPoints<TResult>(): ng.IPromise<TResult>;
-}
-
-export class InventoryService {
-  constructor(private $q: ng.IQService, private $mwtnCommons: CommonService, private $mwtnDatabase, private $mwtnLog) {
-
-  }
-
-  /** 
-   * Helperfunction to detect and convert the 'value-name-group' .
-   * @param propertyName Name of the object property.
-   * @param propertyValue Value of the object property.
-   * @param valueName Optional: The value-name to be used instaed of the propertyName.
-   * @returns A simplified property value if this is a 'value-name-group' otherwhise the propertyValue. */
-  private convertValue = (propertyName: string, propertyValue: any, valueName: string = ''): any => {
-    if (propertyValue && propertyValue instanceof Array && propertyValue.length == 1 && (
-      valueName == null ||
-      propertyValue[0]["value-name"] === propertyName ||
-      propertyValue[0]["value-name"] === valueName)
-    ) {
-      return propertyValue[0]["value"];
-    }
-    return propertyValue;
-  }
-
-  /** 
-   *  Converts an API object to a simplified local object.
-   *  @param apiResult The API object to convert.
-   *  @param valueName Optional: The value-name to be used instaed of the propertyName.
-   *  @returns The simplified local object.
-  */
-  private convertObject = (apiResult: any, valueName: string = ''): any => {
-    if (apiResult instanceof Array) {
-      return apiResult.map(elm => { return this.convertObject(elm, valueName); });
-    } else if (apiResult instanceof Object) {
-      const keys = Object.keys(apiResult);
-      let result = {};
-      keys.forEach(key => {
-        const value = this.convertValue(key, apiResult[key], valueName);
-        result[key] = (value instanceof Object || value instanceof Array)
-          ? this.convertObject(value)
-          : value;
-      });
-      return result;
-    }
-    return apiResult;
-  }
-
-  /** Requests all active moint points */
-  public getConnectedMountpoints(): ng.IPromise<string[]> {
-    return this.$mwtnCommons.getMountPoints<{}>().then((mountpoints: {}[]) => {
-      //console.log(mountpoints);
-      return <string[]>mountpoints.reduce((acc: string[], cur, ind, arr) => {
-        if (cur['netconf-node-topology:connection-status'] === 'connected') acc.push(cur["node-id"]);
-        return acc;
-      }, []);
-    });
-  }
-
-  /** 
-   * Requests all 'root identifiers' for the given 'node id'.
-   * @param nodeId The id of the node to request the root identifiers for.
-   * @returns A q.Promise containing an array of all root identifiers for the requested node id.
-   * */
-  public getRootIdentifiers(nodeId: string): ng.IPromise<string[]> {
-
-    const request: GenericGetRequest = {
-      url: `operational/network-topology:network-topology/topology/topology-netconf/node/${nodeId}/yang-ext:mount/core-model:network-element/extension/top-level-equipment`,
-      method: "GET"
-    };
-
-    return this.$mwtnCommons.genericRequest<ExtensionResult>(request).then((result) => {
-      if (result && result.status == 200 && result.data) {
-        const topLevelEquipment = this.convertObject(result.data, 'top-level-equipment');
-        const rootIdentifiers = topLevelEquipment && topLevelEquipment.extension && topLevelEquipment.extension.split(',');
-        return rootIdentifiers && rootIdentifiers.map(identifier => identifier && identifier.trim());
-      }
-      return null;
-    }, err => (null));
-  }
-
-  /** 
-   * Requests the detail information for the given combination of 'nodeId' and 'equipmentIdentifier'.
-   * @param nodeId The id of the root node.
-   * @param identifier The identifier to request the details for.
-   * @returns A q.Promise containing an object with all the details.
-   * */
-  public getEquipmentDetails(nodeId: string, identifier: string): ng.IPromise<{}> {
-    const request: GenericGetRequest = {
-      url: `operational/network-topology:network-topology/topology/topology-netconf/node/${nodeId}/yang-ext:mount/core-model:equipment/${identifier}`,
-      method: "GET"
-    };
-    return this.$mwtnCommons.genericRequest<ExtensionResult>(request).then((result) => {
-      if (result && result.status == 200 && result.data) {
-        return this.convertObject(result.data);
-      }
-      return null;
-    }, err => (null));
-  }
-
-  /** 
-   * Requests the conditional information for the given combination of 'nodeId' and 'equipmentIdentifier'.
-   * @param nodeId The id of the root node.
-   * @param identifier The identifier to request the conditionals for.
-   * @returns A q.Promise containing an object with all the conditional informations.
-   * */
-  public getEquipmentConditionals(nodeId: string, identifier: string): ng.IPromise<{}> {
-    const request: GenericGetRequest = {
-      url: `operational/network-topology:network-topology/topology/topology-netconf/node/${nodeId}/yang-ext:mount/onf-core-model-conditional-packages:equipment-pac/${identifier}`,
-      method: "GET"
-    };
-    return this.$mwtnCommons.genericRequest<ExtensionResult>(request).then((result) => {
-      if (result && result.status == 200 && result.data) {
-        return this.convertObject(result.data);
-      }
-      return null;
-    }, err => (null));
-  }
-}
-mwtnInventory.service('mwtnInventoryService', ["$q", "$mwtnCommons", "$mwtnDatabase", "$mwtnLog", InventoryService]);
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.services.js
deleted file mode 100644 (file)
index 25f1f61..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnInventory/mwtnInventory.module','app/mwtnCommons/mwtnCommons.services'],function(mwtnInventoryApp) {
-
-  mwtnInventoryApp.register.factory('$mwtnInventory', function($q, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-    
-    var service = {};
-
-    service.checkModules = $mwtnCommons.checkModules;
-    service.getMwtnWebSocketUrl = $mwtnCommons.getMwtnWebSocketUrl;
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.formatData = $mwtnCommons.formatData;
-    service.formatTimeStamp = $mwtnCommons.formatTimeStamp;
-    service.deleteDocType = $mwtnDatabase.deleteDocType;
-    
-    
-    service.TimeStampToONFFormat=function(timestamp){
-
-      timestamp=timestamp.split('-').join('');
-      timestamp=timestamp.split(':').join('');
-      timestamp=timestamp.split(' ').join('');
-      timestamp=timestamp.replace('UTC','Z');
-      return timestamp;
-    };
-
-    service.getAllLogEntries = function(from, size) {
-      var sort = [ {
-        "fault.timeStamp" : {
-          order : 'desc'
-        }
-      }];
-      var deferred = $q.defer();
-      $mwtnDatabase.getAllData('sdnevents', 'faultlog', from, size, sort).then(function(success){
-        deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnInventory.getAllLogEntries', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-
-    service.getAllLogEntriesWithSort= function(from, size, sort){
-         var deferred = $q.defer();
-         $mwtnDatabase.getAllData('sdnevents', 'faultlog', from, size, sort).then(function(success){
-         deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnInventory.getAllLogEntries', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-
-    service.getFilteredSortedData=function(from, size, sort,query){
-      var deferred = $q.defer();
-         $mwtnDatabase.getFilteredSortedData('sdnevents', 'faultlog', from, size,sort, query).then(function(success){
-         deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnInventory.getFilteredSortedData', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-
-    };
-
-    service.getFilteredData= function(from, size, query){
-         var deferred = $q.defer();
-         $mwtnDatabase.getFilteredData('sdnevents', 'faultlog', from, size, query).then(function(success){
-         deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnInventory.getFilteredData', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-
-    service.getAllCurrentProblemEntries = function(from, size) {
-      var sort = [ {
-        "faultCurrent.timeStamp" : {
-          order : 'desc'
-        }
-      }];
-      var deferred = $q.defer();
-      $mwtnDatabase.getAllData('sdnevents', 'faultcurrent', from, size, sort).then(function(success){
-        deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnInventory.getAllCurrentLogEntries', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-
-    return service;
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/mwtnInventory.tpl.html
deleted file mode 100644 (file)
index 4a7504a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<ht-header help-link='sdnr/pnfInventory/0.4.0/README.md'></ht-header>
-<div class="app-mwtnInventory">
-  <div class="col-md-12 form-group">
-    <select class="form-control" ng-model="selectedMountPoint"  ng-options="x for x in activeMountPoints | orderBy" ng-disabled="loading"> </select>
-  </div>
-  <div ng-if="!loading && equipments != null && equipments.length > 0" >
-     <mwtn-equipment-group equipments="equipments" />
-  </div>
-  <div class="col-md-12" ng-if="!loading && equipments == null" ><h2>This device does not support inventory</h2></div>
-  <div class="col-md-12" ng-if="loading" ><h2>Loading ... </h2></div>
-</div>
-
-<hr />
-<div class="owl">
- <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/templates/_ b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/templates/_
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/templates/accordeonHeader.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/mwtnInventory-module/src/main/resources/mwtnInventory/templates/accordeonHeader.tpl.html
deleted file mode 100644 (file)
index 1bf88a9..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<div role="tab" id="{{::headingId}}" aria-selected="{{isOpen}}" class="panel-heading" ng-keypress="toggleOpen($event)">
-       <h4 class="panel-title">
-               <a role="button" data-toggle="collapse" href aria-expanded="{{isOpen}}" aria-controls="{{::panelId}}" tabindex="0" class="accordion-toggle"
-                       ng-click="toggleOpen()" uib-accordion-transclude="heading" ng-disabled="isDisabled" uib-tabindex-toggle>
-                       <i class="pull-left fa" ng-class="{'fa-chevron-down': isOpen, 'fa-chevron-right': !isOpen}"></i>
-                       <span uib-accordion-header ng-class="{'text-muted': isDisabled}">{{heading}}</span>
-                       </a>
-       </h4>
-</div>
-<div id="{{::panelId}}" aria-labelledby="{{::headingId}}" aria-hidden="{{!isOpen}}" role="tabpanel" class="panel-collapse collapse"
-       uib-collapse="!isOpen">
-       <div class="panel-body" ng-transclude></div>
-       </div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnInventory/pom.xml
deleted file mode 100644 (file)
index bec94c1..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>mwtnInventory</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>mwtnInventory-module</module>
-  <module>mwtnInventory-bundle</module>
- </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-bundle/pom.xml
deleted file mode 100644 (file)
index ab98f46..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnLog</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnLog-bundle</artifactId>
- <packaging>bundle</packaging>
- <name>${prefix} ${project.artifactId}</name>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnLog-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnLog-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index cf29844..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnLog"/>
-        <property name="url" value="/src/app/mwtnLog"/>
-        <property name="directory" value="/mwtnLog"/>
-        <property name="requireJs" value="app/mwtnLog/mwtnLog.module"/>
-        <property name="angularJs" value="app.mwtnLog"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnLog/mwtnLog-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/pom.xml
deleted file mode 100644 (file)
index 72264b8..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnLog</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnLog-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/images/mwtnLog.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/images/mwtnLog.png
deleted file mode 100755 (executable)
index 8d0bcad..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/images/mwtnLog.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog-custom.css
deleted file mode 100644 (file)
index 47c5864..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- *  Add your application related css here
- */ 
-.owl .uib-tab a {
-    border: 1px solid #000;
-    background-color: white;
-    color: #3276b1;
-}
-
-.owl .uib-tab.active a {
-    background-color: #3276b1;
-    color: white;
-}
-
-.mwtnLogGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.mwtnLogGrid span {
-  color: #393939;
-}
-
-.mwtnLogGrid div.debug {
-  color: #393939;
-  background-color: white;
-}
-.mwtnLogGrid div.error {
-  color: #ff0000;
-  background-color: #ffeeee;
-  font-weight: bold;
-}
-
-.mwtnLogGrid div.info {
-  color: #3276b1;
-  background-color: #eeeeff;
-}
-
-.mwtnLogGrid div.warning {
-  color: #ffa500;
-  background-color: #ffeedd;
-}
-
-.rotated {
-    transform: rotate(180deg);
-    -webkit-transform: rotate(180deg);
-    -ms-transform: rotate(180deg);
-    -moz-transform: rotate(180deg);
-    -o-transform: rotate(180deg);
-}
-
-h3.modal-title {
-  color: #393939;
-}
-
-.modal-body span {
-  color: #393939;
-} 
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.controller.js
deleted file mode 100644 (file)
index c4135e6..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnLog/mwtnLog.module',
-        'app/mwtnLog/mwtnLog.services',
-        'app/mwtnCommons/mwtnCommons.module'], 
-        function(mwtnLogApp) {
-    
-  mwtnLogApp.register.controller('mwtnLogCtrl', ['uiGridConstants', '$uibModal', '$scope', '$rootScope', '$mwtnCommons', '$mwtnLogView', '$mwtnLog' ,
-                                                 function(uiGridConstants, $uibModal, $scope, $rootScope,  $mwtnCommons, $mwtnLogView,  $mwtnLog) {
-
-    var COMPONENT = 'mwtnLogCtrl';
-    $mwtnLog.info({component: COMPONENT, message: 'mwtnLogCtrl started!'});
-    // $mwtnLog.error({component: COMPONENT, message: 'Just a test of logging an error.'});
-    // $mwtnLog.warning({component: COMPONENT, message: 'Just a test of logging a warning.'});
-    // $mwtnLog.debug({component: COMPONENT, message: 'Just a test of logging debug information.'});
-    
-    $rootScope.section_logo = 'src/app/mwtnLog/images/mwtnLog.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-    $scope.highlightFilteredHeader = $mwtnLogView.highlightFilteredHeader;
-    var rowTemplate = '<div ng-click="grid.appScope.fnOne(row)" ng-repeat="col in colContainer.renderedColumns track by col.colDef.name" ng-class="[\'ui-grid-cell\', row.entity.type]" ui-grid-cell></div>';
-    var iconCell = '<div class="ui-grid-cell-contents tooltip-uigrid" title="TOOLTIP"><i ng-class="{\'fa\':true, \'{{COL_FIELD}}\':true}" aria-hidden="true"></i></div>';
-      
-    $scope.gridOptions = JSON.parse(JSON.stringify($mwtnLogView.gridOptions));
-    $scope.gridOptions.rowTemplate = rowTemplate;
-    $scope.gridOptions.columnDefs = [
-       // { field: 'id', type: 'number', displayName: 'No.',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true },
-       { field: 'icon',  type: 'string', displayName: '',  headerCellClass: $scope.highlightFilteredHeader, width: 25, enableSorting: false, enableFiltering:false, cellTemplate: iconCell },
-       { field: 'timestamp',  type: 'string', displayName: 'Timestamp',  headerCellClass: $scope.highlightFilteredHeader, width : 200,sort: {
-         direction: uiGridConstants.DESC,
-         priority: 1
-       } },
-       { field: 'type',  type: 'string', displayName: 'Type',  headerCellClass: $scope.highlightFilteredHeader, width: 70 },
-       { field: 'component',  type: 'string', displayName: 'Component',  headerCellClass: $scope.highlightFilteredHeader, width : 200 },
-       { field: 'message',  type: 'string', displayName: 'Message',  headerCellClass: $scope.highlightFilteredHeader, width : 500 }
-     ];
-    
-    $scope.progress = {
-        show: true,
-        max: 200,
-        value: 160
-    };
-    
-    $scope.clearLog = function () {
-
-      var modalInstance = $uibModal.open({
-        animation: true,
-        ariaLabelledBy: 'modal-title',
-        ariaDescribedBy: 'modal-body',
-        templateUrl: 'src/app/mwtnLog/templates/clearLogConfirmation.tpl.html',
-        controller: 'ClearLogCtrl',
-        size: 'lg',
-        resolve: {
-          now: function () {
-            return new Date().toISOString();
-          }
-        }
-      });
-
-      modalInstance.result.then(function () {
-        var spec = {
-            functionId : 'mwtn',
-            docType : 'log',
-            query: {
-              match_all: {}
-            }
-          };
-          $mwtnLogView.deleteDocType(spec).then(function(deleted){
-            $scope.gridOptions.data = [];
-            $mwtnLog.info({component: COMPONENT, message: 'Log cleared!'});
-          }, function(error){
-            $mwtnLog.error({component: COMPONENT, message:JSON.stringify(error)});
-          });
-      }, function () {
-        $mwtnLog.info({component: COMPONENT, message: 'Mount dismissed!'});
-      });
-    };    
-
-    var getIconFromType = function(type) {
-      var mapping = {
-        debug : '',
-        info : 'fa-info-circle',
-        warning : 'fa-exclamation-triangle',
-        error : 'fa-times-circle'
-      };
-      return mapping[type];
-    };
-    
-    var processLogEntries = function(logEntries) {
-      if (logEntries.data.hits.hits) {
-        logEntries.data.hits.hits.map(function(entry){
-          var log = {
-              id: entry._id,
-              icon: getIconFromType(entry._source.type),
-              timestamp: entry._source.timestamp,
-              type: entry._source.type,
-              component: entry._source.component,
-              message: entry._source.message,
-          };
-          $scope.gridOptions.data.push(log);
-        });
-        $scope.progress.max = logEntries.data.hits.total;         
-        $scope.progress.value = $scope.gridOptions.data.length;         
-        $scope.progress.show = $scope.gridOptions.data.length < logEntries.data.hits.total;
-      }
-    };
-    
-    $scope.refreshLog = function() {
-      $scope.gridOptions.data = [];
-      var from = 0;
-      var size = 100;
-      $scope.processing = true;
-      $mwtnLogView.getAllLogEntries(from, size).then(function(logEntries){
-        $scope.processing = false;
-        processLogEntries(logEntries);
-        from = from + size;
-        while (from < $scope.progress.max) {
-          $mwtnLogView.getAllLogEntries(from, size).then(function(logEntries){
-            processLogEntries(logEntries);
-          }, function(error){
-            console.error(JSON.stringify(error));
-          });
-          from = from + size;
-        }
-      }, function(error){
-        console.error(JSON.stringify(error));
-      });      
-    };
-    $scope.refreshLog();
-
-  }]);
-
-  mwtnLogApp.register.controller('ClearLogCtrl', ['$scope', '$uibModalInstance',
-                                                  function ($scope, $uibModalInstance) {
-
-    $scope.ok = function () {
-      $uibModalInstance.close('ok');
-    };
-
-    $scope.cancel = function () {
-      $uibModalInstance.dismiss('cancel');
-    };
-  }]);
-    
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.module.js
deleted file mode 100644 (file)
index faece4f..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var mwtnLogApp = angular.module('app.mwtnLog', ['ui.grid', 'ui.bootstrap', 'app.core',
-      'ui.router.state', 'config', 'ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns' ]);
-
-  mwtnLogApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnLogApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/mwtnLog/mwtnLog.controller');
-    NavHelperProvider.addToMenu('mwtnLog', {
-     "link" : "#/mwtnLog",
-     "active" : "main.mwtnLog",
-     "title" : "Logs",
-     "icon" : "fa fa-list",  // Add navigation icon css class here
-     "page" : {
-        "title" : "Logs",
-        "description" : "mwtnLog"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnLog', {
-        url: 'mwtnLog',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/mwtnLog/mwtnLog.tpl.html',
-                controller: 'mwtnLogCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnLogApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.services.js
deleted file mode 100644 (file)
index ef900e2..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnLog/mwtnLog.module','app/mwtnCommons/mwtnCommons.services'],function(mwtnLogApp) {
-
-  mwtnLogApp.register.factory('$mwtnLogView', function($q, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-    
-    var service = {};
-
-    service.checkModules = $mwtnCommons.checkModules;
-    service.highlightFilteredHeader = $mwtnCommons.highlightFilteredHeader;
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.formatTimeStamp = $mwtnCommons.formatTimeStamp;
-    service.deleteDocType = $mwtnDatabase.deleteDocType;
-    
-    
-    service.getAllLogEntries = function(from, size) {
-      var sort = [ {
-        timestamp : {
-          order : 'desc'
-        }
-      }];
-      var deferred = $q.defer();
-      $mwtnDatabase.getAllData('mwtn', 'log', from, size, sort).then(function(success){
-        deferred.resolve(success);
-      }, function(error){
-        $mwtnLog.error({component: '$mwtnLogView.getAllLogEntries', message: JSON.stringify(error.data)});
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-
-    return service;
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/mwtnLog.tpl.html
deleted file mode 100644 (file)
index f20f154..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-<ht-header help-link='sdnr/mwtnLog/0.4.0/README.md'></ht-header>
-<div id="mwtnLogGrid" ui-grid="gridOptions" ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns ui-grid-move-columns
- class="mwtnLogGrid"></div>
- <uib-progressbar ng-show="progress.show" class="progress-striped" type="warning" max="progress.max" value="progress.value" ><i>{{progress.value}} / {{progress.max}}</i></uib-progressbar>
-<div class="text-right">
- <br/>
- <button type="button" id="clearLog" class="btn btn-warning" ng-click="clearLog()">
-  <i class="fa fa-times" aria-hidden="true"></i>
-  <span>Clear log</span>
- </button>
- <!-- see gird menu Export ...
- <button type="button" id="saveLog" class="btn btn-primary" ng-click="saveLog()">
-  <i class="fa fa-save" aria-hidden="true"></i>
-  <span>Save...</span>
- </button>  -->
- <button type="button" id="refreshLog" class="btn btn-primary" ng-click="refreshLog()">
-  <i class="fa fa-refresh" ng-class="{'fa-pulse':processing}" aria-hidden="true"></i>
-  <span>{{'MWTN_REFRESH' | translate}}</span>
- </button>
-</div>
-
-<hr />
-<div class="owl">
- <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/templates/clearLogConfirmation.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/mwtnLog-module/src/main/resources/mwtnLog/templates/clearLogConfirmation.tpl.html
deleted file mode 100644 (file)
index cdd87c6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{'Clear Log Confirmation' | translate}}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-       <p>All log entries  stored in the database will be deleted.</p>
-       <p>Please make, sure you have exported the log entries, otherwise they will get lost.</p>
-</div>
-<div class="modal-footer">
-       <button class="btn btn-primary" type="button" ng-click="ok()">{{'Clear log' | translate}}</button>
-       <button class="btn btn-warning" type="button" ng-click="cancel()">{{'Cancel' | translate}}</button>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnLog/pom.xml
deleted file mode 100644 (file)
index ebae830..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>mwtnLog</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>mwtnLog-module</module>
-  <module>mwtnLog-bundle</module>
- </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-bundle/pom.xml
deleted file mode 100644 (file)
index 0d668ac..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnMediator</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnMediator-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnMediator-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnMediator-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 100f6e7..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnMediator"/>
-        <property name="url" value="/src/app/mwtnMediator"/>
-        <property name="directory" value="/mwtnMediator"/>
-        <property name="requireJs" value="app/mwtnMediator/mwtnMediator.module"/>
-        <property name="angularJs" value="app.mwtnMediator"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnMediator/mwtnMediator-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/pom.xml
deleted file mode 100644 (file)
index 9269bf1..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnMediator</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnMediator-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/class.mediator.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/class.mediator.js
deleted file mode 100644 (file)
index b87a465..0000000
+++ /dev/null
@@ -1,569 +0,0 @@
-function MediatorConfig(obj) {\r
-       if (obj !== undefined) {\r
-               this.Name = obj.Name;\r
-               this.DeviceType = obj.DeviceType;\r
-               this.DeviceIp = obj.DeviceIp;\r
-               this.DevicePort = 'DevicePort' in obj?obj.DevicePort:161;\r
-               this.TrapsPort = obj.TrapPort;\r
-               this.IsNetConfConnected = obj.IsNCConnected;\r
-               this.IsNetworkElementConnected = obj.IsNeConnected;\r
-               this.NeModel = obj.NeXMLFile;\r
-               this.NetconfPort = obj.NcPort;\r
-               this.PID = obj.pid;\r
-               this.IsLocked = obj.islocked;\r
-               this.Autorun = obj.autorun;\r
-               this.FirewallRuleActive = obj.fwactive;\r
-               this.OpenDaylightConfigs = obj.ODLConfig;\r
-       } else {\r
-               this.Name ="";\r
-               this.DeviceType = -1;\r
-               this.DeviceIp = "";\r
-               this.DevicePort = 161;\r
-               this.TrapsPort = 0;\r
-               this.IsNetConfConnected = false;\r
-               this.IsNetworkElementConnected = false;\r
-               this.NeModel = "";\r
-               this.NetconfPort = 0;\r
-               this.PID =0;\r
-               this.IsLocked = false;\r
-               this.Autorun = false;\r
-               this.FirewallRuleActive = false;\r
-               this.OpenDaylightConfigs=[];\r
-       }\r
-       this.DeviceTypeString = this.getDeviceTypeString();\r
-       this.ConnectionStatus = {Netconf:this.IsNetConfConnected,NetworkElement:this.IsNetworkElementConnected}\r
-\r
-}\r
-MediatorConfig.prototype.refreshData = function(obj)\r
-{\r
-       if(obj!==undefined)\r
-       {\r
-               //this.Name = obj.Name;\r
-               this.DeviceType = obj.DeviceType;\r
-               this.DeviceIp = obj.DeviceIp;\r
-               this.DevicePort = 'DevicePort' in obj?obj.DevicePort:161;\r
-               this.TrapsPort = obj.TrapPort;\r
-               this.IsNetConfConnected = obj.IsNCConnected;\r
-               this.IsNetworkElementConnected = obj.IsNeConnected;\r
-               this.NeModel = obj.NeXMLFile;\r
-               this.NetconfPort = obj.NcPort;\r
-               this.PID = obj.pid;\r
-               this.IsLocked = obj.islocked;\r
-               this.Autorun = false;\r
-               this.FirewallRuleActive = obj.fwactive;\r
-               this.OpenDaylightConfigs = obj.ODLConfig;\r
-       }\r
-       this.DeviceTypeString = this.getDeviceTypeString();\r
-       this.ConnectionStatus = {Netconf:this.IsNetConfConnected,NetworkElement:this.IsNetworkElementConnected}\r
-\r
-}\r
-MediatorConfig.prototype.getDeviceTypeString = function()\r
-{\r
-       var i;\r
-       for(i=0;i<MediatorConfig.DeviceTypes.length;i++)\r
-       {\r
-               if(MediatorConfig.DeviceTypes[i].Value==this.DeviceType)\r
-                       return MediatorConfig.DeviceTypes[i].Name;\r
-       }\r
-       return "unknown";\r
-}\r
-/* enum for devicetypes */\r
-MediatorConfig.DEVICETYPE_SIMULATOR =0;\r
-\r
-\r
-function MediatorConfigStatus(obj){\r
-       this.Status=obj.Status;\r
-       this.Name=obj.Name;\r
-};\r
-MediatorConfigStatus.STATUS_OKAY = 1;\r
-MediatorConfigStatus.STATUS_CORRUPTED = 2;\r
-MediatorConfigStatus.STATUS_LOCKED = 3;\r
-MediatorConfigStatus.STATUS_REPAIRED = 4;\r
-MediatorConfigStatus.StatusTypes=[\r
-       {Value:MediatorConfigStatus.STATUS_OKAY,Name:"Okay"},\r
-       {Value:MediatorConfigStatus.STATUS_CORRUPTED,Name:"Corrupted"},\r
-       {Value:MediatorConfigStatus.STATUS_LOCKED,Name:"Locked"},\r
-       {Value:MediatorConfigStatus.STATUS_REPAIRED,Name:"Repaired"}\r
-];\r
-\r
-/* Names for enum for devicetypes */\r
-MediatorConfig.DeviceTypes=[\r
-{Value:MediatorConfig.DEVICETYPE_SIMULATOR,Name:"Simulator"}];\r
-\r
-MediatorConfig.prototype.IsRunning = function() {\r
-       return this.PID > 0;\r
-}\r
-MediatorConfig.prototype.TestParams = function() {\r
-       if(this.Name===undefined || this.Name.length<=0)\r
-               throw "Name is not given";\r
-       // Name without spaces\r
-       var inValidName = /\s/;\r
-       if(inValidName.test(this.Name))\r
-               throw "Name cannot have whitespaces";\r
-       // DeviceType: int from 0 to ...\r
-       if(this.DeviceType<0 || this.DeviceType>MediatorConfig.DeviceTypes[MediatorConfig.DeviceTypes.length-1].Value)\r
-               throw "DeviceType is not set";\r
-       // DeviceIp: valid IP-Address\r
-       var validIpTest =/^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])$|^(([a-zA-Z]|[a-zA-Z][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z]|[A-Za-z][A-Za-z0-9\-]*[A-Za-z0-9])$|^\s*((([0-9A-Fa-f]{1,4}:){7}([0-9A-Fa-f]{1,4}|:))|(([0-9A-Fa-f]{1,4}:){6}(:[0-9A-Fa-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){5}(((:[0-9A-Fa-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9A-Fa-f]{1,4}:){4}(((:[0-9A-Fa-f]{1,4}){1,3})|((:[0-9A-Fa-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){3}(((:[0-9A-Fa-f]{1,4}){1,4})|((:[0-9A-Fa-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){2}(((:[0-9A-Fa-f]{1,4}){1,5})|((:[0-9A-Fa-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9A-Fa-f]{1,4}:){1}(((:[0-9A-Fa-f]{1,4}){1,6})|((:[0-9A-Fa-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9A-Fa-f]{1,4}){1,7})|((:[0-9A-Fa-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))(%.+)?\s*$/;\r
-       if(!validIpTest.test(this.DeviceIp))\r
-               throw "IP-Address is not valid";\r
-       // TrapsPort: valid Port\r
-       if(this.TrapsPort<=0 || this.TrapsPort>65535)\r
-               throw "TrapsPort is not valid";\r
-       // NeModel: valid XMLFilename\r
-       if(this.NeModel===undefined || this.NeModel.length<=0)\r
-               throw "NE XML Filename is not valid";\r
-       // NetconfPort: valid Port\r
-       if(this.NetconfPort<=0 || this.NetconfPort>65535)\r
-               throw "Netconf Port is not valid";\r
-\r
-       return true;\r
-}\r
-function PortRange(a)\r
-{\r
-       if(a!==undefined)\r
-       {\r
-               this.Min=a[0];\r
-               this.Max=a[1];\r
-       }\r
-       else\r
-       {\r
-               this.Min=0;\r
-               this.Max=0;\r
-       }\r
-}\r
-function JavaMemParam(str)\r
-{\r
-       if(str!==undefined)\r
-       {\r
-\r
-\r
-       }\r
-}\r
-function ServerConfig(obj){\r
-       if (obj !== undefined) {\r
-               this.HomeDir = obj.home;\r
-               this.Host = obj.host;\r
-               this.Port = obj.port;\r
-               this.NetconfRange=new PortRange(obj.ncrange);\r
-               this.SnmpRange = new PortRange(obj.snmprange);\r
-               this.JmxRange = new PortRange(obj.jmxrange);\r
-               this.LogLevel = obj.loglevel;\r
-               this.LogFile = obj.logfile;\r
-               this.MediatorLogLevel = obj.mediator-loglevel;\r
-               this.MediatorDevicePingTimeout=obj.mediator-devicepingtimeout;\r
-               this.MediatorSnmpLatency = obj.mediator-snmplatency;\r
-               this.MediatorMemory = new JavaMemParam(obj.mediator-memory);\r
-       }\r
-       else\r
-       {\r
-               this.HomeDir = "";\r
-               this.Host = "";\r
-               this.Port = 0;\r
-               this.NetconfRange=new PortRange();\r
-               this.SnmpRange = new PortRange();\r
-               this.JmxRange = new PortRange();\r
-               this.LogLevel = "";\r
-               this.LogFile = "";\r
-               this.MediatorLogLevel = "";\r
-               this.MediatorDevicePingTimeout=0;\r
-               this.MediatorSnmpLatency = 0;\r
-               this.MediatorMemory = new JavaMemParam();\r
-       }\r
-}\r
-function MediatorServer(url) {\r
-       this._root = url;\r
-       // if(this._root.endsWith("/"))\r
-       this._root = this._root + "/";\r
-       this._mediatorConfigs = [];\r
-       this._neXMLFilenames = undefined;\r
-       this.defaultODLConfig = {Server:"sendateodl5.fritz.box",Port:8181,User:"admin",Password:"admin"};\r
-\r
-}\r
-MediatorServer.prototype.getConfigs = function(){return this._mediatorConfigs;}\r
-\r
-MediatorServer.prototype.SetDefaultODLConfig = function(cfg)\r
-{\r
-       this.defaultODLConfig = cfg;\r
-}\r
-MediatorServer.prototype.GetDefaultODLConfig = function()\r
-{\r
-       return this.defaultODLConfig;\r
-}\r
-MediatorServer.prototype.refreshConfig = function(configs,cb)\r
-{\r
-       var changed = [];\r
-       if(this._mediatorConfigs===undefined)\r
-       {\r
-               if(cb!==undefined)\r
-                       cb(changed);\r
-               return;\r
-       }\r
-       if(configs!==undefined && configs.length>0)\r
-       {\r
-               var i,j;\r
-               for(i=0;i<configs.length;i++)\r
-               {\r
-                       //find config in array by name\r
-                       for(j=0;j<this._mediatorConfigs.length;j++)\r
-                       {\r
-                               if(this._mediatorConfigs[j].Name==configs[i].Name)\r
-                               {\r
-                                       //refresh data\r
-                                       this._mediatorConfigs[j].refreshData(configs[i]);\r
-                                       changed.push(configs[i]);\r
-                                       break;\r
-                               }\r
-                       }\r
-               }\r
-       }\r
-       if(cb!==undefined)\r
-               cb(changed);\r
-}\r
-MediatorServer.prototype.onConfigsReceived = function(configJSONArray) {\r
-       this._mediatorConfigs = [];\r
-       for (var i = 0; i < configJSONArray.length; i++) {\r
-               var c = new MediatorConfig(configJSONArray[i]);\r
-               this._mediatorConfigs.push(c);\r
-       }\r
-}\r
-MediatorServer.prototype.onNeXMLReceived = function(neXMLFilenamesArray) {\r
-       this._neXMLFilenames = neXMLFilenamesArray;\r
-}\r
-\r
-MediatorServer.prototype.LoadNetworkElementXMLFiles = function(cb,cbError) {\r
-       var _self = this;\r
-       this.post("getnemodels", function(response) {\r
-               if (response.code == 1) {\r
-                       _self.onNeXMLReceived(response.data);\r
-                       if (cb !== undefined)\r
-                               cb(_self._neXMLFilenames);\r
-               } else\r
-               {\r
-                       _self.log(response.data);\r
-                       if(cbError!==undefined)\r
-                               cbError(response.data);\r
-               }\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-MediatorServer.prototype.LoadLogs = function(name,cb,cbError)\r
-{\r
-       var _self = this;\r
-       this.post("getlog&name="+name,function(response){\r
-               if (response.code == 1) {\r
-                       if (cb !== undefined)\r
-                               cb(response.data);\r
-               } else\r
-               {       _self.log(response.data);\r
-                       if(cbError!==undefined)\r
-                               cbError(response.data);\r
-               }\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-MediatorServer.prototype.LoadAvailableNCPorts = function(cb,cbError)\r
-{\r
-       var _self = this;\r
-       this.post("getncports",function(response){\r
-               if (response.code == 1) {\r
-                       if (cb !== undefined)\r
-                               cb(response.data);\r
-               } else\r
-               {       _self.log(response.data);\r
-                       if(cbError!==undefined)\r
-                               cbError(response.data);\r
-               }\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-MediatorServer.prototype.LoadAvailableSnmpPorts = function(cb,cbError)\r
-{\r
-       var _self = this;\r
-       this.post("getsnmpports",function(response){\r
-               if (response.code == 1) {\r
-                       if (cb !== undefined)\r
-                               cb(response.data);\r
-               }\r
-               else\r
-               {\r
-                       _self.log(response.data);\r
-                       if(cbError!==undefined)\r
-                               cbError(response.data);\r
-               }\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-MediatorServer.prototype.StartMediator = function(name, cb, cbError) {\r
-       var _self = this;\r
-       this.post("start",{name:name}, function(response) {\r
-               if (response.code == 1) {\r
-                       if (cb !== undefined)\r
-                               cb(response.data);\r
-               } else {\r
-                       _self.log(response.data);\r
-                       if(cbError!==undefined)\r
-                               cbError(response.data);\r
-               }\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-MediatorServer.prototype.StopMediator = function(name, cb, cbError) {\r
-       var _self = this;\r
-       this.post("stop",{name:name}, function(response) {\r
-               if (response.code == 1) {\r
-                       if (cb !== undefined)\r
-                               cb(response.data);\r
-               } else {\r
-                       _self.log(response.data);\r
-                       if(cbError!==undefined)\r
-                               cbError(response.data);\r
-               }\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-MediatorServer.prototype.ReloadConfig = function(name,cb,cbError)\r
-{\r
-       var _self = this;\r
-       this.post("getconfig",{name:name},function(response){\r
-               if (response.code == 1) {\r
-                       _self.refreshConfig(response.data,function(changes){\r
-                               if (cb !== undefined)\r
-                                       cb(changes);\r
-                       });\r
-               } else {\r
-                       _self.log(response.data);\r
-                       if(cbError!==undefined)\r
-                               cbError(response.data);\r
-               }\r
-\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-\r
-}\r
-MediatorServer.prototype.LoadConfigs = function(cb,cbError) {\r
-       var _self = this;\r
-       this.post("getconfig", function(response) {\r
-               if (response.code == 1) {\r
-                       _self.onConfigsReceived(response.data);\r
-                       if (cb !== undefined)\r
-                               cb(_self._mediatorConfigs);\r
-               } else {\r
-                       _self.log(response.data);\r
-               }\r
-\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-MediatorServer.prototype.Repair = function(cb,cbError)\r
-{\r
-       var _self = this;\r
-       this.post("repair", function(response) {\r
-               if (response.code == 1) {\r
-                       if (cb !== undefined)\r
-                               cb(response.data);\r
-               } else {\r
-                       _self.log(response.data);\r
-                       if(cbError!==undefined)\r
-                               cbError(response.data);\r
-               }\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-MediatorServer.prototype.LoadVersion = function(cb,cbError)\r
-{\r
-       var _self = this;\r
-       this.post("version", function(response) {\r
-               if (response.code == 1) {\r
-                       if (cb !== undefined)\r
-                               cb(response.data);\r
-               } else {\r
-                       _self.log(response.data);\r
-               }\r
-\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-/*\r
- * name: <String> deviceType: <int> deviceip: <Ipv4-String> trapsPort:<int>\r
- * nexml:<String> ncport:<int> cb: callback-function\r
- */\r
-MediatorServer.prototype.CreateMediator = function(name,devicetype,deviceip,deviceport,trapsPort,nexml,ncport, cb, cbError) {\r
-\r
-       var obj;\r
-       try\r
-       {\r
-               obj=new MediatorConfig({\r
-                       Name:name,\r
-                       DeviceType:devicetype,\r
-                       DeviceIp:deviceip,\r
-                       DevicePort:deviceport,\r
-                       TrapPort:trapsPort,\r
-                       NeXMLFile:nexml,\r
-                       NcPort:ncport\r
-               });\r
-               obj.TestParams();\r
-       }\r
-       catch(e)\r
-       {\r
-               if(cbError!==undefined)\r
-                       cbError(e);\r
-       }\r
-       this.post("create", {\r
-               config : JSON.stringify({\r
-                       Name : obj.Name,\r
-                       DeviceType : obj.DeviceType,\r
-                       DeviceIp : obj.DeviceIp,\r
-                       DevicePort : obj.DevicePort,\r
-                       TrapPort : obj.TrapsPort,\r
-                       NeXMLFile : obj.NeModel,\r
-                       NcPort : obj.NetconfPort,\r
-                       ODLConfig:[this.defaultODLConfig]\r
-               })\r
-       }, function(response) {\r
-               if(response.code==1)\r
-               {\r
-                       if(cb!==undefined)\r
-                               cb(true)\r
-               }\r
-               else\r
-               {\r
-                       if(cbError!==undefined)\r
-                               cbError(response.data);\r
-               }\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-MediatorServer.prototype.DeleteMediator = function(name, cb, cbError)\r
-{\r
-       var _self = this;\r
-       this.post('delete', {name:name}, function(response){\r
-               if(response.code==1)\r
-               {\r
-                       if(cb!==undefined)\r
-                               cb(true);\r
-               }\r
-               else\r
-               {\r
-                       if(cb!==undefined)\r
-                               cb(response.data);\r
-               }\r
-\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-MediatorServer.prototype.ClearLock = function(name, cb, cbError) {\r
-       var _self = this;\r
-       this.post("clearlock", {\r
-               name : name\r
-       }, function(response) {\r
-               if (response.code == 1) {\r
-                       if (cb !== undefined)\r
-                               cb(true);\r
-               } else {\r
-                       _self.log(response.data);\r
-                       if (cbError !== undefined)\r
-                               cbError(response.data);\r
-               }\r
-       },function(err){\r
-               if(cbError!==undefined)\r
-                       cbError(err);\r
-       });\r
-}\r
-/*\r
- * do post request\r
- *\r
- * @params task\r
- */\r
-MediatorServer.prototype.post = function(task, data, callback,callbackError) {\r
-       var _self = this;\r
-       if (typeof (data) === "function")\r
-       {\r
-               callbackError = callback;\r
-               callback = data;\r
-       }\r
-       var cb=function(r) {\r
-                               if (callback !== undefined) {\r
-                                       try {\r
-                                               if (typeof (r) === "string")\r
-                                                       r = JSON.parse(r);\r
-                                               callback(r);\r
-                                       } catch (e) {\r
-                                               _self.log(e);\r
-                                               if(callbackError!==undefined)\r
-                                                       callbackError(e);\r
-                                       }\r
-                               }\r
-                       };\r
-\r
-       if(this.usejQueryv3)\r
-       {\r
-               $.post({\r
-                       url : this._root + "api/?task=" + task,\r
-                       data : data,\r
-                       success : cb\r
-               });\r
-       }\r
-       else //jquery 1.x\r
-       {\r
-               if(typeof(data)=== "function")\r
-               {\r
-                       $.post(this._root + "api/?task=" + task,cb).done(function() {\r
-                               _self.log( "second success" );\r
-                         })\r
-                         .fail(function(e) {\r
-                                 _self.log( "error" +e);\r
-                                 if(callbackError!==undefined)\r
-                                         callbackError(e);\r
-                         })\r
-                         .always(function() {\r
-                                 _self.log( "finished" );\r
-                         });\r
-               }\r
-               else\r
-               {\r
-                       $.post(this._root + "api/?task=" + task,data,cb).done(function() {\r
-                               _self.log( "second success" );\r
-                         })\r
-                         .fail(function(e) {\r
-                                 _self.log( "error" +e);\r
-                                 if(callbackError!==undefined)\r
-                                         callbackError(e);\r
-                         })\r
-                         .always(function() {\r
-                                 _self.log( "finished" );\r
-                         });\r
-               }\r
-       }\r
-}\r
-\r
-MediatorServer.prototype._error = function(message) {\r
-       console.log(message);\r
-}\r
-MediatorServer.prototype.log = function(message) {\r
-//     console.log(message);\r
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/images/mwtnMediator.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/images/mwtnMediator.png
deleted file mode 100755 (executable)
index f7c2a6c..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/images/mwtnMediator.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator-custom.css
deleted file mode 100644 (file)
index 15a684f..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- *  Add your application related css here
- */
-.mwtnMediatorGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.mwtnMediatorGrid span {
-  color: #393939;
-}
-span.mwtnMediatorStatusRunning{
-       color: darkgreen;
-}
-span.mwtnMediatorStatusNotRunning{
-       color: darkred;
-}
-span.mwtnMediatorCStatusIcon{
-       font-size:2rem;
-       vertical-align:middle;
-}
-span.mwtnMediatorOStatusIcon{
-       font-size:2.5rem;
-       vertical-align:middle;
-}
-
-#mediatorserver-list{
-       list-style-type:none;
-       padding:0;
-       margin:0;
-       display:block;
-
-}
-#mediatorserver-list > li
-{
-       padding:0.3rem;
-       display:block;
-       position:relative;
-}
-#mediatorserver-list > li:nth-child(even)
-{
-       background:#FFF;
-}
-#mediatorserver-list > li:nth-child(odd)
-{
-       background:#EEE;
-}
-#mediatorserver-list > li.selected
-{
-       background:#EBFF7F;
-}
-#mediatorserver-list > li > span.desc
-{
-       display:block;
-}
-#mediatorserver-list > li > div.icons
-{
-       position:absolute;
-       right:0;top:0;bottom:0;width:auto;
-}
-#mediatorserver-list > li > div.icons > span.fa
-{
-       position:relative;margin-right:.6rem;margin-top:.3rem;font-size:2rem;cursor:pointer;
-}
-#mediatorserver-list > li > div.icons > span.fa:hover
-{
-       font-weight:bold;
-}
-.acc-mediatorlog > .panel-group .panel-body{padding:0;}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator.controller.js
deleted file mode 100644 (file)
index 5f35ba6..0000000
+++ /dev/null
@@ -1,613 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * @license
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnMediator/mwtnMediator.module',
-        'app/mwtnMediator/mwtnMediator.services'],
-        function(mwtnMediatorApp) {
-
-  var mediatorServer;
-  var autoRefresh;
-  mwtnMediatorApp.register.controller('mwtnMediatorCtrl', ['$scope', '$rootScope','$uibModal', '$mwtnLog', '$mwtnMediator',
-    function($scope, $rootScope, $uibModal, $mwtnLog, $mwtnMediator) {
-       autoRefresh=false;
-    var COMPONENT = 'mwtnMediatorCtrl';
-    $mwtnLog.info({component: COMPONENT, message: 'mwtnMediatorCtrl started!'});
-    $rootScope.section_logo = 'src/app/mwtnMediator/images/mwtnMediator.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-    $scope.highlightFilteredHeader = $mwtnMediator.highlightFilteredHeader;
-
-
-
-    $scope.gridOptions = JSON.parse(JSON.stringify($mwtnMediator.gridOptions));
-    $scope.gridOptions.rowHeight = 44;
-
-    var statusCellTemplate = [
-       '<div class="ui-grid-cell-contents">',
-       '<span class="mwtnMediatorStatusRunning" ng-show="grid.getCellValue(row, col)>0">running ({{grid.getCellValue(row, col)}})</span>',
-       '<span class="mwtnMediatorStatusNotRunning" ng-show="grid.getCellValue(row, col)==0">stopped</span>',
-       '</div>'
-    ].join('');
-    var connectionStatusCellTemplate = [
-       '<div class="ui-grid-cell-contents">',
-       '<span class="fa fa-server mwtnMediatorOStatusIcon" style="margin-right:-0.5rem;"></span>',
-       '<span class="fa fa-check-circle-o mwtnMediatorCStatusIcon" style="color:green;" ng-show="grid.getCellValue(row, col).Netconf"></span>',
-       '<span class="fa fa-times-circle-o mwtnMediatorCStatusIcon" style="color:red;" ng-show="!grid.getCellValue(row, col).Netconf"></span>',
-       '<span class="fa fa-minus mwtnMediatorCStatusIcon" style="color:green;font-weight:bold;" ng-show="grid.getCellValue(row, col).Netconf"></span>',
-       '<span class="fa fa-ellipsis-h mwtnMediatorCStatusIcon" style="color:red;font-weight:bold;" ng-show="!grid.getCellValue(row, col).Netconf"></span>',
-       '<span class="fa fa-dot-circle-o mwtnMediatorCStatusIcon" style="font-size:3rem;color:#666;"></span>',
-       '<span class="fa fa-minus mwtnMediatorCStatusIcon" style="color:green;font-weight:bold;" ng-show="grid.getCellValue(row, col).NetworkElement"></span>',
-       '<span class="fa fa-ellipsis-h mwtnMediatorCStatusIcon" style="color:red;font-weight:bold;" ng-show="!grid.getCellValue(row, col).NetworkElement"></span>',
-       '<span class="fa fa-check-circle-o mwtnMediatorCStatusIcon" style="color:green;" ng-show="grid.getCellValue(row, col).NetworkElement"></span>',
-       '<span class="fa fa-times-circle-o mwtnMediatorCStatusIcon" style="color:red;" ng-show="!grid.getCellValue(row, col).NetworkElement"></span>',
-       '<span class="fa fa-wifi mwtnMediatorOStatusIcon" style="margin-left:-0.5rem;"></span>',
-       '</div>'].join('');
-
-       var requiredNesActionCellTemplate = [
-      '<a class="vCenter" ng-class="{attention: grid.appScope.hover}" >',
-      '<button class="btn btn-primary" ng-click="grid.appScope.startMediator(row.entity)">Start</button>',
-      '<button class="btn btn-default" ng-click="grid.appScope.stopMediator(row.entity)">Stop</button>',
-      '<button class="btn btn-default" ng-click="grid.appScope.showDetails(row.entity)"><i class="fa fa-info-circle" aria-hidden="true"></i></button>',
-      '</a>' ].join('<span>&nbsp;</span>');
-
-    $scope.gridOptions.columnDefs = [
-       { field: 'Name',  type: 'string', displayName: 'Mediator',  headerCellClass: $scope.highlightFilteredHeader, width : 200 },
-       { field: 'PID', type: 'int', name: 'Status', cellTemplate:statusCellTemplate, headerCellClass: $scope.highlightFilteredHeader, width : 120 },
-       { field: 'DeviceIp',  type: 'string', displayName: 'IP address',  headerCellClass: $scope.highlightFilteredHeader, width : 120 },
-       {
-          field: 'ConnectionStatus',
-          type: 'object',
-          name: 'Connection',
-          enableSorting : false,
-           enableFiltering: false,
-           cellTemplate:connectionStatusCellTemplate,
-           width : 150
-       },
-       {  name : 'actions',
-          enableSorting : false,
-          enableFiltering: false,
-          cellTemplate: requiredNesActionCellTemplate,
-          width : 280,
-          pinnedRight : true
-          }
-     ];
-
-
-
-    var refreshMediators = function()
-    {
-       var i=$('#btn_refreshMediators > i');
-       i.addClass("fa-spin");
-       console.log("refresh mediators list");
-       if(mediatorServer!==undefined)
-       {
-               mediatorServer.LoadConfigs(function(configs){
-                          $scope.data = configs;
-                          $scope.$apply();
-                          i.removeClass("fa-spin");
-                   },
-                       function(err){
-                               $scope.data = [];
-                               $scope.$apply();
-                           i.removeClass("fa-spin");
-                               console.log("cannot reach mediatorserver:"+err);
-                       });
-               }
-    }
-    var refreshMediator = function(name)
-    {
-       console.log("refresh mediators list");
-       if(mediatorServer!==undefined)
-       {
-               mediatorServer.ReloadConfig(name,function(changes){
-                          $scope.$apply();
-                       },
-                       function(err){
-                               console.log("cannot reach mediatorserver:"+err);
-                       });
-               }
-    }
-    var onServerSelectedChanged = function(item){
-       var serverURL;
-       if(item!==undefined)
-       {
-               if(typeof(item)==='object')
-                       serverURL=item.url;
-               else if(typeof(item)==='string')
-               {
-                       try
-                       {
-                               $mwtnMediator.getServerData(parseInt(item)).then(function(data){
-                                       if(data!==undefined)
-                                       {
-                                               serverURL=data.url;
-                                               mediatorServer = new MediatorServer(serverURL);
-                                               $mwtnLog.info({component: COMPONENT, message: 'loading server configs for '+serverURL});
-                                               refreshMediators();
-                                       }
-                                       else
-                                               console.log("search for server data failed. should never happened")
-                                   });
-                               }
-                               catch(e)
-                               {"error loading server:n"+console.log(e);}
-                       }
-       }
-    }
-
-    /* GUI Events =======================================*/
-    $scope.onAutoRefreshChanged = function()
-    {
-       autoRefresh = $('#ckbx_mediatorAutorefresh').prop('checked');
-       console.log("set autorefresh to "+autoRefresh);
-    }
-    $scope.editMediatorServers = function()
-    {
-       var modalInstance = $uibModal.open({
-               animation:true,
-                ariaLabelledBy: 'modal-title',
-               ariaDescribedBy: 'modal-body',
-               templateUrl: 'src/app/mwtnMediator/templates/mediatorServerConfigCtrl.tpl.html',
-               controller: 'MediatorServerConfigCtrl',
-               size: 'lg',
-               resolve: {
-                 currentElement: function () {
-                   return $scope.currentElement;
-                 }
-               }
-
-        });
-    }
-    $scope.createNewMediator = function()
-    {
-               if(mediatorServer!==undefined)
-               {
-                       console.log("create new mediator");
-                       var modalInstance = $uibModal.open({
-                       animation:true,
-                        ariaLabelledBy: 'modal-title',
-                       ariaDescribedBy: 'modal-body',
-                       templateUrl: 'src/app/mwtnMediator/templates/mediatorCreateNew.tpl.html',
-                       controller: 'MediatorNewCtrl',
-                       size: 'lg',
-                       resolve: {
-                         currentElement: function () {
-                           return $scope.currentElement;
-                         }
-                       }
-
-                });
-               }
-               else
-               {
-                       console.log("no mediatorserver selected");
-               }
-    }
-    $scope.refreshMediators = refreshMediators;
-
-    $scope.startMediator =  function(el)
-    {
-       var btn=$(this);
-       if(btn!==undefined)
-               btn.prop('disabled',true);
-       console.log("starting mediator "+el.Name+" ...");
-       if(mediatorServer!==undefined)
-       {
-               mediatorServer.StartMediator(el.Name,function(res){
-                       refreshMediator(el.Name);
-                       //console.log(res);
-               },function(err){
-                       if(btn!==undefined)
-                       btn.prop('disabled',false);
-               //      console.log("error starting mediator");
-               });
-       }
-    }
-    $scope.stopMediator = function(el)
-    {
-       var btn=$(this);
-       if(btn!==undefined)
-               btn.prop('disabled',true);
-       console.log("stopping mediator "+el.Name+" ...");
-               if(mediatorServer!==undefined)
-       {
-               mediatorServer.StopMediator(el.Name,function(res){
-                       refreshMediator(el.Name);
-                       //console.log(res);
-               },function(err){
-                       if(btn!==undefined)
-                       btn.prop('disabled',false);
-               //      console.log("error stopping mediator");
-               });
-       }
-    }
-    $scope.showDetails = function(el)
-    {
-      $scope.currentElement = el;
-      var modalInstance = $uibModal.open({
-       animation:true,
-        ariaLabelledBy: 'modal-title',
-        ariaDescribedBy: 'modal-body',
-        templateUrl: 'src/app/mwtnMediator/templates/mediatorDetails.tpl.html',
-        controller: 'MediatorDetailsCtrl',
-        size: 'lg',
-        resolve: {
-          currentElement: function () {
-            return $scope.currentElement;
-          }
-        }
-
-      });
-    }
-    $scope.onchangeserver = function(){
-       autoRefresh=false;
-       $('#ckbx_mediatorAutorefresh').prop('checked',autoRefresh);
-       onServerSelectedChanged($scope.medserver);
-    }
-    /* End of GUI Events===========================*/
-
-
-    $scope.gridOptions.data = 'data';
-    $scope.options={
-
-    }
-
-    //load mediator servers from database
-    $mwtnMediator.getServerData().then(function(data){
-       //set as option source for GUI selector
-       $scope.options.medservers=data;
-       //autoselect first item
-       if(data!==undefined && data.length>0)
-       {
-               onServerSelectedChanged(data[0]);
-               //$scope.medserver=
-       }
-    });
-    var timer = setInterval(function(){
-       if(autoRefresh && mediatorServer!==undefined)
-       {
-               refreshMediators();
-       }
-
-    },30000);
-
-  }]);
-
-
-  /************************************************************************************
-   * medaitorDetails Controller definition
-   ************************************************************************************/
-  mwtnMediatorApp.register.controller('MediatorDetailsCtrl', ['$scope', '$uibModalInstance', '$uibModal', '$mwtnConnect', '$mwtnLog', '$mwtnMediator','currentElement',
-                                                                  function ($scope, $uibModalInstance, $uibModal, $mwtnConnect, $mwtnLog, $mwtnMediator, currentElement) {
-
-               var COMPONENT = 'MediatorDetailsCtrl';
-       var element = currentElement;
-       var error = function(msg)
-       {
-               $scope.statusmessage='';
-               $scope.errormessage=msg;
-               $scope.$apply();
-       }
-       var status = function(msg)
-       {
-               $scope.statusmessage=msg;
-               $scope.errormessage='';
-               $scope.$apply();
-       }
-       var reloadDelayed = function()
-       {
-               setTimeout(function(){
-                       mediatorServer.ReloadConfig(element.Name,function(res){
-                               $scope.$apply();
-                       },function(err){error(err);});
-               },1000);
-       }
-       var refreshLogs = function()
-       {
-               mediatorServer.LoadLogs(currentElement.Name,function(res){
-                       $scope.logdata=res;
-                       $scope.$apply();
-
-               },function(err){
-                       $scope.logdata=[];
-                       $scope.$apply();
-               });
-       }
-       $scope.statusmessage='';
-       $scope.errormessage='';
-       $scope.logGridOptions = JSON.parse(JSON.stringify($mwtnMediator.logGridOptions));
-           //$scope.logGridOptions.rowHeight = 44;
-           $scope.logGridOptions.columnDefs = [
-               { field: 'ts',  type: 'string', displayName: 'Timestamp',  headerCellClass: $scope.highlightFilteredHeader, width : 180 },
-               { field: 'lvl', type: 'String', displayName: 'LogLevel', headerCellClass: $scope.highlightFilteredHeader, width : 90 },
-               { field: 'src',  type: 'string', displayName: 'Source',  headerCellClass: $scope.highlightFilteredHeader, width : 120 },
-               { field: 'msg',  type: 'string', displayName: 'Message',  headerCellClass: $scope.highlightFilteredHeader, width : 300 },
-
-             ];
-           $scope.logGridOptions.data = 'logdata';
-       // $mwtnLog.info({component: COMPONENT, message: 'MediatorDetailsCtrl started!'});
-               $scope.data = {
-                       el:currentElement
-               };
-               $scope.ok = function () {
-               $uibModalInstance.close({el: currentElement});
-       };
-       $scope.start = function(){
-               var btn=$(this);
-               if(btn!==undefined)
-                       btn.prop('disabled', true);
-               mediatorServer.StartMediator(element.Name,function(res){
-                       if(btn!==undefined)
-                               btn.prop('disabled', true);
-                       status(res);
-                       reloadDelayed();
-               },function(err){
-                       if(btn!==undefined)
-                               btn.prop('disabled', false);
-                       error(err);
-
-               });
-       };
-       $scope.stop = function(){
-               var btn=$(this);
-               if(btn!==undefined)
-                       btn.prop('disabled', true);
-               mediatorServer.StopMediator(element.Name,function(res){
-                       if(btn!==undefined)
-                               btn.prop('disabled', true);
-                       status(res);
-                       reloadDelayed();
-               },function(err){
-                       if(btn!==undefined)
-                               btn.prop('disabled', false);
-                       error(err);
-
-               });
-       };
-       $scope.delete = function(){
-               var btn=$(this);
-               if(btn!==undefined)
-                       btn.prop('disabled', true);
-               if(confirm("Do you really want to delete this mediator?"))
-               {
-                       mediatorServer.DeleteMediator(element.Name,function(res){
-                               status(res);
-                       },function(err){
-                               if(btn!==undefined)
-                               btn.prop('disabled', false);
-                               error(err);
-                       });
-               }
-               else
-               {
-                       if(btn!==undefined)
-                               btn.prop('disabled', false);
-               }
-       };
-       $scope.unlock = function(){
-               var btn=$(this);
-               if(btn!==undefined)
-                       btn.prop('disabled', true);
-               mediatorServer.ClearLock(element.Name,function(res){
-                       status(res);
-                       reloadDelayed();
-               },function(err){
-                       if(btn!==undefined)
-                       btn.prop('disabled', false);
-                       error(err);
-               });
-       }
-       refreshLogs();
-       }
-  ]);
-  /************************************************************************************
-   * medaitorCreateNew Controller definition
-   ************************************************************************************/
-  mwtnMediatorApp.register.controller('MediatorNewCtrl', ['$scope', '$uibModalInstance', '$uibModal', '$mwtnConnect', '$mwtnLog',
-                                                                  function ($scope, $uibModalInstance, $uibModal, $mwtnConnect, $mwtnLog) {
-
-       var COMPONENT = 'MediatorNewCtrl';
-       // $mwtnLog.info({component: COMPONENT, message: COMPONENT + ' started!'});
-       var status = function(msg)
-       {
-               $scope.statusmessage=msg;
-                       $scope.errormessage="";
-                       $scope.$apply();
-       }
-       var error = function(msg)
-       {
-               $scope.statusmessage="";
-                       $scope.errormessage=msg;
-                       $scope.$apply();
-       }
-       $scope.options={
-               nexmlmodel:[],
-               nedevicetype:MediatorConfig.DeviceTypes
-       };
-       $scope.mediator={name:'',devicetype:0,remoteip:'',remoteport:161,trapsport:0,ncport:0,nexml:''};
-       $scope.odlconfig=mediatorServer.GetDefaultODLConfig();
-       $scope.odlsavebtn={enabled:false};
-
-       //=======load data
-       mediatorServer.LoadNetworkElementXMLFiles(function(xmlNames){
-               $scope.options.nexmlmodel=xmlNames;
-               $scope.$apply();
-       },function(err){
-               error(err);
-       });
-       mediatorServer.LoadAvailableNCPorts(function(portValues){
-               if(portValues!==undefined && portValues.length>0)
-               {
-                       $scope.mediator.ncport = portValues[0];
-               }
-       },function(err){error(err);});
-       mediatorServer.LoadAvailableSnmpPorts(function(portValues){
-               if(portValues!==undefined && portValues.length>0)
-               {
-                       $scope.mediator.trapsport = portValues[0];
-               }
-       },function(err){error(err);});
-
-
-       $scope.errormessage='';
-       $scope.statusmessage='';
-
-       //====handle events========
-       $scope.odledit = function(){
-               $scope.odlsavebtn.enabled=true;
-               console.log("enable odl configs")
-               $scope.$apply();
-       }
-       $scope.odlsave = function(){
-               mediatorServer.SetDefaultODLConfig($scope.odlconfig);
-       }
-               $scope.ok = function () {
-                       var btn=$(this);
-                       if(btn!==undefined)
-                               btn.prop('disabled', true);
-                       mediatorServer.CreateMediator($scope.mediator.name,
-                                                                               $scope.mediator.devicetype,
-                                                                               $scope.mediator.remoteip,
-                                                                               $scope.mediator.remoteport,
-                                                                               $scope.mediator.trapsport,
-                                                                               $scope.mediator.nexml,
-                                                                               $scope.mediator.ncport,
-                               function(e){
-                                       if(e==true)
-                                       {
-                                               status("mediator created");
-                                               setTimeout(function(){$uibModalInstance.close();},2000);
-                                       }
-                                       else
-                                       {
-                                               if(btn!==undefined)
-                                                       btn.prop('disabled', false);
-                                               error(e);
-
-                                       }
-                               },function(err){
-                                       if(btn!==undefined)
-                                               btn.prop('disabled', false);
-                                       error(err);
-
-                               });
-
-       };
-       $scope.cancel = function(){
-               $uibModalInstance.close();
-       };
-
-       }
-  ]);
-  /************************************************************************************
-   * medaitorServerConfig Controller definition
-   ************************************************************************************/
-  mwtnMediatorApp.register.controller('MediatorServerConfigCtrl', ['$scope', '$uibModalInstance', '$uibModal', '$mwtnConnect', '$mwtnLog', '$mwtnMediator',
-                                                                  function ($scope, $uibModalInstance, $uibModal, $mwtnConnect, $mwtnLog, $mwtnMediator) {
-
-       var COMPONENT = 'MediatorServerConfigCtrl';
-       // $mwtnLog.info({component: COMPONENT, message: COMPONENT + ' started!'});
-       var onServerRowSelect = function(obj,id)
-       {
-               if(obj!=undefined)
-                       $(obj).addClass("selected");
-               var tbxId=$('#tbx_mediatorserver-id');
-               var tbxName=$('#tbx_mediatorserver-name');
-               var tbxHost = $('#tbx_mediatorserver-host');
-               var tbxVersion = $('#tbx_mediatorserver-version');
-               var tbxVersionMed = $('#tbx_mediatorserver-medversion');
-               tbxId.prop('disabled',true);
-               tbxName.prop('disabled',true);
-               tbxHost.prop('disabled',true);
-               tbxVersion.prop('disabled',true);
-               tbxVersionMed.prop('disabled',true);
-
-               $mwtnMediator.getServerData(id).then(function(data){
-                       if(data!==undefined)
-                       {
-                               tbxId.val(data.id);
-                               tbxName.val(data.name);
-                               tbxHost.val(data.url);
-                               tbxVersion.val("");
-                                       tbxVersionMed.val("");
-                               var s=new MediatorServer(data.url);
-                               s.LoadVersion(function(d){
-                                       tbxVersion.val(d.server);
-                                       tbxVersionMed.val(d.mediator);
-
-                               },function(err){
-
-                               });
-                       }
-               });
-       }
-       var create = function(host,name,port)
-       {
-               var url=host+":"+port;
-               $mwtnMediator.addServer(name,url).then(function(data){
-                       reload();
-               });
-       }
-       var onEdit = function(id)
-       {
-               var tbxName=$('#tbx_mediatorserver-name');
-               var tbxHost = $('#tbx_mediatorserver-host');
-               tbxName.prop('disabled',false);
-               tbxHost.prop('disabled',false);
-
-       }
-       var onDelete = function(id)
-       {
-               if(confirm("Do you really want to delete?"))
-               {
-               //      console.log("delete server with id="+id);
-                       $mwtnMediator.removeServer(id).then(function(){reload();});
-               }
-       }
-       var reload = function(){
-               $mwtnMediator.getServerData().then(function(data){
-
-                       //fill table
-                       var list=$('#mediatorserver-list');
-                       list.html('');
-                       if(data!==undefined && data.length>0)
-                       {
-                               for(var i=0;i<data.length;i++)
-                               {
-                                       var desc=$('<span class="desc" id="item_'+data[i].id+'">'+data[i].name+'</span>');
-                                       var li=$('<li></li>');
-                                       var iconsbox=$('<div class="icons"></div>');
-                                       var edit=$('<span class="fa fa-edit" id="item_edit_'+data[i].id+'"></span>');
-                                       var del=$('<span class="fa fa-trash-o" id="item_del_'+data[i].id+'"></span>');
-                                       iconsbox.html([edit,del]);
-                                       li.html([desc,iconsbox]);
-                                       if(i==0)
-                                               li.addClass("selected");
-                                       //register click handlers
-                                       desc.click(function(){
-                                               $('#mediatorserver-list > li').removeClass('selected');
-                                               onServerRowSelect(this.parentNode,$(this).prop('id').substr(5));
-                                       });
-                                       edit.click(function(){
-                                               onEdit($(this).prop('id').substr(10));
-                                       });
-                                       del.click(function(){
-                                               onDelete($(this).prop('id').substr(9));
-                                       });
-                                       list.append(li);
-                               }
-                               onServerRowSelect(undefined,data[0].id);
-                       }
-               });
-       }
-       reload();
-       $scope.close = function(){
-               $uibModalInstance.close();
-       };
-  }]);
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator.module.js
deleted file mode 100644 (file)
index 19c9142..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module',
-        'app/mwtnCommons/bower_components/angular-clipboard/angular-clipboard',
-        'src/app/mwtnMediator/class.mediator.js'], function(ng) {
-  var mwtnMediatorApp = angular.module('app.mwtnMediator', ['ui.grid', 'ui.bootstrap', 'app.core', 'ui.router.state', 'config', 'angular-clipboard']);
-
-  mwtnMediatorApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnMediatorApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-    NavHelperProvider.addControllerUrl('app/mwtnMediator/mwtnMediator.controller');
-    NavHelperProvider.addToMenu('mwtnMediator', {
-     "link" : "#/pnfMediator",
-     "active" : "main.mwtnMediator",
-     "title" : "pnf Mediator",
-     "icon" : "fa fa-globe",  // Add navigation icon css class here
-     "page" : {
-        "title" : "pnf Mediator",
-        "description" : "mwtnMediator"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnMediator', {
-        url: 'pnfMediator',
-        access: access.admin,
-        views : {
-            content : {
-                templateUrl: 'src/app/mwtnMediator/templates/frame.tpl.html',
-                controller: 'mwtnMediatorCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnMediatorApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/mwtnMediator.services.js
deleted file mode 100644 (file)
index 363b79a..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCommons/mwtnCommons.module', 'app/mwtnMediator/mwtnMediator.module'],function(mwtnMediatorApp) {
-
-  mwtnMediatorApp.register.factory('$mwtnMediator', function($http, $q, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-
-    var COMPONENT = '$mwtnMediator';
-    $mwtnLog.info({component: COMPONENT, message: '$mwtnMediator started!'});
-
-    var service = {};
-
-    // import of mwtnCommons
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.highlightFilteredHeader = $mwtnCommons.highlightFilteredHeader;
-    
-    service.getAllData = $mwtnDatabase.getAllData;
-    service.getFilteredSortedData = $mwtnDatabase.getFilteredSortedData;
-    service.logGridOptions = $mwtnCommons.gridOptions;
-
-    // service specific functions
-    service.getServerData = function(id){
-       var deferred = $q.defer();
-       var functionid="mwtn";
-       var type="mediator-server";
-       var sort = [ { 'id' : {order : 'asc'}}];
-
-       if(id===undefined)//get all
-                $mwtnDatabase.getAllData(functionid,type,0,99,sort,null).then(function(success){
-                               var list=[];
-                               success.data.hits.hits.map(function(entry){
-                                            var row = {
-                                              id: entry._source.id,
-                                              url: entry._source.url,
-                                              name: entry._source.name
-                                          };
-                                         list.push(row);
-                               });
-                       deferred.resolve(list);
-               }, function(error){
-               $mwtnLog.error({component: 'private getAlldata', message: JSON.stringify(error.data)});
-               deferred.reject(error);
-             });
-       else //get by id
-                $mwtnDatabase.getFilteredSortedData(functionid,type,0,99,sort,{'match':{'id':id}}).then(function(success){
-                        var list=[];
-                               success.data.hits.hits.map(function(entry){
-                                            var row = {
-                                              id: entry._source.id,
-                                              url: entry._source.url,
-                                              name: entry._source.name
-                                          };
-                                         list.push(row);
-                               });
-                               deferred.resolve(list.length>0?list[0]:undefined);
-               }, function(error){
-               $mwtnLog.error({component: 'private getFilteredSortedData', message: JSON.stringify(error.data)});
-               deferred.reject(error);
-             });
-
-       return deferred.promise;
-
-
-    };
-    /*
-    service.getMaxId = function(){
-       var deferred = $q.defer();
-       $mwtnDatabase.getAllData(functionid,type,0,99,sort,{'match'}).then(function(success){
-
-       return deferred.promise;
-    };
-    */
-    service.addServer = function(name,url){
-       var deferred = $q.defer();
-       var functionId="mwtn";
-       var docType="mediator-server";
-       //check params
-       var data={name:name,url:url};
-       //check if contains
-       //insert into db
-       $mwtnDatabase.createSingleDocument(functionId, docType, id, data).then(function(success){
-
-
-               deferred.resolve(data);
-               },function(error){
-                       $mwtnLog.error({component: 'private addServer', message: JSON.stringify(error.data)});
-               deferred.reject(error);
-               });
-       return deferred.promise;
-    };
-    service.removeServer = function(id){
-       var deferred = $q.defer();
-       var functionId="mwtn";
-       var docType="mediator-server";
-
-       $mwtnDatabase.deleteSingleDocument(functionId, docType, id).then(function(success){
-               deferred.resolve(data);
-               },function(error){
-                       $mwtnLog.error({component: 'private removeServer', message: JSON.stringify(error.data)});
-               deferred.reject(error);
-               });
-       return deferred.promise;
-    };
-
-    return service;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/frame.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/frame.tpl.html
deleted file mode 100644 (file)
index debf0c2..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-<ht-header help-link='sdnr/pnfMediator/0.4.0/README.md'></ht-header>
-<div class=""></div>
-<div class="owl container" style="width: 100%;">
-       <div class="row">
-               <div class="col-md-4">
-                       <div id="mvtnMediatorServerSelector">
-                               <select class="form-control" ng-model="medserver" ng-change="onchangeserver()" >
-                                       <option ng-repeat="option in options.medservers" value="{{option.id}}">{{option.name}}({{option.url}})</option>
-                               </select>
-                       </div>
-               </div>
-               <div class="col-md-8">
-                       <div style="float:left;display:inline-block;">
-                               <button class="btn btn-default" ng-click="editMediatorServers()"><i class="fa fa-pencil-square-o" aria-hidden="true"></i></button>
-                       </div>
-                       <div style="float:right;display:inline-block;">
-                               <div class="checkbox" style="display:inline-block;">
-                                 <label style="color:white;"><input type="checkbox" id="ckbx_mediatorAutorefresh" ng-click="onAutoRefreshChanged()" value="">AutoRefresh</label>
-                               </div>
-                               <button class="btn btn-default" ng-click="createNewMediator()"><i class="fa fa-plus-circle" aria-hidden="true"></i></button>
-                               <button class="btn btn-default" id="btn_refreshMediators" ng-click="refreshMediators()"><i class="fa fa-refresh" aria-hidden="true"></i></button>
-
-                       </div>
-
-               </div>
-       </div>
-       <div class="row">
-               <div class="col-md-12">
-                       <hr class="ng-scope" />
-               </div>
-       </div>
-       <div class="row">
-               <div class="col-md-12">
-                       <div id="mwtnMediatorGrid"
-                               ui-grid="gridOptions"
-                               ui-grid-exporter
-                               ui-grid-selection
-                               ui-grid-pinning
-                               ui-grid-resize-columns
-                               ui-grid-move-columns
-                               class="mwtnMediatorGrid"></div>
-               </div>
-       </div>
-</div>
-
-<hr />
-<div class="owl">
-       <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/mediatorCreateNew.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/mediatorCreateNew.tpl.html
deleted file mode 100644 (file)
index 5934eb8..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{ data.el.Name }}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-  <div class="row">
-    <div class="col-md-3"><span>Name:</span></div>
-    <div class="col-md-9">
-       <input type="text" class="form-control" ng-model="mediator.name" />
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-3"><span>DeviceType:</div>
-    <div class="col-md-9">
-       <select class="form-control" ng-model="mediator.devicetype" >
-               <option ng-repeat="option in options.nedevicetype" value="{{option.Value}}">{{option.Name}}</option>
-       </select>
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-3"><span>IP address:</div>
-    <div class="col-md-9">
-       <input type="text" ng-model="mediator.remoteip" class="form-control" style="display:inline-block;width:70%;"/>
-       <span>&nbsp;:&nbsp;</span>
-       <input type="text" ng-model="mediator.remoteport" class="form-control" style="display:inline-block;width:25%;float:right;"/>
-
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-3"><span>TrapsPort:</div>
-    <div class="col-md-9">
-       <input type="number" class="form-control" ng-model="mediator.trapsport" />
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-3"><span>NetconfPort:</div>
-    <div class="col-md-9">
-    <input type="number" class="form-control" ng-model="mediator.ncport" />
-    </div>
-  </div>
-  <div class="row">
-    <div class="col-md-3"><span>NeModel:</div>
-    <div class="col-md-9">
-       <select class="form-control" ng-model="mediator.nexml">
-               <option ng-repeat="option in options.nexmlmodel" value="{{option}}">{{option}}</option>
-       </select>
-    </div>
-  </div>
-  <hr class="row" />
-  <div class="row">
-       <uib-accordion close-others="oneAtATime">
-               <div uib-accordion-group class="panel-default"  is-open="false">
-               <uib-accordion-heading>
-                   <i class="pull-left fa" ng-class="{'fa-chevron-down': false, 'fa-chevron-right': true}"></i>
-                   <span>{{'ODL Connection Config' | translate}}</span>
-               </uib-accordion-heading>
-               <div class="" style="position:relative;">
-                       <button class="btn btn-default" ng-click="odledit()" style="position:absolute;top:1rem;right:1rem;"><i class="fa fa-edit"></i></button>
-                       <div class="row">
-                               <div class="col-md-3"><span >Hostname:</span></div>
-                               <div class="col-md-6"><input ng-disabled="!odlsavebtn.enabled" class="form-control" type="text" ng-model="odlconfig.Server" /></div>
-                       </div>
-                       <div class="row">
-                               <div class="col-md-3"><span >Port:</span></div>
-                               <div class="col-md-6"><input ng-disabled="!odlsavebtn.enabled" class="form-control" type="text" ng-model="odlconfig.Port" /></div>
-                       </div>
-                       <div class="row">
-                               <div class="col-md-3"><span >Username:</span></div>
-                               <div class="col-md-6"><input ng-disabled="!odlsavebtn.enabled" class="form-control" type="text" ng-model="odlconfig.User" /></div>
-                       </div>
-                       <div class="row">
-                               <div class="col-md-3"><span >Password:</span></div>
-                               <div class="col-md-6"><input ng-disabled="!odlsavebtn.enabled" class="form-control" type="text" ng-model="odlconfig.Password" /></div>
-                       </div>
-                       <div class="row">
-                               <div class="col-md-3"></div>
-                               <div class="col-md-6"><button class="btn btn-default" ng-click="odlsave()" ng-disabled="!odlsavebtn.enabled">Save</button></div>
-                       </div>
-
-               </div>
-</div>
-       </uib-accordion>
-  </div>
-  <div class="row">
-       <div class="col-md-12">
-               <span style="display:block;text-align:right;color:#0F0;">{{statusmessage}}</span>
-               <span style="display:block;text-align:right;color:#F00;">{{errormessage}}</span>
-       </div>
-  </div>
-
-</div>
-<div class="modal-footer">
-  <button class="btn btn-primary" type="button" ng-click="ok()">
-    <span>{{'MWTN_MED_ADD' | translate}}</span>
-  </button>
-  <button class="btn btn-danger" type="button" ng-show="true" ng-click="cancel()">
-    <i class="fa fa-trash" aria-hidden="true"></i>
-    <span>{{'MWTN_CANCEL' | translate}}...</span>
-  </button>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/mediatorDetails.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/mediatorDetails.tpl.html
deleted file mode 100644 (file)
index 5223df0..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{ data.el.Name }}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-  <div class="row">
-     <div class="col-xs-3"><span>DeviceType:</span></div>
-     <div class="col-xs-9"><span>{{data.el.DeviceTypeString}}</span></div>
-  </div>
-  <div class="row">
-     <div class="col-xs-3"><span>DeviceIP:</span></div>
-     <div class="col-xs-9"><span>{{data.el.DeviceIp}}:{{data.el.DevicePort}}</span></div>
-  </div>
-  <div class="row">
-     <div class="col-xs-3"><span>TrapsPort:</span></div>
-     <div class="col-xs-9"><span>{{data.el.TrapsPort}}</span></div>
-  </div>
-  <div class="row">
-     <div class="col-xs-3"><span>NetconfPort:</span></div>
-     <div class="col-xs-9"><span>{{data.el.NetconfPort}}</span></div>
-  </div>
-  <div class="row">
-     <div class="col-xs-3"><span>NeXMLModel:</span></div>
-     <div class="col-xs-9"><span>{{data.el.NeModel}}</span></div>
-  </div>
-  <div class="row">
-     <div class="col-xs-3"><span>Status:</span></div>
-     <div class="col-xs-9">
-       <span class="mwtnMediatorStatusRunning" ng-show="{{data.el.PID}}>0">running ({{data.el.PID}})</span>
-       <span class="mwtnMediatorStatusNotRunning" ng-show="{{data.el.PID}}==0">stopped</span>
-    </div>
-  </div>
-   <div class="row">
-     <div class="col-xs-3"><span>Locked:</span></div>
-     <div class="col-xs-9"><span>{{data.el.IsLocked}}</span></div>
-  </div>
-  <div class="row">
-     <div class="col-xs-3"><span>NetconfConnected:</span></div>
-     <div class="col-xs-9"><span>{{data.el.IsNetConfConnected}}</span></div>
-  </div>
-  <div class="row">
-     <div class="col-xs-3"><span>NEConnected:</span></div>
-     <div class="col-xs-9"><span>{{data.el.IsNetworkElementConnected}}</span></div>
-  </div>
-  <div class="row">
-     <div class="col-xs-3"><span>Firewall Configured:</span></div>
-     <div class="col-xs-9"><span>{{data.el.FirewallRuleActive}}</span></div>
-  </div>
-  <div class="row">
-     <div class="col-xs-3"><span>Autorun:</span></div>
-     <div class="col-xs-9"><span>{{data.el.Autorun}}</span></div>
-  </div>
-  <div class="row">
-       <uib-accordion close-others="oneAtATime" class="acc-mediatorlog">
-               <div uib-accordion-group class="panel-default"  is-open="false">
-               <uib-accordion-heading>
-                   <i class="pull-left fa" ng-class="{'fa-chevron-down': false, 'fa-chevron-right': true}"></i>
-                   <span>{{'Logs' | translate}}</span>
-               </uib-accordion-heading>
-                       <div id="mwtnLogGrid"
-                               ui-grid="logGridOptions"
-                               ui-grid-exporter
-                               ui-grid-selection
-                               ui-grid-pinning
-                               ui-grid-resize-columns
-                               ui-grid-move-columns
-                               class="mwtnLogGrid"></div>
-
-</div>
-       </uib-accordion>
-  </div>
-  <div class="row">
-       <div class="col-md-12">
-               <span style="display:block;text-align:right;color:#0F0;">{{statusmessage}}</span>
-               <span style="display:block;text-align:right;color:#F00;">{{errormessage}}</span>
-       </div>
-  </div>
-</div>
-<div class="modal-footer">
-       <button class="btn btn-default" type="button" ng-show="{{data.el.IsLocked}}" ng-click="unlock()">
-       <i class="fa fa-lock" aria-hidden="true"></i>
-       <span>{{'Unlock' | translate}}</span>
-       </button>
-       <button class="btn btn-danger" type="button" ng-show="true" ng-click="delete()">
-    <i class="fa fa-trash" aria-hidden="true"></i>
-    <span>{{'MWTN_MED_DELETE' | translate}}...</span>
-  </button>
-       <button class="btn btn-primary" type="button" ng-show="true" ng-click="start()">
-    <span>{{'MWTN_MED_START' | translate}}...</span>
-  </button>
-  <button class="btn btn-primary" type="button" ng-show="true" ng-click="stop()">
-    <span>{{'MWTN_MED_STOP' | translate}}...</span>
-  </button>
-       <button class="btn btn-primary" type="button" ng-click="ok()">
-    <span>{{'MWTN_MED_CLOSE' | translate}}</span>
-  </button>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/mediatorServerConfigCtrl.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/mwtnMediator-module/src/main/resources/mwtnMediator/templates/mediatorServerConfigCtrl.tpl.html
deleted file mode 100644 (file)
index c3e9658..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title">{{ data.el.Name }}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-  <div class="row">
-       <div class="col-xs-12 col-lg-6">
-               <h3>MediatorServers:</h3>
-               <ul id="mediatorserver-list" >
-               </ul>
-       </div>
-     <div class="col-xs-6 col-lg-6">
-       <h3>Configuration:</h3>
-       <div id="mediatorserver-details">
-                       <div class="row">
-                               <div class="col-xs-5"><span style="float:right;">Id:</span></div>
-                               <div class="col-xs-7"><input type="text" id="tbx_mediatorserver-id" name="mediatorserver-id" value="" /></div>
-                       </div>
-                       <div class="row">
-                               <div class="col-xs-5"><span style="float:right;">Name:</span></div>
-                               <div class="col-xs-7"><input type="text" id="tbx_mediatorserver-name" name="mediatorserver-name" value="" /></div>
-                       </div>
-                       <div class="row">
-                               <div class="col-xs-5"><span style="float:right;">Host:</span></div>
-                               <div class="col-xs-7"><input type="text" id="tbx_mediatorserver-host" name="mediatorserver-host" value="" /></div>
-                       </div>
-                       <div class="row">
-                               <div class="col-xs-5"><span style="float:right;">Version:</span></div>
-                               <div class="col-xs-7"><input type="text" id="tbx_mediatorserver-version" name="mediatorserver-version" value="" /></div>
-                       </div>
-                       <div class="row">
-                               <div class="col-xs-5"><span style="float:right;">MediatorVersion:</span></div>
-                               <div class="col-xs-7"><input type="text" id="tbx_mediatorserver-medversion" name="mediatorserver-medversion" value="" /></div>
-                       </div>
-       </div>
-     </div>
- </div>
- <hr class="row" />
- <div class="row">
-       <button class="btn btn-primary" ng-click="close()">Close</button>
- </div>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnMediator/pom.xml
deleted file mode 100644 (file)
index d19f85e..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-    <artifactId>mwtn</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-  <relativePath>..</relativePath>
-  </parent>
-    <packaging>pom</packaging>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <artifactId>mwtnMediator</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
-    <name>${prefix} ${project.artifactId}</name>
-
-    <prerequisites>
-        <maven>3.0</maven>
-    </prerequisites>
-
-  <modules>
-    <module>mwtnMediator-module</module>
-    <module>mwtnMediator-bundle</module>
-  </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/pom.xml
deleted file mode 100644 (file)
index 0b03bf5..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnPerformanceCurrent</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnPerformanceCurrent-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnPerformanceCurrent-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnPerformanceCurrent-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 4f73e93..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnPerformanceCurrent"/>
-        <property name="url" value="/src/app/mwtnPerformanceCurrent"/>
-        <property name="directory" value="/mwtnPerformanceCurrent"/>
-        <property name="requireJs" value="app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module"/>
-        <property name="angularJs" value="app.mwtnPerformanceCurrent"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnPerformanceCurrent/mwtnPerformanceCurrent-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/pom.xml
deleted file mode 100644 (file)
index 2573f41..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnPerformanceCurrent</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnPerformanceCurrent-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/images/mwtnPerformance.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/images/mwtnPerformance.png
deleted file mode 100755 (executable)
index 5517f5b..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/images/mwtnPerformance.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent-custom.css
deleted file mode 100644 (file)
index 5e3cf83..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- *  Add your application related css here
- */
-
-.mwtnCurrentGrid{
-  height: 600px;
-  background-color: white;
-  color:black;
-}
-
-.mwtnCurrentGrid span{
- color: #393939;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.controller.js
deleted file mode 100644 (file)
index bffc77b..0000000
+++ /dev/null
@@ -1,741 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * @license
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module',
-  'app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.services'],
-  function (mwtnPerformanceCurrentApp) {
-
-    mwtnPerformanceCurrentApp.register.controller('mwtnPerformanceCurrentCtrl', ['$scope', '$rootScope', '$window', '$translate', '$mwtnLog', '$mwtnPerformanceCurrent', 'uiGridConstants', 'OnfNetworkElement', 
-                                                 function ($scope, $rootScope, $window, $translate, $mwtnLog, $mwtnPerformanceCurrent, uiGridConstants, OnfNetworkElement) {
-
-      var COMPONENT = 'mwtnPerformanceCurrent';
-      $mwtnLog.info({ component: COMPONENT, message: 'mwtnPerformanceCurrent started!' });
-
-      $rootScope.section_logo = 'src/app/mwtnPerformanceCurrent/images/mwtnPerformance.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-      var radioSignalMap = new Map(); //holds uuid/singalid
-
-      var initPac = {
-        layerProtocol: 'unknown'
-      };
-
-      $scope.layerProtocol = 'MWPS';
-      $scope.layerProtocols = ['MWPS', 'ETC'];
-
-      var updateNe = function (data) {
-        if (!data) return;
-
-        // update onfNetworkElement
-        switch (data.revision) {
-          case '2016-03-23':
-            $mwtnLog.info({ component: COMPONENT, message: 'Revision ' + data.revision + 'not supported!' });
-            break;
-          default: //4. PoC
-            $scope.onfNetworkElement = JSON.parse(JSON.stringify(data['network-element']));
-            $scope.onfLtps = data['network-element'].ltp;
-            $scope.onfNetworkElement.ltpRefList = undefined;
-        }
-
-        // update onfLTPs
-        var order = $mwtnPerformanceCurrent.layerProtocolNameOrder;
-        $scope.onfLtps.sort(function (a, b) {
-          if (order[a.lp[0]['layer-protocol-name']] < order[b.lp[0]['layer-protocol-name']]) return -1;
-          if (order[a.lp[0]['layer-protocol-name']] > order[b.lp[0]['layer-protocol-name']]) return 1;
-          if (a.lp[0].uuid < b.lp[0].uuid) return -1;
-          if (a.lp[0].uuid > b.lp[0].uuid) return 1;
-          return 0;
-        });
-
-        // calculate conditional packages
-        $scope.airinterfaces = [];
-        $scope.ethernets = [];
-        $scope.tdms = [];
-        $scope.onfLtps.map(function (ltp) {
-          var lpId = ltp.lp[0].uuid;
-
-
-
-          switch (ltp.lp[0]['layer-protocol-name']) {
-            case "MWPS":
-              var init = JSON.parse(JSON.stringify(initPac));
-              init.layerProtocol = lpId;
-              $scope.airinterfaces.push(init);
-
-              break;
-            case "ETH-CTP":
-            case "ETC":
-              var init = JSON.parse(JSON.stringify(initPac));
-              init.layerProtocol = lpId;
-              $scope.ethernets.push(init);
-              break;
-
-            default:
-              $mwtnLog.info({ component: COMPONENT, message: 'The layerProtocol ' + ltp.lp[0]['layer-protocol-name'] + ' is not supported (yet)!' });
-          }
-        });
-
-        data.revision = undefined;
-      };
-
-      var updateAirInterface = function (data, key) {
-        // console.log(JSON.stringify(data), lpId);
-
-        if (Object.keys(data)[0].startsWith('air-interface-current-performance')) {
-
-          $scope.jsonvalue.push(data);
-          var label = new OnfNetworkElement($scope.onfNetworkElement).getLpById(data['layer-protocol']).getLabel() || data['layer-protocol'];
-          var radioSignal = radioSignalMap.get(data['layer-protocol'])
-          var list = data['air-interface-current-performance']['current-performance-data-list'] || data['air-interface-current-performance']['current-performance-data']; 
-          list.map(function(item) {
-
-
-            var timestamp = $mwtnPerformanceCurrent.formatTimeStamp(item.timestamp);
-
-            switch (key) {
-
-              case 'performance826':
-                $scope.performance826.push({
-                  timestamp: timestamp,
-                  elapsedTime: checkData(item['elapsed-time']),
-                  suspectInterval: item['suspect-interval-flag'],
-                  scannerId: item['scanner-id'],
-                  id: label,
-                  period: item['granularity-period'],
-                  es: item['performance-data'].es,
-                  ses: item['performance-data'].ses,
-                  uas: item['performance-data'].unavailability,
-                  radioSignal: radioSignal
-                });
-                break;
-
-              case 'receiveLevel':
-                $scope.receiveLevel.push({
-                  timestamp: timestamp,
-                  elapsedTime: checkData(item['elapsed-time']),
-                  suspectInterval: item['suspect-interval-flag'],
-                  scannerId: item['scanner-id'],
-                  id: label,
-                  period: item['granularity-period'],
-                  rxmin: checkData(item['performance-data']['rx-level-min']),
-                  rxmax: checkData(item['performance-data']['rx-level-max']),
-                  rxavg: checkData(item['performance-data']['rx-level-avg']),
-                  radioSignal: radioSignal
-                });
-                break;
-
-              case 'transmissionLevel':
-
-                $scope.transmissionLevel.push({
-                  timestamp: timestamp,
-                  elapsedTime: checkData(item['elapsed-time']),
-                  suspectInterval: item['suspect-interval-flag'],
-                  scannerId: item['scanner-id'],
-                  id: label,
-                  period: item['granularity-period'],
-                  txmin: checkData(item['performance-data']['tx-level-min']),
-                  txmax: checkData(item['performance-data']['tx-level-max']),
-                  txavg: checkData(item['performance-data']['tx-level-avg']),
-                  radioSignal: radioSignal
-                });
-
-                break;
-
-              case 'modulation':
-
-                $scope.modulation.push(
-                  {
-                    timestamp: timestamp,
-                    elapsedTime: checkData(item['elapsed-time']),
-                    suspectInterval: item['suspect-interval-flag'],
-                    scannerId: item['scanner-id'],
-                    id: label,
-                    period: item['granularity-period'],
-                    time2S: checkData(item['performance-data']['time2-states-s']),
-                    time2: checkData(item['performance-data']['time2-states']),
-                    time2L: checkData(item['performance-data']['time2-states-l']),
-                    time4S: checkData(item['performance-data']['time4-states-s']),
-                    time4: checkData(item['performance-data']['time4-states']),
-                    time4L: checkData(item['performance-data']['time4-states-l']),
-                    time16S: checkData(item['performance-data']['time16-states-s']),
-                    time16: checkData(item['performance-data']['time16-states']),
-                    time16L: checkData(item['performance-data']['time16-states-l']),
-                    time32S: checkData(item['performance-data']['time32-states-s']),
-                    time32: checkData(item['performance-data']['time32-states']),
-                    time32L: checkData(item['performance-data']['time32-states-l']),
-                    time64S: checkData(item['performance-data']['time64-states-s']),
-                    time64: checkData(item['performance-data']['time64-states']),
-                    time64L: checkData(item['performance-data']['time64-states-l']),
-                    time128S: checkData(item['performance-data']['time128-states-s']),
-                    time128: checkData(item['performance-data']['time128-states']),
-                    time128L: checkData(item['performance-data']['time128-states-l']),
-                    time256S: checkData(item['performance-data']['time256-states-s']),
-                    time256: checkData(item['performance-data']['time256-states']),
-                    time256L: checkData(item['performance-data']['time256-states-l']),
-                    time512S: checkData(item['performance-data']['time512-states-s']),
-                    time512: checkData(item['performance-data']['time512-states']),
-                    time512L: checkData(item['performance-data']['time512-states-l']),
-                    time1024S: checkData(item['performance-data']['time1024-states-s']),
-                    time1024: checkData(item['performance-data']['time1024-states']),
-                    time1024L: checkData(item['performance-data']['time1024-states-l']),
-                    time2048S: checkData(item['performance-data']['time2048-states-s']),
-                    time2048: checkData(item['performance-data']['time2048-states']),
-                    time2048L: checkData(item['performance-data']['time2048-states-l']),
-                    time4096S: checkData(item['performance-data']['time4096-states-s']),
-                    time4096: checkData(item['performance-data']['time4096-states']),
-                    time4096L: checkData(item['performance-data']['time4096-states-l']),
-                    time8192S: checkData(item['performance-data']['time8192-states-s']),
-                    time8192: checkData(item['performance-data']['time8192-states']),
-                    time8192L: checkData(item['performance-data']['time8192-states-l']),
-                    radioSignal: radioSignal
-                  });
-
-                break;
-
-              case 'temperature':
-
-                $scope.temperature.push({
-                  timestamp: timestamp,
-                  elapsedTime: checkData(item['elapsed-time']),
-                  suspectInterval: item['suspect-interval-flag'],
-                  scannerId: item['scanner-id'],
-                  id: label,
-                  period: item['granularity-period'],
-                  rfTempMin: item['performance-data']['rf-temp-min'],
-                  rfTempAvg: item['performance-data']['rf-temp-avg'],
-                  rfTempMax: item['performance-data']['rf-temp-max'],
-                  radioSignal: radioSignal
-                });
-                break;
-
-              case 'snir':
-
-                $scope.snir.push({
-                  timestamp: timestamp,
-                  elapsedTime: checkData(item['elapsed-time']),
-                  suspectInterval: item['suspect-interval-flag'],
-                  scannerId: item['scanner-id'],
-                  id: label,
-                  period: item['granularity-period'],
-                  snirMin: item['performance-data']['snir-min'],
-                  snirAvg: item['performance-data']['snir-avg'],
-                  snirMax: item['performance-data']['snir-max'],
-                  radioSignal: radioSignal
-                }
-                );
-
-                break;
-
-              case 'crossPolarDiscrimination':
-
-                $scope.cpdData.push({
-
-                  timestamp: timestamp,
-                  elapsedTime: checkData(item['elapsed-time']),
-                  suspectInterval: item['suspect-interval-flag'],
-                  scannerId: item['scanner-id'],
-                  id: label,
-                  period: item['granularity-period'],
-                  xpdMin: item['performance-data']['xpd-min'],
-                  xpdAvg: item['performance-data']['xpd-avg'],
-                  xpdMax: item['performance-data']['xpd-max'],
-                  radioSignal: radioSignal
-                });
-
-                break;
-            }
-
-          });
-
-        }
-      };
-
-      var updateContainer = function (lpId, part, data) {
-        // console.log(JSON.stringify(data), lpId);
-        var label = new OnfNetworkElement($scope.onfNetworkElement).getLpById(data['layer-protocol']).getLabel() || data['layer-protocol'];
-
-        if (Object.keys(data)[0].contains('ethernet-container')) {
-          $scope.ethernetJsonValue.push(data);
-
-          var list = data['ethernet-container-current-performance']['current-performance-data-list'] || data['ethernet-container-current-performance']['current-performance-data']
-          list.map(function (item) {
-
-            $scope.performanceEthernetContainer.push({
-              timestamp: $mwtnPerformanceCurrent.formatTimeStamp(item['timestamp']),
-              elapsedTime: checkData(item['elapsed-time']),
-              suspectInterval: item['suspect-interval-flag'],
-              scannerId: item['scanner-id'],
-              period: item['granularity-period'],
-              txEthernetBytesMaxS: checkData(item['performance-data']['tx-ethernet-bytes-max-s']),
-              txEthernetBytesMaxM: checkData(item['performance-data']['tx-ethernet-bytes-max-m']),
-              txEthernetBytesSum: checkData(item['performance-data']['tx-ethernet-bytes-sum']),
-              id: label
-            });
-          });
-        }
-      };
-
-      //replace -1 with undefined in json data
-      var checkData = function (value) {
-        if (value === -1 || value === undefined) return undefined;
-        else return value;
-      };
-
-      //perf log configuration
-      $scope.gridOptionsPerformance826 = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
-          { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
-          { field: 'period', type: 'string', displayName: 'Period', width: 200 },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'es', type: 'string', displayName: 'ES', width: 70 },
-          { field: 'ses', type: 'string', displayName: 'SES', width: 70 },
-          { field: 'uas', type: 'string', displayName: 'UAS', width: 70 }
-        ],
-        data: 'performance826'
-      };
-
-      //receive lvl configuration
-      $scope.gridOptionsReceiveLevel = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
-          { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
-          { field: 'period', type: 'string', displayName: 'Period', width: 200 },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'rxmin', type: 'string', displayName: 'Rx min   [dBm]', width: 90 },
-          { field: 'rxavg', type: 'string', displayName: 'Rx avg   [dBm]', width: 90 },
-          { field: 'rxmax', type: 'string', displayName: 'Rx max   [dBm]', width: 90 }
-
-        ],
-        data: 'receiveLevel'
-      };
-
-      //transmission lvl configuration
-      $scope.gridOptionsTransmissionLevel = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
-          { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
-          { field: 'period', type: 'string', displayName: 'Period', width: 200 },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'txmin', type: 'string', displayName: 'Tx min   [dBm]', width: 90 },
-          { field: 'txavg', type: 'string', displayName: 'Tx avg   [dBm]', width: 90 },
-          { field: 'txmax', type: 'string', displayName: 'Tx max   [dBm]', width: 90 }
-
-        ],
-        data: 'transmissionLevel'
-      };
-
-      //modulation configuration
-      $scope.gridOptionsModulation = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
-          { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
-          { field: 'period', type: 'string', displayName: 'Period', width: 200 },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'time2S', type: 'string', displayName: 'QAM2S', width: 90 },
-          { field: 'time2', type: 'string', displayName: 'QAM2', width: 90 },
-          { field: 'time2L', type: 'string', displayName: 'QAM2L', width: 90 },
-          { field: 'time4S', type: 'string', displayName: 'QAM4S', width: 90 },
-          { field: 'time4', type: 'string', displayName: 'QAM4', width: 90 },
-          { field: 'time4L', type: 'string', displayName: 'QAM4L', width: 90 },
-          { field: 'time16S', type: 'string', displayName: 'QAM16S', width: 90 },
-          { field: 'time16', type: 'string', displayName: 'QAM16', width: 90 },
-          { field: 'time16L', type: 'string', displayName: 'QAM16L', width: 90 },
-          { field: 'time32S', type: 'string', displayName: 'QAM32S', width: 90 },
-          { field: 'time32', type: 'string', displayName: 'QAM32', width: 90 },
-          { field: 'time32L', type: 'string', displayName: 'QAM32L', width: 90 },
-          { field: 'time64S', type: 'string', displayName: 'QAM64S', width: 90 },
-          { field: 'time64', type: 'string', displayName: 'QAM64', width: 90 },
-          { field: 'time64L', type: 'string', displayName: 'QAM64L', width: 90 },
-          { field: 'time128S', type: 'string', displayName: 'QAM128S', width: 90 },
-          { field: 'time128', type: 'string', displayName: 'QAM128', width: 90 },
-          { field: 'time128L', type: 'string', displayName: 'QAM128L', width: 90 },
-          { field: 'time256S', type: 'string', displayName: 'QAM256S', width: 90 },
-          { field: 'time256', type: 'string', displayName: 'QAM256', width: 90 },
-          { field: 'time256L', type: 'string', displayName: 'QAM256L', width: 90 },
-          { field: 'time512S', type: 'string', displayName: 'QAM512S', width: 90 },
-          { field: 'time512', type: 'string', displayName: 'QAM512', width: 90 },
-          { field: 'time512L', type: 'string', displayName: 'QAM512L', width: 90 },
-          { field: 'time1024S', type: 'string', displayName: 'QAM1024S', width: 90 },
-          { field: 'time1024', type: 'string', displayName: 'QAM1024', width: 90 },
-          { field: 'time1024L', type: 'string', displayName: 'QAM1024L', width: 90 },
-          { field: 'time2048S', type: 'string', displayName: 'QAM2048S', width: 90 },
-          { field: 'time2048', type: 'string', displayName: 'QAM2048', width: 90 },
-          { field: 'time2048L', type: 'string', displayName: 'QAM2048L', width: 90 },
-          { field: 'time4096S', type: 'string', displayName: 'QAM4096S', width: 90 },
-          { field: 'time4096', type: 'string', displayName: 'QAM4096', width: 90 },
-          { field: 'time4096L', type: 'string', displayName: 'QAM4096L', width: 90 },
-          { field: 'time8192S', type: 'string', displayName: 'QAM8192S', width: 90 },
-          { field: 'time8192', type: 'string', displayName: 'QAM8192', width: 90 },
-          { field: 'time8192L', type: 'string', displayName: 'QAM8192L', width: 90 }
-
-        ],
-        data: 'modulation', onRegisterApi: function (gridApi) {
-          $scope.gridApi = gridApi;
-        }
-      };
-
-      //temperature configuration
-      $scope.gridOptionsTemperature = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
-          { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
-          { field: 'period', type: 'string', displayName: 'Period', width: 200 },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'rfTempMin', type: 'string', displayName: 'Rf Temp Min  [&deg;C]', width: 90 },
-          { field: 'rfTempAvg', type: 'string', displayName: 'Rf Temp Avg  [&deg;C]', width: 90 },
-          { field: 'rfTempMax', type: 'string', displayName: 'Rf Temp Max  [&deg;C]', width: 90 }
-
-        ],
-        data: 'temperature'
-      }
-
-      //SNIR configuration
-      $scope.gridOptionsSnir = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false},
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
-          { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
-          { field: 'period', type: 'string', displayName: 'Period', width: 200 },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'snirMin', type: 'string', displayName: [$translate.instant('MWTN_SNIR_MIN'),'[dB]'].join(' '), width: 90 },
-          { field: 'snirAvg', type: 'string', displayName: [$translate.instant('MWTN_SNIR_AVG'),'[dB]'].join(' '), width: 90 },
-          { field: 'snirMax', type: 'string', displayName: [$translate.instant('MWTN_SNIR_MAX'),'[dB]'].join(' '), width: 90 }
-        ],
-        data: 'snir'
-      }
-
-      //CPD Configuration
-      $scope.gridOptionsCrossPolarDiscrimination = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
-          { field: 'radioSignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
-          { field: 'period', type: 'string', displayName: 'Period', width: 200 },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'xpdMin', type: 'string', displayName: 'CPD min  [dB]', width: 90 },
-          { field: 'xpdAvg', type: 'string', displayName: 'CPD avg  [dB]', width: 90 },
-          { field: 'xpdMax', type: 'string', displayName: 'CPD max  [dB]', width: 90 }
-
-        ],
-        data: 'cpdData'
-      }
-
-      //ethernet perf configuration
-      $scope.gridOptionsPerformanceEthernetContainer = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LP'), width: 300 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'Request time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'elapsedTime', type: 'string', displayName: 'Elapsed Time', width: 100 },
-          { field: 'period', type: 'string', displayName: 'Period', width: 200 },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'txEthernetBytesMaxS', type: 'number', displayName: 'Tx BytesMaxS', width: 90 },
-          { field: 'txEthernetBytesMaxM', type: 'number', displayName: 'Tx BytesMaxM', width: 90 },
-          { field: 'txEthernetBytesSum', type: 'number', displayName: 'Tx BytesSum', width: 90 }
-
-        ],
-        data: 'performanceEthernetContainer'
-      };
-
-      var updatePart = function (spec, data, key) {
-        switch (spec.pacId) {
-          case 'ne':
-            updateNe(data);
-            break;
-
-          case 'airinterface':
-            console.log(JSON.stringify(spec, JSON.stringify(data)));
-            updateAirInterface(data, key);
-            break;
-
-          case 'container':
-            updateContainer(spec.layerProtocolId, spec.partId, data);
-            break;
-
-        }
-      };
-
-      var refreshAirInterface = function (key) {
-        //get performance data from interfaces
-        for (var interf of $scope.airinterfaces) {
-          var airIterfaceSpec = {
-            nodeId: $scope.networkElementId,
-            revision: $scope.revision,
-            pacId: 'airinterface',
-            partId: 'CurrentPerformance',
-            layerProtocolId: interf.layerProtocol
-          };
-          $mwtnPerformanceCurrent.getPacParts(airIterfaceSpec).then(function (data) {
-            var yangfiedObj = $mwtnPerformanceCurrent.yangifyObject(data);
-            updatePart(airIterfaceSpec, yangfiedObj, key);
-          });
-        }
-      };
-
-      $scope.collapseAll = function () {
-        // close all groups
-        Object.keys($scope.status).map(function (group) {
-          $scope.status[group] = false;
-        });
-        Object.keys($scope.spinner).map(function (group) {
-          $scope.spinner[group] = false;
-        });
-      };
-
-      // events
-      $scope.status = { performanceEthernetContainer: true };
-      $scope.spinner = {};
-      $scope.separator = $mwtnPerformanceCurrent.separator; //'&nbsp;'
-
-      //get data on ne selection
-      $scope.$watch('networkElement', function (neId, oldValue) {
-        if (neId && neId !== '' && neId !== oldValue) {
-          $scope.collapseAll();
-
-          // clear lists visible on screen
-          $scope.performance826 = [];
-          $scope.receiveLevel = [];
-          $scope.transmissionLevel = [];
-          $scope.modulation = [];
-          $scope.temperature = [];
-          $scope.snir = [];
-          $scope.cpdData = [];
-          $scope.jsonvalue = [];
-          $scope.performanceEthernetContainer = [];
-          $scope.ethernetJsonValue = [];
-
-          var revision;
-          $scope.networkElements.map(function (ne) {
-            if (ne.id === neId) revision = ne.revision;
-          });
-          $scope.networkElementId = neId;
-          $scope.revision = revision;
-
-          var spec = {
-            nodeId: neId,
-            revision: revision,
-            pacId: 'ne'
-          };
-
-          //get ne data
-          $mwtnPerformanceCurrent.getPacParts(spec).then(function (success) {
-            var yangfiedObj = $mwtnPerformanceCurrent.yangifyObject(success);
-
-            updatePart(spec, yangfiedObj);
-
-            //get performance data from interfaces
-            $scope.airinterfaces.map(function(airInterface) {
-
-              //get configuration for airinterfaces
-              var airIterfaceSpec = {
-                nodeId: neId,
-                revision: revision,
-                pacId: 'airinterface',
-                partId: 'Configuration',
-                layerProtocolId: airInterface.layerProtocol
-              };
-
-              //get radioSignalID and add it to map
-              $mwtnPerformanceCurrent.getPacParts(airIterfaceSpec).then(function (data) {
-                var yangfiedObj = $mwtnPerformanceCurrent.yangifyObject(data);
-                radioSignalMap.set(yangfiedObj['layer-protocol'], yangfiedObj['air-interface-configuration']['radio-signal-id']);
-              });
-            });
-
-          }, function (error) {
-            updatePart(spec, error);
-          });
-        }
-      });
-
-      $scope.$watch('layerProtocol', function (newValue, oldValue) {
-
-        if (newValue && oldValue !== "" && newValue !== oldValue) {
-          $scope.collapseAll();
-        }
-
-      }, true);
-
-      //update data within tables on accordion - open
-      $scope.$watch('status', function (status, oldValue) {
-        Object.keys(status).map(function (key) {
-          if ($scope.networkElementId && status[key] && status[key] !== oldValue[key]) {
-            switch (key) {
-
-              case 'performance826':
-                $scope.performance826 = [];
-                refreshAirInterface(key);
-                break;
-
-              case 'receiveLevel':
-                $scope.receiveLevel = [];
-                refreshAirInterface(key);
-                break;
-
-              case 'transmissionLevel':
-                $scope.transmissionLevel = [];
-                refreshAirInterface(key);
-                break;
-
-              case 'modulation':
-                $scope.modulation = [];
-                refreshAirInterface(key);
-                break;
-
-              case 'temperature':
-                $scope.temperature = [];
-                refreshAirInterface(key);
-                break;
-
-              case 'snir':
-                $scope.snir = [];
-                refreshAirInterface(key);
-                break;
-
-              case 'crossPolarDiscrimination':
-                $scope.cpdData = [];
-                refreshAirInterface(key);
-                break;
-
-              case 'performanceEthernetContainer':
-                $scope.performanceEthernetContainer = [];
-                $scope.ethernetJsonValue = [];
-
-                //get performance data for ethernet
-                $scope.ethernets.map(function (item) {
-                  var ethernetSpec = {
-                    nodeId: $scope.networkElementId,
-                    revision: $scope.revision,
-                    pacId: 'container',
-                    partId: 'CurrentPerformance',
-                    layerProtocolId: item.layerProtocol
-                  };
-
-                  $mwtnPerformanceCurrent.getPacParts(ethernetSpec).then(function (data) {
-                    var yangfiedObj = $mwtnPerformanceCurrent.yangifyObject(data);
-                    updatePart(ethernetSpec, yangfiedObj);
-                  });
-                });
-                break;
-
-            }
-            $window.dispatchEvent(new Event("resize"));
-          }
-        });
-      }, true);
-
-    }]);
-  });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module.js
deleted file mode 100644 (file)
index e0e4e2f..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var mwtnPerformanceCurrentApp = angular.module('app.mwtnPerformanceCurrent', ['ui.grid', 'ui.bootstrap', 'app.core', 'ui.router.state', 'config', 'ui.router.state','ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns', 'ui.grid.pagination','ui.grid.autoResize']);
-
-  mwtnPerformanceCurrentApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnPerformanceCurrentApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-
-    };
-
-    NavHelperProvider.addControllerUrl('app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.controller');
-    NavHelperProvider.addToMenu('mwtnPerformanceCurrent', {
-     "link" : "#/pnfPerformanceCurrent",
-     "active" : "main.mwtnPerformanceCurrent",
-     "title" : "pnf PM Current",
-     "icon" : "fa fa-bar-chart",  // Add navigation icon css class here
-     "page" : {
-        "title" : "pnf PM Current",
-        "description" : "mwtnPerformanceCurrent"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnPerformanceCurrent', {
-        url: 'pnfPerformanceCurrent',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.tpl.html',
-                controller: 'mwtnPerformanceCurrentCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnPerformanceCurrentApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.services.js
deleted file mode 100644 (file)
index d7adb5a..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (c) 2016 HCL Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCommons/mwtnCommons.module', 'app/mwtnPerformanceCurrent/mwtnPerformanceCurrent.module'],function(mwtnPerformanceCurrentApp) {
-
-  mwtnPerformanceCurrentApp.register.factory('$mwtnPerformanceCurrent', function($mwtnCommons, $mwtnLog) {
-
-    var COMPONENT = '$mwtnPerformanceCurrent';
-    $mwtnLog.info({component: COMPONENT, message: '$mwtnPerformanceCurrent started!'});
-
-    var service = {};
-    
-    service.separator = $mwtnCommons.separator;
-    service.parts = $mwtnCommons.parts;
-    service.getMountPoints = $mwtnCommons.getMountPoints;
-    service.getPacParts = $mwtnCommons.getPacParts;
-    service.layerProtocolNameOrder = $mwtnCommons.layerProtocolNameOrder;
-    service.formatTimeStamp = $mwtnCommons.formatTimeStamp;
-    
-    service.yangifyObject=$mwtnCommons.yangifyObject;
-      
-    return service;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/mwtnPerformanceCurrent-module/src/main/resources/mwtnPerformanceCurrent/mwtnPerformanceCurrent.tpl.html
deleted file mode 100644 (file)
index a212971..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<ht-header help-link='sdnr/pnfPerformance/0.4.0/README.md'></ht-header>
-<mwtn-select-network-element></mwtn-select-network-element>
-
-<div class="owl container" ng-if="networkElements.lenght !== 0 && networkElement" style="width: 100%">
-       <div class="row">
-               <div class="col-md-3">
-                       <div class="form-group">
-                               <select class="form-control" ng-model="layerProtocol">
-                                       <option ng-repeat="protocol in layerProtocols">{{protocol}}</option>
-                               </select>
-                       </div>
-               </div>
-               <div class="col-md-2">
-                       <span class="white">{{'Select Layer Protocol' }}</span>
-               </div>
-       </div>
-       <div class="row" ng-if="layerProtocol === 'MWPS' ">
-               <div class="col">
-               <uib-accordion close-others="oneATime">
-                       <div uib-accordion-group class="panel-primary" is-open="status.performance826">
-                               <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.performance826, 'fa-chevron-right': !status.performance826}"></i>
-                                       <span>Performance Data G.826</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.performance826"></i>
-                               </uib-accordion-heading>
-
-                               <div id="mwtnFaultGridAlarmLog" ui-grid="gridOptionsPerformance826" ui-grid-pagination ui-grid-exporter ui-grid-selection
-                                ui-grid-pinning ui-grid-resize-columns ui-grid-auto-resize ui-grid-move-columns class="mwtnCurrentGrid">
-                               </div>
-                       </div>
-                       <div uib-accordion-group class="panel-primary" is-open="status.receiveLevel">
-                               <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.receiveLevel, 'fa-chevron-right': !status.receiveLevel}"></i>
-                                       <span>Receive Level</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.receiveLevel"></i>
-                               </uib-accordion-heading>
-
-                               <div ui-grid="gridOptionsReceiveLevel" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-                                ui-grid-auto-resize ui-grid-move-columns class="mwtnCurrentGrid">
-                               </div>
-
-                       </div>
-                       <div uib-accordion-group class="panel-primary" is-open="status.transmissionLevel">
-                               <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.transmissionLevel, 'fa-chevron-right': !status.transmissionLevel}"></i>
-                                       <span>Transmission Power</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.transmissionLevel"></i>
-                               </uib-accordion-heading>
-
-                               <div ui-grid="gridOptionsTransmissionLevel" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-                                ui-grid-auto-resize ui-grid-move-columns class="mwtnCurrentGrid">
-                               </div>
-
-                       </div>
-                       <div uib-accordion-group class="panel-primary" is-open="status.modulation">
-                               <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.modulation, 'fa-chevron-right': !status.modulation}"></i>
-                                       <span>Adaptive Modulation</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.modulation"></i>
-                               </uib-accordion-heading>
-
-                               <div ui-grid="gridOptionsModulation" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-                                ui-grid-move-columns class="mwtnCurrentGrid">
-                               </div>
-
-                       </div>
-                       <div uib-accordion-group class="panel-primary" is-open="status.temperature">
-                               <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.temperature, 'fa-chevron-right': !status.temperature}"></i>
-                                       <span>Temperature</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.temperature"></i>
-                               </uib-accordion-heading>
-
-                               <div ui-grid="gridOptionsTemperature" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-                                ui-grid-move-columns class="mwtnFaultGrid">
-                               </div>
-
-                       </div>
-                       <div uib-accordion-group class="panel-primary" is-open="status.snir">
-                               <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.snir, 'fa-chevron-right': !status.snir}"></i>
-                <span>{{'MWTN_SINR' | translate}}</span>
-                               <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.snir"></i>
-                               </uib-accordion-heading>
-
-                               <div ui-grid="gridOptionsSnir" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-                                ui-grid-move-columns class="mwtnCurrentGrid">
-                               </div>
-
-                       </div>
-                       <div uib-accordion-group class="panel-primary" is-open="status.crossPolarDiscrimination">
-                               <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.crossPolarDiscrimination, 'fa-chevron-right': !status.crossPolarDiscrimination}"></i>
-                                       <span>Cross Polar Discrimination</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.crossPolarDiscrimination"></i>
-                               </uib-accordion-heading>
-
-                               <div ui-grid="gridOptionsCrossPolarDiscrimination" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-                                ui-grid-move-columns class="mwtnCurrentGrid">
-                               </div>
-
-                       </div>
-               </uib-accordion>
-               </div>
-       </div>
-       <div class="row" ng-if="layerProtocol === 'ETC' ">
-               <div class="col">
-               <uib-accordion close-others="oneATime">
-                       <div uib-accordion-group class="panel-primary" is-open="status.performanceEthernetContainer">
-                               <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.performanceEthernetContainer, 'fa-chevron-right': !status.performanceEthernetContainer}"></i>
-                                       <span>Performance Data</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.performanceEthernetContainer"></i>
-                               </uib-accordion-heading>
-
-                               <div ui-grid="gridOptionsPerformanceEthernetContainer" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-                                ui-grid-auto-resize ui-grid-move-columns class="mwtnCurrentGrid">
-                               </div>
-                       </div>
-               </uib-accordion>
-               </div>
-       </div>
-</div>
-<hr />
-<div class="owl">
-       <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceCurrent/pom.xml
deleted file mode 100644 (file)
index 7f2c1e5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-    <artifactId>mwtn</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-  <relativePath>..</relativePath>
-  </parent>
-    <packaging>pom</packaging>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <artifactId>mwtnPerformanceCurrent</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
-    <name>${prefix} ${project.artifactId}</name>
-
-    <prerequisites>
-        <maven>3.0</maven>
-    </prerequisites>
-
-  <modules>
-    <module>mwtnPerformanceCurrent-module</module>
-    <module>mwtnPerformanceCurrent-bundle</module>
-  </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-bundle/pom.xml
deleted file mode 100644 (file)
index feb3263..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnPerformanceHistory</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnPerformanceHistory-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnPerformanceHistory-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnPerformanceHistory-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 3288e4f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnPerformanceHistory"/>
-        <property name="url" value="/src/app/mwtnPerformanceHistory"/>
-        <property name="directory" value="/mwtnPerformanceHistory"/>
-        <property name="requireJs" value="app/mwtnPerformanceHistory/mwtnPerformanceHistory.module"/>
-        <property name="angularJs" value="app.mwtnPerformanceHistory"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnPerformanceHistory/mwtnPerformanceHistory-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/pom.xml
deleted file mode 100644 (file)
index 9665ca8..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnPerformanceHistory</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnPerformanceHistory-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/images/mwtnPerformance.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/images/mwtnPerformance.png
deleted file mode 100755 (executable)
index 5517f5b..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/images/mwtnPerformance.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory-custom.css
deleted file mode 100644 (file)
index 4366303..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-/**
- *  Add your application related css here
- */
-
- .mwtnHistoryGrid {
-  height: 600px;
-  background-color: white;
-  color:black;
-}
-
-.mwtnHistoryGrid span {
-  color: #393939;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.controller.js
deleted file mode 100644 (file)
index 6a5a2e9..0000000
+++ /dev/null
@@ -1,1196 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * @license
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnPerformanceHistory/mwtnPerformanceHistory.module',
-  'app/mwtnPerformanceHistory/mwtnPerformanceHistory.services'],
-  function (mwtnPerformanceHistoryoryApp) {
-
-    mwtnPerformanceHistoryoryApp.register.controller('mwtnPerformanceHistoryCtrl', ['$scope', '$rootScope', '$window', '$translate', '$mwtnLog', '$mwtnPerformanceHistory', 'uiGridConstants', 'OnfNetworkElement',
-      function ($scope, $rootScope, $window, $translate, $mwtnLog, $mwtnPerformanceHistory, uiGridConstants, OnfNetworkElement) {
-
-      var COMPONENT = 'mwtnPerformanceHistory';
-      $mwtnLog.info({ component: COMPONENT, message: 'mwtn historical Performance started!' });
-
-      $rootScope.section_logo = 'src/app/mwtnPerformanceHistory/images/mwtnPerformance.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-      var globalFilter;
-
-      $scope.selecteditem = {};
-
-      //time selector
-      $scope.selecteditem.timePeriod = "15 minutes";
-      $scope.timePeriods = ["15 minutes", "24 hours"];
-
-      //interface selector
-      $scope.selecteditem.selectedLtpId = undefined;
-      $scope.availableLtpIds = [];
-
-      //stateobject
-      $scope.state = {};
-      $scope.state.filter = false;
-      $scope.state.sort = false;
-      $scope.state.lastfilter = null;
-      $scope.state.lastSort = null;
-      $scope.state.grid = null;
-
-      //perf log configuration
-      $scope.gridOptionsPerformance826 = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        useExternalPagination: true,
-        useExternalSorting: true,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        useExternalFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-          { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'End time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-
-          { field: 'es', type: 'string', displayName: 'ES', width: 70 },
-          { field: 'ses', type: 'string', displayName: 'SES', width: 70 },
-          { field: 'uas', type: 'string', displayName: 'UAS', width: 70 }
-
-        ],
-        data: 'performance826',
-        onRegisterApi: function (gridApi) {
-          $scope.performancegridApi = gridApi;
-          $scope.performancegridApi.core.on.filterChanged($scope, $scope.filter);
-          $scope.performancegridApi.core.on.sortChanged($scope, $scope.sortChanged);
-          $scope.sortChanged($scope.performancegridApi.grid, [$scope.gridOptionsPerformance826.columnDefs[1]]);
-
-          $scope.performancegridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-            getPage($scope.gridOptionsPerformance826);
-          });
-        }
-      };
-
-      //receive lvl configuration
-      $scope.gridOptionsReceiveLevel = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        useExternalPagination: true,
-        useExternalSorting: true,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        useExternalFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-          { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'End time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'rxmin', type: 'string', displayName: 'Rx min', width: 90 },
-          { field: 'rxavg', type: 'string', displayName: 'Rx avg', width: 90 },
-          { field: 'rxmax', type: 'string', displayName: 'Rx max', width: 90 }
-        ],
-        data: 'receiveLevel',
-        onRegisterApi: function (gridApi) {
-          $scope.recvGridApi = gridApi;
-          $scope.recvGridApi.core.on.filterChanged($scope, $scope.filter);
-          $scope.recvGridApi.core.on.sortChanged($scope, $scope.sortChanged);
-          $scope.sortChanged($scope.recvGridApi.grid, [$scope.gridOptionsReceiveLevel.columnDefs[1]]);
-
-          $scope.recvGridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-            getPage($scope.gridOptionsReceiveLevel);
-          });
-        }
-      };
-
-      //transmission lvl configuration
-      $scope.gridOptionsTransmissionLevel = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        useExternalPagination: true,
-        useExternalSorting: true,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        useExternalFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-          { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'End time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'txmin', type: 'string', displayName: 'Tx min', width: 90 },
-          { field: 'txavg', type: 'string', displayName: 'Tx avg', width: 90 },
-          { field: 'txmax', type: 'string', displayName: 'Tx max', width: 90 }
-        ],
-        data: 'transmissionLevel',
-        onRegisterApi: function (gridApi) {
-          $scope.transmissionGridApi = gridApi;
-          $scope.transmissionGridApi.core.on.filterChanged($scope, $scope.filter);
-          $scope.transmissionGridApi.core.on.sortChanged($scope, $scope.sortChanged);
-          $scope.sortChanged($scope.transmissionGridApi.grid, [$scope.gridOptionsTransmissionLevel.columnDefs[1]]);
-
-          $scope.transmissionGridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-            getPage($scope.gridOptionsTransmissionLevel);
-          });
-        }
-      };
-
-      //modulation configuration
-      $scope.gridOptionsModulation = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        useExternalPagination: true,
-        useExternalSorting: true,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        useExternalFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-          { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'End time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'time2S', type: 'string', displayName: 'QAM2S', width: 90 },
-          { field: 'time2', type: 'string', displayName: 'QAM2', width: 90 },
-          { field: 'time2L', type: 'string', displayName: 'QAM2L', width: 90 },
-          { field: 'time4S', type: 'string', displayName: 'QAM4S', width: 90 },
-          { field: 'time4', type: 'string', displayName: 'QAM4', width: 90 },
-          { field: 'time4L', type: 'string', displayName: 'QAM4L', width: 90 },
-          { field: 'time16S', type: 'string', displayName: 'QAM16S', width: 90 },
-          { field: 'time16', type: 'string', displayName: 'QAM16', width: 90 },
-          { field: 'time16L', type: 'string', displayName: 'QAM16L', width: 90 },
-          { field: 'time32S', type: 'string', displayName: 'QAM32S', width: 90 },
-          { field: 'time32', type: 'string', displayName: 'QAM32', width: 90 },
-          { field: 'time32L', type: 'string', displayName: 'QAM32L', width: 90 },
-          { field: 'time64S', type: 'string', displayName: 'QAM64S', width: 90 },
-          { field: 'time64', type: 'string', displayName: 'QAM64', width: 90 },
-          { field: 'time64L', type: 'string', displayName: 'QAM64L', width: 90 },
-          { field: 'time128S', type: 'string', displayName: 'QAM128S', width: 90 },
-          { field: 'time128', type: 'string', displayName: 'QAM128', width: 90 },
-          { field: 'time128L', type: 'string', displayName: 'QAM128L', width: 90 },
-          { field: 'time256S', type: 'string', displayName: 'QAM256S', width: 90 },
-          { field: 'time256', type: 'string', displayName: 'QAM256', width: 90 },
-          { field: 'time256L', type: 'string', displayName: 'QAM256L', width: 90 },
-          { field: 'time512S', type: 'string', displayName: 'QAM512S', width: 90 },
-          { field: 'time512', type: 'string', displayName: 'QAM512', width: 90 },
-          { field: 'time512L', type: 'string', displayName: 'QAM512L', width: 90 },
-          { field: 'time1024S', type: 'string', displayName: 'QAM1024S', width: 90 },
-          { field: 'time1024', type: 'string', displayName: 'QAM1024', width: 90 },
-          { field: 'time1024L', type: 'string', displayName: 'QAM1024L', width: 90 },
-          { field: 'time2048S', type: 'string', displayName: 'QAM2048S', width: 90 },
-          { field: 'time2048', type: 'string', displayName: 'QAM2048', width: 90 },
-          { field: 'time2048L', type: 'string', displayName: 'QAM2048L', width: 90 },
-          { field: 'time4096S', type: 'string', displayName: 'QAM4096S', width: 90 },
-          { field: 'time4096', type: 'string', displayName: 'QAM4096', width: 90 },
-          { field: 'time4096L', type: 'string', displayName: 'QAM4096L', width: 90 },
-          { field: 'time8192S', type: 'string', displayName: 'QAM8192S', width: 90 },
-          { field: 'time8192', type: 'string', displayName: 'QAM8192', width: 90 },
-          { field: 'time8192L', type: 'string', displayName: 'QAM8192L', width: 90 }
-
-
-        ],
-        data: 'modulation',
-        onRegisterApi: function (gridApi) {
-          $scope.gridApi = gridApi;
-          $scope.gridApi.core.on.filterChanged($scope, $scope.filter);
-          $scope.gridApi.core.on.sortChanged($scope, $scope.sortChanged);
-          $scope.sortChanged($scope.gridApi.grid, [$scope.gridOptionsModulation.columnDefs[1]]);
-
-          $scope.gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-            getPage($scope.gridOptionsModulation);
-          });
-        }
-      };
-
-      //temperature configuration
-      $scope.gridOptionsTemperature = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        useExternalPagination: true,
-        useExternalSorting: true,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        useExternalFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-          { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'End time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'rfTempMin', type: 'string', displayName: 'Rf Temp Min  [&deg;C]', width: 90 },
-          { field: 'rfTempAvg', type: 'string', displayName: 'Rf Temp Avg  [&deg;C]', width: 90 },
-          { field: 'rfTempMax', type: 'string', displayName: 'Rf Temp Max  [&deg;C]', width: 90 }
-
-        ],
-        data: 'temperature',
-        onRegisterApi: function (gridApi) {
-          $scope.gridTemperatureApi = gridApi;
-          $scope.gridTemperatureApi.core.on.filterChanged($scope, $scope.filter);
-          $scope.gridTemperatureApi.core.on.sortChanged($scope, $scope.sortChanged);
-          $scope.sortChanged($scope.gridTemperatureApi.grid, [$scope.gridOptionsTemperature.columnDefs[1]]);
-
-          $scope.gridTemperatureApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-            getPage($scope.gridOptionsTemperature);
-          });
-        }
-      }
-
-      //SNIR configuration
-      $scope.gridOptionsSnir = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        useExternalPagination: true,
-        useExternalSorting: true,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        useExternalFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-          { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'End time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'snirMin', type: 'string', displayName: [$translate.instant('MWTN_SNIR_MIN'),'[dB]'].join(' '), width: 90 },
-          { field: 'snirAvg', type: 'string', displayName: [$translate.instant('MWTN_SNIR_AVG'),'[dB]'].join(' '), width: 90 },
-          { field: 'snirMax', type: 'string', displayName: [$translate.instant('MWTN_SNIR_MAX'),'[dB]'].join(' '), width: 90 }
-        ],
-        data: 'snir',
-        onRegisterApi: function (gridApi) {
-          $scope.gridSNIRApi = gridApi;
-          $scope.gridSNIRApi.core.on.filterChanged($scope, $scope.filter);
-          $scope.gridSNIRApi.core.on.sortChanged($scope, $scope.sortChanged);
-          $scope.sortChanged($scope.gridSNIRApi.grid, [$scope.gridOptionsSnir.columnDefs[1]]);
-
-          $scope.gridSNIRApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-            getPage($scope.gridOptionsSnir);
-          });
-        }
-      }
-
-      //CPD Configuration
-      $scope.gridOptionsCrossPolarDiscrimination = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        useExternalPagination: true,
-        useExternalSorting: true,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        useExternalFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-          { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'End time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'xpdMin', type: 'string', displayName: 'CPD min  [dB]', width: 90 },
-          { field: 'xpdAvg', type: 'string', displayName: 'CPD avg  [dB]', width: 90 },
-          { field: 'xpdMax', type: 'string', displayName: 'CPD max  [dB]', width: 90 }
-
-        ],
-        data: 'crossPolarDiscrimination',
-        onRegisterApi: function (gridApi) {
-          $scope.gridXpdApi = gridApi;
-          $scope.gridXpdApi.core.on.filterChanged($scope, $scope.filter);
-          $scope.gridXpdApi.core.on.sortChanged($scope, $scope.sortChanged);
-          $scope.sortChanged($scope.gridOptionsCrossPolarDiscrimination, [$scope.gridOptionsCrossPolarDiscrimination.columnDefs[1]]);
-
-          $scope.gridXpdApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-            getPage($scope.gridOptionsCrossPolarDiscrimination);
-          });
-        }
-      }
-
-      //ethernet perf configuration
-      $scope.gridOptionsPerformanceEthernetContainer = {
-        paginationPageSizes: [25, 100, 1000, 10000],
-        paginationPageSize: 25,
-        useExternalPagination: true,
-        useExternalSorting: true,
-        enablePaginationControls: true,
-        enableFiltering: true,
-        useExternalFiltering: true,
-        enableGridMenu: true,
-        columnDefs: [
-          { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-          { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-          { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90, visible: false },
-          { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-          {
-            field: 'timestamp', type: 'string', displayName: 'End time', width: 200, sort: {
-              direction: uiGridConstants.ASC,
-              priority: 1
-            }
-          },
-          { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-          { field: 'txEthernetBytesMaxS', type: 'number', displayName: 'Tx BytesMaxS', width: 90 },
-          { field: 'txEthernetBytesMaxM', type: 'number', displayName: 'Tx BytesMaxM', width: 90 },
-          { field: 'txEthernetBytesSum', type: 'number', displayName: 'Tx BytesSum', width: 90 }
-
-        ],
-        data: 'performanceEthernetContainer',
-        onRegisterApi: function (gridApi) {
-          $scope.gridPerfEthernetApi = gridApi;
-          $scope.gridPerfEthernetApi.core.on.filterChanged($scope, $scope.filter);
-          $scope.gridPerfEthernetApi.core.on.sortChanged($scope, $scope.sortChanged);
-          $scope.sortChanged($scope.gridPerfEthernetApi.grid, [$scope.gridOptionsPerformanceEthernetContainer.columnDefs[1]]);
-
-          $scope.gridPerfEthernetApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-            getPage($scope.gridOptionsPerformanceEthernetContainer);
-          });
-        }
-      };
-
-      //filter 
-      $scope.filter = function () {
-        var grid = this.grid;
-        var columns = [];
-
-        //get all columns where data was typed in
-        angular.forEach(grid.columns, function (value, key) {
-          if (value.filters[0].term) {
-            var col = findColumn(value.field);
-            if (col === "time-stamp") {
-              //convert timestamp to db format
-              var timestamp = $mwtnPerformanceHistory.TimeStampToONFFormat(value.filters[0].term);
-              columns.push({ column: col, value: timestamp });
-            }
-            else
-              columns.push({ column: col, value: value.filters[0].term }); //create column object
-          }
-        });
-
-        if (columns.length == 0) { //all filter data cleared away
-          $scope.state.filter = false;
-          $scope.state.lastfilter = null;
-
-          //get unfiltered data
-          getData($scope.state.lastSort, $scope.state.lastfilter, grid.options, null, null).then(function (response) {
-            if (response.data.hits.hits) {
-              processRequestInGrid(response, grid.options);
-
-            }
-          });
-
-        } else {
-          //base filter string
-          var filter = { "query": { "bool": { "must": [] } } };
-
-          //create filter objects
-          var prefixs = [];
-          prefixs.push({ prefix: globalFilter });
-
-          columns.map(function (obj) {
-            var prefixObj = {};
-            prefixObj[obj.column] = obj.value;//add  like: {column: "fault.counter", value: "1"} => {"fault.counter":1}
-            prefixs.push({ prefix: prefixObj }); // => {"prefix":{...}}
-          });
-
-          //add objects to must property
-          filter.query.bool.must = prefixs;
-
-          //save filter
-          $scope.state.lastfilter = filter;
-          $scope.state.filter = true;
-
-          getData($scope.state.lastSort, $scope.state.lastfilter, grid.options, filter, null).then(function (response) {
-            if (response.data.hits.total > 0) { //only, when hits exist
-              processRequestInGrid(response, grid.options);
-              //$scope.gridOptionsAlarmLog.totalItems = response.data.hits.total;
-            } else {
-              //clear data from list
-              $scope[grid.options.data] = [];
-              grid.options.totalItems = 0;
-
-            }
-          });
-        }
-      };
-
-      $scope.sortChanged = function (grid, sortColumns) {    // sortColumns is an array containing just the column sorted in the grid
-
-
-        if (sortColumns && sortColumns.length > 0) {
-          if (sortColumns[0].sort) {
-            var name = sortColumns[0].field; // the field (name) of the column sorted
-            var direction = sortColumns[0].sort.direction // the direction of the column sorted: "desc" or "asc"
-            sort(direction, findColumn(name), grid);
-          }
-        } else if (sortColumns) {
-          $scope.state.sort = false;
-          $scope.state.lastSort = null;
-
-          //get unsorted data
-          getData($scope.state.lastSort, $scope.state.lastfilter, grid.options, null, null).then(function (response) {
-            if (response.data.hits.hits) {
-              processRequestInGrid(response, grid.options);
-            }
-          });
-        }
-      };
-
-      var sort = function (direction, columnName, grid) {
-        switch (direction) {
-          case uiGridConstants.ASC:
-
-            //create sort object
-            var sortObj = {};
-            sortObj[columnName] = { order: 'asc' };
-            var sort = [sortObj];
-            //save last sort
-            $scope.state.lastSort = sort;
-
-            getData($scope.state.lastSort, $scope.state.lastfilter, grid.options, null, sort).then(function (response) {
-              if (response.data.hits.hits) {
-                processRequestInGrid(response, grid.options);
-                $scope.state.sort = true;
-
-              }
-            });
-
-            break;
-
-          case uiGridConstants.DESC:
-
-            var sortObj = {};
-            sortObj[columnName] = { order: 'desc' };
-            var sort = [sortObj];
-            $scope.state.lastSort = sort;
-
-            getData($scope.state.lastSort, $scope.state.lastfilter, grid.options, null, sort).then(function (response) {
-              if (response.data.hits.hits) {
-                processRequestInGrid(response, grid.options);
-                $scope.state.sort = true;
-              }
-            });
-            break;
-
-          case undefined:
-
-            $scope.state.sort = false;
-            $scope.state.lastSort = null;
-
-            getData($scope.state.lastSort, $scope.state.lastfilter, grid.options, null, null)
-              .then(function (response) {
-                if (response.data.hits.hits) {
-                  processRequestInGrid(response, grid.options);
-                }
-              });
-
-            break;
-        }
-      }
-
-      function findColumn(name) {
-
-        if (name === "timestamp") { return "time-stamp"; }
-        else if (name === "layerprotocol") { return "layer-protocol-name"; }
-        else if (name === "id") { return "uuid-interface"; }
-        else if (name === "suspectInterval") { return "suspect-interval-flag"; }
-        else if (name === "scannerId") { return "scanner-id"; }
-        else if (name === "radiosignal") { return "radio-signal-id"; }
-        else if (name === "es") { return "performance-data.es"; }
-        else if (name === "ses") { return "performance-data.ses"; }
-        else if (name === "uas") { return "performance-data.unavailability"; }
-        else if (name === "rxmin") { return "performance-data.rx-level-min"; }
-        else if (name === "rxmax") { return "performance-data.rx-level-max"; }
-        else if (name === "rxavg") { return "performance-data.rx-level-avg"; }
-        else if (name === "txmin") { return "performance-data.tx-level-min"; }
-        else if (name === "txmax") { return "performance-data.tx-level-max"; }
-        else if (name === "txavg") { return "performance-data.tx-level-avg"; }
-        else if (name === "Tx BytesMaxS") { return "performance-data.tx-ethernet-bytes-max-s"; }
-        else if (name === "Tx BytesMaxM") { return "performance-data.tx-ethernet-bytes-max-m"; }
-        else if (name === "Tx BytesSum") { return "performance-data.tx-ethernet-bytes-sum"; }
-        else if (name === "xpdMin") { return "performance-data.xpd-min"; }
-        else if (name === "xpdAvg") { return "performance-data.xpd-avg"; }
-        else if (name === "xpdMax") { return "performance-data.xpd-max"; }
-        else if (name === "snirMin") { return "performance-data.snir-min"; }
-        else if (name === "snirAvg") { return "performance-data.snir-avg"; }
-        else if (name === "snirMax") { return "performance-data.snir-max"; }
-        else if (name === "rfTempMin") { return "performance-data.rf-temp-min"; }
-        else if (name === "rfTempAvg") { return "performance-data.rf-temp-avg"; }
-        else if (name === "rfTempMax") { return "performance-data.rf-temp-max"; }
-        else if (name === "time2S") { return "performance-data.time2-states-s"; }
-        else if (name === "time2") { return "performance-data.time2-states"; }
-        else if (name === "time2L") { return "performance-data.time2-states-l"; }
-        else if (name === "time4S") { return "performance-data.time4-states-s"; }
-        else if (name === "time4") { return "performance-data.time4-states"; }
-        else if (name === "time4L") { return "performance-data.time4-states-l"; }
-        else if (name === "time16S") { return "performance-data.time16-states-s"; }
-        else if (name === "time16") { return "performance-data.time16-states"; }
-        else if (name === "time16L") { return "performance-data.time16-states-l"; }
-        else if (name === "time32S") { return "performance-data.time32-states-s"; }
-        else if (name === "time32") { return "performance-data.time32-states"; }
-        else if (name === "time32L") { return "performance-data.time32-states-l"; }
-        else if (name === "time64S") { return "performance-data.time64-states-s"; }
-        else if (name === "time64") { return "performance-data.time64-states"; }
-        else if (name === "time64L") { return "performance-data.time64-states-l"; }
-        else if (name === "time128S") { return "performance-data.time128-states-s"; }
-        else if (name === "time128") { return "performance-data.time128-states"; }
-        else if (name === "time128L") { return "performance-data.time128-states-l"; }
-        else if (name === "time256S") { return "performance-data.time256-states-s"; }
-        else if (name === "time256") { return "performance-data.time256-states"; }
-        else if (name === "time256L") { return "performance-data.time256-states-l"; }
-        else if (name === "time512S") { return "performance-data.time512-states-s"; }
-        else if (name === "time512") { return "performance-data.time512-states"; }
-        else if (name === "time512L") { return "performance-data.time512-states-l"; }
-        else if (name === "time1024S") { return "performance-data.time1024-states-s"; }
-        else if (name === "time1024") { return "performance-data.time1024-states"; }
-        else if (name === "time1024L") { return "performance-data.time1024-states-l"; }
-        else if (name === "time2048S") { return "performance-data.time2048-states-s"; }
-        else if (name === "time2048") { return "performance-data.time2048-states"; }
-        else if (name === "time2048L") { return "performance-data.time2048-states-l"; }
-        else if (name === "time4096S") { return "performance-data.time4096-states-s"; }
-        else if (name === "time4096") { return "performance-data.time4096-states"; }
-        else if (name === "time4096L") { return "performance-data.time4096-states-l"; }
-        else if (name === "time8192S") { return "performance-data.time8192-states-s"; }
-        else if (name === "time8192") { return "performance-data.time8192-states"; }
-        else if (name === "time8192L") { return "performance-data.time8192-states-l"; }
-
-
-      };
-
-      var checkData = function (value) {
-        if (value === -1 || value === undefined) return undefined;
-        else return value;
-      };
-
-      var getPage = function (grid) {
-
-        //from, how many, sort, filter
-        getData($scope.state.lastSort, $scope.state.lastfilter, grid, null, null)
-          .then(function (data) {
-
-            processRequestInGrid(data, grid);
-          });
-      };
-
-      var processRequestInGrid = function (response, grid) {
-        // console.log(grid.data);
-        switch (grid.data) {
-          case "performance826":
-            var list = [];
-
-            response.data.hits.hits.map(function (entry) {
-              var item = {
-                timestamp: $mwtnPerformanceHistory.formatTimeStamp(entry._source['time-stamp']),
-                id: $scope.onfNetworkElement.getLpById(entry._source['uuid-interface']).getLabel() || entry._source['uuid-interface'],
-                layerProtocol: entry._source['layer-protocol-name'],
-                suspectInterval: entry._source['suspect-interval-flag'],
-                scannerId: entry._source['scanner-id'],
-                es: checkData(entry._source['performance-data'].es),
-                ses: checkData(entry._source['performance-data'].ses),
-                uas: checkData(entry._source['performance-data'].unavailability),
-                radiosignal: entry._source['radio-signal-id']
-              };
-
-              list.push(item);
-
-            });
-            $scope.performance826 = list;
-            $scope.gridOptionsPerformance826.totalItems = response.data.hits.total;
-            break;
-          case "transmissionLevel":
-            var list = [];
-
-            response.data.hits.hits.map(function (entry) {
-              var item = {
-                timestamp: $mwtnPerformanceHistory.formatTimeStamp(entry._source['time-stamp']),
-                id: $scope.onfNetworkElement.getLpById(entry._source['uuid-interface']).getLabel() || entry._source['uuid-interface'],
-                layerProtocol: entry._source['layer-protocol-name'],
-                suspectInterval: entry._source['suspect-interval-flag'],
-                scannerId: entry._source['scanner-id'],
-                txmin: checkData(entry._source['performance-data']['tx-level-min']),
-                txavg: checkData(entry._source['performance-data']['tx-level-avg']),
-                txmax: checkData(entry._source['performance-data']['tx-level-max']),
-                radiosignal: entry._source['radio-signal-id']
-              };
-
-              list.push(item);
-
-            });
-            $scope.transmissionLevel = list;
-            $scope.gridOptionsTransmissionLevel.totalItems = response.data.hits.total;
-
-            break;
-          case "receiveLevel":
-
-            var list = [];
-
-            response.data.hits.hits.map(function (entry) {
-              var item = {
-                timestamp: $mwtnPerformanceHistory.formatTimeStamp(entry._source['time-stamp']),
-                id: $scope.onfNetworkElement.getLpById(entry._source['uuid-interface']).getLabel() || entry._source['uuid-interface'],
-                layerProtocol: entry._source['layer-protocol-name'],
-                suspectInterval: entry._source['suspect-interval-flag'],
-                scannerId: entry._source['scanner-id'],
-                rxmin: checkData(entry._source['performance-data']['rx-level-min']),
-                rxavg: checkData(entry._source['performance-data']['rx-level-avg']),
-                rxmax: checkData(entry._source['performance-data']['rx-level-max']),
-                radiosignal: entry._source['radio-signal-id']
-              };
-
-              list.push(item);
-
-            });
-            $scope.receiveLevel = list;
-            $scope.gridOptionsReceiveLevel.totalItems = response.data.hits.total;
-
-            break;
-          case "modulation":
-
-            var list = [];
-
-            response.data.hits.hits.map(function (entry) {
-              var item = {
-                timestamp: $mwtnPerformanceHistory.formatTimeStamp(entry._source['time-stamp']),
-                id: $scope.onfNetworkElement.getLpById(entry._source['uuid-interface']).getLabel() || entry._source['uuid-interface'],
-                layerProtocol: entry._source['layer-protocol-name'],
-                suspectInterval: entry._source['suspect-interval-flag'],
-                scannerId: entry._source['scanner-id'],
-                time2S: checkData(entry._source['performance-data']['time2-states-s']),
-                time2: checkData(entry._source['performance-data']['time2-states']),
-                time2L: checkData(entry._source['performance-data']['time2-states-l']),
-                time4S: checkData(entry._source['performance-data']['time4-states-s']),
-                time4: checkData(entry._source['performance-data']['time4-states']),
-                time4L: checkData(entry._source['performance-data']['time4-states-l']),
-                time16S: checkData(entry._source['performance-data']['time16-states-s']),
-                time16: checkData(entry._source['performance-data']['time16-states']),
-                time16L: checkData(entry._source['performance-data']['time16-states-l']),
-                time32S: checkData(entry._source['performance-data']['time32-states-s']),
-                time32: checkData(entry._source['performance-data']['time32-states']),
-                time32L: checkData(entry._source['performance-data']['time32-states-l']),
-                time64S: checkData(entry._source['performance-data']['time64-states-s']),
-                time64: checkData(entry._source['performance-data']['time64-states']),
-                time64L: checkData(entry._source['performance-data']['time64-states-l']),
-                time128S: checkData(entry._source['performance-data']['time128-states-s']),
-                time128: checkData(entry._source['performance-data']['time128-states']),
-                time128L: checkData(entry._source['performance-data']['time128-states-l']),
-                time256S: checkData(entry._source['performance-data']['time256-states-s']),
-                time256: checkData(entry._source['performance-data']['time256-states']),
-                time256L: checkData(entry._source['performance-data']['time256-states-l']),
-                time512S: checkData(entry._source['performance-data']['time512-states-s']),
-                time512: checkData(entry._source['performance-data']['time512-states']),
-                time512L: checkData(entry._source['performance-data']['time512-states-l']),
-                time1024S: checkData(entry._source['performance-data']['time1024-states-s']),
-                time1024: checkData(entry._source['performance-data']['time1024-states']),
-                time1024L: checkData(entry._source['performance-data']['time1024-states-l']),
-                time2048S: checkData(entry._source['performance-data']['time2048-states-s']),
-                time2048: checkData(entry._source['performance-data']['time2048-states']),
-                time2048L: checkData(entry._source['performance-data']['time2048-states-l']),
-                time4096S: checkData(entry._source['performance-data']['time4096-states-s']),
-                time4096: checkData(entry._source['performance-data']['time4096-states']),
-                time4096L: checkData(entry._source['performance-data']['time4096-states-l']),
-                time8192S: checkData(entry._source['performance-data']['time8192-states-s']),
-                time8192: checkData(entry._source['performance-data']['time8192-states']),
-                time8192L: checkData(entry._source['performance-data']['time8192-states-l']),
-                radiosignal: entry._source['radio-signal-id']
-              };
-
-              list.push(item);
-
-            });
-            $scope.modulation = list;
-            $scope.gridOptionsModulation.totalItems = response.data.hits.total;
-
-            break;
-
-          case "temperature":
-            var list = [];
-
-            response.data.hits.hits.map(function (entry) {
-              var item = {
-                timestamp: $mwtnPerformanceHistory.formatTimeStamp(entry._source['time-stamp']),
-                id: $scope.onfNetworkElement.getLpById(entry._source['uuid-interface']).getLabel() || entry._source['uuid-interface'],
-                layerProtocol: entry._source['layer-protocol-name'],
-                suspectInterval: entry._source['suspect-interval-flag'],
-                scannerId: entry._source['scanner-id'],
-                rfTempMin: entry._source['performance-data']['rf-temp-min'],
-                rfTempAvg: entry._source['performance-data']['rf-temp-avg'],
-                rfTempMax: entry._source['performance-data']['rf-temp-max'],
-                radiosignal: entry._source['radio-signal-id']
-              };
-
-              list.push(item);
-
-            });
-            $scope.temperature = list;
-            $scope.gridOptionsTemperature.totalItems = response.data.hits.total;
-
-            break;
-
-          case "snir":
-            var list = [];
-
-            response.data.hits.hits.map(function (entry) {
-              var item = {
-                timestamp: $mwtnPerformanceHistory.formatTimeStamp(entry._source['time-stamp']),
-                id: $scope.onfNetworkElement.getLpById(entry._source['uuid-interface']).getLabel() || entry._source['uuid-interface'],
-                layerProtocol: entry._source['layer-protocol-name'],
-                suspectInterval: entry._source['suspect-interval-flag'],
-                scannerId: entry._source['scanner-id'],
-                snirMin: entry._source['performance-data']['snir-min'],
-                snirAvg: entry._source['performance-data']['snir-avg'],
-                snirMax: entry._source['performance-data']['snir-max'],
-                radiosignal: entry._source['radio-signal-id']
-              };
-
-              list.push(item);
-
-            });
-            $scope.snir = list;
-            $scope.gridOptionsSnir.totalItems = response.data.hits.total;
-
-            break;
-
-          case "crossPolarDiscrimination":
-            var list = [];
-
-            response.data.hits.hits.map(function (entry) {
-              var item = {
-                timestamp: $mwtnPerformanceHistory.formatTimeStamp(entry._source['time-stamp']),
-                id: $scope.onfNetworkElement.getLpById(entry._source['uuid-interface']).getLabel() || entry._source['uuid-interface'],
-                layerProtocol: entry._source['layer-protocol-name'],
-                suspectInterval: entry._source['suspect-interval-flag'],
-                scannerId: entry._source['scanner-id'],
-                xpdMin: entry._source['performance-data']['xpd-min'],
-                xpdAvg: entry._source['performance-data']['xpd-avg'],
-                xpdMax: entry._source['performance-data']['xpd-max'],
-                radiosignal: entry._source['radio-signal-id']
-
-              };
-
-              list.push(item);
-
-            });
-            $scope.crossPolarDiscrimination = list;
-            $scope.gridOptionsCrossPolarDiscrimination.totalItems = response.data.hits.total;
-
-            break;
-
-
-          case "performanceEthernetContainer":
-
-            var list = [];
-
-            response.data.hits.hits.map(function (entry) {
-              var item = {
-                timestamp: $mwtnPerformanceHistory.formatTimeStamp(entry._source['time-stamp']),
-                id: $scope.onfNetworkElement.getLpById(entry._source['uuid-interface']).getLabel() || entry._source['uuid-interface'],
-                layerProtocol: entry._source['layer-protocol-name'],
-                suspectInterval: entry._source['suspect-interval-flag'],
-                scannerId: entry._source['scanner-id'],
-                period: entry._source['granularity-period'],
-                txEthernetBytesMaxS: checkData(entry._source['performance-data']['tx-ethernet-bytes-max-s']),
-                txEthernetBytesMaxM: checkData(entry._source['performance-data']['tx-ethernet-bytes-max-m']),
-                txEthernetBytesSum: checkData(entry._source['performance-data']['tx-ethernet-bytes-sum'])
-
-              };
-
-              list.push(item);
-
-            });
-            $scope.performanceEthernetContainer = list;
-            $scope.gridOptionsPerformanceEthernetContainer.totalItems = response.data.hits.total;
-
-            break;
-        }
-      };
-
-      var getData = function (sort, query, grid, currFilter, currSort) {
-
-        // console.log(grid);
-        var pagesize;
-        var pagenr;
-
-        switch (grid.data) { //get pagesize / nr according to current grid (else everything gets messy => wana get next page in grid a, get next page for grid b too)
-          case 'performance826':
-            pagesize = $scope.gridOptionsPerformance826.paginationPageSize;
-            pagenr = $scope.gridOptionsPerformance826.paginationCurrentPage;
-            break;
-
-          case 'receiveLevel':
-            pagesize = $scope.gridOptionsReceiveLevel.paginationPageSize;
-            pagenr = $scope.gridOptionsReceiveLevel.paginationCurrentPage;
-            break;
-
-          case 'transmissionLevel':
-            pagesize = $scope.gridOptionsTransmissionLevel.paginationPageSize;
-            pagenr = $scope.gridOptionsTransmissionLevel.paginationCurrentPage;
-            break;
-
-          case 'modulation':
-            pagesize = $scope.gridOptionsModulation.paginationPageSize;
-            pagenr = $scope.gridOptionsModulation.paginationCurrentPage;
-            break;
-
-          case 'temperature':
-            pagesize = $scope.gridOptionsTemperature.paginationPageSize;
-            pagenr = $scope.gridOptionsTemperature.paginationCurrentPage;
-            break;
-
-          case 'snir':
-            pagesize = $scope.gridOptionsSnir.paginationPageSize;
-            pagenr = $scope.gridOptionsSnir.paginationCurrentPage;
-            break;
-
-          case 'crossPolarDiscrimination':
-            pagesize = $scope.gridOptionsCrossPolarDiscrimination.paginationPageSize;
-            pagenr = $scope.gridOptionsCrossPolarDiscrimination.paginationCurrentPage;
-            break;
-
-          case 'performanceEthernetContainer':
-            pagesize = $scope.gridOptionsPerformanceEthernetContainer.paginationPageSize;
-            pagenr = $scope.gridOptionsPerformanceEthernetContainer.paginationCurrentPage;
-            break;
-          
-          default:
-            $mwtnLog.warning({component: COMPONENT, message: ['Unexpected grid.data', grid.data, '!'].join(' ')});
-        }
-
-        if (grid !== undefined) {
-
-          if ($scope.state.grid === null || $scope.state.grid === undefined) {
-            $scope.state.grid = grid.data;
-          }
-
-          //check, if sort/filter params are for current grid
-          if ($scope.state.grid !== grid.data) {
-            $scope.state.sort = false;
-            $scope.state.lastSort = null;
-            $scope.state.filter = false;
-            $scope.state.lastfilter = null;
-            if (currSort !== null) {
-              sort = currSort;
-            } else {
-              sort = null;
-            }
-
-            if (currFilter !== null) {
-              query = currFilter;
-            } else {
-              query = null;
-            }
-
-            //update current grid
-            $scope.state.grid = grid.data;
-          }
-        }
-
-        if (!sort) { //default sort value
-          sort = [{ 'time-stamp': { order: 'desc' } }];
-          //sort=[];
-        }
-        if (!query) { //default filter value
-          query = { query: { bool: { must: [{ prefix: globalFilter }] } } };
-        }
-
-        //add layer protocol selector to filter query
-        var localQuery = angular.copy(query); //copy the object for adding layerprotocol locally
-        var lpn = $scope.layerProtocol;
-        if (lpn === 'ETC' && $scope.revision.contains('2016')) lpn = 'ETH-CTP';
-        localQuery.query.bool.must.push({ prefix: { "layer-protocol-name": lpn } });
-
-        //add interface selector to filter query
-        if ($scope.selecteditem.selectedLtpId) {
-          localQuery.query.bool.must.push({ prefix: { "uuid-interface": $scope.selecteditem.selectedLtpId } });
-        }
-
-        var selected15minPeriod = true;
-        if ($scope.selecteditem.timePeriod !== $scope.timePeriods[0]) selected15minPeriod = false;
-        console.warn('selected15minPeriod', selected15minPeriod);
-        return $mwtnPerformanceHistory.getFilteredSortedData((pagenr - 1) * pagesize, pagesize, sort, localQuery, selected15minPeriod);
-      };
-
-      /**
-       * function to calculate the current open tab
-       * @param status - Object of current tab opening information
-       * @param previousStatus - optional Object of previous tab opening information
-       * @return latest opened tab key or undefined, in case none is currently open
-       */
-      var getKey = function(status, previousStatus) {
-        var result = Object.keys(status).filter(function(key){
-          return status[key] === true && !(previousStatus && previousStatus[key])
-        });
-        if (result.length > 0) {
-          return result[0];
-        }
-      }
-
-      // events  
-      $scope.status = { performance826: true, performanceEthernetContainer: false };
-      $scope.spinner = {};
-
-      $scope.$watch(function() {
-        return $scope.selecteditem;
-      }, function (newValue, oldValue) {
-        console.warn('selecteditem###', newValue, oldValue, $scope.networkElementId );
-
-        if (newValue.selectedLtpId && newValue.selectedLtpId !== oldValue.selectedLtpId && $scope.onfNetworkElement) {
-          $scope.layerProtocol = $scope.onfNetworkElement.getLpById(newValue.selectedLtpId).getLayer();
-
-          $scope.performance826 = [];
-          $scope.receiveLevel = [];
-          $scope.transmissionLevel = [];
-          $scope.modulation = [];
-          $scope.temperature = [];
-          $scope.performanceEthernetContainer = [];
-          $scope.snir = [];
-          $scope.crossPolarDiscrimination = [];
-          $scope.jsonvalue = [];
-
-          // if all tabs are closed - open first.
-          var isOneTabOpen = Object.keys($scope.status).filter(function(key){
-            return $scope.status[key] === true; 
-          }).length > 0;
-          if (!isOneTabOpen) {
-            $scope.status = { performance826: $scope.layerProtocol === 'MWPS', performanceEthernetContainer: $scope.layerProtocol === 'ETC' };
-          }
-        }
-
-        chooseGrid(getKey($scope.status));
-
-      }, true);
-      
-
-      $scope.$watch('status', function (status, oldValue) {
-        console.warn('status', status, oldValue,$scope.networkElementId );
-        if ($scope.networkElementId && status && status !== oldValue) {
-          chooseGrid(getKey(status, oldValue));
-        }
-      }, true);
-
-
-      // $scope.$watch(function(){
-      //   $scope.selecteditem.timePeriod;
-      // }, function (newValue, oldValue) {
-      //   console.warn('timePeriod', status, oldValue,$scope.networkElementId );
-      //   if (newValue && oldValue !== "" && newValue !== oldValue) {
-      //     chooseGrid(getKey($scope.status));
-      //   }
-      // }, true);
-
-      $scope.collapseAll = function () {
-        // close all groups
-        Object.keys($scope.status).map(function (group) {
-          $scope.status[group] = false;
-        });
-        Object.keys($scope.spinner).map(function (group) {
-          $scope.spinner[group] = false;
-        });
-      };
-
-      var order = $mwtnPerformanceHistory.layerProtocolNameOrder;
-
-      /**
-       * @function updateNe 
-       * A function, which updates onfNetworkElement by new data.
-       * @param {*} data New data recieved from OpenDaylight via RestConf
-       */
-      var updateNe = function(data) {
-        if (!data) return;
-        // update onfNetworkElement
-        switch ($scope.revision) {
-          case '2016-08-09':
-          case '2016-08-11':
-          case '2016-09-01':
-          case '2017-02-17':
-          case '2017-03-20':
-          case '2017-03-24':
-            // console.log(JSON.stringify(data));        
-            $scope.onfNetworkElement = new OnfNetworkElement(data['network-element']);
-            $scope.onfLtps = $scope.onfNetworkElement.getLogicalTerminationPoints().filter(function(ltp){
-              return ltp.getLayer() === 'MWPS' || ltp.getLayer() === 'ETC';
-            }).sort(function(a, b){
-              if(order[a.getLayer()] < order[b.getLayer()]) return 1;
-              if(order[a.getLayer()] > order[b.getLayer()]) return -1;
-              if(a.getId() < b.getId()) return -1;
-              if(a.getId() > b.getId()) return 1;
-              return 0;
-            });
-            $scope.availableLtpIds = $scope.onfLtps.map(function(ltp){
-              return {key: ltp.getLayerProtocols()[0].getId(), label:ltp.getLabel()};
-            });
-            if ($scope.availableLtpIds.length > 0) {
-              $scope.selecteditem.selectedLtpId = $scope.availableLtpIds[0].key;
-            }
-            break;
-          default:
-            $mwtnLog.info({component: COMPONENT, message: ['The ONF Microwave Model revision', $scope.revision, ' is not supported (yet)!'].join(' ')});
-            $scope.onfNetworkElement = {};
-            $scope.onfLtps = {};
-        }
-      };
-
-      var updatePart = function(spec, data) {
-        switch (spec.pacId) {
-          case 'ne':
-            updateNe(data);
-            break;
-        }
-      };
-
-      //get data on ne selection
-      $scope.$watch('networkElement', function (neId, oldValue) {
-        console.warn('networkElement', neId, oldValue,$scope.networkElementId );
-        
-        if (neId && neId !== '' && neId !== oldValue) {
-          $scope.selecteditem.selectedLtpId = undefined;
-          var revision;
-          $scope.networkElements.map(function (ne) {
-            if (ne.id === neId) revision = ne.revision;
-          });
-          $scope.networkElementId = neId;
-          $scope.revision = revision;
-
-          //get data
-          var filter = { "query": { "bool": { "must": [{ "prefix": { "node-name": $scope.networkElementId } }] } } };
-          // var filter={"query":{"bool":{"must":[{"prefix":{"node-name": "new"}}]}}}; //first part of my local simulator name
-          globalFilter = filter.query.bool.must[0].prefix;
-          $scope.state.filter = true;
-          $scope.state.lastfilter = filter;
-          $scope.state.sort = false;
-          $scope.state.lastSort = null;
-
-          // get onf network element data
-          var spec = {
-            nodeId: $scope.networkElementId,
-            revision: $scope.revision,
-            pacId: 'ne'
-          };
-          console.warn('PM HIstory getPacPMHistory', JSON.stringify(spec));
-          $mwtnPerformanceHistory.getPacParts(spec).then(function(success){
-            $scope.collapseAll();
-            // console.warn('PM HIstory getPacPMHistory', JSON.stringify(success));
-            updatePart(spec, $mwtnPerformanceHistory.yangifyObject(success));
-          }, function(error){
-            console.error(JSON.stringify(error));
-            $scope.collapseAll();
-            updatePart(spec, error);
-          });
-        }
-      });
-
-      var chooseGrid = function (key) {
-        if (!$scope.networkElementId || !key) return;
-
-            switch (key) {
-
-              case 'performance826':
-                getData(null, null, $scope.gridOptionsPerformance826).then(function (response) {
-                  if (response.data.hits.hits) {
-                    processRequestInGrid(response, $scope.gridOptionsPerformance826);
-                  }
-                });
-                break;
-
-              case 'receiveLevel':
-                getData(null, null, $scope.gridOptionsReceiveLevel).then(function (response) {
-                  if (response.data.hits.hits) {
-                    processRequestInGrid(response, $scope.gridOptionsReceiveLevel);
-                  }
-                });
-                break;
-
-              case 'transmissionLevel':
-                getData(null, null, $scope.gridOptionsTransmissionLevel).then(function (response) {
-                  if (response.data.hits.hits) {
-                    processRequestInGrid(response, $scope.gridOptionsTransmissionLevel);
-                  }
-                });
-                break;
-
-              case 'modulation':
-                getData(null, null, $scope.gridOptionsModulation).then(function (response) {
-                  if (response.data.hits.hits) {
-                    processRequestInGrid(response, $scope.gridOptionsModulation);
-                  }
-                });
-                break;
-
-              case 'temperature':
-                getData(null, null, $scope.gridOptionsTemperature).then(function (response) {
-                  if (response.data.hits.hits) {
-                    processRequestInGrid(response, $scope.gridOptionsTemperature);
-                  }
-                });
-                break;
-
-              case 'snir':
-                getData(null, null, $scope.gridOptionsSnir).then(function (response) {
-                  if (response.data.hits.hits) {
-                    processRequestInGrid(response, $scope.gridOptionsSnir);
-                  }
-                });
-                break;
-
-              case 'crossPolarDiscrimination':
-                getData(null, null, $scope.gridOptionsCrossPolarDiscrimination).then(function (response) {
-                  if (response.data.hits.hits) {
-                    processRequestInGrid(response, $scope.gridOptionsCrossPolarDiscrimination);
-                  }
-                });
-                break;
-
-              case 'performanceEthernetContainer':
-                getData(null, null, $scope.gridOptionsPerformanceEthernetContainer).then(function (response) {
-                  if (response.data.hits.hits) {
-                    processRequestInGrid(response, $scope.gridOptionsPerformanceEthernetContainer);
-                  }
-                });
-                break;
-            }
-            $window.dispatchEvent(new Event("resize"));
-      };
-    }]);
-  });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.module.js
deleted file mode 100644 (file)
index 4199ae6..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var mwtnPerformanceHistoryApp = angular.module('app.mwtnPerformanceHistory', ['ui.grid', 'ui.bootstrap', 'app.core', 'ui.router.state', 'config', 'ui.router.state','ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns', 'ui.grid.pagination']);
-
-  mwtnPerformanceHistoryApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnPerformanceHistoryApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-
-    };
-
-    NavHelperProvider.addControllerUrl('app/mwtnPerformanceHistory/mwtnPerformanceHistory.controller');
-    NavHelperProvider.addToMenu('mwtnPerformanceHistory', {
-     "link" : "#/pnfPerformanceHistory/",
-     "active" : "main.mwtnPerformanceHistory",
-     "title" : "pnf PM History",
-     "icon" : "fa fa-bar-chart",  // Add navigation icon css class here
-     "page" : {
-        "title" : "pnf PM History",
-        "description" : "mwtnHistoricalPerformance"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnPerformanceHistory', {
-        url: 'pnfPerformanceHistory/:nodeId',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/mwtnPerformanceHistory/mwtnPerformanceHistory.tpl.html',
-                controller: 'mwtnPerformanceHistoryCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnPerformanceHistoryApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.services.js
deleted file mode 100644 (file)
index 94aeb93..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2016 HCL Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCommons/mwtnCommons.module', 'app/mwtnPerformanceHistory/mwtnPerformanceHistory.module'], function (mwtnPerformanceHistoryoryApp) {
-
-  mwtnPerformanceHistoryoryApp.register.factory('$mwtnPerformanceHistory', function ($q, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-
-    var COMPONENT = '$mwtnPerformanceHistory';
-    $mwtnLog.info({ component: COMPONENT, message: '$mwtnPerformanceHistory started!' });
-
-    var service = {};
-    service.formatTimeStamp = $mwtnCommons.formatTimeStamp;
-    service.getMountPoints = $mwtnCommons.getMountPoints;
-    service.getPacParts = $mwtnCommons.getPacParts;
-    service.layerProtocolNameOrder = $mwtnCommons.layerProtocolNameOrder;
-    
-    service.yangifyObject = $mwtnCommons.yangifyObject;
-
-    service.TimeStampToONFFormat = function (timestamp) {
-      timestamp = timestamp.split('-').join('');
-      timestamp = timestamp.split(':').join('');
-      timestamp = timestamp.split(' ').join('');
-      timestamp = timestamp.replace('UTC', 'Z');
-      return timestamp;
-    };
-
-    service.getFilteredSortedData = function (from, size, sort, query, selected15minPeriod) {
-      var func = function () {
-        if (selected15minPeriod) {
-          return $mwtnDatabase.getFilteredSortedData('sdnperformance', 'historicalperformance15min', from, size, sort, query);
-        } else {
-          return $mwtnDatabase.getFilteredSortedData('sdnperformance', 'historicalperformance24h', from, size, sort, query);
-        }
-      };
-      var deferred = $q.defer();
-      func().then(function (success) {
-        deferred.resolve(success);
-      }, function (error) {
-        $mwtnLog.error({ component: '$mwtnHistPerformance.getFilteredSortedData', message: JSON.stringify(error.data) });
-        deferred.reject(error)
-      });
-      return deferred.promise;
-
-    };
-
-    return service;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/mwtnPerformanceHistory-module/src/main/resources/mwtnPerformanceHistory/mwtnPerformanceHistory.tpl.html
deleted file mode 100644 (file)
index bb5f6e4..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-<ht-header help-link='sdnr/pnfPerformance/0.4.0/README.md'></ht-header>
-<mwtn-select-network-element></mwtn-select-network-element>
-
-<div class="owl container" ng-if="networkElements.lenght !== 0 && networkElement" style="width: 100%">
-
-  <div class="row" ng-show="networkElements.lenght !== 0">
-    <div class="col-md-3">
-      <div class="form-group">
-        <select class="form-control" ng-model="selecteditem.selectedLtpId">
-                                 <option ng-repeat="ltp in availableLtpIds" value="{{ltp.key}}">{{ltp.label}}</option>
-                               </select>
-      </div>
-    </div>
-    <div class="col-md-3">
-      <span class="white">{{'MWTN_SELECT_LTP' | translate }}</span>
-    </div>
-    <div class="col-md-2">
-      <div class="form-group">
-        <select class="form-control" ng-model="selecteditem.timePeriod">
-          <option ng-repeat="time in timePeriods">{{time}}</option>
-        </select>
-      </div>
-    </div>
-    <div class="col-md-2">
-      <span class="white">{{'MWTN_TIME_PERIOD' | translate}}</span>
-    </div>
-  </div>
-
-  <div class="row" ng-show="selecteditem.selectedLtpId">
-    <div class="col-md-12">
-    <uib-accordion close-others="true">
-      <div uib-accordion-group class="panel-primary" is-open="status.performance826" ng-show="layerProtocol==='MWPS'">
-        <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.performance826, 'fa-chevron-right': !status.performance826}"></i>
-          <span>Performance Data G.826</span>
-          <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.performance826"></i>
-        </uib-accordion-heading>
-
-        <div id="mwtnFaultGridAlarmLog" ui-grid="gridOptionsPerformance826" ui-grid-pagination ui-grid-exporter ui-grid-selection
-          ui-grid-pinning ui-grid-resize-columns ui-grid-move-columns class="mwtnHistoryGrid">
-        </div>
-      </div>
-      <div uib-accordion-group class="panel-primary" is-open="status.receiveLevel" ng-show="layerProtocol==='MWPS'">
-        <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.receiveLevel, 'fa-chevron-right': !status.receiveLevel}"></i>
-          <span>Receive Level</span>
-          <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.receiveLevel"></i>
-        </uib-accordion-heading>
-
-        <div ui-grid="gridOptionsReceiveLevel" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-          ui-grid-move-columns class="mwtnHistoryGrid">
-        </div>
-
-      </div>
-      <div uib-accordion-group class="panel-primary" is-open="status.transmissionLevel" ng-show="layerProtocol==='MWPS'">
-        <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.transmissionLevel, 'fa-chevron-right': !status.transmissionLevel}"></i>
-          <span>Transmission Power</span>
-          <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.transmissionLevel"></i>
-        </uib-accordion-heading>
-
-        <div ui-grid="gridOptionsTransmissionLevel" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-          ui-grid-move-columns class="mwtnHistoryGrid">
-        </div>
-
-      </div>
-      <div uib-accordion-group class="panel-primary" is-open="status.modulation" ng-show="layerProtocol==='MWPS'">
-        <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.modulation, 'fa-chevron-right': !status.modulation}"></i>
-          <span>Adaptive Modulation</span>
-          <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.modulation"></i>
-        </uib-accordion-heading>
-
-        <div ui-grid="gridOptionsModulation" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-          ui-grid-move-columns class="mwtnHistoryGrid">
-        </div>
-
-      </div>
-      <div uib-accordion-group class="panel-primary" is-open="status.temperature" ng-show="layerProtocol==='MWPS'">
-        <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.temperature, 'fa-chevron-right': !status.temperature}"></i>
-          <span>Temperature</span>
-          <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.temperature"></i>
-        </uib-accordion-heading>
-
-        <div ui-grid="gridOptionsTemperature" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-          ui-grid-move-columns class="mwtnHistoryGrid">
-        </div>
-
-      </div>
-      <div uib-accordion-group class="panel-primary" is-open="status.snir" ng-show="layerProtocol==='MWPS'">
-        <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.snir, 'fa-chevron-right': !status.snir}"></i>
-          <span>{{'MWTN_SINR' | translate}}</span>
-          <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.snir"></i>
-        </uib-accordion-heading>
-
-        <div ui-grid="gridOptionsSnir" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-          ui-grid-move-columns class="mwtnHistoryGrid">
-        </div>
-
-      </div>
-      <div uib-accordion-group class="panel-primary" is-open="status.crossPolarDiscrimination" ng-show="layerProtocol==='MWPS'">
-        <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.crossPolarDiscrimination, 'fa-chevron-right': !status.crossPolarDiscrimination}"></i>
-          <span>Cross Polar Discrimination</span>
-          <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.crossPolarDiscrimination"></i>
-        </uib-accordion-heading>
-
-        <div ui-grid="gridOptionsCrossPolarDiscrimination" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-          ui-grid-move-columns class="mwtnHistoryGrid">
-        </div>
-
-      </div>
-
-      <div uib-accordion-group class="panel-primary" is-open="status.performanceEthernetContainer" ng-show="layerProtocol==='ETC'">
-        <uib-accordion-heading> <i class="pull-left fa" ng-class="{'fa-chevron-down': status.performanceEthernetContainer, 'fa-chevron-right': !status.performanceEthernetContainer}"></i>
-          <span>Performance Data</span>
-          <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.performanceEthernetContainer"></i>
-        </uib-accordion-heading>
-
-        <div ui-grid="gridOptionsPerformanceEthernetContainer" ui-grid-pagination ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns
-          ui-grid-auto-resize ui-grid-move-columns class="mwtnHistoryGrid">
-        </div>
-      </div>
-
-    </uib-accordion>
-  </div>  
-  </div>  
-</div>
-<hr />
-<div class="owl">
-  <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceHistory/pom.xml
deleted file mode 100644 (file)
index 2d6ced8..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-    <artifactId>mwtn</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-  <relativePath>..</relativePath>
-  </parent>
-    <packaging>pom</packaging>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <artifactId>mwtnPerformanceHistory</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
-    <prerequisites>
-        <maven>3.0</maven>
-    </prerequisites>
-
-  <modules>
-    <module>mwtnPerformanceHistory-module</module>
-    <module>mwtnPerformanceHistory-bundle</module>
-  </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-bundle/pom.xml
deleted file mode 100644 (file)
index ebc2897..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnPerformanceLink</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnPerformanceLink-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnPerformanceLink-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnPerformanceLink-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 0f87a77..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnPerformanceLink"/>
-        <property name="url" value="/src/app/mwtnPerformanceLink"/>
-        <property name="directory" value="/mwtnPerformanceLink"/>
-        <property name="requireJs" value="app/mwtnPerformanceLink/mwtnPerformanceLink.module"/>
-        <property name="angularJs" value="app.mwtnPerformanceLink"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnPerformanceLink/mwtnPerformanceLink-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/pom.xml
deleted file mode 100644 (file)
index 7be5f5f..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnPerformanceLink</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnPerformanceLink-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/images/mwtnPerformance.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/images/mwtnPerformance.png
deleted file mode 100755 (executable)
index 5517f5b..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/images/mwtnPerformance.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink-custom.css
deleted file mode 100644 (file)
index eafc20b..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- *  Add your application related css here
- */
-
-.mwtnLinkGrid {
-  height: 600px;
-  background-color: white;
-  color:black;
-}
-
-.mwtnLinkGrid span {
-  color: #393939;
-}
-
-.ht-pagination span{
-    color: #393939;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.controller.js
deleted file mode 100644 (file)
index bb3ac9c..0000000
+++ /dev/null
@@ -1,3346 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnPerformanceLink/mwtnPerformanceLink.module',
-  'app/mwtnPerformanceLink/mwtnPerformanceLink.services'],
-  function (mwtnPerformanceLinkApp) {
-
-    mwtnPerformanceLinkApp.register.controller('mwtnPerformanceLinkCtrl', ['$scope', '$rootScope', '$window', '$translate', '$mwtnLog', '$mwtnPerformanceLink', 'uiGridConstants',
-      function ($scope, $rootScope, $window, $translate, $mwtnLog, $mwtnPerformanceLink, uiGridConstants) {
-
-        var COMPONENT = 'mwtnPerformanceLink';
-        $mwtnLog.info({ component: COMPONENT, message: 'mwtn Link Performance started!' });
-
-        $rootScope.section_logo = 'src/app/mwtnPerformanceLink/images/mwtnPerformance.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-    
-        var globalFilter;
-
-        //time selector
-        $scope.timePeriod = "15 minutes";
-        $scope.timePeriods = ["15 minutes", "24 hours"];
-
-        //interface selector
-        $scope.selectedLtpIdA = 'Select LTP';
-        $scope.selectedLtpIdB = 'Select LTP';
-        $scope.availableLtpIdsA = ['Select LTP'];
-        $scope.availableLtpIdsB = ['Select LTP'];
-
-        var formatTimeStamp = function(timeStamp) {
-          var result = $mwtnPerformanceLink.formatTimeStamp(timeStamp);
-          // 2017-06-22 14:52:21.0 UTC -> 2017-06-22 14:52 UTC
-          var array = result.split(' ');
-          if (array && array.length === 3) {
-            result = [array[0], array[1].slice(0,-5), array[2]].join(' ');
-          }
-          return result;
-        };
-
-        var initNodeList = function (nodes) {
-          $scope.networkElements = [];
-          nodes.map(function (ne) {
-            // revision detection should go to commons
-            if (ne['netconf-node-topology:connection-status'] === 'connected' && ne['netconf-node-topology:available-capabilities'] && ne['netconf-node-topology:available-capabilities']['available-capability']) {
-              ne['netconf-node-topology:available-capabilities']['available-capability'].map(function (cap) {
-                if (cap.contains('CoreModel-CoreNetworkModule-ObjectClasses')) {
-                  ne.onfCoreModelRevision = cap.split('?revision=')[1].substring(0, 10);
-                } else if (cap.contains('MicrowaveModel-ObjectClasses-AirInterface')) {
-                  ne.onfAirInterfaceRevision = cap.split('?revision=')[1].substring(0, 10);
-                } else if (!ne.onfAirInterfaceRevision && cap.contains('MicrowaveModel-ObjectClasses')) {
-                  ne.onfAirInterfaceRevision = cap.split('?revision=')[1].substring(0, 10);
-                }
-              });
-              if (ne.onfAirInterfaceRevision) {
-                $scope.networkElements.push({ id: ne['node-id'], revision: ne.onfAirInterfaceRevision });
-              }
-            }
-          });
-          $scope.networkElements.sort(function (a, b) {
-            if (a.id < b.id) return -1;
-            if (a.id > b.id) return 1;
-            return 0;
-          });
-
-          // select one of the nodes
-          // var select = parseInt(Math.random() * $scope.networkElements.length);
-          // $scope.networkElementA = $scope.networkElements[select].id;
-          // $scope.networkElementB = $scope.networkElements[select].id;
-        };
-
-        var initLinkIds = function () {
-          var functionId = 'sdnperformance';
-          var docType = 'historicalperformance15min';
-          if ($scope.timePeriod !== $scope.timePeriods[0]) {
-            docType = 'historicalperformance24h';
-          }
-          var aggregations = {
-            "size":0,
-            "aggregations": {
-              "radio-signal-id": {
-                "terms": {
-                  "field": "radio-signal-id"
-                }
-              }
-            }
-          };
-          $mwtnPerformanceLink.getAggregations(functionId, docType, aggregations).then(function (success) {
-            $scope.linkIds = success.data.aggregations['radio-signal-id'].buckets.map(function(bucket){
-              return bucket.key;
-            });
-          }, function (error) {
-            console.log(error);
-            $scope.linkIds = [];
-          });
-        };
-
-        $mwtnPerformanceLink.getMountPoints().then(function (mountpoints) {
-          initNodeList(mountpoints);
-          initLinkIds();
-        }, function (error) {
-          $scope.networkElements = [];
-        });
-
-        //table stuff
-
-        //data visible on screen
-        $scope.performance826 = [];
-        $scope.receiveLevel = [];
-        $scope.transmissionLevel = [];
-        $scope.modulation = [];
-        $scope.temperature = [];
-        $scope.snir = [];
-        $scope.crossPolarDiscrimination = [];
-
-        $scope.paginationOptions = {
-          pageNumber: 1,
-          pageSize: 2,
-          sort: null
-        };
-
-        //page sizes, based on time period
-        $scope.pageSizes = function () {
-          var arr;
-          if ($scope.timePeriod && $scope.timePeriod === "15 minutes") {
-
-            arr = [96, (96 * 2), (96 * 7)];
-
-          } else {
-            arr = [7, 30, (30 * 3), (30 * 6), (30 * 12)];
-          }
-          return arr;
-        };
-
-        //init page sizes
-        $scope.selectPageSize = function () {
-
-          if ($scope.timePeriod && $scope.timePeriod === "15 minutes") {
-
-            return 96;
-
-          } else {
-            return 7;
-          }
-
-        };
-
-        $scope.itemsMessage = function () {
-          if ($scope.timePeriod && $scope.timePeriod === "15 minutes") {
-            return "15 minutes items per page";
-          } else {
-            return "24 hours items per page";
-          }
-        };
-
-
-        $scope.paginationStatusMessage = function (grid) {
-          if (grid === 'receiveLevel') {
-            let start = ($scope.gridOptionsReceiveLevel.paginationCurrentPage - 1) * $scope.gridOptionsReceiveLevel.paginationPageSize + 1;
-            let end = ($scope.gridOptionsReceiveLevel.paginationCurrentPage - 1) * $scope.gridOptionsReceiveLevel.paginationPageSize + 1 + $scope.receiveLevel.length - 1;
-            let total = $scope.gridOptionsReceiveLevel.totalItems;
-            let message = "Showing {0} to {1} of {2} items";
-            return message.format(start, end, total);
-          }
-          else if (grid === 'transmissionLevel') {
-            let start = ($scope.gridOptionsTransmissionLevel.paginationCurrentPage - 1) * $scope.gridOptionsTransmissionLevel.paginationPageSize + 1;
-            let end = ($scope.gridOptionsTransmissionLevel.paginationCurrentPage - 1) * $scope.gridOptionsTransmissionLevel.paginationPageSize + 1 + $scope.transmissionLevel.length - 1;
-            let total = $scope.gridOptionsTransmissionLevel.totalItems;
-            let message = "Showing {0} to {1} of {2} items";
-            return message.format(start, end, total);
-          }
-          else if (grid === 'modulation') {
-            let start = ($scope.gridOptionsModulation.paginationCurrentPage - 1) * $scope.gridOptionsModulation.paginationPageSize + 1;
-            let end = ($scope.gridOptionsModulation.paginationCurrentPage - 1) * $scope.gridOptionsModulation.paginationPageSize + 1 + $scope.modulation.length - 1;
-            let total = $scope.gridOptionsModulation.totalItems;
-            let message = "Showing {0} to {1} of {2} items";
-            return message.format(start, end, total);
-
-          } else if (grid === 'temperature') {
-            let start = ($scope.gridOptionsTemperature.paginationCurrentPage - 1) * $scope.gridOptionsTemperature.paginationPageSize + 1;
-            let end = ($scope.gridOptionsTemperature.paginationCurrentPage - 1) * $scope.gridOptionsTemperature.paginationPageSize + 1 + $scope.temperature.length - 1;
-            let total = $scope.gridOptionsTemperature.totalItems;
-            let message = "Showing {0} to {1} of {2} items";
-            return message.format(start, end, total);
-
-          } else if (grid === 'snir') {
-            let start = ($scope.gridOptionsSnir.paginationCurrentPage - 1) * $scope.gridOptionsSnir.paginationPageSize + 1;
-            let end = ($scope.gridOptionsSnir.paginationCurrentPage - 1) * $scope.gridOptionsSnir.paginationPageSize + 1 + $scope.snir.length - 1;
-            let total = $scope.gridOptionsSnir.totalItems;
-            let message = "Showing {0} to {1} of {2} items";
-            return message.format(start, end, total);
-
-          } else if (grid === 'crossPolarDiscrimination') {
-            let start = ($scope.gridOptionsCrossPolarDiscrimination.paginationCurrentPage - 1) * $scope.gridOptionsCrossPolarDiscrimination.paginationPageSize + 1;
-            let end = ($scope.gridOptionsCrossPolarDiscrimination.paginationCurrentPage - 1) * $scope.gridOptionsCrossPolarDiscrimination.paginationPageSize + 1 + $scope.crossPolarDiscrimination.length - 1;
-            let total = $scope.gridOptionsCrossPolarDiscrimination.totalItems;
-            let message = "Showing {0} to {1} of {2} items";
-            return message.format(start, end, total);
-          }
-        };
-
-        //seek page based on grid
-        $scope.seekPage = function (page, grid) {
-          if (!page) {
-            page = 1;
-            return;
-          }
-          switch (grid) {
-            case 'receiveLevel': $scope.recvGridApi.pagination.seek(parseInt(page));
-              break;
-
-            case 'transmissionLevel': $scope.transmissionGridApi.pagination.seek(parseInt(page));
-              break;
-
-            case 'modulation': $scope.gridApi.pagination.seek(parseInt(page));
-              break;
-
-            case 'temperature': $scope.gridTemperatureApi.pagination.seek(parseInt(page));
-              break;
-
-            case 'snir': $scope.gridSNIRApi.pagination.seek(parseInt(page));
-              break;
-
-            case 'crossPolarDiscrimination': $scope.gridXpdApi.pagination.seek(parseInt(page));
-              break;
-          }
-
-        };
-        //table configuration
-
-        //receive lvl configuration
-        $scope.gridOptionsReceiveLevel = {
-          paginationPageSizes: $scope.pageSizes(),
-          paginationPageSize: $scope.selectPageSize(),
-          useExternalPagination: true,
-          enablePaginationControls: false,
-          enableFiltering: false,
-          enableSorting: false,
-          enableGridMenu: true,
-          columnDefs: [
-            { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-            { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-            { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-            { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-            { field: 'timestamp', type: 'string', displayName: 'End time', width: 200 },
-            { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-            { field: 'rxmina', type: 'string', displayName: 'Rx min A', width: 90 },
-            { field: 'rxavga', type: 'string', displayName: 'Rx avg A', width: 90 },
-            { field: 'rxmaxa', type: 'string', displayName: 'Rx max A', width: 90 },
-            { field: 'rxminb', type: 'string', displayName: 'Rx min B', width: 90 },
-            { field: 'rxavgb', type: 'string', displayName: 'Rx avg B', width: 90 },
-            { field: 'rxmaxb', type: 'string', displayName: 'Rx max B', width: 90 }
-          ],
-          data: 'receiveLevel',
-          onRegisterApi: function (gridApi) {
-            $scope.recvGridApi = gridApi;
-            $scope.recvGridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-              $scope.paginationOptions.pageNumber = newPage;
-              $scope.paginationOptions.pageSize = pageSize;
-              getDataFromNEs($scope.networkElementIdA, $scope.selectedLtpIdA, $scope.networkElementIdB, $scope.selectedLtpIdB, "receiveLevel");
-            });
-          }
-        };
-
-        $scope.gridOptionsTransmissionLevel = {
-          paginationPageSizes: $scope.pageSizes(),
-          paginationPageSize: $scope.selectPageSize(),
-          useExternalPagination: true,
-          enablePaginationControls: false,
-          enableFiltering: false,
-          enableSorting: false,
-          enableGridMenu: true,
-          columnDefs: [
-            { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-            { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-            { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-            { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-            { field: 'timestamp', type: 'string', displayName: 'End time', width: 200 },
-            { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-            { field: 'txmina', type: 'string', displayName: 'Tx min A', width: 90 },
-            { field: 'txavga', type: 'string', displayName: 'Tx avg A', width: 90 },
-            { field: 'txmaxa', type: 'string', displayName: 'Tx max A', width: 90 },
-            { field: 'txminb', type: 'string', displayName: 'Tx min B', width: 90 },
-            { field: 'txavgb', type: 'string', displayName: 'Tx avg B', width: 90 },
-            { field: 'txmaxb', type: 'string', displayName: 'Tx max B', width: 90 }
-          ],
-          data: 'transmissionLevel',
-          onRegisterApi: function (gridApi) {
-            $scope.transmissionGridApi = gridApi;
-            $scope.transmissionGridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-              $scope.paginationOptions.pageNumber = newPage;
-              $scope.paginationOptions.pageSize = pageSize;
-              getDataFromNEs($scope.networkElementIdA, $scope.selectedLtpIdA, $scope.networkElementIdB, $scope.selectedLtpIdB, "transmissionLevel");
-            });
-          }
-        };
-
-        $scope.gridOptionsModulation = {
-          paginationPageSizes: $scope.pageSizes(),
-          paginationPageSize: $scope.selectPageSize(),
-          useExternalPagination: true,
-          enablePaginationControls: false,
-          enableFiltering: false,
-          enableSorting: false,
-          enableGridMenu: true,
-          columnDefs: [
-            { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-            { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-            { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-            { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-            { field: 'timestamp', type: 'string', displayName: 'End time', width: 200 },
-            { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-            { field: 'time2Sa', type: 'string', displayName: 'QAM2S A', width: 90 },
-            { field: 'time2a', type: 'string', displayName: 'QAM2 A', width: 90 },
-            { field: 'time2La', type: 'string', displayName: 'QAM2L A', width: 90 },
-            { field: 'time4Sa', type: 'string', displayName: 'QAM4S A', width: 90 },
-            { field: 'time4a', type: 'string', displayName: 'QAM4 A', width: 90 },
-            { field: 'time4La', type: 'string', displayName: 'QAM4L A', width: 90 },
-            { field: 'time16Sa', type: 'string', displayName: 'QAM16S A', width: 90 },
-            { field: 'time16a', type: 'string', displayName: 'QAM16 A', width: 90 },
-            { field: 'time16La', type: 'string', displayName: 'QAM16L A', width: 90 },
-            { field: 'time32Sa', type: 'string', displayName: 'QAM32S A', width: 90 },
-            { field: 'time32a', type: 'string', displayName: 'QAM32 A', width: 90 },
-            { field: 'time32La', type: 'string', displayName: 'QAM32L A', width: 90 },
-            { field: 'time64Sa', type: 'string', displayName: 'QAM64S A', width: 90 },
-            { field: 'time64a', type: 'string', displayName: 'QAM64 A', width: 90 },
-            { field: 'time64La', type: 'string', displayName: 'QAM64L A', width: 90 },
-            { field: 'time128Sa', type: 'string', displayName: 'QAM128S A', width: 90 },
-            { field: 'time128a', type: 'string', displayName: 'QAM128 A', width: 90 },
-            { field: 'time128La', type: 'string', displayName: 'QAM128L A', width: 90 },
-            { field: 'time256Sa', type: 'string', displayName: 'QAM256S A', width: 90 },
-            { field: 'time256a', type: 'string', displayName: 'QAM256 A', width: 90 },
-            { field: 'time256La', type: 'string', displayName: 'QAM256L A', width: 90 },
-            { field: 'time512Sa', type: 'string', displayName: 'QAM512S A', width: 90 },
-            { field: 'time512a', type: 'string', displayName: 'QAM512 A', width: 90 },
-            { field: 'time512La', type: 'string', displayName: 'QAM512L A', width: 90 },
-            { field: 'time1024Sa', type: 'string', displayName: 'QAM1024S A', width: 90 },
-            { field: 'time1024a', type: 'string', displayName: 'QAM1024 A', width: 90 },
-            { field: 'time1024La', type: 'string', displayName: 'QAM1024L A', width: 90 },
-            { field: 'time2048Sa', type: 'string', displayName: 'QAM2048S A', width: 90 },
-            { field: 'time2048a', type: 'string', displayName: 'QAM2048 A', width: 90 },
-            { field: 'time2048La', type: 'string', displayName: 'QAM2048L A', width: 90 },
-            { field: 'time4096Sa', type: 'string', displayName: 'QAM4096S A', width: 90 },
-            { field: 'time4096a', type: 'string', displayName: 'QAM4096 A', width: 90 },
-            { field: 'time4096La', type: 'string', displayName: 'QAM4096L A', width: 90 },
-            { field: 'time8192Sa', type: 'string', displayName: 'QAM8192S A', width: 90 },
-            { field: 'time8192a', type: 'string', displayName: 'QAM8192 A', width: 90 },
-            { field: 'time8192La', type: 'string', displayName: 'QAM8192L A', width: 90 },
-
-            { field: 'time2Sb', type: 'string', displayName: 'QAM2S B', width: 90 },
-            { field: 'time2b', type: 'string', displayName: 'QAM2 B', width: 90 },
-            { field: 'time2Lb', type: 'string', displayName: 'QAM2L B', width: 90 },
-            { field: 'time4Sb', type: 'string', displayName: 'QAM4S B', width: 90 },
-            { field: 'time4b', type: 'string', displayName: 'QAM4 B', width: 90 },
-            { field: 'time4Lb', type: 'string', displayName: 'QAM4L B', width: 90 },
-            { field: 'time16Sb', type: 'string', displayName: 'QAM16S B', width: 90 },
-            { field: 'time16b', type: 'string', displayName: 'QAM16 B', width: 90 },
-            { field: 'time16Lb', type: 'string', displayName: 'QAM16L B', width: 90 },
-            { field: 'time32Sb', type: 'string', displayName: 'QAM32S B', width: 90 },
-            { field: 'time32b', type: 'string', displayName: 'QAM32 B', width: 90 },
-            { field: 'time32Lb', type: 'string', displayName: 'QAM32L B', width: 90 },
-            { field: 'time64Sb', type: 'string', displayName: 'QAM64S B', width: 90 },
-            { field: 'time64b', type: 'string', displayName: 'QAM64 B', width: 90 },
-            { field: 'time64Lb', type: 'string', displayName: 'QAM64L B', width: 90 },
-            { field: 'time128Sb', type: 'string', displayName: 'QAM128S B', width: 90 },
-            { field: 'time128b', type: 'string', displayName: 'QAM128 B', width: 90 },
-            { field: 'time128Lb', type: 'string', displayName: 'QAM128L B', width: 90 },
-            { field: 'time256Sb', type: 'string', displayName: 'QAM256S B', width: 90 },
-            { field: 'time256b', type: 'string', displayName: 'QAM256 B', width: 90 },
-            { field: 'time256Lb', type: 'string', displayName: 'QAM256L B', width: 90 },
-            { field: 'time512Sb', type: 'string', displayName: 'QAM512S B', width: 90 },
-            { field: 'time512b', type: 'string', displayName: 'QAM512 B', width: 90 },
-            { field: 'time512Lb', type: 'string', displayName: 'QAM512L B', width: 90 },
-            { field: 'time1024Sb', type: 'string', displayName: 'QAM1024S B', width: 90 },
-            { field: 'time1024b', type: 'string', displayName: 'QAM1024 B', width: 90 },
-            { field: 'time1024Lb', type: 'string', displayName: 'QAM1024L B', width: 90 },
-            { field: 'time2048Sb', type: 'string', displayName: 'QAM2048S B', width: 90 },
-            { field: 'time2048b', type: 'string', displayName: 'QAM2048 B', width: 90 },
-            { field: 'time2048Lb', type: 'string', displayName: 'QAM2048L B', width: 90 },
-            { field: 'time4096Sb', type: 'string', displayName: 'QAM4096S B', width: 90 },
-            { field: 'time4096b', type: 'string', displayName: 'QAM4096 B', width: 90 },
-            { field: 'time4096Lb', type: 'string', displayName: 'QAM4096L B', width: 90 },
-            { field: 'time8192Sb', type: 'string', displayName: 'QAM8192S B', width: 90 },
-            { field: 'time8192b', type: 'string', displayName: 'QAM8192 B', width: 90 },
-            { field: 'time8192Lb', type: 'string', displayName: 'QAM8192L B', width: 90 }
-          ],
-          data: 'modulation',
-          onRegisterApi: function (gridApi) {
-            $scope.gridApi = gridApi;
-            $scope.gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-              $scope.paginationOptions.pageNumber = newPage;
-              $scope.paginationOptions.pageSize = pageSize;
-              getDataFromNEs($scope.networkElementIdA, $scope.selectedLtpIdA, $scope.networkElementIdB, $scope.selectedLtpIdB, "modulation");
-            });
-          }
-        };
-
-        $scope.gridOptionsTemperature = {
-          paginationPageSizes: $scope.pageSizes(),
-          paginationPageSize: $scope.selectPageSize(),
-          useExternalPagination: true,
-          enablePaginationControls: false,
-          enableFiltering: false,
-          enableSorting: false,
-          enableGridMenu: true,
-          columnDefs: [
-            { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-            { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-            { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-            { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-            { field: 'timestamp', type: 'string', displayName: 'End time', width: 200 },
-            { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-            { field: 'rfTempMina', type: 'string', displayName: 'Rf Temp Min A  [&deg;C]', width: 90 },
-            { field: 'rfTempAvga', type: 'string', displayName: 'Rf Temp Avg A[&deg;C]', width: 90 },
-            { field: 'rfTempMaxa', type: 'string', displayName: 'Rf Temp Max A  [&deg;C]', width: 90 },
-            { field: 'rfTempMinb', type: 'string', displayName: 'Rf Temp Min B [&deg;C]', width: 90 },
-            { field: 'rfTempAvgb', type: 'string', displayName: 'Rf Temp Avg B [&deg;C]', width: 90 },
-            { field: 'rfTempMaxb', type: 'string', displayName: 'Rf Temp Max B [&deg;C]', width: 90 }
-
-          ],
-          data: 'temperature',
-          onRegisterApi: function (gridApi) {
-            $scope.gridTemperatureApi = gridApi;
-            $scope.gridTemperatureApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-              $scope.paginationOptions.pageNumber = newPage;
-              $scope.paginationOptions.pageSize = pageSize;
-              getDataFromNEs($scope.networkElementIdA, $scope.selectedLtpIdA, $scope.networkElementIdB, $scope.selectedLtpIdB, "temperature");
-            });
-          }
-        };
-
-        $scope.gridOptionsSnir = {
-          paginationPageSizes: $scope.pageSizes(),
-          paginationPageSize: $scope.selectPageSize(),
-          useExternalPagination: true,
-          enablePaginationControls: false,
-          enableFiltering: false,
-          enableSorting: false,
-          enableGridMenu: true,
-          columnDefs: [
-            { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-            { field: 'id', type: 'string', displayName: 'Termination point', width: 200, visible: false },
-            { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-            { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-            { field: 'timestamp', type: 'string', displayName: 'End time', width: 200 },
-            { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-            { field: 'snirMin', type: 'string', displayName: [$translate.instant('MWTN_SNIR_MIN'), 'A', '[dB]'].join(' '), width: 90 },
-            { field: 'snirAvg', type: 'string', displayName: [$translate.instant('MWTN_SNIR_AVG'), 'A', '[dB]'].join(' '), width: 90 },
-            { field: 'snirMax', type: 'string', displayName: [$translate.instant('MWTN_SNIR_MAX'), 'A', '[dB]'].join(' '), width: 90 },
-            { field: 'snirMin', type: 'string', displayName: [$translate.instant('MWTN_SNIR_MIN'), 'B', '[dB]'].join(' '), width: 90 },
-            { field: 'snirAvg', type: 'string', displayName: [$translate.instant('MWTN_SNIR_AVG'), 'B', '[dB]'].join(' '), width: 90 },
-            { field: 'snirMax', type: 'string', displayName: [$translate.instant('MWTN_SNIR_MAX'), 'B', '[dB]'].join(' '), width: 90 }
-          ],
-          data: 'snir',
-          onRegisterApi: function (gridApi) {
-            $scope.gridSNIRApi = gridApi;
-            $scope.gridSNIRApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-              $scope.paginationOptions.pageNumber = newPage;
-              $scope.paginationOptions.pageSize = pageSize;
-              getDataFromNEs($scope.networkElementIdA, $scope.selectedLtpIdA, $scope.networkElementIdB, $scope.selectedLtpIdB, "snir");
-            });
-          }
-        };
-
-
-        $scope.gridOptionsCrossPolarDiscrimination = {
-          paginationPageSizes: $scope.pageSizes(),
-          paginationPageSize: $scope.selectPageSize(),
-          useExternalPagination: true,
-          enablePaginationControls: false,
-          enableFiltering: false,
-          enableSorting: false,
-          enableGridMenu: true,
-          columnDefs: [
-            { field: 'layerProtocol', type: 'string', displayName: 'Layer Protocol Name', width: 90, visible: false },
-            { field: 'id', type: 'string', displayName: $translate.instant('MWTN_LTP'), width: 200, visible: false },
-            { field: 'radiosignal', type: 'string', displayName: 'Radio Signal Id', width: 90 },
-            { field: 'scannerId', type: 'string', displayName: 'Scanner Id', width: 90 },
-            { field: 'timestamp', type: 'string', displayName: 'End time', width: 200 },
-            { field: 'suspectInterval', type: 'string', displayName: 'Suspect Interval Flag', width: 100 },
-            { field: 'xpdMina', type: 'string', displayName: 'CPD min A [dB]', width: 90 },
-            { field: 'xpdAvga', type: 'string', displayName: 'CPD avg A [dB]', width: 90 },
-            { field: 'xpdMaxa', type: 'string', displayName: 'CPD max A [dB]', width: 90 },
-            { field: 'xpdMinb', type: 'string', displayName: 'CPD min B [dB]', width: 90 },
-            { field: 'xpdAvgb', type: 'string', displayName: 'CPD avg B [dB]', width: 90 },
-            { field: 'xpdMaxb', type: 'string', displayName: 'CPD max B [dB]', width: 90 }
-          ],
-          data: 'crossPolarDiscrimination',
-          onRegisterApi: function (gridApi) {
-            $scope.gridXpdApi = gridApi;
-            $scope.gridXpdApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) {
-              $scope.paginationOptions.pageNumber = newPage;
-              $scope.paginationOptions.pageSize = pageSize;
-              getDataFromNEs($scope.networkElementIdA, $scope.selectedLtpIdA, $scope.networkElementIdB, $scope.selectedLtpIdB, "crossPolarDiscrimination");
-            });
-          }
-        };
-        
-        //sanitize -1 to no value
-        var checkData = function (value) {
-          if (value === -1 || value === undefined) return undefined;
-          else return value;
-        };
-
-        var calculateMissingTimestamp = function (lastTimestamp, missingNr) {
-          var dateInMS = Date.parse(lastTimestamp);
-          return new Date(dateInMS + ((missingNr * 15) * 60000))
-                      .toISOString()
-                      .toHumanReadableTimeFormat()
-                      .replace('.000', '.0');
-        };
-
-        var processResponseForGrid = function (dataA, dataB, grid) {
-          // console.log(grid);
-          switch (grid) {
-            case "transmissionLevel":
-              var list = [];
-              var lookupMap = new Map(); //add data based on timestamp
-
-              dataA.data.hits.hits.map(function (entry, index) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                lookupMap.set(timeStamp, index); //add timestamp and index to map
-                var item = {
-                  timestamp: timeStamp,
-                  id: entry._source['uuid-interface'],
-                  layerProtocol: entry._source['layer-protocol-name'],
-                  suspectInterval: entry._source['suspect-interval-flag'],
-                  scannerId: entry._source['scanner-id'],
-                  txmina: checkData(entry._source['performance-data']['tx-level-min']),
-                  txavga: checkData(entry._source['performance-data']['tx-level-avg']),
-                  txmaxa: checkData(entry._source['performance-data']['tx-level-max']),
-                  'radiosignal': entry._source['radio-signal-id']
-                };
-                list.push(item);
-              });
-
-              dataB.data.hits.hits.map(function (entry) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                var index = lookupMap.get(timeStamp); //look for timestamp in map
-                if (index !== undefined) { //if a timestamp was found
-                  list[index].txminb = checkData(entry._source['performance-data']['tx-level-min']); //add data to b side of element
-                  list[index].txavgb = checkData(entry._source['performance-data']['tx-level-avg']);
-                  list[index].txmaxb = checkData(entry._source['performance-data']['tx-level-max']);
-                } else {
-                  if (list[0].timestamp === $mwtnPerformanceLink.formatTimeStamp(timeStamp)) { //look, if first element in list is same (first element in map is never found against an equals)
-                    list[0].txminb = checkData(entry._source['performance-data']['tx-level-min']); //add data to b side of element
-                    list[0].txavgb = checkData(entry._source['performance-data']['tx-level-avg']);
-                    list[0].txmaxb = checkData(entry._source['performance-data']['tx-level-max']);
-                  }
-                  else { //add new element for b side to list
-                    list.push({
-                      timestamp: timeStamp,
-                      id: entry._source['uuid-interface'],
-                      layerProtocol: entry._source['layer-protocol-name'],
-                      suspectInterval: entry._source['suspect-interval-flag'],
-                      scannerId: entry._source['scanner-id'],
-                      txminb: checkData(entry._source['performance-data']['tx-level-min']),
-                      txavgb: checkData(entry._source['performance-data']['tx-level-avg']),
-                      txmaxb: checkData(entry._source['performance-data']['tx-level-max']),
-                      'radiosignal': entry._source['radio-signal-id']
-                    });
-                  }
-                }
-              });
-
-              $scope.transmissionLevel = list; //add list to databound table list
-              $scope.gridOptionsTransmissionLevel.totalItems = getMaxItems(dataA.data.hits.total, dataB.data.hits.total);
-              break;
-
-            case "receiveLevel":
-
-              var list = [];
-              var lookupMap = new Map();
-
-              dataA.data.hits.hits.map(function (entry, index) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                lookupMap.set(timeStamp, index);
-                var item = {
-                  timestamp: timeStamp,
-                  id: entry._source['uuid-interface'],
-                  layerProtocol: entry._source['layer-protocol-name'],
-                  suspectInterval: entry._source['suspect-interval-flag'],
-                  scannerId: entry._source['scanner-id'],
-                  rxmina: checkData(entry._source['performance-data']['rx-level-min']),
-                  rxavga: checkData(entry._source['performance-data']['rx-level-avg']),
-                  rxmaxa: checkData(entry._source['performance-data']['rx-level-max']),
-                  'radiosignal': entry._source['radio-signal-id']
-                };
-
-                list.push(item);
-              });
-
-              dataB.data.hits.hits.map(function (entry) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                var index = lookupMap.get(timeStamp);
-                if (index !== undefined) {
-                  list[index].rxminb = checkData(entry._source['performance-data']['rx-level-min']);
-                  list[index].rxavgb = checkData(entry._source['performance-data']['rx-level-avg']);
-                  list[index].rxmaxb = checkData(entry._source['performance-data']['rx-level-max']);
-                } else {
-                  if (list[0].timestamp === $mwtnPerformanceLink.formatTimeStamp(timeStamp)) {
-                    list[0].rxminb = checkData(entry._source['performance-data']['rx-level-min']);
-                    list[0].rxavgb = checkData(entry._source['performance-data']['rx-level-avg']);
-                    list[0].rxmaxb = checkData(entry._source['performance-data']['rx-level-max']);
-                  } else {
-                    list.push({
-                      timestamp: timeStamp,
-                      id: entry._source['uuid-interface'],
-                      layerProtocol: entry._source['layer-protocol-name'],
-                      suspectInterval: entry._source['suspect-interval-flag'],
-                      scannerId: entry._source['scanner-id'],
-                      rxminb: checkData(entry._source['performance-data']['rx-level-min']),
-                      rxavgb: checkData(entry._source['performance-data']['rx-level-avg']),
-                      rxmaxb: checkData(entry._source['performance-data']['rx-level-max']),
-                      'radiosignal': entry._source['radio-signal-id']
-                    });
-                  }
-                }
-
-              });
-
-
-              $scope.receiveLevel = list;
-              $scope.gridOptionsReceiveLevel.totalItems = getMaxItems(dataA.data.hits.total, dataB.data.hits.total);
-
-              break;
-
-            case "modulation":
-
-              var list = [];
-
-              var lookupMap = new Map();
-
-              dataA.data.hits.hits.map(function (entry, index) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                lookupMap.set(timeStamp, index);
-                var item = {
-                  timestamp: timeStamp,
-                  id: entry._source['uuid-interface'],
-                  layerProtocol: entry._source['layer-protocol-name'],
-                  suspectInterval: entry._source['suspect-interval-flag'],
-                  scannerId: entry._source['scanner-id'],
-                  'time2Sa': checkData(entry._source['performance-data']['time2-states-s']),
-                  'time2a': checkData(entry._source['performance-data']['time2-states']),
-                  'time2La': checkData(entry._source['performance-data']['time2-states-l']),
-                  'time4Sa': checkData(entry._source['performance-data']['time4-states-s']),
-                  'time4a': checkData(entry._source['performance-data']['time4-states']),
-                  'time4La': checkData(entry._source['performance-data']['time4-states-l']),
-                  'time16Sa': checkData(entry._source['performance-data']['time16-states-s']),
-                  'time16a': checkData(entry._source['performance-data']['time16-states']),
-                  'time16La': checkData(entry._source['performance-data']['time16-states-l']),
-                  'time32Sa': checkData(entry._source['performance-data']['time32-states-s']),
-                  'time32a': checkData(entry._source['performance-data']['time32-states']),
-                  'time32La': checkData(entry._source['performance-data']['time32-states-l']),
-                  'time64Sa': checkData(entry._source['performance-data']['time64-states-s']),
-                  'time64a': checkData(entry._source['performance-data']['time64-states']),
-                  'time64La': checkData(entry._source['performance-data']['time64-states-l']),
-                  'time128Sa': checkData(entry._source['performance-data']['time128-states-s']),
-                  'time128a': checkData(entry._source['performance-data']['time128-states']),
-                  'time128La': checkData(entry._source['performance-data']['time128-states-l']),
-                  'time256Sa': checkData(entry._source['performance-data']['time256-states-s']),
-                  'time256a': checkData(entry._source['performance-data']['time256-states']),
-                  'time256La': checkData(entry._source['performance-data']['time256-states-l']),
-                  'time512Sa': checkData(entry._source['performance-data']['time512-states-s']),
-                  'time512a': checkData(entry._source['performance-data']['time512-states']),
-                  'time512La': checkData(entry._source['performance-data']['time512-states-l']),
-                  'time1024Sa': checkData(entry._source['performance-data']['time1024-states-s']),
-                  'time1024a': checkData(entry._source['performance-data']['time1024-states']),
-                  'time1024La': checkData(entry._source['performance-data']['time1024-states-l']),
-                  'time2048Sa': checkData(entry._source['performance-data']['time2048-states-s']),
-                  'time2048a': checkData(entry._source['performance-data']['time2048-states']),
-                  'time2048La': checkData(entry._source['performance-data']['time2048-states-l']),
-                  'time4096Sa': checkData(entry._source['performance-data']['time4096-states-s']),
-                  'time4096a': checkData(entry._source['performance-data']['time4096-states']),
-                  'time4096La': checkData(entry._source['performance-data']['time4096-states-l']),
-                  'time8192Sa': checkData(entry._source['performance-data']['time8192-states-s']),
-                  'time8192a': checkData(entry._source['performance-data']['time8192-states']),
-                  'time8192La': checkData(entry._source['performance-data']['time8192-states-l']),
-                  'radiosignal': entry._source['radio-signal-id']
-                };
-
-                list.push(item);
-
-              });
-
-              dataB.data.hits.hits.map(function (entry) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                var index = lookupMap.get(timeStamp);
-                if (index !== undefined) {
-
-                  list[index].time2Sb = checkData(entry._source['performance-data']['time2-states-s']);
-                  list[index].time2b = checkData(entry._source['performance-data']['time2-states']);
-                  list[index].time2Lb = checkData(entry._source['performance-data']['time2-states-l']);
-                  list[index].time4Sb = checkData(entry._source['performance-data']['time4-states-s']);
-                  list[index].time4b = checkData(entry._source['performance-data']['time4-states']);
-                  list[index].time4Lb = checkData(entry._source['performance-data']['time4-states-l']);
-                  list[index].time16Sb = checkData(entry._source['performance-data']['time16-states-s']);
-                  list[index].time16b = checkData(entry._source['performance-data']['time16-states']);
-                  list[index].time16Lb = checkData(entry._source['performance-data']['time16-states-l']);
-                  list[index].time32Sb = checkData(entry._source['performance-data']['time32-states-s']);
-                  list[index].time32b = checkData(entry._source['performance-data']['time32-states']);
-                  list[index].time32Lb = checkData(entry._source['performance-data']['time32-states-l']);
-                  list[index].time64Sb = checkData(entry._source['performance-data']['time64-states-s']);
-                  list[index].time64b = checkData(entry._source['performance-data']['time64-states']);
-                  list[index].time64Lb = checkData(entry._source['performance-data']['time64-states-l']);
-                  list[index].time128Sb = checkData(entry._source['performance-data']['time128-states-s']);
-                  list[index].time128b = checkData(entry._source['performance-data']['time128-states']);
-                  list[index].time128Lb = checkData(entry._source['performance-data']['time128-states-l']);
-                  list[index].time256Sb = checkData(entry._source['performance-data']['time256-states-s']);
-                  list[index].time256b = checkData(entry._source['performance-data']['time256-states']);
-                  list[index].time256Lb = checkData(entry._source['performance-data']['time256-states-l']);
-                  list[index].time512Sb = checkData(entry._source['performance-data']['time512-states-s']);
-                  list[index].time512b = checkData(entry._source['performance-data']['time512-states']);
-                  list[index].time512Lb = checkData(entry._source['performance-data']['time512-states-l']);
-                  list[index].time1024Sb = checkData(entry._source['performance-data']['time1024-states-s']);
-                  list[index].time1024b = checkData(entry._source['performance-data']['time1024-states']);
-                  list[index].time1024Lb = checkData(entry._source['performance-data']['time1024-states-l']);
-                  list[index].time2048Sb = checkData(entry._source['performance-data']['time2048-states-s']);
-                  list[index].time2048b = checkData(entry._source['performance-data']['time2048-states']);
-                  list[index].time2048Lb = checkData(entry._source['performance-data']['time2048-states-l']);
-                  list[index].time4096Sb = checkData(entry._source['performance-data']['time4096-states-s']);
-                  list[index].time4096b = checkData(entry._source['performance-data']['time4096-states']);
-                  list[index].time4096Lb = checkData(entry._source['performance-data']['time4096-states-l']);
-                  list[index].time8192Sb = checkData(entry._source['performance-data']['time8192-states-s']);
-                  list[index].time8192b = checkData(entry._source['performance-data']['time8192-states']);
-                  list[index].time8192Lb = checkData(entry._source['performance-data']['time8192-states-l']);
-                } else {
-                  if (list[0].timestamp === $mwtnPerformanceLink.formatTimeStamp(timeStamp)) {
-                    list[index].time2Sb = checkData(entry._source['performance-data']['time2-states-s']);
-                    list[0].time2b = checkData(entry._source['performance-data']['time2-states']);
-                    list[0].time2Lb = checkData(entry._source['performance-data']['time2-states-l']);
-                    list[0].time4Sb = checkData(entry._source['performance-data']['time4-states-s']);
-                    list[0].time4b = checkData(entry._source['performance-data']['time4-states']);
-                    list[0].time4Lb = checkData(entry._source['performance-data']['time4-states-l']);
-                    list[0].time16Sb = checkData(entry._source['performance-data']['time16-states-s']);
-                    list[0].time16b = checkData(entry._source['performance-data']['time16-states']);
-                    list[0].time16Lb = checkData(entry._source['performance-data']['time16-states-l']);
-                    list[0].time32Sb = checkData(entry._source['performance-data']['time32-states-s']);
-                    list[0].time32b = checkData(entry._source['performance-data']['time32-states']);
-                    list[0].time32Lb = checkData(entry._source['performance-data']['time32-states-l']);
-                    list[0].time64Sb = checkData(entry._source['performance-data']['time64-states-s']);
-                    list[0].time64b = checkData(entry._source['performance-data']['time64-states']);
-                    list[0].time64Lb = checkData(entry._source['performance-data']['time64-states-l']);
-                    list[0].time128Sb = checkData(entry._source['performance-data']['time128-states-s']);
-                    list[0].time128b = checkData(entry._source['performance-data']['time128-states']);
-                    list[0].time128Lb = checkData(entry._source['performance-data']['time128-states-l']);
-                    list[0].time256Sb = checkData(entry._source['performance-data']['time256-states-s']);
-                    list[0].time256b = checkData(entry._source['performance-data']['time256-states']);
-                    list[0].time256Lb = checkData(entry._source['performance-data']['time256-states-l']);
-                    list[0].time512Sb = checkData(entry._source['performance-data']['time512-states-s']);
-                    list[0].time512b = checkData(entry._source['performance-data']['time512-states']);
-                    list[0].time512Lb = checkData(entry._source['performance-data']['time512-states-l']);
-                    list[0].time1024Sb = checkData(entry._source['performance-data']['time1024-states-s']);
-                    list[0].time1024b = checkData(entry._source['performance-data']['time1024-states']);
-                    list[0].time1024Lb = checkData(entry._source['performance-data']['time1024-states-l']);
-                    list[0].time2048Sb = checkData(entry._source['performance-data']['time2048-states-s']);
-                    list[0].time2048b = checkData(entry._source['performance-data']['time2048-states']);
-                    list[0].time2048Lb = checkData(entry._source['performance-data']['time2048-states-l']);
-                    list[0].time4096Sb = checkData(entry._source['performance-data']['time4096-states-s']);
-                    list[0].time4096b = checkData(entry._source['performance-data']['time4096-states']);
-                    list[0].time4096Lb = checkData(entry._source['performance-data']['time4096-states-l']);
-                    list[0].time8192Sb = checkData(entry._source['performance-data']['time8192-states-s']);
-                    list[0].time8192b = checkData(entry._source['performance-data']['time8192-states']);
-                    list[0].time8192Lb = checkData(entry._source['performance-data']['time8192-states-l']);
-                  }
-                  else {
-                    var item = {
-                      timestamp: timeStamp,
-                      id: entry._source['uuid-interface'],
-                      layerProtocol: entry._source['layer-protocol-name'],
-                      suspectInterval: entry._source['suspect-interval-flag'],
-                      scannerId: entry._source['scanner-id'],
-                      'time2Sb': checkData(entry._source['performance-data']['time2-states-s']),
-                      'time2b': checkData(entry._source['performance-data']['time2-states']),
-                      'time2Lb': checkData(entry._source['performance-data']['time2-states-l']),
-                      'time4Sb': checkData(entry._source['performance-data']['time4-states-s']),
-                      'time4b': checkData(entry._source['performance-data']['time4-states']),
-                      'time4Lb': checkData(entry._source['performance-data']['time4-states-l']),
-                      'time16Sb': checkData(entry._source['performance-data']['time16-states-s']),
-                      'time16b': checkData(entry._source['performance-data']['time16-states']),
-                      'time16Lb': checkData(entry._source['performance-data']['time16-states-l']),
-                      'time32Sb': checkData(entry._source['performance-data']['time32-states-s']),
-                      'time32b': checkData(entry._source['performance-data']['time32-states']),
-                      'time32Lb': checkData(entry._source['performance-data']['time32-states-l']),
-                      'time64Sb': checkData(entry._source['performance-data']['time64-states-s']),
-                      'time64b': checkData(entry._source['performance-data']['time64-states']),
-                      'time64Lb': checkData(entry._source['performance-data']['time64-states-l']),
-                      'time128Sb': checkData(entry._source['performance-data']['time128-states-s']),
-                      'time128b': checkData(entry._source['performance-data']['time128-states']),
-                      'time128Lb': checkData(entry._source['performance-data']['time128-states-l']),
-                      'time256Sb': checkData(entry._source['performance-data']['time256-states-s']),
-                      'time256b': checkData(entry._source['performance-data']['time256-states']),
-                      'time256Lb': checkData(entry._source['performance-data']['time256-states-l']),
-                      'time512Sb': checkData(entry._source['performance-data']['time512-states-s']),
-                      'time512b': checkData(entry._source['performance-data']['time512-states']),
-                      'time512Lb': checkData(entry._source['performance-data']['time512-states-l']),
-                      'time1024Sb': checkData(entry._source['performance-data']['time1024-states-s']),
-                      'time1024b': checkData(entry._source['performance-data']['time1024-states']),
-                      'time1024Lb': checkData(entry._source['performance-data']['time1024-states-l']),
-                      'time2048Sb': checkData(entry._source['performance-data']['time2048-states-s']),
-                      'time2048b': checkData(entry._source['performance-data']['time2048-states']),
-                      'time2048Lb': checkData(entry._source['performance-data']['time2048-states-l']),
-                      'time4096Sb': checkData(entry._source['performance-data']['time4096-states-s']),
-                      'time4096b': checkData(entry._source['performance-data']['time4096-states']),
-                      'time4096Lb': checkData(entry._source['performance-data']['time4096-states-l']),
-                      'time8192Sb': checkData(entry._source['performance-data']['time8192-states-s']),
-                      'time8192b': checkData(entry._source['performance-data']['time8192-states']),
-                      'time8192Lb': checkData(entry._source['performance-data']['time8192-states-l']),
-                      'radiosignal': entry._source['radio-signal-id']
-                    };
-
-                    list.push(item);
-                  }
-                }
-              });
-              $scope.modulation = list;
-              $scope.gridOptionsModulation.totalItems = getMaxItems(dataA.data.hits.total, dataB.data.hits.total);
-
-              break;
-
-            case "temperature":
-
-              var list = [];
-              var lookupMap = new Map();
-
-              dataA.data.hits.hits.map(function (entry, index) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                lookupMap.set(timeStamp, index);
-                var item = {
-                  'timestamp': $mwtnPerformanceLink.formatTimeStamp(timeStamp),
-                  id: entry._source['uuid-interface'],
-                  layerProtocol: entry._source['layer-protocol-name'],
-                  suspectInterval: entry._source['suspect-interval-flag'],
-                  scannerId: entry._source['scanner-id'],
-                  rfTempMina: entry._source['performance-data']['rf-temp-min'],
-                  rfTempAvga: entry._source['performance-data']['rf-temp-avg'],
-                  rfTempMaxa: entry._source['performance-data']['rf-temp-max'],
-                  'radiosignal': entry._source['radio-signal-id']
-                };
-
-                list.push(item);
-              });
-
-              dataB.data.hits.hits.map(function (entry) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                var index = lookupMap.get(timeStamp);
-                if (index !== undefined) {
-                  list[index].rfTempMinb = entry._source['performance-data']['rf-temp-min'];
-                  list[index].rfTempMaxb = entry._source['performance-data']['rf-temp-max'];
-                  list[index].rfTempAvgb = entry._source['performance-data']['rf-temp-avg'];
-                } else {
-                  if (list[0].timestamp === $mwtnPerformanceLink.formatTimeStamp(timeStamp)) {
-                    list[0].rfTempMinb = entry._source['performance-data']['rf-temp-min'];
-                    list[0].rfTempMaxb = entry._source['performance-data']['rf-temp-max'];
-                    list[0].rfTempAvgb = entry._source['performance-data']['rf-temp-avg'];
-                  } else {
-                    list.push({
-                      'timestamp': $mwtnPerformanceLink.formatTimeStamp(timeStamp),
-                      id: entry._source['uuid-interface'],
-                      layerProtocol: entry._source['layer-protocol-name'],
-                      suspectInterval: entry._source['suspect-interval-flag'],
-                      scannerId: entry._source['scanner-id'],
-                      rfTempMinb: entry._source['performance-data']['rf-temp-min'],
-                      rfTempAvgb: entry._source['performance-data']['rf-temp-avg'],
-                      rfTempMaxb: entry._source['performance-data']['rf-temp-max'],
-                      'radiosignal': entry._source['radio-signal-id']
-                    });
-                  }
-                }
-              });
-
-              $scope.temperature = list;
-              $scope.gridOptionsTemperature.totalItems = getMaxItems(dataA.data.hits.total, dataB.data.hits.total);
-
-              break;
-
-            case "snir":
-
-              var list = [];
-              var lookupMap = new Map();
-
-              dataA.data.hits.hits.map(function (entry, index) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                lookupMap.set(timeStamp, index);
-                var item = {
-                  'timestamp': $mwtnPerformanceLink.formatTimeStamp(timeStamp),
-                  id: entry._source['uuid-interface'],
-                  layerProtocol: entry._source['layer-protocol-name'],
-                  suspectInterval: entry._source['suspect-interval-flag'],
-                  scannerId: entry._source['scanner-id'],
-                  snirMina: entry._source['performance-data']['snir-min'],
-                  snirAvga: entry._source['performance-data']['snir-avg'],
-                  snirMaxa: entry._source['performance-data']['snir-max'],
-                  'radiosignal': entry._source['radio-signal-id']
-                };
-
-                list.push(item);
-              });
-
-              dataB.data.hits.hits.map(function (entry) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);  
-                var index = lookupMap.get(timeStamp);
-                if (index !== undefined) {
-                  list[index].snirMinb = entry._source['performance-data']['snir-min'];
-                  list[index].snirMaxb = entry._source['performance-data']['snir-max'];
-                  list[index].snirAvgb = entry._source['performance-data']['snir-max'];
-                }
-                else {
-                  if (list[0].timestamp === $mwtnPerformanceLink.formatTimeStamp(timeStamp)) {
-                    list[0].snirMinb = entry._source['performance-data']['snir-min'];
-                    list[0].snirMaxb = entry._source['performance-data']['snir-max'];
-                    list[0].snirAvgb = entry._source['performance-data']['snir-max'];
-                  } else {
-                    list.push({
-                      'timestamp': $mwtnPerformanceLink.formatTimeStamp(timeStamp),
-                      id: entry._source['uuid-interface'],
-                      layerProtocol: entry._source['layer-protocol-name'],
-                      suspectInterval: entry._source['suspect-interval-flag'],
-                      scannerId: entry._source['scanner-id'],
-                      snirMinb: entry._source['performance-data']['snir-min'],
-                      snirAvgb: entry._source['performance-data']['snir-avg'],
-                      snirMaxb: entry._source['performance-data']['snir-max'],
-                      'radiosignal': entry._source['radio-signal-id']
-                    });
-                  }
-                }
-              });
-              $scope.snir = list;
-              $scope.gridOptionsSnir.totalItems = getMaxItems(dataA.data.hits.total, dataB.data.hits.total);
-
-              break;
-
-            case "crossPolarDiscrimination":
-              var list = [];
-
-              var lookupMap = new Map();
-
-              dataA.data.hits.hits.map(function (entry, index) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                lookupMap.set(timeStamp, index);
-                var item = {
-                  'timestamp': $mwtnPerformanceLink.formatTimeStamp(timeStamp),
-                  id: entry._source['uuid-interface'],
-                  layerProtocol: entry._source['layer-protocol-name'],
-                  suspectInterval: entry._source['suspect-interval-flag'],
-                  scannerId: entry._source['scanner-id'],
-                  xpdMina: entry._source['performance-data']['xpd-min'],
-                  xpdAvga: entry._source['performance-data']['xpd-avg'],
-                  xpdMaxa: entry._source['performance-data']['xpd-max'],
-                  'radiosignal': entry._source['radio-signal-id']
-
-                };
-
-                list.push(item);
-
-              });
-
-              dataB.data.hits.hits.map(function (entry) {
-                var timeStamp = formatTimeStamp(entry._source['time-stamp']);
-                var index = lookupMap.get(timeStamp);
-                if (index !== undefined) {
-                  list[index].xpdMinb = entry._source['performance-data']['xpd-min'];
-                  list[index].xpdMaxb = entry._source['performance-data']['xpd-max'];
-                  list[index].xpdAvgb = entry._source['performance-data']['xpd-avg'];
-                }
-                else {
-                  if (list[0].timestamp === $mwtnPerformanceLink.formatTimeStamp(timeStamp)) {
-
-                    list[0].xpdMinb = entry._source['performance-data']['xpd-min'];
-                    list[0].xpdMaxb = entry._source['performance-data']['xpd-max'];
-                    list[0].xpdAvgb = entry._source['performance-data']['xpd-avg'];
-
-                  } else {
-                    list.push({
-                      'timestamp': $mwtnPerformanceLink.formatTimeStamp(timeStamp),
-                      id: entry._source['uuid-interface'],
-                      layerProtocol: entry._source['layer-protocol-name'],
-                      suspectInterval: entry._source['suspect-interval-flag'],
-                      scannerId: entry._source['scanner-id'],
-                      xpdMinb: entry._source['performance-data']['xpd-min'],
-                      xpdAvgb: entry._source['performance-data']['xpd-avg'],
-                      xpdMaxb: entry._source['performance-data']['xpd-max'],
-                      'radiosignal': entry._source['radio-signal-id']
-
-                    });
-                  }
-
-                }
-              });
-
-              $scope.crossPolarDiscrimination = list;
-              $scope.gridOptionsCrossPolarDiscrimination.totalItems = getMaxItems(dataA.data.hits.total, dataB.data.hits.total);
-
-              break;
-          }
-        };
-
-
-        var getMaxItems = function (a, b) {
-          if ($scope.networkElementA === $scope.networkElementB && $scope.selectedLtpIdA === $scope.selectedLtpIdB) {
-            //assume same network element and intefaces selected, return only 1 length
-            return a;
-          } else {
-            return a + b;
-          }
-        }
-
-        //get data for pm link interafces / ne's from db
-        var getDataFromNEs = function (networkElementA, selectedLtpIdA, networkElementB, selectedLtpIdB, grid) {
-          var pagesize;
-          var pagenr;
-
-          switch (grid) { //get pagesize / nr according to current grid (else everything gets messy => wana get next page in grid a, get next page for grid b too)
-            case 'receiveLevel':
-              pagesize = $scope.gridOptionsReceiveLevel.paginationPageSize;
-              pagenr = $scope.gridOptionsReceiveLevel.paginationCurrentPage;
-              break;
-
-            case 'transmissionLevel':
-              pagesize = $scope.gridOptionsTransmissionLevel.paginationPageSize;
-              pagenr = $scope.gridOptionsTransmissionLevel.paginationCurrentPage;
-              break;
-
-            case 'modulation':
-              pagesize = $scope.gridOptionsModulation.paginationPageSize;
-              pagenr = $scope.gridOptionsModulation.paginationCurrentPage;
-              break;
-
-            case 'temperature':
-              pagesize = $scope.gridOptionsTemperature.paginationPageSize;
-              pagenr = $scope.gridOptionsTemperature.paginationCurrentPage;
-              break;
-
-            case 'snir':
-              pagesize = $scope.gridOptionsSnir.paginationPageSize;
-              pagenr = $scope.gridOptionsSnir.paginationCurrentPage;
-              break;
-
-            case 'crossPolarDiscrimination':
-              pagesize = $scope.gridOptionsCrossPolarDiscrimination.paginationPageSize;
-              pagenr = $scope.gridOptionsCrossPolarDiscrimination.paginationCurrentPage;
-
-              break;
-          }
-
-          var dataA;
-          var dataB;
-          getData((pagenr - 1) * pagesize, pagesize, networkElementA, selectedLtpIdA).then(function (response) {
-            dataA = response;
-            getData((pagenr - 1) * pagesize, pagesize, networkElementB, selectedLtpIdB).then(function (response) {
-              dataB = response;
-              drawLineChart(dataA, dataB, grid);
-              processResponseForGrid(dataA, dataB, grid);
-            });
-          });
-        };
-
-        //override points on graphs
-        var overridePoints = function (series, overrideArray) {
-
-
-          let patternArray = ['rect', 'triangle', 'point', 'rectRot'];
-          let patternCounter = 0;
-
-
-          for (let i = 0; i < series.length; i++) {
-
-            overrideArray[i].pointStyle = patternArray[patternCounter];
-            patternCounter++;
-
-            if (patternCounter === 4) patternCounter = 0;
-            overrideArray[i].pointRadius = 10;
-          }
-
-        };
-
-        var drawLineChart = function (dataA, dataB, grid) {
-
-          //create a sorted lookup array
-
-          var tempSet = new Set(); //remove duplicate timestamps
-
-          dataA.data.hits.hits.map(function (item) {
-            tempSet.add($mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']));
-          });
-
-          dataB.data.hits.hits.map(function (item) {
-            tempSet.add($mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']));
-          });
-
-          // console.log(tempSet);
-          var tempArr = Array.from(tempSet); //create an array from unique timestamps
-
-          tempArr.sort(function (a, b) { //sort it
-            if (a > b) { return 1; }
-            else if (a < b) { return -1; }
-            else {
-              return 0;
-            }
-          });
-
-          //process data according to grid
-          switch (grid) {
-            case 'receiveLevel': {
-
-              //chart specific data
-              $scope.receiveData = [];
-              $scope.receiveSeries = [];
-              $scope.receiveLabels = [];
-              $scope.receiveDatasetOverride = [];
-
-              $scope.receiveOptions = {
-                scales: {
-                  xAxes: [{
-                    type: 'linear',
-                    position: 'bottom',
-                    afterTickToLabelConversion: function (data) { //adds our custom timestamp labels
-
-                      var xLabels = data.ticks;
-                      xLabels.forEach(function (labels, i) {
-                        var timestamp = $scope.toolTipMap.get(parseInt(labels));
-                        if (parseInt(labels) == labels)
-                          xLabels[i] = timestamp;
-                        else
-                          xLabels[i] = '';
-                      });
-
-                      //calculate last timestamp if label is missing
-                      if (xLabels[xLabels.length - 1] === undefined) {
-                        var timestamp = $scope.toolTipMap.get($scope.toolTipMap.size - 1);
-                        let stopper = true;
-                        let counter = 0;
-                        let labelLength = xLabels.length - 1;
-                        while (stopper) {
-                          if (labelLength % 10 == 0) {
-                            stopper = false;
-                          } else {
-                            labelLength++;
-                            counter++;
-                          }
-                        }
-
-                        xLabels[xLabels.length - 1] = calculateMissingTimestamp(timestamp, counter);
-                      }
-
-
-
-                    }
-                  }],
-                  yAxes: [
-                    {
-                      id: 'y-axis-1',
-                      type: 'linear',
-                      display: true,
-                      position: 'left'
-                    }
-                  ]
-                },
-                tooltips: {
-                  enabled: true,
-                  mode: 'point',
-                  callbacks: {
-                    title: function (tooltipItem, data) { //picks right tool tip
-                      var vaue = $scope.toolTipMap.get(tooltipItem[0].xLabel); //changes int label to timestamp
-                      return vaue;
-                    }
-                  }
-                },
-                legend: {
-                  display: true,
-                  position: "bottom"
-                }
-              };
-
-              $scope.testMap = new Map();
-              $scope.toolTipMap = new Map();
-
-              tempArr.map(function (item, index) {
-                $scope.testMap.set(item, index);
-                $scope.toolTipMap.set(index, item);
-              });
-
-              //process a side
-
-              var maxListA = [];
-              var minListA = [];
-              var avgListA = [];
-
-              //add data to array
-              dataA.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-
-                var test = $scope.testMap.get(timestamp);
-                if (test) {
-                  maxListA.push({ x: test, y: item._source['performance-data']['rx-level-max'] });
-                  minListA.push({ x: test, y: item._source['performance-data']['rx-level-min'] });
-                  avgListA.push({ x: test, y: item._source['performance-data']['rx-level-avg'] });
-                } else {
-                  maxListA.push({ x: 0, y: item._source['performance-data']['rx-level-max'] }); //for some odd reason first is not found, although available within map
-                  minListA.push({ x: 0, y: item._source['performance-data']['rx-level-min'] });
-                  avgListA.push({ x: 0, y: item._source['performance-data']['rx-level-avg'] });
-                }
-              });
-
-              //add series names and data
-              $scope.receiveSeries.push('Rx max A', 'Rx min A', 'Rx avg A');
-
-
-              $scope.receiveData.push(maxListA);
-              $scope.receiveData.push(minListA);
-              $scope.receiveData.push(avgListA);
-
-              //add y axis override
-              $scope.receiveDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.receiveDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.receiveDatasetOverride.push({ yAxisID: 'y-axis-1' });
-
-
-              //process b side
-
-              var maxListB = [];
-              var minListB = [];
-              var avgListB = [];
-
-              dataB.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-
-                var test = $scope.testMap.get(timestamp);
-                if (test) {
-                  maxListB.push({ x: test, y: item._source['performance-data']['rx-level-max'] });
-                  minListB.push({ x: test, y: item._source['performance-data']['rx-level-min'] });
-                  avgListB.push({ x: test, y: item._source['performance-data']['rx-level-avg'] });
-                } else {
-                  maxListB.push({ x: 0, y: item._source['performance-data']['rx-level-max'] });
-                  minListB.push({ x: 0, y: item._source['performance-data']['rx-level-min'] });
-                  avgListB.push({ x: 0, y: item._source['performance-data']['rx-level-avg'] });
-                  console.log("timestamp" + timestamp + "at first position in map" + $scope.testMap.get(timestamp) + "wasnt found.");
-                }
-              });
-
-              //add series names and data 
-              $scope.receiveSeries.push('Rx max B', 'Rx min B', 'Rx avg B');
-
-              $scope.receiveData.push(maxListB);
-              $scope.receiveData.push(minListB);
-              $scope.receiveData.push(avgListB);
-
-              //add y axis override id 
-              $scope.receiveDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.receiveDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.receiveDatasetOverride.push({ yAxisID: 'y-axis-1' });
-
-              overridePoints($scope.receiveSeries, $scope.receiveDatasetOverride);
-
-
-            }
-
-              break;
-
-            case 'transmissionLevel': {
-
-              $scope.transmissionData = [];
-              $scope.transmissionSeries = [];
-              $scope.transmissionDatasetOverride = [];
-
-              $scope.transmissionOptions = {
-                scales: {
-                  xAxes: [{
-                    type: 'linear',
-                    position: 'bottom',
-                    afterTickToLabelConversion: function (data) { //adds our custom timestamp labels
-
-                      var xLabels = data.ticks;
-                      xLabels.forEach(function (labels, i) {
-                        var timestamp = $scope.transmissiontoolTipMap.get(parseInt(labels));
-                        if (parseInt(labels) == labels)
-                          xLabels[i] = timestamp;
-                        else
-                          xLabels[i] = '';
-
-                      });
-
-                      //calculate last timestamp if label is missing
-                      if (xLabels[xLabels.length - 1] === undefined) {
-                        let timestamp = $scope.transmissiontoolTipMap.get($scope.transmissiontoolTipMap.size - 1);
-                        let stopper = true;
-                        let counter = 0;
-                        let labelLength = xLabels.length - 1;
-                        while (stopper) {
-                          if (labelLength % 10 == 0) {
-                            stopper = false;
-                          } else {
-                            labelLength++;
-                            counter++;
-                          }
-                        }
-
-                        xLabels[xLabels.length - 1] = calculateMissingTimestamp(timestamp, counter);
-                      }
-                    }
-                  }],
-                  yAxes: [
-                    {
-                      id: 'y-axis-1',
-                      type: 'linear',
-                      display: true,
-                      position: 'left'
-                    }
-                  ]
-                },
-                tooltips: {
-                  enabled: true,
-                  mode: 'point',
-                  callbacks: {
-                    title: function (tooltipItem, data) { //picks right tool tip
-                      var vaue = $scope.transmissiontoolTipMap.get(tooltipItem[0].xLabel);
-                      return vaue;
-                    }
-                  }
-                },
-                legend: {
-                  display: true,
-                  position: "bottom"
-                }
-              };
-
-
-              $scope.transmissiontestMap = new Map();
-              $scope.transmissiontoolTipMap = new Map();
-
-              tempArr.map(function (item, index) {
-                $scope.transmissiontestMap.set(item, index);
-                $scope.transmissiontoolTipMap.set(index, item);
-              });
-
-              var maxListA = [];
-              var minListA = [];
-              var avgListA = [];
-
-              dataA.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-
-                var test = $scope.transmissiontestMap.get(timestamp);
-                if (test) {
-                  maxListA.push({ x: test, y: item._source['performance-data']['tx-level-max'] });
-                  minListA.push({ x: test, y: item._source['performance-data']['tx-level-min'] });
-                  avgListA.push({ x: test, y: item._source['performance-data']['tx-level-avg'] });
-                } else {
-
-                  maxListA.push({ x: 0, y: item._source['performance-data']['tx-level-max'] });
-                  minListA.push({ x: 0, y: item._source['performance-data']['tx-level-min'] });
-                  avgListA.push({ x: 0, y: item._source['performance-data']['tx-level-avg'] });
-                }
-              });
-
-              $scope.transmissionSeries.push('Tx max A', 'Tx min A', 'Tx avg A');
-
-
-              $scope.transmissionData.push(maxListA);
-              $scope.transmissionData.push(minListA);
-              $scope.transmissionData.push(avgListA);
-
-              $scope.transmissionDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.transmissionDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.transmissionDatasetOverride.push({ yAxisID: 'y-axis-1' });
-
-              var maxListB = [];
-              var minListB = [];
-              var avgListB = [];
-
-              dataB.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-                var test = $scope.transmissiontestMap.get(timestamp);
-                if (test) {
-                  maxListB.push({ x: test, y: item._source['performance-data']['tx-level-max'] });
-                  minListB.push({ x: test, y: item._source['performance-data']['tx-level-min'] });
-                  avgListB.push({ x: test, y: item._source['performance-data']['tx-level-avg'] });
-                } else {
-
-                  maxListB.push({ x: 0, y: item._source['performance-data']['tx-level-max'] });
-                  minListB.push({ x: 0, y: item._source['performance-data']['tx-level-min'] });
-                  avgListB.push({ x: 0, y: item._source['performance-data']['tx-level-avg'] });
-                }
-              });
-
-              $scope.transmissionSeries.push('Tx max B', 'Tx min B', 'Tx avg B');
-
-              $scope.transmissionData.push(maxListB);
-              $scope.transmissionData.push(minListB);
-              $scope.transmissionData.push(avgListB);
-
-              $scope.transmissionDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.transmissionDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.transmissionDatasetOverride.push({ yAxisID: 'y-axis-1' });
-
-              overridePoints($scope.transmissionSeries, $scope.transmissionDatasetOverride);
-            }
-
-              break;
-
-            case 'modulation': {
-
-              $scope.modulationData = [];
-              $scope.modultaionSeries = [];
-              $scope.modulationDatasetOverride = [];
-
-              $scope.modulationOptions = {
-                scales: {
-                  xAxes: [{
-                    type: 'linear',
-                    position: 'bottom',
-                    afterTickToLabelConversion: function (data) { //adds our custom timestamp labels
-
-                      var xLabels = data.ticks;
-                      xLabels.forEach(function (labels, i) {
-                        var timestamp = $scope.modLabelMap.get(parseInt(labels));
-                        if (parseInt(labels) == labels)
-                          xLabels[i] = timestamp;
-                        else
-                          xLabels[i] = '';
-
-                      });
-
-                      //calculate last timestamp if label is missing
-                      if (xLabels[xLabels.length - 1] === undefined) {
-                        var timestamp = $scope.modLabelMap.get($scope.modLabelMap.size - 1);
-                        let stopper = true;
-                        let counter = 0;
-                        let labelLength = xLabels.length - 1;
-                        while (stopper) {
-                          if (labelLength % 10 == 0) {
-                            stopper = false;
-                          } else {
-                            labelLength++;
-                            counter++;
-                          }
-
-                        }
-
-                        xLabels[xLabels.length - 1] = calculateMissingTimestamp(timestamp, counter);
-                      }
-                    }
-                  }],
-                  yAxes: [
-                    {
-                      id: 'y-axis-1',
-                      type: 'linear',
-                      display: true,
-                      position: 'left'
-                    }
-                  ]
-                },
-                tooltips: {
-                  enabled: true,
-                  mode: 'point',
-                  callbacks: {
-                    title: function (tooltipItem, data) { //picks right tool tip
-
-                      var vaue = $scope.modtestMap.get(tooltipItem[0].xLabel);
-                      return vaue;
-                    }
-                  }
-                },
-                legend: {
-                  display: true,
-                  position: "bottom"
-                }
-
-              };
-
-              $scope.modtestMap = new Map();
-              $scope.modLabelMap = new Map();
-
-              tempArr.map(function (item, index) {
-                $scope.modtestMap.set(item, index);
-                $scope.modLabelMap.set(index, item);
-              });
-
-              var time2S = [];
-              var time2 = [];
-              var time2L = [];
-              var time4S = [];
-              var time4 = [];
-              var time4L = [];
-              var time16S = [];
-              var time16 = [];
-              var time16L = [];
-              var time32S = [];
-              var time32 = [];
-              var time32L = [];
-              var time64S = [];
-              var time64 = [];
-              var time64L = [];
-              var time128S = [];
-              var time128 = [];
-              var time128L = [];
-              var time256S = [];
-              var time256 = [];
-              var time256L = [];
-              var time512S = [];
-              var time512 = [];
-              var time512L = [];
-              var time1024S = [];
-              var time1024 = [];
-              var time1024L = [];
-              var time2048S = [];
-              var time2048 = [];
-              var time2048L = [];
-              var time4096S = [];
-              var time4096 = [];
-              var time4096L = [];
-              var time8192S = [];
-              var time8192 = [];
-              var time8192L = [];
-
-              dataA.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-
-                var test = $scope.modtestMap.get(timestamp);
-                if (test) {
-
-                  //check if data is not undefined, if yes: add
-                  let t2s = checkData(item._source['performance-data']['time2-states-s']);
-                  if (t2s != undefined)
-                    time2S.push({ x: test, y: t2s });
-
-                  let t2 = checkData(item._source['performance-data']['time2-states']);
-                  if (t2 != undefined)
-                    time2.push({ x: test, y: t2 });
-
-                  let t2L = checkData(item._source['performance-data']['time2-states-l']);
-                  if (t2L != undefined)
-                    time2L.push({ x: test, y: t2L });
-
-                  let t4s = checkData(item._source['performance-data']['time4-states-s']);
-                  if (t4s != undefined)
-                    time4S.push({ x: test, y: t4s });
-
-                  let t4 = checkData(item._source['performance-data']['time4-states']);
-                  if (t4 != undefined)
-                    time4.push({ x: test, y: t4 });
-
-                  let t4L = checkData(item._source['performance-data']['time4-states-l']);
-                  if (t4L != undefined)
-                    time4L.push({ x: test, y: t4L });
-
-                  let t16s = checkData(item._source['performance-data']['time16-states-s']);
-                  if (t16s != undefined)
-                    time16S.push({ x: test, y: t16s });
-
-
-                  let t16 = checkData(item._source['performance-data']['time16-states']);
-                  if (t16 != undefined)
-                    time16.push({ x: test, y: t16 });
-
-
-                  let t16L = checkData(item._source['performance-data']['time16-states-l']);
-                  if (t16L != undefined)
-                    time16L.push({ x: test, y: t16L });
-
-                  let t32s = checkData(item._source['performance-data']['time32-states-s']);
-                  if (t32s != undefined)
-                    time32S.push({ x: test, y: t32s });
-
-                  let t32 = checkData(item._source['performance-data']['time32-states']);
-                  if (t32 != undefined)
-                    time32.push({ x: test, y: t32 });
-
-
-                  let t32L = checkData(item._source['performance-data']['time32-states-l']);
-                  if (t32L != undefined)
-                    time32L.push({ x: test, y: t32L });
-
-
-
-                  let t64s = checkData(item._source['performance-data']['time64-states-s']);
-                  if (t64s != undefined)
-                    time64S.push({ x: test, y: t64s });
-
-                  let t64 = checkData(item._source['performance-data']['time64-states']);
-                  if (t64 != undefined)
-                    time64.push({ x: test, y: t64 });
-
-                  let t64L = checkData(item._source['performance-data']['time64-states-l']);
-                  if (t64L != undefined)
-                    time64L.push({ x: test, y: t64L });
-
-
-                  let t128s = checkData(item._source['performance-data']['time128-states-s']);
-                  if (t128s != undefined)
-                    time128S.push({ x: test, y: t128s });
-
-                  let t128 = checkData(item._source['performance-data']['time128-states']);
-                  if (t128 != undefined)
-                    time128.push({ x: test, y: t128 });
-
-                  let t128L = checkData(item._source['performance-data']['time128-states-l']);
-                  if (t128L != undefined)
-                    time128L.push({ x: test, y: t128L });
-
-
-                  let t256s = checkData(item._source['performance-data']['time256-states-s']);
-                  if (t256s != undefined)
-                    time256S.push({ x: test, y: t256s });
-
-                  let t256 = checkData(item._source['performance-data']['time256-states']);
-                  if (t256 != undefined)
-                    time256.push({ x: test, y: t256 });
-
-                  let t256L = checkData(item._source['performance-data']['time256-states-l']);
-                  if (t256L != undefined)
-                    time256L.push({ x: test, y: t256L });
-
-                  let t512s = checkData(item._source['performance-data']['time512-states-s']);
-                  if (t512s != undefined)
-                    time512S.push({ x: test, y: t512s });
-
-                  let t512 = checkData(item._source['performance-data']['time512-states']);
-                  if (t512 != undefined)
-                    time512.push({ x: test, y: t512 });
-
-                  let t512L = checkData(item._source['performance-data']['time512-states-l']);
-                  if (t512L != undefined)
-                    time512L.push({ x: test, y: t512L });
-
-                  let t1024s = checkData(item._source['performance-data']['time1024-states-s']);
-                  if (t1024s != undefined)
-                    time1024S.push({ x: test, y: t1024s });
-
-                  let t1024 = checkData(item._source['performance-data']['time1024-states']);
-                  if (t1024 != undefined)
-                    time1024.push({ x: test, y: t1024 });
-
-                  let t1024L = checkData(item._source['performance-data']['time1024-states-l']);
-                  if (t1024L != undefined)
-                    time1024L.push({ x: test, y: t1024L });
-
-                  let t2048s = checkData(item._source['performance-data']['time2048-states-s']);
-                  if (t2048s != undefined)
-                    time2048S.push({ x: test, y: t2048s });
-
-                  let t2048 = checkData(item._source['performance-data']['time2048-states']);
-                  if (t2048 != undefined)
-                    time2048.push({ x: test, y: t2048 });
-
-                  let t2048L = checkData(item._source['performance-data']['time2048-states-l']);
-                  if (t2048L != undefined)
-                    time2048L.push({ x: test, y: t2048L });
-
-                  let t4096s = checkData(item._source['performance-data']['time4096-states-s']);
-                  if (t4096s != undefined)
-                    time4096S.push({ x: test, y: t4096s });
-
-                  let t4096 = checkData(item._source['performance-data']['time4096-states']);
-                  if (t4096 != undefined)
-                    time4096.push({ x: test, y: t4096 });
-
-                  let t4096L = checkData(item._source['performance-data']['time4096-states-l']);
-                  if (t4096L != undefined)
-                    time4096L.push({ x: test, y: t4096L });
-
-                  let t8192s = checkData(item._source['performance-data']['time8192-states-s']);
-                  if (t8192s != undefined)
-                    time8192S.push({ x: test, y: t8192s });
-
-                  let t8192 = checkData(item._source['performance-data']['time8192-states']);
-                  if (t8192 != undefined)
-                    time8192.push({ x: test, y: t8192 });
-
-                  let t8192L = checkData(item._source['performance-data']['time8192-states-l']);
-                  if (t8192L != undefined)
-                    time8192L.push({ x: test, y: t8192L });
-
-                } else {
-
-                  let t2s = checkData(item._source['performance-data']['time2-states-s']);
-                  if (t2s != undefined)
-                    time2S.push({ x: 0, y: t2s });
-
-                  let t2 = checkData(item._source['performance-data']['time2-states']);
-                  if (t2 != undefined)
-                    time2.push({ x: 0, y: t2 });
-
-                  let t2L = checkData(item._source['performance-data']['time2-states-l']);
-                  if (t2L != undefined)
-                    time2L.push({ x: 0, y: t2L });
-
-                  let t4s = checkData(item._source['performance-data']['time4-states-s']);
-                  if (t4s != undefined)
-                    time4S.push({ x: 0, y: t4s });
-
-                  let t4 = checkData(item._source['performance-data']['time4-states']);
-                  if (t4 != undefined)
-                    time4.push({ x: 0, y: t4 });
-
-                  let t4L = checkData(item._source['performance-data']['time4-states-l']);
-                  if (t4L != undefined)
-                    time4L.push({ x: 0, y: t4L });
-
-                  let t16s = checkData(item._source['performance-data']['time16-states-s']);
-                  if (t16s != undefined)
-                    time16S.push({ x: 0, y: t16s });
-
-
-                  let t16 = checkData(item._source['performance-data']['time16-states']);
-                  if (t16 != undefined)
-                    time16.push({ x: 0, y: t16 });
-
-
-                  let t16L = checkData(item._source['performance-data']['time16-states-l']);
-                  if (t16L != undefined)
-                    time16L.push({ x: 0, y: t16L });
-
-                  let t32s = checkData(item._source['performance-data']['time32-states-s']);
-                  if (t32s != undefined)
-                    time32S.push({ x: 0, y: t32s });
-
-                  let t32 = checkData(item._source['performance-data']['time32-states']);
-                  if (t32 != undefined)
-                    time32.push({ x: 0, y: t32 });
-
-
-                  let t32L = checkData(item._source['performance-data']['time32-states-l']);
-                  if (t32L != undefined)
-                    time32L.push({ x: 0, y: t32L });
-
-                  let t64s = checkData(item._source['performance-data']['time64-states-s']);
-                  if (t64s != undefined)
-                    time64S.push({ x: 0, y: t64s });
-
-                  let t64 = checkData(item._source['performance-data']['time64-states']);
-                  if (t64 != undefined)
-                    time64.push({ x: 0, y: t64 });
-
-                  let t64L = checkData(item._source['performance-data']['time64-states-l']);
-                  if (t64L != undefined)
-                    time64L.push({ x: 0, y: t64L });
-
-
-                  let t128s = checkData(item._source['performance-data']['time128-states-s']);
-                  if (t128s != undefined)
-                    time128S.push({ x: 0, y: t128s });
-
-                  let t128 = checkData(item._source['performance-data']['time128-states']);
-                  if (t128 != undefined)
-                    time128.push({ x: 0, y: t128 });
-
-                  let t128L = checkData(item._source['performance-data']['time128-states-l']);
-                  if (t128L != undefined)
-                    time128L.push({ x: 0, y: t128L });
-
-
-                  let t256s = checkData(item._source['performance-data']['time256-states-s']);
-                  if (t256s != undefined)
-                    time256S.push({ x: 0, y: t256s });
-
-                  let t256 = checkData(item._source['performance-data']['time256-states']);
-                  if (t256 != undefined)
-                    time256.push({ x: 0, y: t256 });
-
-                  let t256L = checkData(item._source['performance-data']['time256-states-l']);
-                  if (t256L != undefined)
-                    time256L.push({ x: 0, y: t256L });
-
-                  let t512s = checkData(item._source['performance-data']['time512-states-s']);
-                  if (t512s != undefined)
-                    time512S.push({ x: 0, y: t512s });
-
-                  let t512 = checkData(item._source['performance-data']['time512-states']);
-                  if (t512 != undefined)
-                    time512.push({ x: 0, y: t512 });
-
-                  let t512L = checkData(item._source['performance-data']['time512-states-l']);
-                  if (t512L != undefined)
-                    time512L.push({ x: 0, y: t512L });
-
-                  let t1024s = checkData(item._source['performance-data']['time1024-states-s']);
-                  if (t1024s != undefined)
-                    time1024S.push({ x: 0, y: t1024s });
-
-                  let t1024 = checkData(item._source['performance-data']['time1024-states']);
-                  if (t1024 != undefined)
-                    time1024.push({ x: 0, y: t1024 });
-
-                  let t1024L = checkData(item._source['performance-data']['time1024-states-l']);
-                  if (t1024L != undefined)
-                    time1024L.push({ x: 0, y: t1024L });
-
-                  let t2048s = checkData(item._source['performance-data']['time2048-states-s']);
-                  if (t2048s != undefined)
-                    time2048S.push({ x: 0, y: t2048s });
-
-                  let t2048 = checkData(item._source['performance-data']['time2048-states']);
-                  if (t2048 != undefined)
-                    time2048.push({ x: 0, y: t2048 });
-
-                  let t2048L = checkData(item._source['performance-data']['time2048-states-l']);
-                  if (t2048L != undefined)
-                    time2048L.push({ x: 0, y: t2048L });
-
-                  let t4096s = checkData(item._source['performance-data']['time4096-states-s']);
-                  if (t4096s != undefined)
-                    time4096S.push({ x: 0, y: t4096s });
-
-                  let t4096 = checkData(item._source['performance-data']['time4096-states']);
-                  if (t4096 != undefined)
-                    time4096.push({ x: 0, y: t4096 });
-
-                  let t4096L = checkData(item._source['performance-data']['time4096-states-l']);
-                  if (t4096L != undefined)
-                    time4096L.push({ x: 0, y: t4096L });
-
-                  let t8192s = checkData(item._source['performance-data']['time8192-states-s']);
-                  if (t8192s != undefined)
-                    time8192S.push({ x: 0, y: t8192s });
-
-                  let t8192 = checkData(item._source['performance-data']['time8192-states']);
-                  if (t8192 != undefined)
-                    time8192.push({ x: 0, y: t8192 });
-
-                  let t8192L = checkData(item._source['performance-data']['time8192-states-l']);
-                  if (t8192L != undefined)
-                    time8192L.push({ x: 0, y: t8192L });
-
-                }
-              });
-
-              //check, if array has items, if yes: add series and data to chart
-              //reduces amount of labels shown in chart => shows only series' with data
-              if (time2S.length > 0) {
-                $scope.modultaionSeries.push('QAM2S A');
-                $scope.modulationData.push(time2S);
-              }
-
-              if (time2.length > 0) {
-                $scope.modultaionSeries.push('QAM2 A');
-                $scope.modulationData.push(time2);
-              }
-
-              if (time2L.length > 0) {
-                $scope.modultaionSeries.push('QAM2L A');
-                $scope.modulationData.push(time2L);
-              }
-
-              if (time4S.length > 0) {
-                $scope.modultaionSeries.push('QAM4S A');
-                $scope.modulationData.push(time4S);
-              }
-
-              if (time4.length > 0) {
-                $scope.modultaionSeries.push('QAM4 A');
-                $scope.modulationData.push(time4);
-              }
-
-              if (time4L.length > 0) {
-                $scope.modultaionSeries.push('QAM4L A');
-                $scope.modulationData.push(time4L);
-              }
-
-              if (time16S.length > 0) {
-                $scope.modultaionSeries.push('QAM16S A');
-                $scope.modulationData.push(time16S);
-              }
-
-
-              if (time16.length > 0) {
-                $scope.modultaionSeries.push('QAM16 A');
-                $scope.modulationData.push(time16);
-              }
-
-              if (time16L.length > 0) {
-                $scope.modultaionSeries.push('QAM16L A');
-                $scope.modulationData.push(time16L);
-              }
-
-              if (time32S.length > 0) {
-                $scope.modulationData.push(time32S);
-                $scope.modultaionSeries.push('QAM32S A');
-              }
-
-              if (time32.length > 0) {
-                $scope.modulationData.push(time32);
-                $scope.modultaionSeries.push('QAM32 A');
-              }
-
-              if (time32L.length > 0) {
-                $scope.modulationData.push(time32L);
-                $scope.modultaionSeries.push('QAM32L A');
-              }
-
-
-              if (time64S.length > 0) {
-                $scope.modulationData.push(time64S);
-                $scope.modultaionSeries.push('QAM64S A');
-              }
-
-
-              if (time64.length > 0) {
-                $scope.modulationData.push(time64);
-                $scope.modultaionSeries.push('QAM64 A');
-              }
-
-              if (time64L.length > 0) {
-                $scope.modulationData.push(time64L);
-                $scope.modultaionSeries.push('QAM64L A');
-              }
-
-
-              if (time128S.length > 0) {
-                $scope.modultaionSeries.push('QAM128S A');
-                $scope.modulationData.push(time128S);
-              }
-
-              if (time128.length > 0) {
-                $scope.modultaionSeries.push('QAM128 A');
-                $scope.modulationData.push(time128);
-              }
-
-              if (time128L.length > 0) {
-                $scope.modultaionSeries.push('QAM128L A');
-                $scope.modulationData.push(time128L);
-              }
-
-              if (time256S.length > 0) {
-                $scope.modulationData.push(time256S);
-                $scope.modultaionSeries.push('QAM256S A');
-              }
-
-              if (time256.length > 0) {
-                $scope.modulationData.push(time256);
-                $scope.modultaionSeries.push('QAM256 A');
-              }
-
-              if (time256L.length > 0) {
-                $scope.modulationData.push(time256L);
-                $scope.modultaionSeries.push('QAM256L A');
-              }
-
-              if (time512S.length > 0) {
-                $scope.modultaionSeries.push('QAM512S A');
-                $scope.modulationData.push(time512S);
-              }
-
-              if (time512.length > 0) {
-                $scope.modultaionSeries.push('QAM512 A');
-                $scope.modulationData.push(time512);
-              }
-
-              if (time512S.length > 0) {
-                $scope.modultaionSeries.push('QAM512S A');
-                $scope.modulationData.push(time512S);
-              }
-
-              if (time512.length > 0) {
-                $scope.modultaionSeries.push('QAM512 A');
-                $scope.modulationData.push(time512);
-              }
-
-              if (time512L.length > 0) {
-                $scope.modultaionSeries.push('QAM512L A');
-                $scope.modulationData.push(time512L);
-
-              }
-
-              if (time1024S.length > 0) {
-                $scope.modultaionSeries.push('QAM1024S A');
-                $scope.modulationData.push(time1024S);
-              }
-
-              if (time1024.length > 0) {
-                $scope.modultaionSeries.push('QAM1024 A');
-                $scope.modulationData.push(time1024);
-              }
-
-
-              if (time1024L.length > 0) {
-                $scope.modultaionSeries.push('QAM1024L A');
-                $scope.modulationData.push(time1024L);
-              }
-
-
-              if (time2048S.length > 0) {
-                $scope.modultaionSeries.push('QAM2048S A');
-                $scope.modulationData.push(time2048S);
-              }
-
-              if (time2048.length > 0) {
-                $scope.modultaionSeries.push('QAM2048 A');
-                $scope.modulationData.push(time2048);
-              }
-
-              if (time2048L.length > 0) {
-                $scope.modultaionSeries.push('QAM2048L A');
-                $scope.modulationData.push(time2048L);
-
-              }
-
-              if (time4096S.length > 0) {
-                $scope.modultaionSeries.push('QAM4096S A');
-                $scope.modulationData.push(time4096S);
-              }
-
-              if (time4096.length > 0) {
-                $scope.modultaionSeries.push('QAM4096 A');
-                $scope.modulationData.push(time4096);
-              }
-
-
-              if (time4096L.length > 0) {
-                $scope.modultaionSeries.push('QAM4096L A');
-                $scope.modulationData.push(time4096L);
-              }
-
-              if (time8192S.length > 0) {
-                $scope.modultaionSeries.push('QAM8192S A');
-                $scope.modulationData.push(time8192S);
-              }
-
-
-              if (time8192.length > 0) {
-                $scope.modultaionSeries.push('QAM8192 A');
-                $scope.modulationData.push(time8192);
-              }
-
-              if (time8192L.length > 0) {
-                $scope.modultaionSeries.push('QAM8192L A');
-                $scope.modulationData.push(time8192L);
-              }
-
-              //process data for b side
-
-              time2S = [];
-              time2 = [];
-              time2L = [];
-              time4S = [];
-              time4 = [];
-              time4L = [];
-              time16S = [];
-              time16 = [];
-              time16L = [];
-              time32S = [];
-              time32 = [];
-              time32L = [];
-              time64S = [];
-              time64 = [];
-              time64L = [];
-              time128S = [];
-              time128 = [];
-              time128L = [];
-              time256S = [];
-              time256 = [];
-              time256L = [];
-              time512S = [];
-              time512 = [];
-              time512L = [];
-              time1024S = [];
-              time1024 = [];
-              time1024L = [];
-              time2048S = [];
-              time2048 = [];
-              time2048L = [];
-              time4096S = [];
-              time4096 = [];
-              time4096L = [];
-              time8192S = [];
-              time8192 = [];
-              time8192L = [];
-
-              dataB.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-                var test = $scope.modtestMap.get(timestamp);
-                if (test) {
-                  let t2s = checkData(item._source['performance-data']['time2-states-s']);
-                  if (t2s != undefined)
-                    time2S.push({ x: test, y: t2s });
-
-                  let t2 = checkData(item._source['performance-data']['time2-states']);
-                  if (t2 != undefined)
-                    time2.push({ x: test, y: t2 });
-
-                  let t2L = checkData(item._source['performance-data']['time2-states-l']);
-                  if (t2L != undefined)
-                    time2L.push({ x: test, y: t2L });
-
-                  let t4s = checkData(item._source['performance-data']['time4-states-s']);
-                  if (t4s != undefined)
-                    time4S.push({ x: test, y: t4s });
-
-                  let t4 = checkData(item._source['performance-data']['time4-states']);
-                  if (t4 != undefined)
-                    time4.push({ x: test, y: t4 });
-
-                  let t4L = checkData(item._source['performance-data']['time4-states-l']);
-                  if (t4L != undefined)
-                    time4L.push({ x: test, y: t4L });
-
-                  let t16s = checkData(item._source['performance-data']['time16-states-s']);
-                  if (t16s != undefined)
-                    time16S.push({ x: test, y: t16s });
-
-
-                  let t16 = checkData(item._source['performance-data']['time16-states']);
-                  if (t16 != undefined)
-                    time16.push({ x: test, y: t16 });
-
-
-                  let t16L = checkData(item._source['performance-data']['time16-states-l']);
-                  if (t16L != undefined)
-                    time16L.push({ x: test, y: t16L });
-
-                  let t32s = checkData(item._source['performance-data']['time32-states-s']);
-                  if (t32s != undefined)
-                    time32S.push({ x: test, y: t32s });
-
-                  let t32 = checkData(item._source['performance-data']['time32-states']);
-                  if (t32 != undefined)
-                    time32.push({ x: test, y: t32 });
-
-
-                  let t32L = checkData(item._source['performance-data']['time32-states-l']);
-                  if (t32L != undefined)
-                    time32L.push({ x: test, y: t32L });
-
-
-
-                  let t64s = checkData(item._source['performance-data']['time64-states-s']);
-                  if (t64s != undefined)
-                    time64S.push({ x: test, y: t64s });
-
-                  let t64 = checkData(item._source['performance-data']['time64-states']);
-                  if (t64 != undefined)
-                    time64.push({ x: test, y: t64 });
-
-                  let t64L = checkData(item._source['performance-data']['time64-states-l']);
-                  if (t64L != undefined)
-                    time64L.push({ x: test, y: t64L });
-
-
-                  let t128s = checkData(item._source['performance-data']['time128-states-s']);
-                  if (t128s != undefined)
-                    time128S.push({ x: test, y: t128s });
-
-                  let t128 = checkData(item._source['performance-data']['time128-states']);
-                  if (t128 != undefined)
-                    time128.push({ x: test, y: t128 });
-
-                  let t128L = checkData(item._source['performance-data']['time128-states-l']);
-                  if (t128L != undefined)
-                    time128L.push({ x: test, y: t128L });
-
-
-                  let t256s = checkData(item._source['performance-data']['time256-states-s']);
-                  if (t256s != undefined)
-                    time256S.push({ x: test, y: t256s });
-
-                  let t256 = checkData(item._source['performance-data']['time256-states']);
-                  if (t256 != undefined)
-                    time256.push({ x: test, y: t256 });
-
-                  let t256L = checkData(item._source['performance-data']['time256-states-l']);
-                  if (t256L != undefined)
-                    time256L.push({ x: test, y: t256L });
-
-                  let t512s = checkData(item._source['performance-data']['time512-states-s']);
-                  if (t512s != undefined)
-                    time512S.push({ x: test, y: t512s });
-
-                  let t512 = checkData(item._source['performance-data']['time512-states']);
-                  if (t512 != undefined)
-                    time512.push({ x: test, y: t512 });
-
-                  let t512L = checkData(item._source['performance-data']['time512-states-l']);
-                  if (t512L != undefined)
-                    time512L.push({ x: test, y: t512L });
-
-                  let t1024s = checkData(item._source['performance-data']['time1024-states-s']);
-                  if (t1024s != undefined)
-                    time1024S.push({ x: test, y: t1024s });
-
-                  let t1024 = checkData(item._source['performance-data']['time1024-states']);
-                  if (t1024 != undefined)
-                    time1024.push({ x: test, y: t1024 });
-
-                  let t1024L = checkData(item._source['performance-data']['time1024-states-l']);
-                  if (t1024L != undefined)
-                    time1024L.push({ x: test, y: t1024L });
-
-                  let t2048s = checkData(item._source['performance-data']['time2048-states-s']);
-                  if (t2048s != undefined)
-                    time2048S.push({ x: test, y: t2048s });
-
-                  let t2048 = checkData(item._source['performance-data']['time2048-states']);
-                  if (t2048 != undefined)
-                    time2048.push({ x: test, y: t2048 });
-
-                  let t2048L = checkData(item._source['performance-data']['time2048-states-l']);
-                  if (t2048L != undefined)
-                    time2048L.push({ x: test, y: t2048L });
-
-                  let t4096s = checkData(item._source['performance-data']['time4096-states-s']);
-                  if (t4096s != undefined)
-                    time4096S.push({ x: test, y: t4096s });
-
-                  let t4096 = checkData(item._source['performance-data']['time4096-states']);
-                  if (t4096 != undefined)
-                    time4096.push({ x: test, y: t4096 });
-
-                  let t4096L = checkData(item._source['performance-data']['time4096-states-l']);
-                  if (t4096L != undefined)
-                    time4096L.push({ x: test, y: t4096L });
-
-                  let t8192s = checkData(item._source['performance-data']['time8192-states-s']);
-                  if (t8192s != undefined)
-                    time8192S.push({ x: test, y: t8192s });
-
-                  let t8192 = checkData(item._source['performance-data']['time8192-states']);
-                  if (t8192 != undefined)
-                    time8192.push({ x: test, y: t8192 });
-
-                  let t8192L = checkData(item._source['performance-data']['time8192-states-l']);
-                  if (t8192L != undefined)
-                    time8192L.push({ x: test, y: t8192L });
-
-                } else {
-
-                  let t2s = checkData(item._source['performance-data']['time2-states-s']);
-                  if (t2s != undefined)
-                    time2S.push({ x: 0, y: t2s });
-
-                  let t2 = checkData(item._source['performance-data']['time2-states']);
-                  if (t2 != undefined)
-                    time2.push({ x: 0, y: t2 });
-
-                  let t2L = checkData(item._source['performance-data']['time2-states-l']);
-                  if (t2L != undefined)
-                    time2L.push({ x: 0, y: t2L });
-
-                  let t4s = checkData(item._source['performance-data']['time4-states-s']);
-                  if (t4s != undefined)
-                    time4S.push({ x: 0, y: t4s });
-
-                  let t4 = checkData(item._source['performance-data']['time4-states']);
-                  if (t4 != undefined)
-                    time4.push({ x: 0, y: t4 });
-
-                  let t4L = checkData(item._source['performance-data']['time4-states-l']);
-                  if (t4L != undefined)
-                    time4L.push({ x: 0, y: t4L });
-
-                  let t16s = checkData(item._source['performance-data']['time16-states-s']);
-                  if (t16s != undefined)
-                    time16S.push({ x: 0, y: t16s });
-
-
-                  let t16 = checkData(item._source['performance-data']['time16-states']);
-                  if (t16 != undefined)
-                    time16.push({ x: 0, y: t16 });
-
-
-                  let t16L = checkData(item._source['performance-data']['time16-states-l']);
-                  if (t16L != undefined)
-                    time16L.push({ x: 0, y: t16L });
-
-                  let t32s = checkData(item._source['performance-data']['time32-states-s']);
-                  if (t32s != undefined)
-                    time32S.push({ x: 0, y: t32s });
-
-                  let t32 = checkData(item._source['performance-data']['time32-states']);
-                  if (t32 != undefined)
-                    time32.push({ x: 0, y: t32 });
-
-
-                  let t32L = checkData(item._source['performance-data']['time32-states-l']);
-                  if (t32L != undefined)
-                    time32L.push({ x: 0, y: t32L });
-
-                  let t64s = checkData(item._source['performance-data']['time64-states-s']);
-                  if (t64s != undefined)
-                    time64S.push({ x: 0, y: t64s });
-
-                  let t64 = checkData(item._source['performance-data']['time64-states']);
-                  if (t64 != undefined)
-                    time64.push({ x: 0, y: t64 });
-
-                  let t64L = checkData(item._source['performance-data']['time64-states-l']);
-                  if (t64L != undefined)
-                    time64L.push({ x: 0, y: t64L });
-
-
-                  let t128s = checkData(item._source['performance-data']['time128-states-s']);
-                  if (t128s != undefined)
-                    time128S.push({ x: 0, y: t128s });
-
-                  let t128 = checkData(item._source['performance-data']['time128-states']);
-                  if (t128 != undefined)
-                    time128.push({ x: 0, y: t128 });
-
-                  let t128L = checkData(item._source['performance-data']['time128-states-l']);
-                  if (t128L != undefined)
-                    time128L.push({ x: 0, y: t128L });
-
-
-                  let t256s = checkData(item._source['performance-data']['time256-states-s']);
-                  if (t256s != undefined)
-                    time256S.push({ x: 0, y: t256s });
-
-                  let t256 = checkData(item._source['performance-data']['time256-states']);
-                  if (t256 != undefined)
-                    time256.push({ x: 0, y: t256 });
-
-                  let t256L = checkData(item._source['performance-data']['time256-states-l']);
-                  if (t256L != undefined)
-                    time256L.push({ x: 0, y: t256L });
-
-                  let t512s = checkData(item._source['performance-data']['time512-states-s']);
-                  if (t512s != undefined)
-                    time512S.push({ x: 0, y: t512s });
-
-                  let t512 = checkData(item._source['performance-data']['time512-states']);
-                  if (t512 != undefined)
-                    time512.push({ x: 0, y: t512 });
-
-                  let t512L = checkData(item._source['performance-data']['time512-states-l']);
-                  if (t512L != undefined)
-                    time512L.push({ x: 0, y: t512L });
-
-                  let t1024s = checkData(item._source['performance-data']['time1024-states-s']);
-                  if (t1024s != undefined)
-                    time1024S.push({ x: 0, y: t1024s });
-
-                  let t1024 = checkData(item._source['performance-data']['time1024-states']);
-                  if (t1024 != undefined)
-                    time1024.push({ x: 0, y: t1024 });
-
-                  let t1024L = checkData(item._source['performance-data']['time1024-states-l']);
-                  if (t1024L != undefined)
-                    time1024L.push({ x: 0, y: t1024L });
-
-                  let t2048s = checkData(item._source['performance-data']['time2048-states-s']);
-                  if (t2048s != undefined)
-                    time2048S.push({ x: 0, y: t2048s });
-
-                  let t2048 = checkData(item._source['performance-data']['time2048-states']);
-                  if (t2048 != undefined)
-                    time2048.push({ x: 0, y: t2048 });
-
-                  let t2048L = checkData(item._source['performance-data']['time2048-states-l']);
-                  if (t2048L != undefined)
-                    time2048L.push({ x: 0, y: t2048L });
-
-                  let t4096s = checkData(item._source['performance-data']['time4096-states-s']);
-                  if (t4096s != undefined)
-                    time4096S.push({ x: 0, y: t4096s });
-
-                  let t4096 = checkData(item._source['performance-data']['time4096-states']);
-                  if (t4096 != undefined)
-                    time4096.push({ x: 0, y: t4096 });
-
-                  let t4096L = checkData(item._source['performance-data']['time4096-states-l']);
-                  if (t4096L != undefined)
-                    time4096L.push({ x: 0, y: t4096L });
-
-                  let t8192s = checkData(item._source['performance-data']['time8192-states-s']);
-                  if (t8192s != undefined)
-                    time8192S.push({ x: 0, y: t8192s });
-
-                  let t8192 = checkData(item._source['performance-data']['time8192-states']);
-                  if (t8192 != undefined)
-                    time8192.push({ x: 0, y: t8192 });
-
-                  let t8192L = checkData(item._source['performance-data']['time8192-states-l']);
-                  if (t8192L != undefined)
-                    time8192L.push({ x: 0, y: t8192L });
-
-                }
-              });
-
-              if (time2S.length > 0) {
-                $scope.modultaionSeries.push('QAM2S B');
-                $scope.modulationData.push(time2S);
-              }
-
-              if (time2.length > 0) {
-                $scope.modultaionSeries.push('QAM2 B');
-                $scope.modulationData.push(time2);
-              }
-
-              if (time2L.length > 0) {
-                $scope.modultaionSeries.push('QAM2L B');
-                $scope.modulationData.push(time2L);
-              }
-
-              if (time4S.length > 0) {
-                $scope.modultaionSeries.push('QAM4S B');
-                $scope.modulationData.push(time4S);
-              }
-
-              if (time4.length > 0) {
-                $scope.modultaionSeries.push('QAM4 B');
-                $scope.modulationData.push(time4);
-              }
-
-              if (time4L.length > 0) {
-                $scope.modultaionSeries.push('QAM4L B');
-                $scope.modulationData.push(time4L);
-              }
-
-              if (time16S.length > 0) {
-                $scope.modultaionSeries.push('QAM16S B');
-                $scope.modulationData.push(time16S);
-              }
-
-
-              if (time16.length > 0) {
-                $scope.modultaionSeries.push('QAM16 B');
-                $scope.modulationData.push(time16);
-              }
-
-
-              if (time16L.length > 0) {
-                $scope.modultaionSeries.push('QAM16L B');
-                $scope.modulationData.push(time16L);
-              }
-
-              if (time32S.length > 0) {
-                $scope.modulationData.push(time32S);
-                $scope.modultaionSeries.push('QAM32S B');
-              }
-
-              if (time32.length > 0) {
-                $scope.modulationData.push(time32);
-                $scope.modultaionSeries.push('QAM32 B');
-              }
-
-              if (time32L.length > 0) {
-                $scope.modulationData.push(time32L);
-                $scope.modultaionSeries.push('QAM32L B');
-              }
-
-
-              if (time64S.length > 0) {
-                $scope.modulationData.push(time64S);
-                $scope.modultaionSeries.push('QAM64S B');
-              }
-
-
-              if (time64.length > 0) {
-                $scope.modulationData.push(time64);
-                $scope.modultaionSeries.push('QAM64 B');
-              }
-
-              if (time64L.length > 0) {
-                $scope.modulationData.push(time64L);
-                $scope.modultaionSeries.push('QAM64L B');
-              }
-
-
-              if (time128S.length > 0) {
-                $scope.modultaionSeries.push('QAM128S B');
-                $scope.modulationData.push(time128S);
-              }
-
-              if (time128.length > 0) {
-                $scope.modultaionSeries.push('QAM128 B');
-                $scope.modulationData.push(time128);
-              }
-
-              if (time128L.length > 0) {
-                $scope.modultaionSeries.push('QAM128L B');
-                $scope.modulationData.push(time128L);
-              }
-
-              if (time256S.length > 0) {
-                $scope.modulationData.push(time256S);
-                $scope.modultaionSeries.push('QAM256S B');
-              }
-
-              if (time256.length > 0) {
-                $scope.modulationData.push(time256);
-                $scope.modultaionSeries.push('QAM256 B');
-              }
-
-              if (time256L.length > 0) {
-                $scope.modulationData.push(time256L);
-                $scope.modultaionSeries.push('QAM256L B');
-              }
-
-              if (time512S.length > 0) {
-                $scope.modultaionSeries.push('QAM512S B');
-                $scope.modulationData.push(time512S);
-
-              }
-
-              if (time512.length > 0) {
-                $scope.modultaionSeries.push('QAM512 B');
-                $scope.modulationData.push(time512);
-
-              }
-
-              if (time512S.length > 0) {
-                $scope.modultaionSeries.push('QAM512S B');
-                $scope.modulationData.push(time512S);
-              }
-
-              if (time512.length > 0) {
-                $scope.modultaionSeries.push('QAM512 B');
-                $scope.modulationData.push(time512);
-              }
-
-              if (time512L.length > 0) {
-                $scope.modultaionSeries.push('QAM512L B');
-                $scope.modulationData.push(time512L);
-              }
-
-              if (time1024S.length > 0) {
-                $scope.modultaionSeries.push('QAM1024S B');
-                $scope.modulationData.push(time1024S);
-
-              }
-
-              if (time1024.length > 0) {
-                $scope.modultaionSeries.push('QAM1024 B');
-                $scope.modulationData.push(time1024);
-              }
-
-
-              if (time1024L.length > 0) {
-                $scope.modultaionSeries.push('QAM1024L B');
-                $scope.modulationData.push(time1024L);
-
-              }
-
-
-              if (time2048S.length > 0) {
-                $scope.modultaionSeries.push('QAM2048S B');
-                $scope.modulationData.push(time2048S);
-
-              }
-
-              if (time2048.length > 0) {
-                $scope.modultaionSeries.push('QAM2048 B');
-                $scope.modulationData.push(time2048);
-              }
-
-              if (time2048L.length > 0) {
-                $scope.modultaionSeries.push('QAM2048L B');
-                $scope.modulationData.push(time2048L);
-              }
-
-              if (time4096S.length > 0) {
-                $scope.modultaionSeries.push('QAM4096S B');
-                $scope.modulationData.push(time4096S);
-              }
-
-              if (time4096.length > 0) {
-                $scope.modultaionSeries.push('QAM4096 B');
-                $scope.modulationData.push(time4096);
-              }
-
-
-              if (time4096L.length > 0) {
-                $scope.modultaionSeries.push('QAM4096L B');
-                $scope.modulationData.push(time4096L);
-
-              }
-
-              if (time8192S.length > 0) {
-                $scope.modultaionSeries.push('QAM8192S B');
-                $scope.modulationData.push(time8192S);
-
-              }
-
-
-              if (time8192.length > 0) {
-                $scope.modultaionSeries.push('QAM8192 B');
-                $scope.modulationData.push(time8192);
-
-              }
-
-              if (time8192L.length > 0) {
-                $scope.modultaionSeries.push('QAM8192L B');
-                $scope.modulationData.push(time8192L);
-
-              }
-
-              let patternArray = ['rect', 'triangle', 'point', 'cross'];
-              let patternCounter = 0;
-
-              //add y axis override and remove color below graph for all items in chart series
-              for (let i = 0; i < $scope.modultaionSeries.length; i++) {
-                $scope.modulationDatasetOverride.push({ yAxisID: 'y-axis-1' });
-                $scope.modulationDatasetOverride[i].fill = false;
-
-                //override points in graph
-                $scope.modulationDatasetOverride[i].pointStyle = patternArray[patternCounter];
-                patternCounter++;
-                if (patternCounter === 4) patternCounter = 0;
-                $scope.modulationDatasetOverride[i].pointRadius = 10;
-
-              }
-            }
-
-              break;
-
-            case 'temperature': {
-
-              $scope.tempData = [];
-              $scope.tempSeries = [];
-              $scope.tempDatasetOverride = [];
-
-              $scope.tempOptions = {
-                scales: {
-                  xAxes: [{
-                    type: 'linear',
-                    position: 'bottom',
-                    afterTickToLabelConversion: function (data) { //adds our custom timestamp labels
-
-                      var xLabels = data.ticks;
-                      xLabels.forEach(function (labels, i) {
-                        var timestamp = $scope.tempLabelMap.get(parseInt(labels));
-                        if (parseInt(labels) == labels)
-                          xLabels[i] = timestamp;
-                        else
-                          xLabels[i] = '';
-                      });
-
-                      //calculate last timestamp if label is missing
-                      if (xLabels[xLabels.length - 1] === undefined) {
-                        var timestamp = $scope.tempLabelMap.get($scope.tempLabelMap.size - 1);
-                        let stopper = true;
-                        let counter = 0;
-                        let labelLength = xLabels.length - 1;
-                        while (stopper) {
-                          if (labelLength % 10 == 0) {
-                            stopper = false;
-                          } else {
-                            labelLength++;
-                            counter++;
-                          }
-                        }
-
-                        xLabels[xLabels.length - 1] = calculateMissingTimestamp(timestamp, counter);
-                      }
-                    }
-                  }],
-                  yAxes: [
-                    {
-                      id: 'y-axis-1',
-                      type: 'linear',
-                      display: true,
-                      position: 'left'
-                    }
-                  ]
-                },
-                tooltips: {
-                  enabled: true,
-                  mode: 'point',
-                  callbacks: {
-                    title: function (tooltipItem, data) { //picks right tool tip
-
-                      var vaue = $scope.tempLabelMap.get(tooltipItem[0].xLabel);
-                      return vaue;
-                    }
-                  }
-                },
-                legend: {
-                  display: true,
-                  position: "bottom"
-                }
-              };
-
-              $scope.temptestMap = new Map();
-              $scope.tempLabelMap = new Map();
-
-
-              tempArr.map(function (item, index) {
-                $scope.temptestMap.set(item, index);
-                $scope.tempLabelMap.set(index, item);
-              });
-
-              //process data for a side
-              var maxListA = [];
-              var minListA = [];
-              var avgListA = [];
-
-              dataA.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-
-                var test = $scope.temptestMap.get(timestamp);
-                if (test) {
-                  maxListA.push({ x: test, y: item._source['performance-data']['rf-temp-max'] });
-                  minListA.push({ x: test, y: item._source['performance-data']['rf-temp-min'] });
-                  avgListA.push({ x: test, y: item._source['performance-data']['rf-temp-avg'] });
-                } else {
-
-                  maxListA.push({ x: 0, y: item._source['performance-data']['rf-temp-max'] });
-                  minListA.push({ x: 0, y: item._source['performance-data']['rf-temp-min'] });
-                  avgListA.push({ x: 0, y: item._source['performance-data']['rf-temp-avg'] });
-                }
-              });
-
-              $scope.tempSeries.push('Rf temp max A', 'Rf temp min A', 'Rf temp avg A');
-
-
-              $scope.tempData.push(maxListA);
-              $scope.tempData.push(minListA);
-              $scope.tempData.push(avgListA);
-
-              $scope.tempDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.tempDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.tempDatasetOverride.push({ yAxisID: 'y-axis-1' });
-
-              //process data fro side b
-
-              var maxListB = [];
-              var minListB = [];
-              var avgListB = [];
-
-              dataB.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-                var test = $scope.temptestMap.get(timestamp);
-                if (test) {
-                  maxListB.push({ x: test, y: item._source['performance-data']['rf-temp-max'] });
-                  minListB.push({ x: test, y: item._source['performance-data']['rf-temp-min'] });
-                  avgListB.push({ x: test, y: item._source['performance-data']['rf-temp-avg'] });
-                } else {
-
-                  maxListB.push({ x: 0, y: item._source['performance-data']['rf-temp-max'] });
-                  minListB.push({ x: 0, y: item._source['performance-data']['rf-temp-min'] });
-                  avgListB.push({ x: 0, y: item._source['performance-data']['rf-temp-avg'] });
-                }
-              });
-
-              $scope.tempSeries.push('Rf temp max B', 'Rf temp min B', 'Rf temp avg B');
-
-
-
-              $scope.tempData.push(maxListB);
-              $scope.tempData.push(minListB);
-              $scope.tempData.push(avgListB);
-
-              $scope.tempDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.tempDatasetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.tempDatasetOverride.push({ yAxisID: 'y-axis-1' });
-
-              overridePoints($scope.tempSeries, $scope.tempDatasetOverride);
-            }
-              break;
-
-            case 'snir': {
-
-              $scope.snirChartData = [];
-              $scope.snirSeries = [];
-              $scope.snirsetOverride = [];
-
-              $scope.snirOptions = {
-                scales: {
-                  xAxes: [{
-                    type: 'linear',
-                    position: 'bottom',
-                    afterTickToLabelConversion: function (data) { //adds our custom timestamp labels
-
-                      var xLabels = data.ticks;
-                      xLabels.forEach(function (labels, i) {
-                        var timestamp = $scope.snirLabelMap.get(parseInt(labels));
-                        if (parseInt(labels) == labels)
-                          xLabels[i] = timestamp;
-                        else
-                          xLabels[i] = '';
-                      });
-
-                      //calculate last timestamp if label is missing
-                      if (xLabels[xLabels.length - 1] === undefined) {
-                        var timestamp = $scope.snirLabelMap.get($scope.snirLabelMap.size - 1);
-                        let stopper = true;
-                        let counter = 0;
-                        let labelLength = xLabels.length - 1;
-                        while (stopper) {
-                          if (labelLength % 10 == 0) {
-                            stopper = false;
-                          } else {
-                            labelLength++;
-                            counter++;
-                          }
-                        }
-
-                        xLabels[xLabels.length - 1] = calculateMissingTimestamp(timestamp, counter);
-                      }
-                    }
-                  }],
-                  yAxes: [
-                    {
-                      id: 'y-axis-1',
-                      type: 'linear',
-                      display: true,
-                      position: 'left'
-                    }
-                  ]
-                },
-                tooltips: {
-                  enabled: true,
-                  mode: 'point',
-                  callbacks: {
-                    title: function (tooltipItem, data) { //picks right tool tip
-
-                      var vaue = $scope.snirLabelMap.get(tooltipItem[0].xLabel);
-                      return vaue;
-                    }
-                  }
-                },
-                legend: {
-                  display: true,
-                  position: "bottom"
-                }
-              };
-
-              $scope.snirtestMap = new Map();
-              $scope.snirLabelMap = new Map();
-
-              tempArr.map(function (item, index) {
-                $scope.snirtestMap.set(item, index);
-                $scope.snirLabelMap.set(index, item);
-              });
-
-              var maxListA = [];
-              var minListA = [];
-              var avgListA = [];
-
-              dataA.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-
-                var test = $scope.snirtestMap.get(timestamp);
-                if (test) {
-                  maxListA.push({ x: test, y: item._source['performance-data']['rf-temp-max'] });
-                  minListA.push({ x: test, y: item._source['performance-data']['rf-temp-min'] });
-                  avgListA.push({ x: test, y: item._source['performance-data']['rf-temp-avg'] });
-                } else {
-                  maxListA.push({ x: 0, y: item._source['performance-data']['rf-temp-max'] });
-                  minListA.push({ x: 0, y: item._source['performance-data']['rf-temp-min'] });
-                  avgListA.push({ x: 0, y: item._source['performance-data']['rf-temp-avg'] });
-                }
-              });
-
-              $scope.snirSeries.push('Snir max A', 'Snir min A', 'Snir avg A');
-
-
-              $scope.snirChartData.push(maxListA);
-              $scope.snirChartData.push(minListA);
-              $scope.snirChartData.push(avgListA);
-
-              $scope.snirsetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.snirsetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.snirsetOverride.push({ yAxisID: 'y-axis-1' });
-
-              var maxListB = [];
-              var minListB = [];
-              var avgListB = [];
-
-              dataB.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-                var test = $scope.snirtestMap.get(timestamp);
-                if (test) {
-                  maxListB.push({ x: test, y: item._source['performance-data']['rf-temp-max'] });
-                  minListB.push({ x: test, y: item._source['performance-data']['rf-temp-min'] });
-                  avgListB.push({ x: test, y: item._source['performance-data']['rf-temp-avg'] });
-                } else {
-                  maxListB.push({ x: 0, y: item._source['performance-data']['rf-temp-max'] });
-                  minListB.push({ x: 0, y: item._source['performance-data']['rf-temp-min'] });
-                  avgListB.push({ x: 0, y: item._source['performance-data']['rf-temp-avg'] });
-                }
-              });
-
-              $scope.snirSeries.push('Snir max B', 'Snir min B', 'Snir avg B');
-
-
-
-              $scope.snirChartData.push(maxListB);
-              $scope.snirChartData.push(minListB);
-              $scope.snirChartData.push(avgListB);
-
-              $scope.snirsetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.snirsetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.snirsetOverride.push({ yAxisID: 'y-axis-1' });
-
-              overridePoints($scope.snirSeries, $scope.snirsetOverride);
-            }
-              break;
-
-            case 'crossPolarDiscrimination': {
-
-              $scope.xpdChartData = [];
-              $scope.xpdSeries = [];
-              $scope.crossPolarDiscriminationsetOverride = [];
-
-              $scope.xpdOptions = {
-                scales: {
-                  xAxes: [{
-
-                    type: 'linear',
-                    position: 'bottom',
-                    afterTickToLabelConversion: function (data) { //adds our custom timestamp labels
-
-                      var xLabels = data.ticks;
-                      xLabels.forEach(function (labels, i) {
-                        var timestamp = $scope.xpdLabelMap.get(parseInt(labels));
-                        if (parseInt(labels) == labels)
-                          xLabels[i] = timestamp;
-                        else
-                          xLabels[i] = '';
-
-                      });
-
-                      //calculate last timestamp if label is missing
-                      if (xLabels[xLabels.length - 1] === undefined) {
-                        var timestamp = $scope.xpdLabelMap.get($scope.xpdLabelMap.size - 1);
-                        let stopper = true;
-                        let counter = 0;
-                        let labelLength = xLabels.length - 1;
-                        while (stopper) {
-                          if (labelLength % 10 == 0) {
-                            stopper = false;
-                          } else {
-                            labelLength++;
-                            counter++;
-                          }
-                        }
-
-                        xLabels[xLabels.length - 1] = calculateMissingTimestamp(timestamp, counter);
-                      }
-                    }
-                  }],
-                  yAxes: [
-                    {
-                      id: 'y-axis-1',
-                      type: 'linear',
-                      display: true,
-                      position: 'left'
-                    }
-                  ]
-                },
-                tooltips: {
-                  enabled: true,
-                  mode: 'point',
-                  callbacks: {
-                    title: function (tooltipItem, data) { //picks right tool tip
-
-                      var vaue = $scope.xpdLabelMap.get(tooltipItem[0].xLabel);
-                      return vaue;
-                    }
-                  }
-                },
-                legend: {
-                  display: true,
-                  position: "bottom"
-                }
-              };
-
-              $scope.xpdtestMap = new Map();
-              $scope.xpdLabelMap = new Map();
-
-              tempArr.map(function (item, index) {
-                $scope.xpdtestMap.set(item, index);
-                $scope.xpdLabelMap.set(index, item);
-              });
-
-              var maxListA = [];
-              var minListA = [];
-              var avgListA = [];
-
-              dataA.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-
-                var test = $scope.xpdtestMap.get(timestamp);
-                if (test) {
-                  maxListA.push({ x: test, y: item._source['performance-data']['xpd-max'] });
-                  minListA.push({ x: test, y: item._source['performance-data']['xpd-min'] });
-                  avgListA.push({ x: test, y: item._source['performance-data']['xpd-avg'] });
-                } else {
-                  maxListA.push({ x: 0, y: item._source['performance-data']['xpd-max'] });
-                  minListA.push({ x: 0, y: item._source['performance-data']['xpd-min'] });
-                  avgListA.push({ x: 0, y: item._source['performance-data']['xpd-avg'] });
-                }
-              });
-
-              $scope.xpdSeries.push('CPD max A', 'CPD min A', 'CPD avg A');
-
-
-              $scope.xpdChartData.push(maxListA);
-              $scope.xpdChartData.push(minListA);
-              $scope.xpdChartData.push(avgListA);
-
-              $scope.crossPolarDiscriminationsetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.crossPolarDiscriminationsetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.crossPolarDiscriminationsetOverride.push({ yAxisID: 'y-axis-1' });
-
-              var maxListB = [];
-              var minListB = [];
-              var avgListB = [];
-
-              dataB.data.hits.hits.map(function (item, index) {
-                var timestamp = $mwtnPerformanceLink.formatTimeStamp(item._source['time-stamp']);
-                var test = $scope.xpdtestMap.get(timestamp);
-                if (test) {
-                  maxListB.push({ x: test, y: item._source['performance-data']['xpd-max'] });
-                  minListB.push({ x: test, y: item._source['performance-data']['xpd-min'] });
-                  avgListB.push({ x: test, y: item._source['performance-data']['xpd-avg'] });
-                } else {
-                  maxListB.push({ x: 0, y: item._source['performance-data']['xpd-max'] });
-                  minListB.push({ x: 0, y: item._source['performance-data']['xpd-min'] });
-                  avgListB.push({ x: 0, y: item._source['performance-data']['xpd-avg'] });
-                }
-              });
-
-              $scope.xpdSeries.push('CPD max B', 'CPD min B', 'CPD avg B');
-
-              $scope.xpdChartData.push(maxListB);
-              $scope.xpdChartData.push(minListB);
-              $scope.xpdChartData.push(avgListB);
-
-              $scope.crossPolarDiscriminationsetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.crossPolarDiscriminationsetOverride.push({ yAxisID: 'y-axis-1' });
-              $scope.crossPolarDiscriminationsetOverride.push({ yAxisID: 'y-axis-1' });
-
-              overridePoints($scope.xpdSeries, $scope.crossPolarDiscriminationsetOverride);
-
-            }
-              break;
-
-          }
-        };
-
-        var getColor = function (hexcolorCode) {
-          var color = {
-            backgroundColor: hexcolorCode, pointBackgroundColor: hexcolorCode,
-            pointHoverBackgroundColor: hexcolorCode,
-            borderColor: hexcolorCode,
-            pointBorderColor: hexcolorCode,
-            pointHoverBorderColor: hexcolorCode,
-            fill: false
-          };
-          return color;
-        };
-
-        var getData = function (from, size, networkElement, selectedLtpId) {
-
-          var sort = [{ "time-stamp": { order: 'desc' } }];
-
-          var query = { "query": { "bool": { "must": [{ prefix: { "node-name": networkElement } }] } } };
-
-
-          //add layer protocol selector to filter query
-          query.query.bool.must.push({ prefix: { "layer-protocol-name": "MWPS" } });
-
-          //add interface selector to filter query
-          if (selectedLtpId && selectedLtpId !== 'Select LTP') {
-            query.query.bool.must.push({ prefix: { "uuid-interface": selectedLtpId } });
-          }
-
-          var selected15minPeriod = true;
-          if ($scope.timePeriod !== $scope.timePeriods[0]) selected15minPeriod = false;
-
-          return $mwtnPerformanceLink.getFilteredSortedData(from, size, sort, query, selected15minPeriod);
-        };
-
-        $scope.status = { ne: false };
-        $scope.spinner = { ne: false };
-
-        // events  
-        $scope.$watch('linkId', function (newValue, oldValue) {
-          if (newValue && oldValue !== "" && newValue !== oldValue) {
-
-            var functionId = 'sdnperformance';
-            var docType = 'historicalperformance15min';
-            if ($scope.timePeriod !== $scope.timePeriods[0]) {
-              docType = 'historicalperformance24h';
-            }
-            var aggregations = {
-              "size":0,
-              "query": {
-                "match": {
-                  "radio-signal-id": newValue
-                }
-              },
-              "aggregations": {
-                "node-name": {
-                  "terms": {
-                    "field": "node-name"
-                  }
-                },
-                "ltp": {
-                  "terms": {
-                    "field": "uuid-interface"
-                  }
-                }
-              }
-            };
-            $mwtnPerformanceLink.getAggregations(functionId, docType, aggregations).then(function (success) {
-              console.log(JSON.stringify(success));
-              var nodes = success.data.aggregations['node-name'].buckets.map(function(bucket){
-                return bucket.key;
-              });
-              console.warn(nodes);
-              if (nodes.length = 0) {
-                $scope.networkElementA = '';
-                $scope.networkElementB = '';
-              } else if (nodes.length = 1) {
-                $scope.networkElementA = nodes[0];
-                $scope.networkElementB = '';
-              } else if (nodes.length = 2) {
-                $scope.networkElementA = nodes[0];
-                $scope.networkElementB = nodes[1]
-              } else {
-                $scope.networkElementA = nodes[0];
-                $scope.networkElementB = nodes[1]
-                console.warn('Check nodes for radio signal id: ' + newValue + ' ' + JSON.stringify(nodes));
-              }
-              var ltps  = success.data.aggregations['ltp'].buckets.map(function(bucket){
-                return bucket.key;
-              });
-              if (ltps.length = 0) {
-                $scope.selectedLtpIdA = '';
-                $scope.selectedLtpIdB = '';
-              } else if (ltps.length = 1) {
-                $scope.selectedLtpIdA = ltps[0];
-                $scope.selectedLtpIdB = ltps[0];
-              } else if (ltps.length = 2) {
-                // TODO Who belongs to whom - just guessing ;/
-                $scope.selectedLtpIdA = ltps[0];
-                $scope.selectedLtpIdB = ltps[1]
-              } else {
-                $scope.selectedLtpIdA = ltps[0];
-                $scope.selectedLtpIdB = ltps[1]
-                console.warn('Check ltps for radio signal id: ' + newValue + ' ' + JSON.stringify(nodes));
-              }
-            }, function (error) {
-              console.log(error);
-              $scope.networkElementA = '';
-              $scope.networkElementB = '';
-              $scope.selectedLtpIdA = '';
-              $scope.selectedLtpIdB = '';
-            });
-          }
-        });
-
-        $scope.$watch('selectedLtpIdA', function (newValue, oldValue) {
-          if (newValue && oldValue !== "" && newValue !== oldValue) {
-            //TODO: get data based on open grids
-            Object.keys($scope.status).map(function (key) {
-              if ($scope.status[key]) {
-                $scope.defaultColors = [];
-                $scope.defaultColors.push(getColor('#0062ff'));
-                $scope.defaultColors.push(getColor('#b9341b'));
-                $scope.defaultColors.push(getColor('#f0141f'));
-                $scope.defaultColors.push(getColor('#4c7759'));
-                $scope.defaultColors.push(getColor('#55b64e'));
-                $scope.defaultColors.push(getColor("#6c8995"));
-
-                getDataFromNEs($scope.networkElementIdA, $scope.selectedLtpIdA, $scope.networkElementIdB, $scope.selectedLtpIdB, key)
-                $window.dispatchEvent(new Event("resize"));
-              }
-            });
-          }
-
-        }, true);
-
-        $scope.$watch('selectedLtpIdB', function (newValue, oldValue) {
-          if (newValue && oldValue !== "" && newValue !== oldValue && newValue != 'Select LTP') {
-            Object.keys($scope.status).map(function (key) {
-              if ($scope.status[key]) {
-                $scope.defaultColors = [];
-                $scope.defaultColors.push(getColor('#0062ff'));
-                $scope.defaultColors.push(getColor('#b9341b'));
-                $scope.defaultColors.push(getColor('#f0141f'));
-                $scope.defaultColors.push(getColor('#4c7759'));
-                $scope.defaultColors.push(getColor('#55b64e'));
-                $scope.defaultColors.push(getColor("#6c8995"));
-
-                getDataFromNEs($scope.networkElementIdA, $scope.selectedLtpIdA, $scope.networkElementIdB, $scope.selectedLtpIdB, key)
-                $window.dispatchEvent(new Event("resize"));
-              }
-            });
-          }
-
-        }, true);
-
-        $scope.$watch('status', function (status, oldValue) {
-          Object.keys(status).map(function (key) {
-            if ($scope.networkElementIdA && $scope.networkElementIdB && status[key] && status[key] !== oldValue[key]) {
-
-
-              //add a set of default colors for line graphs with 6 values
-              $scope.defaultColors = [];
-              $scope.defaultColors.push(getColor('#0062ff'));
-              $scope.defaultColors.push(getColor('#b9341b'));
-              $scope.defaultColors.push(getColor('#f0141f'));
-              $scope.defaultColors.push(getColor('#4c7759'));
-              $scope.defaultColors.push(getColor('#55b64e'));
-              $scope.defaultColors.push(getColor("#6c8995"));
-
-              getDataFromNEs($scope.networkElementIdA, $scope.selectedLtpIdA, $scope.networkElementIdB, $scope.selectedLtpIdB, key)
-              $window.dispatchEvent(new Event("resize"));
-
-            }
-
-          });
-        }, true);
-
-        $scope.$watch('timePeriod', function (newValue, oldValue) {
-
-          if (newValue && oldValue !== "" && newValue !== oldValue) {
-
-            //change page sizes and tell gridapi to update
-
-            $scope.gridOptionsReceiveLevel.paginationPageSizes = $scope.pageSizes();
-            $scope.gridOptionsReceiveLevel.paginationPageSize = $scope.gridOptionsReceiveLevel.paginationPageSizes[0];
-            $scope.recvGridApi.core.notifyDataChange(uiGridConstants.dataChange.OPTIONS);
-
-            $scope.gridOptionsTransmissionLevel.paginationPageSizes = $scope.pageSizes();
-            $scope.gridOptionsTransmissionLevel.paginationPageSize = $scope.gridOptionsTransmissionLevel.paginationPageSizes[0];
-            $scope.transmissionGridApi.core.notifyDataChange(uiGridConstants.dataChange.OPTIONS);
-
-
-            $scope.gridOptionsModulation.paginationPageSizes = $scope.pageSizes();
-            $scope.gridOptionsModulation.paginationPageSize = $scope.gridOptionsModulation.paginationPageSizes[0];
-            $scope.gridApi.core.notifyDataChange(uiGridConstants.dataChange.OPTIONS);
-
-            $scope.gridOptionsTemperature.paginationPageSizes = $scope.pageSizes();
-            $scope.gridOptionsTemperature.paginationPageSize = $scope.gridOptionsTemperature.paginationPageSizes[0];
-            $scope.gridTemperatureApi.core.notifyDataChange(uiGridConstants.dataChange.OPTIONS);
-
-            $scope.gridOptionsSnir.paginationPageSizes = $scope.pageSizes();
-            $scope.gridOptionsSnir.paginationPageSize = $scope.gridOptionsSnir.paginationPageSizes[0];
-            $scope.gridSNIRApi.core.notifyDataChange(uiGridConstants.dataChange.OPTIONS);
-
-            $scope.gridOptionsCrossPolarDiscrimination.paginationPageSizes = $scope.pageSizes();
-            $scope.gridOptionsCrossPolarDiscrimination.paginationPageSize = $scope.gridOptionsCrossPolarDiscrimination.paginationPageSizes[0];
-            $scope.gridXpdApi.core.notifyDataChange(uiGridConstants.dataChange.OPTIONS);
-
-            //get new interface data
-            getInterfaces($scope.networkElementIdA, $scope.availableLtpIdsA);
-            getInterfaces($scope.networkElementIdB, $scope.availableLtpIdsB);
-          }
-
-        }, true);
-
-        $scope.collapseAll = function () {
-          // close all groups
-          Object.keys($scope.status).map(function (group) {
-            $scope.status[group] = false;
-          });
-          Object.keys($scope.spinner).map(function (group) {
-            $scope.spinner[group] = false;
-          });
-        };
-
-        //get data on ne selection
-
-        $scope.$watch('networkElementA', function (neId, oldValue) {
-          if (neId && neId !== '' && neId !== oldValue) {
-            var revision;
-            $scope.networkElements.map(function (ne) {
-              if (ne.id === neId) revision = ne.revision;
-            });
-            $scope.networkElementIdA = neId;
-            $scope.revisionA = revision;
-
-            getInterfaces(neId, $scope.availableLtpIdsA);
-            $scope.collapseAll();
-
-          }
-        });
-
-        $scope.$watch('networkElementB', function (neId, oldValue) {
-          if (neId && neId !== '' && neId !== oldValue) {
-            var revision;
-            $scope.networkElements.map(function (ne) {
-              if (ne.id === neId) revision = ne.revision;
-            });
-            $scope.networkElementIdB = neId;
-            $scope.revisionB = revision;
-
-            getInterfaces(neId, $scope.availableLtpIdsB);
-            $scope.collapseAll();
-
-          }
-        });
-
-        var getInterfaces = function (networkElement, networkList) {
-
-          //clear interface array
-          var length = networkList.length;
-          networkList.splice(1, length);
-
-          //request to get interfaces
-          var aggr = {
-            "size": 0,
-            "aggregations": {
-              "neinterfaces": {
-                "filter": {
-                  "bool": {
-                    "must": [
-                      {
-                        "term": {
-                          "node-name": networkElement
-                        }
-                      },
-                      {
-                        "term": {
-                          "layer-protocol-name": "MWPS"
-                        }
-                      }
-                    ]
-                  }
-                },
-                "aggregations": {
-                  "interfaces": {
-                    "terms": {
-                      "field": "uuid-interface"
-                    }
-                  }
-                }
-              }
-            }
-          };
-
-
-          var selected15minPeriod = true;
-          if ($scope.timePeriod !== $scope.timePeriods[0]) selected15minPeriod = false;
-
-          $mwtnPerformanceLink.getInterfaces(aggr, selected15minPeriod).then(function (response) {
-
-            if (response.data.aggregations.neinterfaces.interfaces.buckets.length >= 0) {
-              response.data.aggregations.neinterfaces.interfaces.buckets.map(function (item) {
-                networkList.push(item.key);
-              });
-            }
-
-
-          });
-        };
-
-
-      }]);
-  });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.module.js
deleted file mode 100644 (file)
index 34a0d58..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var mwtnPerformanceLinkApp = angular.module('app.mwtnPerformanceLink', ['ui.grid','chart.js', 'ui.bootstrap', 'app.core', 'ui.router.state', 'config', 'ui.router.state','ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns', 'ui.grid.pagination']);
-
-  mwtnPerformanceLinkApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnPerformanceLinkApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-
-    };
-
-    NavHelperProvider.addControllerUrl('app/mwtnPerformanceLink/mwtnPerformanceLink.controller');
-    NavHelperProvider.addToMenu('mwtnPerformanceLink', {
-     "link" : "#/pnfPerformanceLink",
-     "active" : "main.mwtnPerformanceLink",
-     "title" : "pnf PM Link",
-     "icon" : "fa fa-bar-chart",  // Add navigation icon css class here
-     "page" : {
-        "title" : "pnf PM Link",
-        "description" : "mwtnLinkPerformance"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnPerformanceLink', {
-        url: 'pnfPerformanceLink',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/mwtnPerformanceLink/mwtnPerformanceLink.tpl.html',
-                controller: 'mwtnPerformanceLinkCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnPerformanceLinkApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.services.js
deleted file mode 100644 (file)
index eb18b62..0000000
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (c) 2016 HCL Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCommons/mwtnCommons.module', 'app/mwtnPerformanceLink/mwtnPerformanceLink.module'], function (mwtnPerformanceLinkApp) {
-
-  mwtnPerformanceLinkApp.register.factory('$mwtnPerformanceLink', function ($q, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-
-    var COMPONENT = '$mwtnPerformanceLink';
-    $mwtnLog.info({ component: COMPONENT, message: '$mwtnPerformanceLink started!' });
-
-    var service = {};
-    service.formatTimeStamp = $mwtnCommons.formatTimeStamp;
-    service.getMountPoints = $mwtnCommons.getMountPoints;
-    service.getAggregations = $mwtnDatabase.getAggregations;
-    
-
-    service.TimeStampToONFFormat = function (timestamp) {
-      timestamp = timestamp.split('-').join('');
-      timestamp = timestamp.split(':').join('');
-      timestamp = timestamp.split(' ').join('');
-      timestamp = timestamp.replace('UTC', 'Z');
-      return timestamp;
-    };
-
-    service.getFilteredSortedData = function (from, size, sort, query, selected15minPeriod) {
-
-      var functionId = 'sdnperformance';
-      var docType = 'historicalperformance15min';
-      if (selected15minPeriod === false) {
-        docType = 'historicalperformance24h';
-      }
-
-      var deferred = $q.defer();
-      $mwtnDatabase.getFilteredSortedData(functionId, docType, from, size, sort, query).then(function (success) {
-        deferred.resolve(success);
-      }, function (error) {
-        $mwtnLog.error({ component: '$mwtnPerformanceLink.getFilteredSortedData', message: JSON.stringify(error.data) });
-        deferred.reject(error)
-      });
-      return deferred.promise;
-    };
-
-    service.getInterfaces = function (aggregation, selected15minPeriod) {
-
-      var functionId = 'sdnperformance';
-      var docType = 'historicalperformance15min';
-      if (selected15minPeriod === false) {
-        docType = 'historicalperformance24h';
-      }
-
-      var deferred = $q.defer();
-      $mwtnDatabase.getAggregatedData(functionId, docType, aggregation).then(function (success) {
-        deferred.resolve(success);
-      }, function (error) {
-        $mwtnLog.error({ component: '$mwtnPerformanceLink.getFilteredSortedData', message: JSON.stringify(error.data) });
-        deferred.reject(error)
-      });
-      return deferred.promise;
-    };
-
-    return service;
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/mwtnPerformanceLink-module/src/main/resources/mwtnPerformanceLink/mwtnPerformanceLink.tpl.html
deleted file mode 100644 (file)
index a65d5cf..0000000
+++ /dev/null
@@ -1,487 +0,0 @@
-<ht-header help-link='sdnr/pnfPerformance/0.4.0/README.md'></ht-header>
-<div class="owl container">
-
-<!--   input for link id 
-  <div class="row">
-                <div class="col-md-2 text-right radio">
-      <span>{{'MWTN_LINK_IDENTIFIER' | translate }}</span>
-    </div>
-    <div class="col-md-4">
-      <div class="form-group">
-                        <input list="linkIds" class="form-control" ng-model="linkId">
-       <datalist id="linkIds">
-                          <option ng-repeat="linkId in linkIds" value="{{linkId}}" >{{linkId}}</option>
-       </datalist>
-      </div>
-    </div>
-       </div> -->
-
-  <div class="row">
-               <div class="col-md-2 text-right radio">
-                       <span class="white">{{'MWTN_NETWORKELEMENT' | translate}} A</span>
-               </div>
-               <div class="col-md-4">
-                       <div class="form-group">
-        <input list="networkElementsA" class="form-control" ng-model="networkElementA" placeholder="Select network element">
-        <datalist id="networkElementsA">
-          <option ng-repeat="ne in networkElements" value="{{ne.id}}">{{ne.id}}</option>
-        </datalist>
-                       </div>
-               </div>
-               
-       <div class="col-md-2 text-right radio">
-                       <span class="white">{{'MWTN_NETWORKELEMENT' | translate}} B</span>
-               </div>
-               <div class="col-md-4">
-                       <div class="form-group">
-        <input list="networkElementsB" class="form-control" ng-model="networkElementB" placeholder="Select network element">
-        <datalist id="networkElementsB">
-          <option ng-repeat="ne in networkElements" value="{{ne.id}}">{{ne.id}}</option>
-        </datalist>
-                       </div>
-               </div>
-
-       </div>
-       <div class="row">
-                       <div class="col-md-2 text-right radio">
-                       <span class="white">{{'MWTN_AIR_INTERFACE' | translate }} A</span>
-               </div>
-               <div class="col-md-4">
-                       <div class="form-group">
-                               <select class="form-control" ng-model="selectedLtpIdA">
-                               <option ng-repeat="protocol in availableLtpIdsA">{{protocol}}</option>
-                               </select>
-                       </div>
-               </div>
-
-
-       <div class="col-md-2 text-right radio">
-                       <span class="white">{{'MWTN_AIR_INTERFACE' | translate }} B</span>
-               </div>
-               <div class="col-md-4">
-                       <div class="form-group">
-                               <select class="form-control" ng-model="selectedLtpIdB">
-                               <option ng-repeat="protocol in availableLtpIdsB">{{protocol}}</option>
-                               </select>
-                       </div>
-               </div>
-       </div>
-
-       <div class="row">
-                <div class="col-md-2 text-right radio">
-      <span class="white">{{'MWTN_TIME_PERIOD' | translate}}</span>
-    </div>
-    <div class="col-md-2">
-      <div class="form-group">
-        <select class="form-control" ng-model="timePeriod">
-          <option ng-repeat="time in timePeriods">{{time}}</option>
-        </select>
-      </div>
-    </div>
-       </div>
-
-       <div class="row" ng-if="networkElementA && networkElementB && selectedLtpIdA !== 'Select LTP' && selectedLtpIdB !== 'Select LTP' ">
-               <uib-accordion close-others="true">
-                                       <div uib-accordion-group class="panel-primary" is-open="status.receiveLevel">
-                               <uib-accordion-heading> <i class="pull-left fa"
-                                           ng-class="{'fa-chevron-down': status.receiveLevel, 'fa-chevron-right': !status.receiveLevel}"></i>
-                                               <span>Receive Level</span>
-                                         <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.receiveLevel"></i>
-                                       </uib-accordion-heading>
-                                                                       <canvas id="line" 
-                                                                                       class="chart chart-line" 
-                                                                                       chart-data="receiveData"
-                                                                                       chart-series="receiveSeries" 
-                                                                                       chart-options="receiveOptions"
-                                                                                       chart-dataset-override="receiveDatasetOverride" 
-                                                                                       chart-colors="defaultColors">
-                                                                       </canvas
-                                       </div> <!-- canvas bugs with div, please keep in!-->
-
-                                       <div 
-                                                 ui-grid="gridOptionsReceiveLevel"
-                                                   ui-grid-pagination 
-                                           ui-grid-exporter 
-                                                   ui-grid-selection 
-                                           ui-grid-pinning 
-                    ui-grid-resize-columns 
-                    ui-grid-move-columns class="mwtnLinkGrid">
-                                          </div>
-
-              <!-- pagniation controll for grid-->
-                                           <div class="ht-pagination">
-                  <button class="btn btn-default"
-                       ng-disabled="gridOptionsReceiveLevel.paginationCurrentPage === 1"
-                       ng-click="recvGridApi.pagination.seek(1)"
-                       ng-class="{'cancelCursor':gridOptionsReceiveLevel.paginationCurrentPage === 1}"
-                       role="menuitem" type="button" title="Page to first" aria-label="Page to first">
-                         <i class="fa fa-step-backward "></i>
-                 </button>
-                 <button class="btn btn-default"
-                     ng-disabled="gridOptionsReceiveLevel.paginationCurrentPage === 1"
-                     ng-class="{'cancelCursor':gridOptionsReceiveLevel.paginationCurrentPage === 1}"
-                     ng-click="recvGridApi.pagination.previousPage()"
-                     role="menuitem" type="button" title="Previous Page" aria-label="Previous Page">
-                      <i class="fa fa-play fa-rotate-180 "></i>
-                 </button>
-                 <input class="btn btn-default" style="text-align:right;"  border="1" 
-                     ng-model="gridOptionsReceiveLevel.paginationCurrentPage"
-                     ng-change="seekPage(gridOptionsReceiveLevel.paginationCurrentPage,'receiveLevel')"
-                     type="number" style="width:20px;"/>
-                                    <span class="dark">&nbsp;/ {{ recvGridApi.pagination.getTotalPages() }}</span>
-                <button class="btn btn-default" role="menuitem" type="button" title="Next Page" aria-label="Next Page"
-                      ng-disabled="gridOptionsReceiveLevel.paginationCurrentPage === recvGridApi.pagination.getTotalPages()"
-                      ng-click="recvGridApi.pagination.nextPage()">
-                    <i class="fa fa-play "></i>
-                </button>
-                <button class="btn btn-default" ng-disabled="gridOptionsReceiveLevel.paginationCurrentPage === recvGridApi.pagination.getTotalPages()"
-                        ng-click="recvGridApi.pagination.seek(recvGridApi.pagination.getTotalPages())"
-                        role="menuitem" type="button" title="Page to last" aria-label="Page to last">
-                  <i class="fa fa-step-forward "></i>
-                </button>
-               <select 
-                  class="btn btn-default" name="repeatSelect" id="repeatSelect" 
-                  ng-init="gridOptionsReceiveLevel.paginationPageSize = gridOptionsReceiveLevel.paginationPageSizes[0]" 
-                  ng-model="gridOptionsReceiveLevel.paginationPageSize" 
-                  ng-options="option for option in gridOptionsReceiveLevel.paginationPageSizes"></select>
-                <span class="dark"> {{ itemsMessage() }}</span>
-                <span class="pull-right dark">{{ paginationStatusMessage('receiveLevel') }}</span>
-            </div>             
-                                       </div>
-
-                                       <div uib-accordion-group class="panel-primary" is-open="status.transmissionLevel">
-              <uib-accordion-heading> <i class="pull-left fa"
-                  ng-class="{'fa-chevron-down': status.transmissionLevel, 'fa-chevron-right': !status.transmissionLevel}"></i>
-                  <span>Transmission Power</span>
-                  <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.transmissionLevel"></i>
-                  </uib-accordion-heading>
-                  <canvas id="line" 
-                          class="chart chart-line" 
-                          chart-data="transmissionData"
-                          chart-series="transmissionSeries" 
-                          chart-options="transmissionOptions"
-                          chart-dataset-override="transmissionDatasetOverride" 
-                          chart-colors="defaultColors">
-                  </canvas
-                  </div> <!-- canvas bugs with div, please keep in!-->
-                  <div 
-                        ui-grid="gridOptionsTransmissionLevel"
-                        ui-grid-pagination 
-                        ui-grid-exporter 
-                        ui-grid-selection 
-                        ui-grid-pinning 
-                        ui-grid-resize-columns 
-                        ui-grid-move-columns class="mwtnLinkGrid">
-                </div>
-                  <!-- pagniation controll for grid-->
-                                               <div class="ht-pagination">
-                <button class="btn btn-default"
-                      ng-disabled="gridOptionsTransmissionLevel.paginationCurrentPage === 1"
-                      ng-click="transmissionGridApi.pagination.seek(1)"
-                      ng-class="{'cancelCursor':gridOptionsTransmissionLevel.paginationCurrentPage === 1}"
-                      role="menuitem" type="button" title="Page to first" aria-label="Page to first">
-                  <i class="fa fa-step-backward "></i>
-                </button>
-                <button class="btn btn-default"
-                      ng-disabled="gridOptionsTransmissionLevel.paginationCurrentPage === 1"
-                      ng-class="{'cancelCursor':gridOptionsTransmissionLevel.paginationCurrentPage === 1}"
-                      ng-click="transmissionGridApi.pagination.previousPage()"
-
-                      role="menuitem" type="button" title="Previous Page" aria-label="Previous Page">
-                  <i class="fa fa-play fa-rotate-180 "></i>
-                </button>
-                <input class="btn btn-default" style="text-align:right;"  border="1" 
-                    ng-model="gridOptionsTransmissionLevel.paginationCurrentPage"
-                    ng-change="seekPage(gridOptionsTransmissionLevel.paginationCurrentPage,'transmissionLevel')"
-                      type="number" style="width:20px;"/>
-                <span class="dark">&nbsp;/ {{ transmissionGridApi.pagination.getTotalPages() }}</span>
-
-                <button class="btn btn-default" role="menuitem" type="button" title="Next Page" aria-label="Next Page"
-                      ng-disabled="gridOptionsTransmissionLevel.paginationCurrentPage === transmissionGridApi.pagination.getTotalPages()"
-                      ng-click="transmissionGridApi.pagination.nextPage()">
-                    <i class="fa fa-play "></i>
-                </button>
-                <button class="btn btn-default" ng-disabled="gridOptionsTransmissionLevel.paginationCurrentPage === transmissionGridApi.pagination.getTotalPages()"
-                      ng-click="transmissionGridApi.pagination.seek(transmissionGridApi.pagination.getTotalPages())"
-                      role="menuitem" type="button" title="Page to last" aria-label="Page to last">
-                  <i class="fa fa-step-forward "></i>
-                </button>
-                <select 
-                  class="btn btn-default" name="repeatSelect" 
-                  ng-init="gridOptionsTransmissionLevel.paginationPageSize = gridOptionsTransmissionLevel.paginationPageSizes[0]" 
-                  ng-model="gridOptionsTransmissionLevel.paginationPageSize" 
-                  ng-options="option for option in gridOptionsTransmissionLevel.paginationPageSizes"></select>
-              
-                <span class="dark"> {{ itemsMessage() }}</span>
-                <span class="pull-right dark">{{ paginationStatusMessage('transmissionLevel') }}</span>
-               </div>          
-                                       </div>
-
-                                       <div uib-accordion-group class="panel-primary" is-open="status.modulation">
-                               <uib-accordion-heading> <i class="pull-left fa"
-                                         ng-class="{'fa-chevron-down': status.modulation, 'fa-chevron-right': !status.modulation}"></i>
-                                               <span>Adaptive Modulation</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.modulation"></i>
-                                       </uib-accordion-heading>
-                                                       <canvas id="line" 
-                                                                                       class="chart chart-line" 
-                                                                                       chart-data="modulationData"
-                                                                                       chart-series="modultaionSeries" 
-                                                                                       chart-options="modulationOptions"
-                                                                                       chart-dataset-override="modulationDatasetOverride">
-                                                       </canvas
-                                                       </div> <!-- canvas bugs with div, please keep in!-->
-                                               <div 
-                                               ui-grid="gridOptionsModulation"
-                                                   ui-grid-pagination 
-                                           ui-grid-exporter 
-                                                   ui-grid-selection 
-                                           ui-grid-pinning 
-                    ui-grid-resize-columns 
-                    ui-grid-move-columns class="mwtnLinkGrid">
-                                          </div>
-               <!-- pagniation controll for grid-->
-                                               <div class="ht-pagination">
-              <button class="btn btn-default"
-                    ng-disabled="gridOptionsModulation.paginationCurrentPage === 1"
-                    ng-click="gridApi.pagination.seek(1)"
-                    ng-class="{'cancelCursor':gridOptionsModulation.paginationCurrentPage === 1}"
-                    role="menuitem" type="button" title="Page to first" aria-label="Page to first">
-                <i class="fa fa-step-backward "></i>
-              </button>
-              <button class="btn btn-default"
-                    ng-disabled="gridOptionsModulation.paginationCurrentPage === 1"
-                    ng-class="{'cancelCursor':gridOptionsModulation.paginationCurrentPage === 1}"
-                    ng-click="gridApi.pagination.previousPage()"
-                    role="menuitem" type="button" title="Previous Page" aria-label="Previous Page">
-                <i class="fa fa-play fa-rotate-180 "></i>
-              </button>
-              <input class="btn btn-default" style="text-align:right;"  border="1" 
-                  ng-model="gridOptionsModulation.paginationCurrentPage"
-                  ng-change="seekPage(gridOptionsModulation.paginationCurrentPage,'modulation')"
-                  type="number" style="width:20px;"/>
-              <span class="dark">&nbsp;/ {{ gridApi.pagination.getTotalPages() }}</span>
-              <button class="btn btn-default" role="menuitem" type="button" title="Next Page" aria-label="Next Page"
-                    ng-disabled="gridOptionsModulation.paginationCurrentPage === gridApi.pagination.getTotalPages()"
-                    ng-click="gridApi.pagination.nextPage()">
-                  <i class="fa fa-play "></i>
-              </button>
-              <button class="btn btn-default" ng-disabled="gridOptionsModulation.paginationCurrentPage === gridApi.pagination.getTotalPages()"
-                    ng-click="gridApi.pagination.seek(gridApi.pagination.getTotalPages())"
-                    role="menuitem" type="button" title="Page to last" aria-label="Page to last">
-                <i class="fa fa-step-forward "></i>
-              </button>
-              <select 
-                class="btn btn-default" name="repeatSelect" 
-                ng-init="gridOptionsModulation.paginationPageSize = gridOptionsModulation.paginationPageSizes[0]" 
-                ng-model="gridOptionsModulation.paginationPageSize" 
-                ng-options="option for option in gridOptionsModulation.paginationPageSizes"></select>
-              <span class="dark"> {{ itemsMessage() }}</span>
-              <span class="pull-right dark">{{ paginationStatusMessage('modulation') }}</span>
-            </div>             
-                                       </div>
-
-                                       <div uib-accordion-group class="panel-primary" is-open="status.temperature">
-                               <uib-accordion-heading> <i class="pull-left fa"
-                                         ng-class="{'fa-chevron-down': status.temperature, 'fa-chevron-right': !status.temperature}"></i>
-                                               <span>Temperature</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.temperature"></i>
-                                       </uib-accordion-heading>
-                                                       <canvas id="line" 
-                                                                                       class="chart chart-line" 
-                                                                                       chart-data="tempData"
-                                                                                       chart-series="tempSeries" 
-                                                                                       chart-options="tempOptions"
-                                                                                       chart-dataset-override="tempDatasetOverride" 
-                                                                                       chart-colors="defaultColors">
-                                                       </canvas
-                                       </div> <!-- canvas bugs with div, please keep in!-->
-                                               <div 
-                                                 ui-grid="gridOptionsTemperature"
-                                                   ui-grid-pagination 
-                                           ui-grid-exporter 
-                                                   ui-grid-selection 
-                                           ui-grid-pinning 
-                    ui-grid-resize-columns 
-                    ui-grid-move-columns  
-                    class="mwtnLinkGrid">
-                                          </div>
-               <!-- pagniation controll for grid-->
-                                               <div class="ht-pagination">
-                <button class="btn btn-default"
-                      ng-disabled="gridOptionsTemperature.paginationCurrentPage === 1"
-                      ng-click="gridTemperatureApi.pagination.seek(1)"
-                      ng-class="{'cancelCursor':gridOptionsTemperature.paginationCurrentPage === 1}"
-                      role="menuitem" type="button" title="Page to first" aria-label="Page to first">
-                  <i class="fa fa-step-backward "></i>
-                </button>
-                <button class="btn btn-default"
-                      ng-disabled="gridOptionsTemperature.paginationCurrentPage === 1"
-                      ng-class="{'cancelCursor':gridOptionsTemperature.paginationCurrentPage === 1}"
-                      ng-click="gridTemperatureApi.pagination.previousPage()"
-                      role="menuitem" type="button" title="Previous Page" aria-label="Previous Page">
-                  <i class="fa fa-play fa-rotate-180 "></i>
-                </button>
-                <input class="btn btn-default" style="text-align:right;"  border="1" 
-                    ng-model="gridOptionsTemperature.paginationCurrentPage"
-                    ng-change="seekPage(gridOptionsTemperature.paginationCurrentPage,'temperature')"
-                      type="number" style="width:20px;"/>
-                <span class="dark">&nbsp;/ {{ gridTemperatureApi.pagination.getTotalPages() }}</span>
-                <button class="btn btn-default" role="menuitem" type="button" title="Next Page" aria-label="Next Page"
-                      ng-disabled="gridOptionsTemperature.paginationCurrentPage === gridTemperatureApi.pagination.getTotalPages()"
-                      ng-click="gridTemperatureApi.pagination.nextPage()">
-                    <i class="fa fa-play "></i>
-                </button>
-                <button class="btn btn-default" ng-disabled="gridOptionsTemperature.paginationCurrentPage === gridTemperatureApi.pagination.getTotalPages()"
-                      ng-click="gridTemperatureApi.pagination.seek(gridTemperatureApi.pagination.getTotalPages())"
-                      role="menuitem" type="button" title="Page to last" aria-label="Page to last">
-                  <i class="fa fa-step-forward "></i>
-                </button>
-                <select 
-                  class="btn btn-default" name="repeatSelect" 
-                  ng-init="gridOptionsTemperature.paginationPageSize = gridOptionsTemperature.paginationPageSizes[0]" 
-                  ng-model="gridOptionsTemperature.paginationPageSize" 
-                  ng-options="option for option in gridOptionsTemperature.paginationPageSizes"></select>
-                <span class="dark"> {{ itemsMessage() }}</span>
-                <span class="pull-right dark">{{ paginationStatusMessage('temperature') }}</span>
-             </div>            
-                                       </div>
-
-                                       <div uib-accordion-group class="panel-primary" is-open="status.snir">
-                               <uib-accordion-heading> <i class="pull-left fa"
-                                         ng-class="{'fa-chevron-down': status.snir, 'fa-chevron-right': !status.snir}"></i>
-              <span>{{'MWTN_SINR' | translate}}</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.snir"></i>
-                                       </uib-accordion-heading>
-                                                                  <canvas id="line" 
-                                                                                       class="chart chart-line" 
-                                                                                       chart-data="snirChartData"
-                                                                                       chart-series="snirSeries" 
-                                                                                       chart-options="snirOptions"
-                                                                                       chart-dataset-override="snirsetOverride" 
-                                                                                       chart-colors="defaultColors">
-                                                                       </canvas
-                                               </div> <!-- canvas bugs with div, please keep in!-->
-                                                       <div 
-                                               ui-grid="gridOptionsSnir"
-                                                   ui-grid-pagination 
-                                           ui-grid-exporter 
-                                                   ui-grid-selection 
-                                           ui-grid-pinning 
-                    ui-grid-resize-columns 
-                    ui-grid-move-columns  
-                    class="mwtnLinkGrid">
-                                              </div>   
-                   <!-- pagniation controll for grid-->                                                           
-               <div class="ht-pagination">
-                <button class="btn btn-default"
-                      ng-disabled="gridOptionsSnir.paginationCurrentPage === 1"
-                      ng-click="gridSNIRApi.pagination.seek(1)"
-                      ng-class="{'cancelCursor':gridOptionsSnir.paginationCurrentPage === 1}"
-                      role="menuitem" type="button" title="Page to first" aria-label="Page to first">
-                  <i class="fa fa-step-backward "></i>
-                </button>
-                <button class="btn btn-default"
-                      ng-disabled="gridOptionsSnir.paginationCurrentPage === 1"
-                      ng-class="{'cancelCursor':gridOptionsSnir.paginationCurrentPage === 1}"
-                      ng-click="gridSNIRApi.pagination.previousPage()"
-                      role="menuitem" type="button" title="Previous Page" aria-label="Previous Page">
-                  <i class="fa fa-play fa-rotate-180 "></i>
-                </button>
-                <input class="btn btn-default" style="text-align:right;"  border="1" 
-                    ng-model="gridOptionsSnir.paginationCurrentPage"
-                    ng-change="seekPage(gridOptionsSnir.paginationCurrentPage,'snir')"
-                      type="number" style="width:20px;"/>
-                <span class="dark">&nbsp;/ {{ gridSNIRApi.pagination.getTotalPages() }}</span>
-                <button class="btn btn-default" role="menuitem" type="button" title="Next Page" aria-label="Next Page"
-                      ng-disabled="gridOptionsSnir.paginationCurrentPage === gridSNIRApi.pagination.getTotalPages()"
-                      ng-click="gridSNIRApi.pagination.nextPage()">
-                    <i class="fa fa-play "></i>
-                </button>
-                <button class="btn btn-default" ng-disabled="gridOptionsSnir.paginationCurrentPage === gridSNIRApi.pagination.getTotalPages()"
-                      ng-click="gridSNIRApi.pagination.seek(gridSNIRApi.pagination.getTotalPages())"
-                      role="menuitem" type="button" title="Page to last" aria-label="Page to last">
-                  <i class="fa fa-step-forward "></i>
-                </button>
-                <select 
-                  class="btn btn-default" name="repeatSelect" 
-                  ng-init="gridOptionsSnir.paginationPageSize = gridOptionsSnir.paginationPageSizes[0]" 
-                  ng-model="gridOptionsSnir.paginationPageSize" 
-                  ng-options="option for option in gridOptionsSnir.paginationPageSizes"></select>
-                <span class="dark"> {{ itemsMessage() }}</span>
-                <span class="pull-right dark">{{ paginationStatusMessage('snir') }}</span>
-              </div>   
-                                       </div>
-
-                                       <div uib-accordion-group class="panel-primary" is-open="status.crossPolarDiscrimination">
-                               <uib-accordion-heading> <i class="pull-left fa"
-                                         ng-class="{'fa-chevron-down': status.crossPolarDiscrimination, 'fa-chevron-right': !status.crossPolarDiscrimination}"></i>
-                                               <span>Cross Polar Discrimination</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.crossPolarDiscrimination"></i>
-                                       </uib-accordion-heading>                                                
-                                                       <canvas id="line" 
-                                                                                       class="chart chart-line" 
-                                                                                       chart-data="xpdChartData"
-                                                                                       chart-series="xpdSeries" 
-                                                                                       chart-options="xpdOptions"
-                                                                                       chart-dataset-override="crossPolarDiscriminationsetOverride" 
-                                                                                       chart-colors="defaultColors">
-                                                       </canvas
-                                       </div> <!-- canvas bugs with div, please keep in!-->
-                                                       <div 
-                                               ui-grid="gridOptionsCrossPolarDiscrimination"
-                                                   ui-grid-pagination 
-                                           ui-grid-exporter 
-                                                   ui-grid-selection 
-                                           ui-grid-pinning 
-                    ui-grid-resize-columns 
-                    ui-grid-move-columns  
-                    class="mwtnLinkGrid">
-                                          </div>
-               <!-- pagniation controll for grid-->
-                                          <div class="ht-pagination">
-                <button class="btn btn-default"
-                      ng-disabled="gridOptionsCrossPolarDiscrimination.paginationCurrentPage === 1"
-                      ng-click="gridXpdApi.pagination.seek(1)"
-                      ng-class="{'cancelCursor':gridOptionsCrossPolarDiscrimination.paginationCurrentPage === 1}"
-                      role="menuitem" type="button" title="Page to first" aria-label="Page to first">
-                  <i class="fa fa-step-backward "></i>
-                </button>
-                <button class="btn btn-default"
-                      ng-disabled="gridOptionsCrossPolarDiscrimination.paginationCurrentPage === 1"
-                      ng-class="{'cancelCursor':gridOptionsCrossPolarDiscrimination.paginationCurrentPage === 1}"
-                      ng-click="gridXpdApi.pagination.previousPage()"
-                      role="menuitem" type="button" title="Previous Page" aria-label="Previous Page">
-                  <i class="fa fa-play fa-rotate-180 "></i>
-                </button>
-                <input class="btn btn-default" style="text-align:right;"  border="1" 
-                    ng-model="gridOptionsCrossPolarDiscrimination.paginationCurrentPage"
-                    ng-change="seekPage(gridOptionsCrossPolarDiscrimination.paginationCurrentPage,'crossPolarDiscrimination')"
-                      type="number" style="width:20px;"/>
-                <span class="dark">&nbsp;/ {{ gridXpdApi.pagination.getTotalPages() }}</span>
-                <button class="btn btn-default" role="menuitem" type="button" title="Next Page" aria-label="Next Page"
-                      ng-disabled="gridOptionsCrossPolarDiscrimination.paginationCurrentPage === gridXpdApi.pagination.getTotalPages()"
-                      ng-click="gridXpdApi.pagination.nextPage()">
-                    <i class="fa fa-play "></i>
-                </button>
-                <button class="btn btn-default" ng-disabled="gridOptionsCrossPolarDiscrimination.paginationCurrentPage === gridXpdApi.pagination.getTotalPages()"
-                      ng-click="gridXpdApi.pagination.seek(gridXpdApi.pagination.getTotalPages())"
-                      role="menuitem" type="button" title="Page to last" aria-label="Page to last">
-                  <i class="fa fa-step-forward "></i>
-                </button>
-                <select 
-                  class="btn btn-default" name="repeatSelect" 
-                  ng-init="gridOptionsCrossPolarDiscrimination.paginationPageSize = gridOptionsCrossPolarDiscrimination.paginationPageSizes[0]" 
-                  ng-model="gridOptionsCrossPolarDiscrimination.paginationPageSize" 
-                  ng-options="option for option in gridOptionsCrossPolarDiscrimination.paginationPageSizes"></select>
-                <span class="dark"> {{ itemsMessage() }}</span>
-                <span class="pull-right dark">{{ paginationStatusMessage('crossPolarDiscrimination') }}</span>
-              </div>   
-                                       </div>
-                               </uib-accordion>
-       </div>
-</div>
-<hr />
-<div class="owl">
- <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnPerformanceLink/pom.xml
deleted file mode 100644 (file)
index 840b923..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-    <artifactId>mwtn</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-  <relativePath>..</relativePath>
-  </parent>
-    <packaging>pom</packaging>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <artifactId>mwtnPerformanceLink</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
-    <prerequisites>
-        <maven>3.0</maven>
-    </prerequisites>
-
-  <modules>
-    <module>mwtnPerformanceLink-module</module>
-    <module>mwtnPerformanceLink-bundle</module>
-  </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-bundle/pom.xml
deleted file mode 100644 (file)
index 7a50612..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>mwtnSpectrum</artifactId>
-    <groupId>cn.com.zte.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-    <relativePath>..</relativePath>
-  </parent>
-  <artifactId>mwtnSpectrum-bundle</artifactId>
-  <name>${prefix} ${project.artifactId}</name>
-  <packaging>bundle</packaging>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.osgi</groupId>
-      <artifactId>org.osgi.core</artifactId>
-      <version>${osgi.core.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.osgi</groupId>
-      <artifactId>org.osgi.compendium</artifactId>
-      <version>${osgi.core.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.osgi.compendium</artifactId>
-      <version>${apache.felix.compendium}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.dlux</groupId>
-      <artifactId>loader</artifactId>
-      <version>${dlux.loader.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>cn.com.zte.odl.dlux</groupId>
-      <artifactId>mwtnSpectrum-module</artifactId>
-      <version>0.5.1-SNAPSHOT</version>
-    </dependency>
-  </dependencies>
-  <build>
-    <resources>
-      <resource>
-        <directory>target/generated-resources</directory>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-    </resources>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <version>2.6</version>
-        <executions>
-          <!--loader Resources -->
-          <execution>
-            <id>unpack-loader-resources</id>
-            <goals>
-              <goal>unpack-dependencies</goal>
-            </goals>
-            <phase>generate-resources</phase>
-            <configuration>
-              <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-              <groupId>cn.com.zte.odl.dlux</groupId>
-              <includeArtifactIds>mwtnSpectrum-module</includeArtifactIds>
-              <excludes>META-INF\/**</excludes>
-              <excludeTransitive>true</excludeTransitive>
-              <ignorePermissions>false</ignorePermissions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
-        <configuration>
-          <instructions>
-            <Import-Package>org.osgi.service.http,
-              org.osgi.framework;version="1.0.0",
-              org.opendaylight.dlux.loader
-            </Import-Package>
-            <Export-Package></Export-Package>
-          </instructions>
-        </configuration>
-      </plugin>
-
-      <!-- <plugin>
-        <artifactId>maven-resources-plugin</artifactId>
-        <version>3.0.1</version>
-        <executions>
-          <execution>
-            <id>copy-resources</id>
-            <!- - here the phase you need - ->
-            <phase>package</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>../../deploy</outputDirectory>
-              <resources>
-                <resource>
-                  <directory>target</directory>
-                  <includes>
-                    <include>${project.artifactId}-${project.version}.jar</include>
-                  </includes>
-                  <filtering>true</filtering>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin> -->
-
-    </plugins>
-  </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 51ddc02..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnSpectrum"/>
-        <property name="url" value="/src/app/mwtnSpectrum"/>
-        <property name="directory" value="/mwtnSpectrum"/>
-        <property name="requireJs" value="app/mwtnSpectrum/mwtnSpectrum.module"/>
-        <property name="angularJs" value="app.mwtnSpectrum"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnSpectrum/mwtnSpectrum-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/pom.xml
deleted file mode 100644 (file)
index ca8ef93..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-  xmlns="http://maven.apache.org/POM/4.0.0"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>mwtnSpectrum</artifactId>
-    <groupId>cn.com.zte.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-    <relativePath>..</relativePath>
-  </parent>
-  <artifactId>mwtnSpectrum-module</artifactId>
-  <name>${prefix} ${project.artifactId}</name>
-  <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/images/bluelight.gif b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/images/bluelight.gif
deleted file mode 100644 (file)
index 33de217..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/images/bluelight.gif and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/images/mwtnSpectrum.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/images/mwtnSpectrum.png
deleted file mode 100755 (executable)
index 2395633..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/images/mwtnSpectrum.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum-custom.css
deleted file mode 100644 (file)
index df46179..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- *  Add your application related css here
- */
-
-.alarm div {
-  height: 160px;
-  vertical-align: middle;      
-}
-.cleared {
-  color: lightgreen;
-}
-.cleared span {
-  color: lightgreen;
-}
-.raised {
-  color: red;
-}
-.raised span {
-  color: red;
-}
-
-.mwtnSpectrumGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.mwtnSpectrumGrid span {
-  color: #393939;
-}
-
-.mwtnSpectrumGrid span.mismatch {
-  font-weight: bold;
-  color: #428bca;      
-}
-
-.mwtnSpectrumGrid .green {
-  color: darkgreen;
-}
-.mwtnSpectrumGrid .green span  {
-  color: darkgreen;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.controller.js
deleted file mode 100644 (file)
index f243385..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnSpectrum/mwtnSpectrum.module',
-        'app/mwtnSpectrum/mwtnSpectrum.services',
-        'app/mwtnCommons/mwtnCommons.services'], function(mwtnSpectrumApp) {
-
-  mwtnSpectrumApp.register.controller('mwtnSpectrumCtrl', ['$scope', '$rootScope', 'uiGridConstants','$mwtnSpectrum', '$mwtnLog', 'OnfNetworkElement', 'MicrowavePhysicalSection',
-                                                           function($scope, $rootScope, uiGridConstants, $mwtnSpectrum, $mwtnLog, OnfNetworkElement, MicrowavePhysicalSection) {
-
-    var COMPONENT = 'mwtnSpectrumCtrl';
-    $mwtnLog.info({component: COMPONENT, message: 'mwtnSpectrumCtrl started!'});
-
-    $rootScope.section_logo = 'src/app/mwtnSpectrum/images/mwtnSpectrum.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-   
-    $scope.interference = {
-        alarmStatus: 'cleared'
-    };
-
-    $scope.execute = function() {
-      $scope.interference.alarmStatus = 'raised';
-      $mwtnSpectrum.execute().then(function(success) {
-        $scope.interference.alarmStatus = 'cleared';
-      }, function(error) {
-        $scope.interference.alarmStatus = 'cleared';
-      });
-    };
-    $scope.clear = function() {
-      console.log("Cleared");
-      $scope.interference.alarmStatus = 'cleared';
-    };
-
-    var updateAirInterface = function(spec, data) {
-      if (data) {
-        var radioSignalID = data.airInterfaceConfiguration.radioSignalID;      
-        $scope.gridOptions.data.map(function(row){
-          if (row.name === spec.nodeId && row.radioSignalID === radioSignalID) {
-            row.actualTxFrequency = data.airInterfaceConfiguration.txFrequency;
-            row.actualRxFrequency = data.airInterfaceConfiguration.rxFrequency;
-          }
-        });
-      } else {
-        $scope.gridOptions.data.map(function(row){
-          if (row.nodeId === spec.nodeId) {
-            row.actualTxFrequency = '?';
-            row.actualRxFrequency = '?';
-          }
-        });
-      }
-    };
-    
-    $scope.processing = false;
-    $scope.refresh = function() {
-      $scope.processing = true;
-      $scope.interference.alarmStatus = 'cleared';
-      $mwtnSpectrum.refresh().then(function(success){
-        $scope.processing = false;
-        $scope.gridOptions.data = success.airInterfaces;
-        success.actualNodes.map(function(actualNode){
-          if (actualNode.connectionStatus !== 'connected') {
-            return;
-          }
-          var revision = '2016-09-01';
-          $mwtnSpectrum.getActualNetworkElement(actualNode.id, revision).then(function(onfNe){
-            var aOnfNe = new OnfNetworkElement(onfNe.NetworkElement);
-            aOnfNe.getLTPMwpsList().map(function(ltp){
-              var spec = {
-                nodeId: actualNode.id,
-                revision: revision,
-                pacId: 'airinterface',
-                layerProtocolId: ltp._lpList[0].uuid,
-                partId: 'Configuration'
-              };
-              $mwtnSpectrum.getPacParts(spec).then(function(success){
-                updateAirInterface(spec, success);
-              }, function(error){
-                updateAirInterface(spec, error);
-              });
-            });
-          }, function(error){
-            // do nothing
-          });
-        });
-      }, function(error){
-        $scope.processing = false;
-        $scope.gridOptions.data = [];
-      });
-    };
-
-    $scope.highlightFilteredHeader = $mwtnSpectrum.highlightFilteredHeader;
-
-    var requiredNesConnectionStatusCellTemplate = [
-       '<div class="ui-grid-cell-contents" ng-class="{ \'green\': grid.getCellValue(row, col) === \'connected\'}"}>',
-       '  <i ng-show="grid.getCellValue(row, col) === \'connected\'" class="fa fa-link" aria-hidden="true"></i>',
-       '  <span>{{grid.getCellValue(row, col)}}</span>',
-       '</div>'].join('');
-
-    var actualTxFrequencyCellTemplate = [
-     '<div class="ui-grid-cell-contents" ng-class="{ \'green\': grid.getCellValue(row, col) === \'connected\'}"}>',
-     '  <span ng-class="{\'mismatch\': {{row.entity.plannedTxFrequency}} !== grid.getCellValue(row, col) }">{{grid.getCellValue(row, col)}}</span>',
-     '</div>'].join('');
-
-    var actualRxFrequencyCellTemplate = [
-     '<div class="ui-grid-cell-contents" ng-class="{ \'green\': grid.getCellValue(row, col) === \'connected\'}"}>',
-     '  <span ng-class="{\'mismatch\': {{row.entity.plannedRxFrequency}} !== grid.getCellValue(row, col) }">{{grid.getCellValue(row, col)}}</span>',
-     '</div>'].join('');
-  
-    $scope.gridOptions = JSON.parse(JSON.stringify($mwtnSpectrum.gridOptions));
-    $scope.gridOptions.columnDefs = [
-     { field: 'id', type: 'number', displayName: 'Id',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true , sort: {
-       direction: uiGridConstants.ASC,
-       ignoreSort: false,
-       priority: 0
-      }},
-     { field: 'name', type: 'string', displayName: 'Name',  headerCellClass: $scope.highlightFilteredHeader, width : 140 },
-     { field: 'connectionStatus', type: 'string', displayName: 'Connection status',  headerCellClass: $scope.highlightFilteredHeader, width : 150, cellTemplate: requiredNesConnectionStatusCellTemplate },
-     { field: 'airInterfaceName', type: 'string', displayName: 'Airinterface name',  headerCellClass: $scope.highlightFilteredHeader, width : 140 },
-     { field: 'radioSignalID', type: 'string', displayName: 'Radio signal id',  headerCellClass: $scope.highlightFilteredHeader, width : 130 },
-     { field: 'plannedTxFrequency',  type: 'number', displayName: 'TX (plan)',  headerCellClass: $scope.highlightFilteredHeader, width : 110, cellClass: 'number' },
-     { field: 'actualTxFrequency',  type: 'number', displayName: 'TX (actual)',  headerCellClass: $scope.highlightFilteredHeader, width : 110, cellClass: 'number', cellTemplate: actualTxFrequencyCellTemplate},
-     { field: 'plannedRxFrequency',  type: 'number', displayName: 'RX (plan)',  headerCellClass: $scope.highlightFilteredHeader, width : 110, cellClass: 'number' },
-     { field: 'actualRxFrequency',  type: 'number', displayName: 'RX (actual)',  headerCellClass: $scope.highlightFilteredHeader, width : 110, cellClass: 'number', cellTemplate: actualRxFrequencyCellTemplate}
-     ];
-
-    $scope.refresh();
-
-  }]);
-
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.module.js
deleted file mode 100644 (file)
index 238f3ad..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var mwtnSpectrumApp = angular.module('app.mwtnSpectrum', ['ui.grid', 'ui.bootstrap', 'app.core', 'ui.router.state','config']);
-
-  mwtnSpectrumApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnSpectrumApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/mwtnSpectrum/mwtnSpectrum.controller');
-    NavHelperProvider.addToMenu('mwtnSpectrum', {
-     "link" : "#/mwtnSpectrum",
-     "active" : "main.mwtnSpectrum",
-     "title" : "MWTN Spectrum",
-     "icon" : "fa fa-bar-chart",  // Add navigation icon css class here
-     "page" : {
-        "title" : "MWTN Spectrum",
-        "description" : "mwtnSpectrum"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnSpectrum', {
-        url: 'mwtnSpectrum',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/mwtnSpectrum/mwtnSpectrum.tpl.html',
-                controller: 'mwtnSpectrumCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnSpectrumApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.services.js
deleted file mode 100644 (file)
index df822a9..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnSpectrum/mwtnSpectrum.module'],function(mwtnSpectrumApp) {
-
-
-  mwtnSpectrumApp.register.factory('$mwtnSpectrum', function($q, $mwtnCommons, $mwtnLog) {
-    var service = {};
-
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.highlightFilteredHeader = $mwtnCommons.highlightFilteredHeader;
-    service.getActualNetworkElement = $mwtnCommons.getActualNetworkElement;
-    service.getPacParts = $mwtnCommons.getPacParts;
-    
-    
-    service.execute = function() {
-      var request = {
-          method: 'POST',
-          url: 'operations/scheduler:next'
-      };
-      var deferred = $q.defer();
-      $mwtnCommons.genericRequest(request).then(function(success) {
-        deferred.resolve(success);
-      }, function(error) {
-        deferred.reject(error);
-      });
-      return deferred.promise;
-    };
-    
-    service.refresh = function() {
-      var deferred = $q.defer();
-      $mwtnCommons.getRequiredNetworkElements(true).then(function(pNes){
-        var neIds = pNes.map(function(pNe){
-          pNe._source.connectionStatus = 'disconnected';
-          return pNe._id;
-        });
-        $mwtnCommons.getMountPoints(). then(function(mountpoints){
-          var actualNodes = mountpoints.map(function(mountpoint){
-            var pIndex = neIds.indexOf(mountpoint['node-id']);
-            if (pIndex > -1) {
-              pNes[pIndex]._source.connectionStatus = mountpoint['netconf-node-topology:connection-status']; 
-            }
-            return {
-              id: mountpoint['node-id'],
-              connectionStatus: mountpoint['netconf-node-topology:connection-status']
-            };
-          });
-          var airInterfaces = [];
-          pNes.map(function(hit){
-            hit._source.MW_AirInterface_Pac.filter(function(airinterface){
-              return airinterface.airInterfaceConfiguration;
-            }).map(function(airinterface){
-              airInterfaces.push({
-                id: $mwtnCommons.getNodeIntIdFromNodeId(hit._source.nodeId),
-                name: hit._source.nodeId,
-                connectionStatus: hit._source.connectionStatus,
-                airInterfaceName: airinterface.airInterfaceConfiguration.airInterfaceName,
-                radioSignalID: airinterface.airInterfaceConfiguration.radioSignalID,
-                plannedTxFrequency: airinterface.airInterfaceConfiguration.txFrequency,
-                actualTxFrequency: '?',
-                plannedRxFrequency: airinterface.airInterfaceConfiguration.rxFrequency,
-                actualRxFrequency: '?'
-              });
-            });
-          });
-          
-          airInterfaces.sort(function(a, b){
-            if(a.radioSignalID < b.radioSignalID) return -1;
-            if(a.radioSignalID > b.radioSignalID) return 1;
-            return 0;
-          });
-          deferred.resolve({airInterfaces: airInterfaces, actualNodes: actualNodes});
-        }, function(error){
-          deferred.reject([]);
-        });
-        
-      }, function(error){
-        deferred.reject([]);
-      });
-      return deferred.promise;
-    };
-
-    return service;
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/mwtnSpectrum-module/src/main/resources/mwtnSpectrum/mwtnSpectrum.tpl.html
deleted file mode 100644 (file)
index ae9543d..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-<ht-header help-link='sdnr/mwtnSpectrum/0.4.0/README.md'></ht-header>
-<div class="owl container">
-       <div class="row">
-               <div clase="col-md-12 text-left radio"
-                       ng-class="{'raised':interference.alarmStatus !== 'cleared', 'cleared':interference.alarmStatus === 'cleared' }">
-                       <span>{{'MWTN_INTERFERENCE_ALARM_STATUS' | translate}}: </span>
-                       <i class="fa fa-bell" aria-hidden="true" ng-show="interference.alarmStatus !== 'cleared'"></i> 
-                       <span>{{interference.alarmStatus}}</span>
-               </div>
-       </div>
-       <div class="row">
-               <div clase="col-md-12">
-                   <hr/>
-                       <button class="btn btn-lg btn-block" ng-click="execute()" ng-class="{'btn-danger':interference.alarmStatus !== 'cleared', 'btn-success':interference.alarmStatus === 'cleared' }">
-                               <div class="container" >
-                                       <div class="row alarm">
-                                               <div class="col-md-2 text-left">
-                                                 <img ng-show="interference.alarmStatus !== 'cleared'" src="src/app/mwtnSpectrum/images/bluelight.gif" ></img>
-                                               </div>
-                                               <div class="col-md-8">
-                                                   </br></br>
-                                                       <i class="fa" ng-class="{'fa-exclamation-triangle':interference.alarmStatus !== 'cleared', 'fa-question-circle-o':interference.alarmStatus === 'cleared' }" aria-hidden="true"></i>
-                                                       <span ng-show="interference.alarmStatus !== 'cleared'">{{'MWTN_INTERFERENCE_ALARM!' | translate}}</span>
-                                                       <span ng-show="interference.alarmStatus === 'cleared'">{{'MWTN_INTERFERENCE_ALARM?' | translate}}</span>
-                                               </div>
-                                               <div class="col-md-2">
-                                                 <img  ng-show="interference.alarmStatus !== 'cleared'" src="src/app/mwtnSpectrum/images/bluelight.gif" ></img>
-                                               </div>
-                                       </div>
-                               </div>
-                       </button>
-                       <hr/>
-               </div>
-       </div>
-<!--   <div class="row">
-               <div clase="col-md-12">
-                       <button class="btn btn-success" ng-click="clear()">
-               <i class="fa fa-magic" aria-hidden="true"></i>
-                               <span>{{'MWTN_CLEAR' | translate}}</span>
-                       </button>
-               </div>
-       </div>  -->
-       <div class="row">
-               <div clase="col-md-12 text-right">
-                       <button class="btn btn-primary pull-right" ng-click="refresh()">
-                <i class="fa fa-refresh" ng-class="{'fa-spin':processing == true}" aria-hidden="true"></i>
-                               <span>{{'MWTN_REFRESH' | translate}}</span>
-                       </button>
-               </div>
-       </div>
-       <div class="row">
-               <div clase="col-md-12">
-                   <div><span class="white">All frequencies in kHz</span></div>
-                       <div id="mwtnSpectrumGrid" ui-grid="gridOptions" ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns ui-grid-move-columns
-                        class="mwtnSpectrumGrid">
-                        </div>
-               </div>
-       </div>
-
-</div>
-<hr />
-<div class="owl">
-       <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnSpectrum/pom.xml
deleted file mode 100644 (file)
index 06cc878..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <parent>
-    <artifactId>mwtn</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-    <relativePath>..</relativePath>
-  </parent>
-  <packaging>pom</packaging>
-  <groupId>cn.com.zte.odl.dlux</groupId>
-  <artifactId>mwtnSpectrum</artifactId>
-  <name>${prefix} ${project.artifactId}</name>
-
-  <prerequisites>
-    <maven>3.0</maven>
-  </prerequisites>
-
-  <modules>
-    <module>mwtnSpectrum-module</module>
-    <module>mwtnSpectrum-bundle</module>
-  </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-bundle/pom.xml
deleted file mode 100644 (file)
index 11d9cec..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnTdm</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnTdm-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnTdm-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnTdm-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 02eb833..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnTdm"/>
-        <property name="url" value="/src/app/mwtnTdm"/>
-        <property name="directory" value="/mwtnTdm"/>
-        <property name="requireJs" value="app/mwtnTdm/mwtnTdm.module"/>
-        <property name="angularJs" value="app.mwtnTdm"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnTdm/mwtnTdm-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/pom.xml
deleted file mode 100644 (file)
index 9c8c871..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnTdm</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnTdm-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/images/mwtnTdm.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/images/mwtnTdm.png
deleted file mode 100755 (executable)
index 2da5f58..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/images/mwtnTdm.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm-custom.css
deleted file mode 100644 (file)
index d396932..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-/**
- *  Add your application related css here
- */
-
-.owl .bbg b {
-     color: white;
-}
-
-.owl .bbg i {
-     color: white;
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm.controller.js
deleted file mode 100644 (file)
index e4e488b..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * @license 
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnTdm/mwtnTdm.module',
-  'app/mwtnTdm/mwtnTdm.services'],
-  function (mwtnTdmApp) {
-
-    mwtnTdmApp.register.controller('mwtnTdmCtrl', ['$scope', '$rootScope', '$timeout', '$mwtnLog', '$mwtnTdm', '$translate', 'OnfNetworkElement', 'uiGridConstants', 
-      function ($scope, $rootScope, $timeout, $mwtnLog, $mwtnTdm, $translate, OnfNetworkElement, uiGridConstants) {
-
-        var COMPONENT = 'mwtnTdmCtrl';
-        $rootScope.section_logo = 'src/app/mwtnTdm/images/mwtnTdm.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-        $scope.highlightFilteredHeader = $mwtnTdm.highlightFilteredHeader;
-        $scope.gridOptions = JSON.parse(JSON.stringify($mwtnTdm.gridOptions));
-        $scope.gridOptions.onRegisterApi = function (gridApi) {
-          $scope.gridApi = gridApi;
-        };
-        $scope.gridOptions.columnDefs = [
-          // { field: 'id', type: 'number', displayName: 'No.',  headerCellClass: $scope.highlightFilteredHeader, width : 50, cellClass: 'number', pinnedLeft : true },
-          { field: 'nodeId', type: 'string', displayName: 'Node', headerCellClass: $scope.highlightFilteredHeader, width: 200 },
-          { field: 'layer', type: 'string', displayName: 'Layer', headerCellClass: $scope.highlightFilteredHeader, width: 100 },
-          { field: 'ltpRef', type: 'string', displayName: 'Logical termiantion point', headerCellClass: $scope.highlightFilteredHeader, width: 300 },
-          { field: 'reserved', type: 'number', displayName: 'Reserved E1', headerCellClass: $scope.highlightFilteredHeader, width: 150, cellClass: 'number' },
-          { field: 'configured', type: 'number', displayName: 'Configured E1', headerCellClass: $scope.highlightFilteredHeader, width: 150, cellClass: 'number' },
-          { field: 'utilization', type: 'number', displayName: 'Utilization [%]', headerCellClass: $scope.highlightFilteredHeader, width: 150, cellClass: 'number', sort: {
-            direction: uiGridConstants.ASC,
-            priority: 1
-          } }
-        ];
-
-        $scope.gridOptions.data = [];
-
-        var getUtilization = function(row) {
-          if (row.reserved === '?' || row.configured === '?'  || row.reserved < 1) {
-            return '?';
-          }
-          return (( row.configured / row.reserved ) * 100).toFixed(2);
-        };
-
-        var cleanProgess = function() {
-          $scope.progress = {
-              show: false,
-              max: 0,
-              value: 0
-          };
-        };
-        cleanProgess();
-
-        var cleanMessage = function() {
-          $scope.message = {
-            error: undefined,
-            show: true,
-            startTime: undefined,
-            endTime: undefined,
-            duration: undefined
-          };
-        };
-        
-        var finish = function() {
-          $scope.message.endTime = new Date().toISOString();
-          $scope.message.duration = ((new Date($scope.message.endTime) - new Date($scope.message.startTime))/1000).toFixed(1) + 's';
-          $scope.gridOptions.columnDefs.filter(function(column){
-            return column.field === 'utilization';
-          }).map(function(column){
-            column.sort.direction = uiGridConstants.ASC;
-            $scope.gridApi.core.refresh();
-          });
-          $timeout(cleanProgess, 1000);
-        };
-        $scope.scan = function() {
-          cleanMessage();
-          $scope.progress.show = true;
-          $scope.message.startTime = new Date().toISOString();
-
-          $mwtnTdm.getMountPoints().then(function (mountpoints) {
-            $scope.gridOptions.data = [];
-            if (mountpoints.length === 0) {
-              $timeout(cleanProgess, 1000);
-            }
-            mountpoints.filter(function (mountpoint) {
-              return mountpoint['netconf-node-topology:connection-status'] === 'connected';
-            }).map(function (mountpoint) {
-              $mwtnTdm.getActualNetworkElement(mountpoint['node-id'], '2017-03-24').then(function (success) {
-                var onfNetworkElement = new OnfNetworkElement(success['network-element']);
-                var tdmLtps = onfNetworkElement.getLTPMwsList().filter(function (ltp) {
-                  return ltp.getConditionalPackages()[0].contains('hybrid');
-                }).map(function (ltp) {
-                  $scope.progress.max = $scope.progress.max + 1;
-                  var row = {
-                    ltpId: [ltp.getId(), onfNetworkElement.getId()].join('@'),
-                    nodeId: onfNetworkElement.getName(),
-                    layer: 'MWS',
-                    ltpRef: ltp.getLabel(),
-                    reserved: '?',
-                    configured: '?',
-                    utilization: '?'
-                  };
-
-                  var specConfig = {
-                    nodeId: mountpoint['node-id'],
-                    revision: '2017-03-24',
-                    pacId: 'microwave-model:mw-hybrid-mw-structure-pac',
-                    layerProtocolId: ltp.getLayerProtocols()[0].getId(),
-                    partId: 'hybrid-mw-structure-configuration'
-                  };
-                  $mwtnTdm.getPacParts(specConfig).then(function(success){
-                    success = $mwtnTdm.yangifyObject(success);
-                    row.reserved = success['hybrid-mw-structure-configuration']['number-of-tdm-segments-to-be-reserved'];
-                    row.utilization = getUtilization(row);
-                  }, function(error){
-                    // ignore
-                  });
-
-                  var specStatus = {
-                    nodeId: mountpoint['node-id'],
-                    revision: '2017-03-24',
-                    pacId: 'microwave-model:mw-hybrid-mw-structure-pac',
-                    layerProtocolId: ltp.getLayerProtocols()[0].getId(),
-                    partId: 'hybrid-mw-structure-status'
-                  };
-                  $mwtnTdm.getPacParts(specStatus).then(function(success){
-                    success = $mwtnTdm.yangifyObject(success);
-                    row.configured = success['hybrid-mw-structure-status']['segment-status-list'].filter(function(item){
-                      return item['segment-is-reserved-for-tdm'] === true;
-                    }).length;
-                    row.utilization = getUtilization(row);
-                    $scope.progress.value = $scope.progress.value + 1;
-                    if ($scope.progress.max === $scope.progress.value) {
-                      finish();
-                    }
-                  }, function(error){
-                    // ignore
-                  });
-
-                  $scope.gridOptions.data.push(row);
-                });
-                console.warn(JSON.stringify(tdmLtps));
-                if (tdmLtps.length === 0 && $scope.progress.max === $scope.progress.value) {
-                  finish();
-                }
-              });
-            }, function (error) {
-              $scope.gridOptions.data = [];
-            });
-
-          });
-        };
-        $scope.scan();
-
-      }]);
-
-  });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm.module.js
deleted file mode 100644 (file)
index b136b53..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module',
-        'app/mwtnCommons/bower_components/angular-clipboard/angular-clipboard'], function(ng) {
-  var mwtnTdmApp = angular.module('app.mwtnTdm', ['ui.grid', 'ui.bootstrap', 'app.core', 'ui.router.state', 'config', 'angular-clipboard']);
-
-  mwtnTdmApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnTdmApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-    NavHelperProvider.addControllerUrl('app/mwtnTdm/mwtnTdm.controller');
-    NavHelperProvider.addToMenu('mwtnTdm', {
-     "link" : "#/mwtnTdm",
-     "active" : "main.mwtnTdm",
-     "title" : "MWTN TDM",
-     "icon" : "fa fa-cogs",  // Add navigation icon css class here
-     "page" : {
-        "title" : "MWTN TDM",
-        "description" : "mwtnTdm"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnTdm', {
-        url: 'mwtnTdm',
-        access: access.admin,
-        views : {
-            content : {
-                templateUrl: 'src/app/mwtnTdm/templates/frame.tpl.html',
-                controller: 'mwtnTdmCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnTdmApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/mwtnTdm.services.js
deleted file mode 100644 (file)
index 824fd26..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCommons/mwtnCommons.module', 'app/mwtnTdm/mwtnTdm.module'],function(mwtnTdmApp) {
-
-  mwtnTdmApp.register.factory('$mwtnTdm', function($mwtnCommons, $mwtnDatabase, $mwtnLog) {
-
-    var service = {};
-    
-    service.getPacParts = $mwtnCommons.getPacParts;
-    service.highlightFilteredHeader = $mwtnCommons.highlightFilteredHeader;
-    service.getMountPoints = $mwtnCommons.getMountPoints;
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.getActualNetworkElement = $mwtnCommons.getActualNetworkElement;
-    service.getMountPoints = $mwtnCommons.getMountPoints;
-    service.getPacParts = $mwtnCommons.getPacParts;
-    
-    service.parts = $mwtnCommons.parts;
-    service.separator = $mwtnCommons.separator;
-    service.yangify = $mwtnCommons.yangify;
-    service.yangifyObject = $mwtnCommons.yangifyObject;
-    
-    return service;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/templates/frame.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/mwtnTdm-module/src/main/resources/mwtnTdm/templates/frame.tpl.html
deleted file mode 100644 (file)
index c253807..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-<ht-header help-link='sdnr/mwtnTdm/0.4.0/README.md'></ht-header>
-
-<div class="owl container" style="width: 100%;">
-
-  <div class="row bbg">
-    <div class="col-md-2">
-      <button type="button" id="scan" class="btn btn-primary" ng-click="scan()">
-        <i class="fa fa-spinner fa-pulse" aria-hidden="true" ng-if="progress.show"></i>
-        <span>{{'MWTN_SCAN_NETWORK' | translate}}</span>
-      </button>
-    </div>
-    <div class="col-md-3" ng-if="message.startTime !== undefined">
-      <span>{{'MWTN_START_TIME' | translate}}</span>
-      <b>{{message.startTime.toHumanReadableTimeFormat()}}</b> 
-    </div>
-    <div class="col-md-3" ng-if="message.endTime !== undefined">
-      <span>{{'MWTN_END_TIME' | translate}}</span>
-      <b>{{message.endTime.toHumanReadableTimeFormat()}}</b>
-    </div>
-    <div class="col-md-2" ng-if="message.duration !== undefined">
-      <span>{{'MWTN_DURATION' | translate}}</span>
-      <b>{{message.duration}}</b>
-    </div>
-  </div>
-
-  <div class="row">
-    <div class=" col-md-12">
-      <hr/>
-    </div>
-  </div>
-  
-  <div class="row">
-    <div class=" col-md-12">
-      <div id="mwtnTdmGrid" ui-grid="gridOptions" ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns ui-grid-move-columns
-        class="mwtnLogGrid"></div>
-    </div>
-  </div>
-
-  <div class="row">
-    <div class=" col-md-12">
-      <uib-progressbar ng-if="progress.show" class="progress-striped col-md-12" type="primary" max="progress.max" value="progress.value">
-        <i class="owl-dark">{{progress.value}} / {{progress.max}}</i>
-      </uib-progressbar>
-    </div>
-  </div>
-
-</div>
-
-<hr />
-<div class="owl">
-  <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTdm/pom.xml
deleted file mode 100644 (file)
index 8abbeca..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-    <artifactId>mwtn</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-  <relativePath>..</relativePath>
-  </parent>
-    <packaging>pom</packaging>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <artifactId>mwtnTdm</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
-    <name>${prefix} ${project.artifactId}</name>
-
-    <prerequisites>
-        <maven>3.0</maven>
-    </prerequisites>
-
-  <modules>
-    <module>mwtnTdm-module</module>
-    <module>mwtnTdm-bundle</module>
-  </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-bundle/pom.xml
deleted file mode 100644 (file)
index 984511b..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnTest</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnTest-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnTest-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnTest-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 512631f..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnTest"/>
-        <property name="url" value="/src/app/mwtnTest"/>
-        <property name="directory" value="/mwtnTest"/>
-        <property name="requireJs" value="app/mwtnTest/mwtnTest.module"/>
-        <property name="angularJs" value="app.mwtnTest"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnTest/mwtnTest-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/pom.xml
deleted file mode 100644 (file)
index 400eada..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnTest</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnTest-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/images/mwtnTest.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/images/mwtnTest.png
deleted file mode 100755 (executable)
index bd00ced..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/images/mwtnTest.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest-custom.css
deleted file mode 100644 (file)
index 15c398c..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- *  Add your application related css here
- */
-
-.json-formatter-row .constructor-name {
-    cursor: pointer;
-    color: #333333;
-}
-
-.json-formatter-row .toggler:after {
-    color: darkgreen;
-    font-weight: bold;
-    display: inline-block;
-    transition: transform .1s ease-in;
-    content: ">"
-}
-
-.owl span.key-text {
-    color: #333333;
-}
-
-.owl span.colon {
-    color: #333333;
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest.controller.js
deleted file mode 100644 (file)
index e873f19..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * @license 
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnTest/mwtnTest.module',
-        'app/mwtnTest/mwtnTest.services'],
-        function(mwtnTestApp) {
-
-  mwtnTestApp.register.controller('mwtnTestCtrl', ['$scope', '$rootScope', '$mwtnLog', '$mwtnTest', '$translate', 'OnfNetworkElement', 'LogicalTerminationPoint', 
-    function($scope, $rootScope, $mwtnLog, $mwtnTest, $translate, OnfNetworkElement, LogicalTerminationPoint) {
-
-    var COMPONENT = 'mwtnTestCtrl';
-    $mwtnLog.info({component: COMPONENT, message: 'mwtnTestCtrl started!'});
-    $rootScope.section_logo = 'src/app/mwtnTest/images/mwtnTest.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-  
-    var pacTemplate = {
-        'layer-protocol': 'unknown'           
-    };
-
-    // get important infromation from yang modules
-    $mwtnTest.getModules().then(function(success){
-
-      var pacOrder = {
-        'onf-otn-odu-conditional-packages:otn-odu-connection-pac' : 2,
-        'onf-otn-odu-conditional-packages:otn-odu-termination-pac' : 1,
-        'onf-ethernet-conditional-packages:ethernet-pac' : 1,
-        'microwave-model:mw-air-interface-diversity-pac' : 1,
-        'microwave-model:mw-air-interface-hsb-end-point-pac' : 1,
-        'microwave-model:mw-air-interface-hsb-fc-switch-pac' : 2,
-        'onf-core-model-conditional-packages:holder-pac' : 3,
-        'onf-core-model-conditional-packages:connector-pac' : 4,
-        'onf-core-model-conditional-packages:equipment-pac' : 5,
-        'microwave-model:mw-ethernet-container-pac' : 6,
-        'MicrowaveModel-ObjectClasses-EthernetContainer:MW_EthernetContainer_Pac' : 7,
-        'microwave-model:mw-ethernet-container-pac' : 8,
-        'microwave-model:mw-tdm-container-pac': 9,
-        'microwave-model:mw-pure-ethernet-structure-pac': 10,
-        'microwave-model:mw-hybrid-mw-structure-pac': 11,
-        'MicrowaveModel-ObjectClasses-PureEthernetStructure:MW_PureEthernetStructure_Pac' : 12,
-        'microwave-model:mw-air-interface-pac' : 13,
-        'MicrowaveModel-ObjectClasses-AirInterface:MW_AirInterface_Pac' : 14
-      };
-
-      $scope.modules = success;
-      $scope.orderedPacs = [];
-      $scope.parts = [];
-      Object.keys(success).map(function(module){
-        Object.keys(success[module]).filter(function(key){
-          return key.endsWith('-pac') || key.endsWith('_Pac');
-        }).map(function(pacName){
-          $scope.orderedPacs.push([module, pacName].join(':'));
-          // sort 
-          $scope.orderedPacs.sort(function(a, b) {
-            if (!pacOrder[a]) console.warn(a);
-            if (!pacOrder[b]) console.warn(b);
-            if(pacOrder[a] > pacOrder[b]) return 1;
-            if(pacOrder[a] < pacOrder[b]) return -1;
-            return 0;
-          })
-
-          if (pacName === 'mw-air-interface-pac') {
-            $scope.parts = Object.keys(success[module][pacName]).filter(function(conditionalPackage){
-              return success[module][pacName][conditionalPackage]['local-name'];
-            }).map(function(conditionalPackage){
-              return success[module][pacName][conditionalPackage]['local-name'];
-            });
-          }
-        });
-      });
-    }, function(error){
-      $scope.modules = undefined;
-      $scope.orderedPacs = undefined;
-      $scope.parts = undefined;
-    });
-            
-    /**
-     * @function updateNe 
-     * A function, which updates onfNetworkElement by new data.
-     * @param {*} data New data recieved from OpenDaylight via RestConf
-     */
-    var updateNe = function(data) {
-      if (!data) return;
-      // update onfNetworkElement
-      switch ($scope.revision) {
-        case '2016-03-23':
-          $scope.onfNetworkElement = JSON.parse(JSON.stringify(data['network-element'][0]));
-          $scope.onfLtps = data['network-element'][0].ltp;
-          $scope.onfNetworkElement.ltp = undefined;
-          break;
-        case '2016-08-09':
-        case '2016-08-11':
-        case '2017-02-17':
-        case '2017-03-20':
-          // console.log(JSON.stringify(data));        
-          $scope.onfNetworkElement = new OnfNetworkElement(data['network-element']);
-          $scope.onfLtps = $scope.onfNetworkElement.getLogicalTerminationPoints();
-          // $scope.onfNetworkElement.ltp = undefined;
-          break;
-        default:
-          $mwtnLog.info({component: COMPONENT, message: ['The ONF CoreModel revision', $scope.mountpoint.onfCoreModelRevision, ' is not supported (yet)!'].join(' ')});
-          $scope.onfNetworkElement = {};
-          $scope.onfLtps = {};
-      }
-      
-      var order = $mwtnTest.layerProtocolNameOrder;
-      // update onfLTPs
-      $scope.onfLtps.sort(function(a, b){
-        if(order[a.getLayer()] < order[b.getLayer()]) return -1;
-        if(order[a.getLayer()] > order[b.getLayer()]) return 1;
-        if(a.getId() < b.getId()) return -1;
-        if(a.getId() > b.getId()) return 1;
-        return 0;
-      });
-      
-      // calculate conditional packages
-      $scope.pacs = {};
-      $scope.onfLtps.map(function(ltp) {
-        ltp.getLayerProtocols().map(
-          /**
-           * A function processing a layer-protocol object
-           * @param {LayerProtocol} lp A layer-protocol object
-           */
-          function(lp) {
-            var template = JSON.parse(JSON.stringify(pacTemplate));
-            template['layer-protocol'] = lp.getId();
-            var conditionalPackage = lp.getConditionalPackage(true);
-            // console.log(conditionalPackage);
-            if (conditionalPackage !== '') {
-              if ($scope.pacs[conditionalPackage] === undefined) {
-                // create missing pac array
-                $scope.pacs[conditionalPackage] = [];
-              }
-              $scope.pacs[conditionalPackage].push(template);
-            } else {
-              $mwtnLog.info({component: COMPONENT, message: 'No conditional package for  ' + ltp.getLabel() });
-            }
-        });
-      });
-      
-      // sort the conditional packages
-      if ($scope.orderedPacs) {
-        $scope.orderedPacs.filter(function(item){
-          return $scope.pacs[item] !== undefined;
-        }).map(function(item){
-          $scope.pacs[item].sort(function(a, b){
-            if(a['layer-protocol'] < b['layer-protocol']) return -1;
-            if(a['layer-protocol'] > b['layer-protocol']) return 1;
-            return 0;
-          });
-        });
-      }
-      data.revision = undefined;
-    };
-
-    var updateNetworkElementCurrentProblems = function(data) {
-      if (!data) return;
-      $scope.neCurrentProblems = data;
-    };
-
-    var updateLtp = function(data) {
-      $scope.onfLtps.map(function(ltp){
-        if (ltp.getData().uuid === data.data.ltp[0].uuid) {
-          ltp = new LogicalTerminationPoint(data.data.ltp[0]);
-        }
-      });
-    };
-
-    /**
-     * @deprecated since all conditaional packages are handle the same way even for
-     *             3rd and 4th PoC model - 2nd PoC model not supported any more.
-     * @param {*} lpId 
-     * @param {*} part 
-     * @param {*} data 
-     */
-    var updateAirInterface = function(lpId, part, data) {
-      // console.log(JSON.stringify(data), lpId);
-      $scope.airinterfaces.map(function(airinterface){
-        // console.log(JSON.stringify(airinterface));
-        if (airinterface['layer-protocol'] === lpId) {
-          if (Object.keys(data)[0].startsWith('air-interface')) {
-            airinterface[part] = data;            
-          } else if (part === 'Capability') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            airinterface[part] = data['mw-air-interface-pac'][0]['air-interface-capability-list'];            
-          } else if (part === 'CurrentProblems') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            airinterface[part] = data['mw-air-interface-pac'][0]['air-interface-current-problem-list'];            
-          }
-        }
-      });
-      data.revision = undefined;
-    };
-
-    /**
-     * @deprecated since all conditaional packages are handle the same way even for
-     *             3rd and 4th PoC model - 2nd PoC model not supported any more.
-     * @param {*} lpId 
-     * @param {*} part 
-     * @param {*} data 
-     */
-    var updateStructure = function(lpId, part, data) {
-      // console.log(JSON.stringify(data), lpId);
-      $scope.structures.map(function(structure){
-        // console.log(JSON.stringify(structure));
-        if (structure['layer-protocol'] === lpId) {
-          if (Object.keys(data)[0].contains('tructure')) {
-            structure[part] = data;            
-          } else if (part === 'Capability') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            structure[part] = data['mw-structure-pac'][0]['structure.capability-list'];            
-          } else if (part === 'CurrentProblems') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            structure[part] = data['mw-structure-pac'][0]['structure-current-problem-list'];            
-          }
-        }
-      });
-      data.revision = undefined;
-    };
-
-    /**
-     * @deprecated since all conditaional packages are handle the same way even for
-     *             3rd and 4th PoC model - 2nd PoC model not supported any more.
-     * @param {*} lpId 
-     * @param {*} part 
-     * @param {*} data 
-     */
-    var updateContainer = function(lpId, part, data) {
-      // console.log(JSON.stringify(data), lpId);
-      $scope.containers.map(function(container){
-        // console.log(JSON.stringify(container));
-        if (container['layer-protocol'] === lpId) {
-          if (Object.keys(data)[0].contains('ontainer') ) {
-            container[part] = data;            
-          } else if (part === 'Capability') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            container[part] = data['mw-container-pac'][0]['container-capability-list'];            
-          } else if (part === 'CurrentProblems') {
-            // 2. PoC
-            // console.log(part, JSON.stringify(data));
-            container[part] = data['mw-container-pac'][0]['container-current-problem-list'];            
-          }
-        }
-      });
-      data.revision = undefined;
-    };
-
-    /**
-     * Creates a template of a conditional packages with its subclasses
-     * @param {{pacId: string, layerProtocolId: string, partId:string}} spec - Specification object of a conditional package subclass
-     */
-    var initPac = function(spec) {
-      $scope.pacs[spec.pacId].filter(function(conditionalPackage){
-        return conditionalPackage['layer-protocol'] === spec.layerProtocolId;
-      }).map(function(pac){
-        $scope.parts.map(function(localName){
-          pac[localName] = {id:$mwtnTest.getPartGlobalId(spec, localName),localName: localName, data:'No data available'}
-        });
-      });
-    };
-
-    /**
-     * Updates an existing template of a conditional packages with its subclasses
-     * @param {{pacId: string, layerProtocolId: string, partId:string}} spec - Specification object of a conditional package subclass
-     */
-    var updateSubClassData = function(spec, data) {
-      $scope.pacs[spec.pacId].filter(function(conditionalPackage){
-        return conditionalPackage['layer-protocol'] === spec.layerProtocolId;
-      }).map(function(conditionalPackage){
-        conditionalPackage[$mwtnTest.getPartLocalId(spec)].data = data[$mwtnTest.yangify(spec.partId)];
-      });
-    };
-
-    var updatePart = function(spec, data) {
-      switch (spec.pacId) {
-        case 'ne':
-          updateNe(data);
-          break;
-        case 'neCurrentProblems':
-          updateNetworkElementCurrentProblems(data);
-        case 'clock':
-          // console.warn('yea clock', JSON.stringify(data));
-          $scope.clock = data;
-          break;
-        case 'ltp':
-          updateLtp(data);
-          break;
-        case 'airinterface':
-          console.log(JSON.stringify(spec, JSON.stringify(data)));
-          updateAirInterface(spec.layerProtocolId, spec.partId, data);
-          break;
-        case 'structure':
-          console.log(JSON.stringify(data));
-          updateStructure(spec.layerProtocolId, spec.partId, data);
-          break;
-        case 'container':
-          console.log(JSON.stringify(data));
-          updateContainer(spec.layerProtocolId, spec.partId, data);
-          break;  
-        // 3rd Poc
-        case 'MicrowaveModel-ObjectClasses-AirInterface:MW_AirInterface_Pac':
-        case 'MicrowaveModel-ObjectClasses-PureEthernetStructure:MW_PureEthernetStructure_Pac':
-        case 'MicrowaveModel-ObjectClasses-EthernetContainer:MW_EthernetContainer_Pac':
-        // 4th Poc
-        case 'microwave-model:mw-air-interface-pac':
-        case 'microwave-model:mw-air-interface-diversity-pac':
-        case 'microwave-model:mw-pure-ethernet-structure-pac':
-        case 'microwave-model:mw-hybrid-mw-structure-pac':
-        case 'microwave-model:mw-tdm-container-pac':
-        case 'microwave-model:mw-ethernet-container-pac':
-        case 'onf-ethernet-conditional-packages:ethernet-pac':
-        // Poc 4.1
-        case 'onf-otn-odu-conditional-packages:otn-odu-connection-pac':
-        case 'onf-otn-odu-conditional-packages:otn-odu-termination-pac':
-        if (!spec.partId) {
-            initPac(spec);
-          } else {
-            updateSubClassData(spec, data);
-          }
-          break;  
-      }
-    };
-    
-    // events
-    $scope.status = {ne:false};
-    $scope.spinner = {ne:false};
-    $scope.separator = $mwtnTest.separator; //'&nbsp;'
-
-    $scope.myClipboard = {
-      data : {'key': 'value'},
-      supported : true,
-      getJson : function() {
-        return JSON.stringify(this.data, null, ' ');
-      },
-      copyToClipboard : function() {
-        var message = 'Copied to clipboard! ' + this.getJson();
-        $mwtnLog.info({component: COMPONENT, message: message});
-      },
-      error : function(err) {
-        $mwtnLog.error({component: COMPONENT, message: err});
-      }
-    };
-    
-    $scope.$watch('status', function(status, oldValue) {
-      Object.keys(status).filter(function(key){
-        return $scope.networkElementId && status[key] && status[key] !== oldValue[key];
-      }).map(function(key){
-        $scope.spinner[key] = true;
-        var info = key.split($scope.separator);
-        var spec = {
-          nodeId: $scope.networkElementId,
-          revision: $scope.revision,
-          pacId: info[0],
-          layerProtocolId: info[1],
-          partId: info[2]
-        };
-        $mwtnTest.getPacParts(spec).then(function(success){
-          success = $mwtnTest.yangifyObject(success)
-          $scope.myClipboard.data = success; 
-          updatePart(spec, success);
-          $scope.spinner[key] = false;
-        }, function(error){
-          $scope.myClipboard.data = 'Opps!'; 
-          updatePart(spec, error);
-          $scope.spinner[key] = false;
-        });
-        $scope.mountpoint = $scope.mountPoints.filter(function(mountpoint){
-          return mountpoint['node-id'] === $scope.networkElementId;
-        })[0];
-        if (key === 'mountpoint') {
-          $scope.spinner['mountpoint'] = false;
-          $scope.myClipboard.data = $scope.mountpoint;
-        }
-      });
-    }, true);
-
-        // var spec = {
-        //   nodeId: $scope.networkElementId,
-        //   revision: $scope.revision,
-        //   pacId: 'clock'
-        // };
-        // $mwtnTest.getPacParts(spec).then(function(success){
-        //   $scope.collapseAll();
-        //   updatePart(spec, $mwtnTest.yangifyObject(success));
-        // }, function(error){
-        //   $scope.collapseAll();
-        //   updatePart(spec, error);
-        // });
-
-
-    $scope.collapseAll = function() {
-      // close all groups
-      Object.keys($scope.status).map(function(group){
-        $scope.status[group] = false;
-      });
-      Object.keys($scope.spinner).map(function(group){
-        $scope.spinner[group] = false;
-      });
-    };
-    
-    $scope.$watch('networkElement', function(neId, oldValue) {
-      if (neId && neId !== '' && neId !== oldValue) {
-        
-        // clear old data
-        $scope.airinterfaces = [];
-        $scope.structures = [];
-        $scope.containers = [];
-        $scope.onfLtps = [];
-        $scope.clock = undefined;
-
-        $scope.networkElementId = neId;
-        $scope.revision = $scope.mountPoints.filter(function(mountpoint){
-          return mountpoint['node-id'] === neId;
-        }).map(function(mountpoint){
-          return mountpoint.onfCoreModelRevision;
-        })[0];
-
-        // network element alarms
-        var neAlarms = $scope.mountPoints.filter(function(mountpoint){
-          return mountpoint['node-id'] === neId;
-        }).map(function(mountpoint){
-          return mountpoint.onfCapabilities.filter(function(cap){
-            return cap.module === 'MicrowaveModel-NetworkElement-CurrentProblemList' || cap.module === 'onf-core-model-conditional-packages';
-          });
-        });
-        if (neAlarms.length === 1 && neAlarms[0].length === 1 ) {
-          $translate('MWTN_LOADING').then(function (translation) {
-            $scope.neCurrentProblems = translation;
-          });
-        } else {
-          $scope.neCurrentProblems = undefined;
-        }
-        
-        var spec = {
-          nodeId: $scope.networkElementId,
-          revision: $scope.revision,
-          pacId: 'ne'
-        };
-        $mwtnTest.getPacParts(spec).then(function(success){
-          $scope.collapseAll();
-          updatePart(spec, $mwtnTest.yangifyObject(success));
-        }, function(error){
-          $scope.collapseAll();
-          updatePart(spec, error);
-        });
-
-        // ptp-clock
-        var ptpClock = $scope.mountPoints.filter(function(mountpoint){
-          return mountpoint['node-id'] === neId;
-        }).map(function(mountpoint){
-          return mountpoint.onfCapabilities.filter(function(cap){
-            return cap.module === 'onf-ptp-dataset';
-          });
-        });
-        if (ptpClock.length === 1 && ptpClock[0].length === 1 ) {
-          $translate('MWTN_LOADING').then(function (translation) {
-            $scope.clock = translation;
-          });
-        } else {
-          $scope.clock = undefined;
-        }
-        
-      }
-    });
-
-  }]);
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest.module.js
deleted file mode 100644 (file)
index b2f0a8f..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module',
-        'app/mwtnCommons/bower_components/angular-clipboard/angular-clipboard'], function(ng) {
-  var mwtnTestApp = angular.module('app.mwtnTest', ['ui.grid', 'ui.bootstrap', 'app.core', 'ui.router.state', 'config', 'angular-clipboard']);
-
-  mwtnTestApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    mwtnTestApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-    NavHelperProvider.addControllerUrl('app/mwtnTest/mwtnTest.controller');
-    NavHelperProvider.addToMenu('mwtnTest', {
-     "link" : "#/mwtnTest/",
-     "active" : "main.mwtnTest",
-     "title" : "LTE RAN Test",
-     "icon" : "fa fa-check-square-o",  // Add navigation icon css class here
-     "page" : {
-        "title" : "LTE RAN Test",
-        "description" : "mwtnTest"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnTest', {
-        url: 'mwtnTest/:nodeId',
-        access: access.admin,
-        views : {
-            content : {
-                templateUrl: 'src/app/mwtnTest/templates/frame.tpl.html',
-                controller: 'mwtnTestCtrl'
-            }
-        }
-    });
-
-  });
-
-  return mwtnTestApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/mwtnTest.services.js
deleted file mode 100644 (file)
index b61ca53..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * @copyright 2017 highstreet technologies and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCommons/mwtnCommons.module', 'app/mwtnTest/mwtnTest.module'],function(mwtnTestApp) {
-
-  mwtnTestApp.register.factory('$mwtnTest', function($mwtnCommons, $mwtnDatabase, $mwtnLog) {
-
-    var COMPONENT = '$mwtnTest';
-    $mwtnLog.info({component: COMPONENT, message: '$mwtnTest started!'});
-
-    var service = {};
-    
-    service.parts = $mwtnCommons.parts;
-    service.getPacParts = $mwtnCommons.getPacParts;
-    service.getModules = $mwtnDatabase.getModules;
-    service.getPartGlobalId = $mwtnCommons.getPartGlobalId;
-    service.getPartLocalId = $mwtnCommons.getPartLocalId;
-    service.layerProtocolNameOrder = $mwtnCommons.layerProtocolNameOrder;
-    
-    service.separator = $mwtnCommons.separator;
-    service.yangify = $mwtnCommons.yangify;
-    service.yangifyObject = $mwtnCommons.yangifyObject;
-
-    return service;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/templates/frame.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/mwtnTest-module/src/main/resources/mwtnTest/templates/frame.tpl.html
deleted file mode 100644 (file)
index 6a341d2..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<ht-header help-link='sdnr/mwtnTest/0.4.0/README.md'></ht-header>
-<mwtn-select-network-element></mwtn-select-network-element>
-
-
-<div class="owl container" ng-show="networkElements.lenght !== 0">
-       <div class="row">
-
-               <uib-accordion close-others="oneAtATime">
-
-                       <div uib-accordion-group class="panel-primary"
-                           is-open="status.ne">
-                               <uib-accordion-heading>
-                                       <i class="pull-left fa" ng-class="{'fa-chevron-down': status.ne, 'fa-chevron-right': !status.ne}"></i>
-                                       <span>{{'MWTN_NETWORKELEMENT' | translate}} '{{onfNetworkElement.getName()}}'</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.ne"></i>
-                               </uib-accordion-heading>
-
-                               <button class="pull-right btn btn-default" type="button" 
-                                       clipboard 
-                                               supported="myClipboard.supported" 
-                                               text="myClipboard.getJson()" 
-                                               on-copied="myClipboard.copyToClipboard()" 
-                                               on-error="myClipboard.error(err)">
-                                       <i class="fa fa-clipboard" aria-hidden="true"></i>
-                               </button>
-
-                               <json-formatter json="onfNetworkElement.data" open="1"></json-formatter>
-                       </div>
-
-                       <div uib-accordion-group class="panel-default"
-                            is-open="status.mountpoint">
-                               <uib-accordion-heading>
-                                       <i class="pull-left fa" ng-class="{'fa-chevron-down': status.mountpoint, 'fa-chevron-right': !status.mountpoint}"></i>
-                                       <span>{{'MWTN_MOUNTPOINT' | translate}}</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.mountpoint"></i>
-                               </uib-accordion-heading>
-
-                               <button class="pull-right btn btn-default" type="button" 
-                                       clipboard 
-                                               supported="myClipboard.supported" 
-                                               text="myClipboard.getJson()" 
-                                               on-copied="myClipboard.copyToClipboard()" 
-                                               on-error="myClipboard.error(err)">
-                                       <i class="fa fa-clipboard" aria-hidden="true"></i>
-                               </button>
-
-                               <json-formatter json="mountpoint" open="1"></json-formatter>
-                       </div>
-
-                       <div uib-accordion-group class="panel-default"
-                            is-open="status.clock" ng-show="clock">
-                               <uib-accordion-heading>
-                                       <i class="pull-left fa" ng-class="{'fa-chevron-down': status.clock, 'fa-chevron-right': !status.clock}"></i>
-                                       <span>{{'MWTN_CLOCK' | translate}}</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.clock"></i>
-                               </uib-accordion-heading>
-
-                               <button class="pull-right btn btn-default" type="button" 
-                                       clipboard 
-                                               supported="myClipboard.supported" 
-                                               text="myClipboard.getJson()" 
-                                               on-copied="myClipboard.copyToClipboard()" 
-                                               on-error="myClipboard.error(err)">
-                                       <i class="fa fa-clipboard" aria-hidden="true"></i>
-                               </button>
-
-                               <json-formatter json="clock" open="1"></json-formatter>
-                       </div>
-
-                       <div uib-accordion-group class="panel-default"
-                               is-open="status.neCurrentProblems" ng-show="neCurrentProblems">
-                               <uib-accordion-heading>
-                                       <i class="pull-left fa" ng-class="{'fa-chevron-down': status.neCurrentProblems, 'fa-chevron-right': !status.neCurrentProblems}"></i>
-                                       <span>{{'MWTN_CURRENT_PROBLEM_LIST' | translate}}</span>
-                                       <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner.neCurrentProblems"></i>
-                               </uib-accordion-heading>
-
-                               <button class="pull-right btn btn-default" type="button" 
-                                       clipboard 
-                                               supported="myClipboard.supported" 
-                                               text="myClipboard.getJson()" 
-                                               on-copied="myClipboard.copyToClipboard()" 
-                                               on-error="myClipboard.error(err)">
-                                       <i class="fa fa-clipboard" aria-hidden="true"></i>
-                               </button>
-                               
-                               <json-formatter json="neCurrentProblems" open="1"></json-formatter>
-                       </div>
-
-                       <div ng-repeat="ltp in onfLtps" 
-                           uib-accordion-group
-                               class="panel-default"
-                               is-open="status['ltp' + separator + ltp.getData().uuid]">
-                               <uib-accordion-heading>
-                                       <i class="pull-left fa" ng-class="{'fa-chevron-down': status['ltp' + separator + ltp.getData().uuid], 'fa-chevron-right': !status['ltp' + separator + ltp.getData().uuid]}"></i>
-                                       <span>{{'MWTN_LTP' | translate}}(</span>
-                                       <b>{{ltp.getLayerProtocols()[0].getItuLabel().toUpperCase()}}</b>
-                                       <span>): {{ltp.getId()}}</span>
-                               </uib-accordion-heading>
-
-                               <button class="pull-right btn btn-default" type="button" 
-                                       clipboard 
-                                               supported="myClipboard.supported" 
-                                               text="myClipboard.getJson()" 
-                                               on-copied="myClipboard.copyToClipboard()" 
-                                               on-error="myClipboard.error(err)">
-                                       <i class="fa fa-clipboard" aria-hidden="true"></i>
-                               </button>
-
-                               <span>{{'MWTN_ID' | translate}}</span> <b>{{ltp.getId()}}</b><br/>
-                               <span>{{'MWTN_DIRECTIONALITY' | translate}}</span> <b>{{ltp.getDirectionality()}}</b><br/>
-                               <span>{{'MWTN_SERVER_LTPS' | translate}}</span> <b>{{ltp.getServerLtps()}}</b><br/>
-                               <span>{{'MWTN_CLIENT_LTPS' | translate}}</span> <b>{{ltp.getClientLtps()}}</b><br/><br/>
-
-                               <div ng-repeat="lp in ltp.getLayerProtocols()">
-                               <b>{{'MWTN_LAYER_PROTOCOL' | translate}}</b><br/>
-                               <span>{{'MWTN_ID' | translate}}</span> <b>{{lp.getId()}}</b><br/>
-                               <span>{{'MWTN_LAYER' | translate}}</span> <b>{{lp.getLayer()}}</b><br/>
-                               <span>{{'MWTN_TERMINATION_STATE' | translate}}</span> <b>{{lp.getTerminationState()}}</b><br/>
-                               <span>{{'MWTN_LABEL' | translate}}</span> <b>{{lp.getItuLabel().toUpperCase()}}</b><br/>
-                               <span>{{'MWTN_CAPABILITY' | translate}}</span> <b>{{lp.getCapability()}}</b><br/>
-                               <span>{{'MWTN_REVISON' | translate}}</span> <b>{{lp.getRevision()}}</b><br/>
-                               <span>{{'MWTN_CONDITIONAL_PACKAGE' | translate}}</span> <b>{{lp.getConditionalPackage()}}</b><br/><br/>
-                               <!-- <pre>{{lp.getData() | json}}</pre> -->
-                               </div>
-                               <json-formatter json="ltp.getData()" open="1"></json-formatter>
-                       </div>
-
-               </uib-accordion>
-       </div>
-
-       <div ng-repeat="orderedPac in orderedPacs" class="row" style="margin-top: 5px" ng-show="pacs[orderedPac]">
-        <uib-accordion close-others="oneAtATime">
-                       <div ng-repeat="pac in pacs[orderedPac]" 
-                 uib-accordion-group
-                 class="panel-primary"
-                 is-open="status[ [orderedPac, pac['layer-protocol']].join(separator) ]">
-                               <uib-accordion-heading>
-                                       <i class="pull-left fa" ng-class="{'fa-chevron-down': status[ [orderedPac, pac['layer-protocol']].join(separator) ], 'fa-chevron-right': !status[ [orderedPac, pac['layer-protocol']].join(separator) ]}"></i>
-                                       <span>{{ 'MWTN_' + orderedPac.toUpperCase().replaceAll('-', '_') | translate }} '{{pac['layer-protocol']}}'</span>                                              
-                               </uib-accordion-heading>
-
-                               <div ng-repeat="part in parts" 
-                                       uib-accordion-group
-                                       class="panel-default" 
-                                       is-open="status[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]">
-                                       <uib-accordion-heading>
-                                               <i class="pull-left fa" ng-class="{'fa-chevron-down': status[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ], 'fa-chevron-right': !status[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]}"></i>
-                                               <span>{{part}}</span>
-                                               <i class="pull-right fa fa-spinner fa-pulse" ng-show="spinner[ [orderedPac, pac['layer-protocol'], pac[part].id].join(separator) ]"></i>
-                                       </uib-accordion-heading>
-
-                                       <button class="pull-right btn btn-default" type="button" 
-                                                       clipboard 
-                                                       supported="myClipboard.supported" 
-                                                       text="myClipboard.getJson()" 
-                                                       on-copied="myClipboard.copyToClipboard()" 
-                                                       on-error="myClipboard.error(err)">
-                                               <i class="fa fa-clipboard" aria-hidden="true"></i>
-                                       </button>
-
-                               <json-formatter json="pac[part].data" open="1"></json-formatter>
-                               </div>
-                   </div>
-                       
-               </uib-accordion>
-       </div>
-</div>
-<hr />
-<div class="owl">
-       <span>ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTest/pom.xml
deleted file mode 100644 (file)
index b0436ff..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-    <artifactId>mwtn</artifactId>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <version>0.5.1-SNAPSHOT</version>
-  <relativePath>..</relativePath>
-  </parent>
-    <packaging>pom</packaging>
-    <groupId>com.highstreet.technologies.odl.dlux</groupId>
-    <artifactId>mwtnTest</artifactId>
-    <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
-    <prerequisites>
-        <maven>3.0</maven>
-    </prerequisites>
-
-  <modules>
-    <module>mwtnTest-module</module>
-    <module>mwtnTest-bundle</module>
-  </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-bundle/pom.xml
deleted file mode 100644 (file)
index c1639dc..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtnTopology</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>mwtnTopology-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>mwtnTopology-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>mwtnTopology-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-   
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index a5cfcfc..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="mwtnTopology"/>
-        <property name="url" value="/src/app/mwtnTopology"/>
-        <property name="directory" value="/mwtnTopology"/>
-        <property name="requireJs" value="app/mwtnTopology/mwtnTopology.module"/>
-        <property name="angularJs" value="app.mwtnTopology"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/mwtnTopology/mwtnTopology-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/pom.xml
deleted file mode 100644 (file)
index 1eb8126..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>mwtnTopology</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>mwtnTopology-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/doc/mwtnTopology.builinfo.md b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/doc/mwtnTopology.builinfo.md
deleted file mode 100755 (executable)
index 594b8e2..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# Buildinfo\r
-\r
-Ausgehend vom Verzeichnis:\r
-SDN-Projects-Boron/code/ux\r
-\r
-ll => pom.xml muss vorhanden sein.\r
-\r
-## manuelles Builden\r
-\r
-Die Schritte 1, 5 und 6 sind während des Buildens notwendig, die anderen Schritte sind zu Kontrollzwecken und zum starten / Stoppen vom Karaf Server\r
-\r
-1. Für den Compilevorgang der eigenen Komponenten:\r
-  - `cd ~/SDN-Projects-Boron/code`\r
-  - `mvn clean install -DskipTests`\r
-  - `cp -R ~/.m2/repository/com/highstreet $ODL_KARAF_HOME/system/com`\r
-2. Zum beenden von Karaf:\r
-  - ctrl+d in der Shell, auf der Karaf läuft.\r
-  - `sudo $ODL_KARAF_HOME/bin/client -u karaf "shutdown --force"`, wenn man nicht in der passenden Shell ist\r
-3. Starten von Karaf:\r
-  - `cd $ODL_KARAF_HOME`\r
-  - `./bin/karaf`\r
-4. Zum gucken, welche Module installiert sind (von highstreet, grep):\r
-  - `bundle:list | grep mwtn`\r
-5. Bundles deinstallieren (Funktioniert nur innerhalb der Karaf Shell)\r
-  - `bundle:uninstall "ONF :: Wireless :: mwtnCommons-bundle" "ONF :: Wireless :: mwtnTopology-bundle"`\r
-6. (geänderte) Bundles installieren (Funktioniert nur innerhalb der Karaf Shell)\r
-  - `bundle:install -s mvn:com.highstreet.technologies.odl.dlux/mwtnCommons-bundle/0.4.0-SNAPSHOT mvn:com.highstreet.technologies.odl.dlux/mwtnTopology-bundle/0.4.0-SNAPSHOT`\r
-\r
-## GIT:\r
-\r
-Abrufen:\r
-- `cd ~/SDN-Projects-Boron/code/ux/mwtnTopology/mwtnTopology-module/src/main/resources`\r
-- `git pull`\r
-\r
-Einchecken:\r
-- `git add doc/*.md`\r
-- `git status` (Kontrolle der einzucheckenden Dateien)\r
-- `git commit` (Ist der eincheckvorgang an sich (lokaler GitServer))\r
-- `git push` (Übertragen aller Commits zum zentralen Server)\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/doc/mwtnTopology.fs.md b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/doc/mwtnTopology.fs.md
deleted file mode 100755 (executable)
index 861306c..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-# mwtnTopology - Functional Specification\r
-\r
-## Beschreibung\r
-\r
-Das mwtnTopology Control zeichnet eine Karte mit Hilfe eines austauschbaren Kartendienstes\r
-Dabei wird die Satellitendarstellung verwendet (wenn möglich), sonst wird die Kartendarstellung gewählt.\r
-Über dem Kartenlayer soll ein Vectorlayer mit Informationen zu Mobilfunkmasten und zugehörigen Richtfunkstrecken dargestellt werden.\r
-Die Karte soll mittels Mausbedienung Scroll und Zoombar sein, Klicks auf einen Mast oder eine Richtfunkstrecke stellen weitere Informationen in einem Popup zur Verfügung.\r
-\r
-## Anforderungen\r
-\r
-* Die Webseite / der Webserver hat *keinen* Zugriff auf das öffentliche Internet. Online-Kartendienste wie Google, Bing oder OpenStreetMap sind damit nicht erreichbar.\r
-* Der Server stellt eine API bereit, an welcher die Kartenkacheln als Bitmaps (png/jpeg) bereitgestellt werden.\r
-* Der darzustellende Bereich wird angegeben durch\r
-  - Ein Latitude/Longitude Koordinatenpaar (Mittelpunkt) und eine Zoomstufe in % wobei 0% der "Weltraumansicht" und 100% der "Sandkrümel auf der Straße" entspricht.\r
-    Die benötigten Kacheln werden anhand der Zoomstufe und der Größe des Kartenausschnitts in Bildschirmpixel berechnet.\r
-  - Zwei Latitude/Longitude Koordinatenpaare, welche die obere rechte Ecke und die untere linke Ecke des darzustellenden Kartenausschnitts darstellen.\r
-    Die benötigte Zoomstufe wird anhand der Koordinatenpaare und der Größe des Kartenausschnitts in Bildschirmpixel berechnet.\r
-    + 2 Mögliche SubModi: "Fill" und "Cut"\r
-* Die Zoomstufen als %-Angaben werden auf die vom Kartenprovider verwendeten ganzzahligen Zoomstufen gemappt.\r
-  - Nicht jeder Kartenprovider kann für alle Zoomstufen Bitmaps liefern. Gibt es eine Möglichkeit die maximale Provider-Zoomstufe für eine Koordinate abzufragen?\r
-* Der Client cached die Bildkacheln, um die Serverlast zu reduzieren.\r
-  - Localstorage?\r
-\r
-## Offene Fragen\r
-\r
-* Soll die Karte immer eingenordet sein oder ist eine Kartenrotation erforderlich?\r
-* Welche Karten-UI-Steuerelemente müssen angezeigt werden\r
-  - +/- Button / Zoom-Slider\r
-  - 2D-Rotations-Gizmo / Kompass\r
-  - Geokoordinate Zentrieren\r
-  - Kartenscale (20m|---------------|)\r
-  - Copyright-Angaben der verwendeten Kartendaten\r
-  - Ein/Ausblenden des Vector-Overlays\r
-* Kann ein eigener Tile Render Server (wie z.B. Maperitive) verwendet werden?\r
-* Transparente, vorberechnete Kacheln des VectorLayers verfügbar? (Kacheln erlauben keine Hover-Informationen einzelner Richtfunktstrecken)\r
-\r
-## Berechnungsformeln\r
-\r
-- [OSM: Slippy map tilenames](http://wiki.openstreetmap.org/wiki/Slippy_map_tilenames)\r
-\r
-The first part of the URL specifies the tile server, and perhaps other parameters which might influence the style.\r
-\r
-Generally several subdomains (server names) are provided to get around browser limitations on the number of simultaneous HTTP connections to each host.\r
-Browser-based applications can thus request multiple tiles from multiple subdomains faster than from one subdomain.\r
-For example, OSM, OpenCycleMap and CloudMade servers have three subdomains (a.tile, b.tile, c.tile), MapQuest has four (otile1, otile2, otile3, otile4),\r
-all pointing to the same CDN. That all comes before the /zoom/x/y.png tail.\r
-\r
-Example:\r
-http://[abc].tile.openstreetmap.org/zoom/x/y.png\r
-\r
-```js\r
-function long2tile(lon,zoom) { return (Math.floor((lon+180)/360*Math.pow(2,zoom))); }\r
-function lat2tile(lat,zoom)  { return (Math.floor((1-Math.log(Math.tan(lat*Math.PI/180) + 1/Math.cos(lat*Math.PI/180))/Math.PI)/2 *Math.pow(2,zoom))); }\r
-\r
-var zoom        = 9;\r
-var top_tile    = lat2tile(north_edge, zoom); // eg.lat2tile(34.422, 9);\r
-var left_tile   = lon2tile(west_edge, zoom);\r
-var bottom_tile = lat2tile(south_edge, zoom);\r
-var right_tile  = lon2tile(east_edge, zoom);\r
-var width       = Math.abs(left_tile - right_tile) + 1;\r
-var height      = Math.abs(top_tile - bottom_tile) + 1;\r
-\r
-// total tiles\r
-var total_tiles = width * height; // -> eg. 377\r
-```\r
-\r
-## Links\r
-\r
-- [OpenStreetMap DE:Tile usage policy](http://wiki.openstreetmap.org/wiki/DE:Tile_usage_policy)\r
-- [OpenStreetMap DE:Karte in Webseite einbinden](http://wiki.openstreetmap.org/wiki/DE:Karte_in_Webseite_einbinden)\r
-- [OpenStreetMap DE:Maperitive](http://wiki.openstreetmap.org/wiki/DE:Maperitive)\r
-- [Maperitive, EN:Hauptwebseite](http://maperitive.net/)\r
-- [Google Maps Javascript API + Key anfordern](https://developers.google.com/maps/documentation/javascript/?hl=de)\r
-- [Google Maps Javascript Erste Schritte](https://developers.google.com/maps/documentation/javascript/tutorial?hl=de)\r
-- [Google Developer Console](https://console.developers.google.com/)\r
-- [GoogleMap AngularJS Directive](https://rawgit.com/allenhwkim/angularjs-google-maps/master/build/docs/index.html)\r
-- [Sample asnyc script load into head element](http://just-run.it/#/ByvA_ClTe/0)\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/images/mwtnTopology.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/images/mwtnTopology.png
deleted file mode 100755 (executable)
index 7ddbeb2..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/images/mwtnTopology.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology-custom.css
deleted file mode 100755 (executable)
index d04a764..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- *  Add your application related css here
- */
-
-.owl p span {
-  color: #393939;
-}
-
-.angular-google-map-container {
-       height: 1200px;
-}
-
-.mwtnTopologyGrid {
-  height: 412px;
-  background-color: white;
-}
-
-.mwtnTopologyGrid span {
-  color: #393939;
-}
-
-#mwtnTopology .nav-tabs {
-  border-bottom: 1px solid #ddd;
-}
-#mwtnTopology .nav-tabs > li {
-  float: left;
-  margin-bottom: -1px;
-}
-#mwtnTopology .nav-tabs > li > a {
-  margin-right: 2px;
-  line-height: 1.42857143;
-  border: 1px solid transparent;
-  border-radius: 4px 4px 0 0;
-
-  color: #555;
-  cursor: default;
-  background-color: #fff;
-  border: 1px solid #ddd;
-  border-bottom-color: transparent;
-}
-#mwtnTopology .nav-tabs > li > a:hover {
-  color: #fff;
-  cursor: default;
-  background-color: #428bca;
-  border: 1px solid #428bca;
-  border-color: #eee #eee #ddd;
-  border-bottom-color: transparent;
-
-}
-#mwtnTopology .nav-tabs > li.active > a,
-#mwtnTopology .nav-tabs > li.active > a:hover,
-#mwtnTopology .nav-tabs > li.active > a:focus {
-  color: #fff;
-  cursor: default;
-  background-color: #428bca;
-  border: 1px solid #428bca;
-  border-bottom-color: transparent;
-}
-#mwtnTopology .nav-tabs.nav-justified {
-  width: 100%;
-  border-bottom: 0;
-}
-#mwtnTopology .nav-tabs.nav-justified > li {
-  float: none;
-}
-#mwtnTopology .nav-tabs.nav-justified > li > a {
-  margin-bottom: 5px;
-  text-align: center;
-}
-#mwtnTopology .nav-tabs.nav-justified > .dropdown .dropdown-menu {
-  top: auto;
-  left: auto;
-}
-@media (min-width: 768px) {
-  #mwtnTopology .nav-tabs.nav-justified > li {
-    display: table-cell;
-    width: 1%;
-  }
-  #mwtnTopology .nav-tabs.nav-justified > li > a {
-    margin-bottom: 0;
-  }
-}
-#mwtnTopology .nav-tabs.nav-justified > li > a {
-  margin-right: 0;
-  border-radius: 4px;
-}
-#mwtnTopology .nav-tabs.nav-justified > .active > a,
-#mwtnTopology .nav-tabs.nav-justified > .active > a:hover,
-#mwtnTopology .nav-tabs.nav-justified > .active > a:focus {
-  border: 1px solid #ddd;
-}
-@media (min-width: 768px) {
-  #mwtnTopology .nav-tabs.nav-justified > li > a {
-    border-bottom: 1px solid #ddd;
-    border-radius: 4px 4px 0 0;
-  }
-  #mwtnTopology .nav-tabs.nav-justified > .active > a,
-  #mwtnTopology .nav-tabs.nav-justified > .active > a:hover,
-  #mwtnTopology .nav-tabs.nav-justified > .active > a:focus {
-    border-bottom-color: #fff;
-  }
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.controller.js
deleted file mode 100755 (executable)
index f8aa303..0000000
+++ /dev/null
@@ -1,4877 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-if (typeof (Number.prototype.toRad) === "undefined") {
-  Number.prototype.toRadians = function () {
-    return this * Math.PI / 180;
-  }
-}
-
-if (Number.prototype.toDegrees === undefined) {
-  Number.prototype.toDegrees = function () {
-    return this * 180 / Math.PI;
-  };
-}
-
-// If array is empty, undefined is returned.  If not empty, the first element
-// that evaluates to false is returned.  If no elements evaluate to false, the
-// last element in the array is returned.
-Array.prototype.and = function (defaultValue) {
-  for (var i = 0, len = this.length - 1; i < len && this[i]; i++);
-  return this.length ? this[i] : defaultValue;
-};
-
-// If array is empty, undefined is returned.  If not empty, the first element
-// that evaluates to true is returned.  If no elements evaluate to true, the
-// last element in the array is returned.
-Array.prototype.or = function () {
-  for (var i = 0, len = this.length - 1; i < len && !this[i]; i++);
-  return this[i];
-};
-
-var eventsFabric = function () {
-  var topics = {};
-  var hOP = topics.hasOwnProperty;
-
-  return {
-    subscribe: function (topic, listener) {
-      // Create the topic's object if not yet created
-      if (!hOP.call(topics, topic)) topics[topic] = [];
-
-      // Add the listener to queue
-      var index = topics[topic].push(listener) - 1;
-
-      // Provide handle back for removal of topic
-      return {
-        remove: function () {
-          delete topics[topic][index];
-        }
-      };
-    },
-    publish: function (topic, info) {
-      // If the topic doesn't exist, or there's no listeners in queue, just leave
-      if (!hOP.call(topics, topic)) return;
-
-      // Cycle through topics queue, fire!
-      topics[topic].forEach(function (item) {
-        item(info != undefined ? info : {});
-      });
-    }
-  };
-};
-
-var lastOpenedInfoWindow = null;
-
-/*********************************************************************************************/
-
-/** @typedef  {{ id: string, siteA: string, siteZ: string, siteNameA: string, siteNameZ: string, airInterfaceLinks: {id: string, siteLink: string, radio: string, polarization: string }[]}} SiteLinkDetails */
-
-define(['app/mwtnCommons/bower_components/lodash/dist/lodash',
-  'app/mwtnCommons/bower_components/cytoscape/dist/cytoscape',
-  'app/mwtnTopology/mwtnTopology.module',
-  'app/mwtnTopology/mwtnTopology.services',
-  'app/mwtnCommons/mwtnCommons.services'
-], function (_, cytoscape, mwtnTopologyApp) {
-
-  // module.exports = function () {
-  //   const mwtnTopologyApp = require('app/mwtnTopology/mwtnTopology.module');
-  //   const mwtnTopologyService = require('app/mwtnTopology/mwtnTopology.services');
-  //   const cytoscape = require('cytoscape');
-
-  // remove '_' from global scope but use it here as '_'.
-  _.noConflict();
-
-  /********************************************* Sites *************************/
-
-  mwtnTopologyApp.directive('mwtnTopologyMap', ["$timeout", "$q", "$mwtnTopology", function ($timeout, $q, $mwtnTopology) {
-    return {
-      restrict: 'E',
-      replace: true,
-      template: '<div style="position:realtive;width:100%;height:700px" ng-transclude=""></div>',
-      controller: function () {
-
-      },
-      transclude: true,
-      scope: {
-        manualMapBounds: "=?",
-        onBoundsChanged: "&?"
-      },
-      link: function (scope, element, attrs, ctrl) {
-
-        var mapApiReadyDefer = $q.defer();
-        var disbaleNotifications = true;
-        //var includeCenter = false;
-
-        var initialMapOptions = {
-          center: new google.maps.LatLng(0, 0),
-          mapTypeId: google.maps.MapTypeId.HYBRID,
-          panControl: false,
-          rotateControl: false,
-          streetViewControl: false,
-          tilt: 0,
-          zoom: 2,
-          minZoom: 2
-        };
-
-        // Wait at least one digest cycle before init the google map.
-        $timeout(function () {
-          ctrl.map = new google.maps.Map(element[0], initialMapOptions);
-
-          // Wait until google maps is fully intialized to attach nessessary event handler.
-          waitUntilGoogleMapsIsReady();
-        });
-
-        element.on("$destroy", function () {
-          if (scope.waitUntilGoogleMapsIsReadyTimeoutId) {
-            $timeout.cancel(scope.waitUntilGoogleMapsIsReadyTimeoutId);
-          }
-          if (scope.onDragEndListener) {
-            google.maps.event.removeListener(scope.onDragEndListener);
-            delete (scope.onDragEndListener);
-          }
-          if (scope.onZoomChangedListener) {
-            google.maps.event.removeListener(scope.onZoomChangedListener);
-            delete (scope.onZoomChangedListener);
-          }
-
-          // window.removeEventListener('resize', onBoundsChanged);
-
-        });
-
-        scope.$watch("manualMapBounds", function (newBounds, oldBounds) {
-          mapApiReadyDefer.promise.then(function () {
-
-            // if this was an uri change from an not user originated action just return;            
-            if (newBounds.internal) return;
-
-            // values must exist and at least one must be different or initial load (new === old)
-            if (newBounds.bottom != null && newBounds.left != null && newBounds.top != null && newBounds.right != null) {
-              fitBounds(ctrl.map, new google.maps.LatLngBounds(
-                new google.maps.LatLng(newBounds.bottom, newBounds.left),
-                new google.maps.LatLng(newBounds.top, newBounds.right)));
-            } else if (newBounds.lat != null && newBounds.lng != null && newBounds.zoom != null && (newBounds.lat != oldBounds.lat || newBounds.lng != oldBounds.lng || newBounds.zoom != oldBounds.zoom || newBounds === oldBounds)) {
-              disbaleNotifications = true;
-              google.maps.event.addListenerOnce(ctrl.map, 'bounds_changed', function (event) {
-                disbaleNotifications = false;
-                onBoundsChanged(false);
-
-              });
-              ctrl.map.setCenter({ lat: newBounds.lat, lng: newBounds.lng });
-              ctrl.map.setZoom(newBounds.zoom);
-
-            }
-            console.log("manualMapBounds", newBounds);
-          });
-        });
-
-        /**
-         * An asynchronous function that is called continuously every 100 milliseconds until the google maps control has finished its first complete draw.
-         * Then it sets up all event handlers and reports its bounds.
-         */
-        function waitUntilGoogleMapsIsReady() {
-          var getBoundsApi = ctrl.map.getBounds();
-          if (getBoundsApi) {
-            delete (scope.waitUntilGoogleMapsIsReadyTimeoutId);
-            // Change to dragend https://developers.google.com/maps/documentation/javascript/events?hl=de
-            scope.onDragEndListener = ctrl.map.addListener('dragend', function () {
-              onBoundsChanged(true);
-            });
-            scope.onZoomChangedListener = ctrl.map.addListener('zoom_changed', function () {
-              onBoundsChanged(true);
-            });
-            // window.addEventListener('resize', function () {
-            //   onBoundsChanged(false);
-            // });
-
-            disbaleNotifications = false;
-            mapApiReadyDefer.resolve();
-          } else {
-            scope.waitUntilGoogleMapsIsReadyTimeoutId = $timeout(waitUntilGoogleMapsIsReady, 100);
-          }
-        }
-
-        /**
-         * Gets the current bound and zoom level of the map control and reports it to its parent component.
-         * Hint: do not call directly use fitBounds helper function since there is a google bug in the fit bounds function.
-         */
-        function onBoundsChanged(userOriginated) {
-          if (!disbaleNotifications && scope.onBoundsChanged && angular.isFunction(scope.onBoundsChanged)) {
-
-            var getBoundsApi = ctrl.map.getBounds();
-            var northEastApi = getBoundsApi.getNorthEast();
-            var southWestApi = getBoundsApi.getSouthWest();
-            var center = ctrl.map.getCenter();
-
-            var data = {
-              top: northEastApi.lat(),
-              right: northEastApi.lng(),
-              bottom: southWestApi.lat(),
-              left: southWestApi.lng(),
-              lat: center.lat(),
-              lng: center.lng(),
-              zoom: ctrl.map.getZoom()
-            };
-
-            console.log("onBoundsChanged", data);
-
-            scope.onBoundsChanged({
-              data: data,
-              userOriginated: userOriginated === true
-            });
-          }
-        }
-
-        // bug: the original google code will fit bounds will add some extra space, this function will fix it
-        function fitBounds(map, bounds) {
-          var oldBounds = map.getBounds();
-
-          // ensure there is any change
-          if (oldBounds.toUrlValue() == bounds.toUrlValue()) {
-            return;
-          }
-
-          disbaleNotifications = true;
-          google.maps.event.addListenerOnce(map, 'bounds_changed', function (event) {
-            // bugfix: this is a fix for the https://issuetracker.google.com/issues/35820423 
-            //         the map does sometime zoom out if it gets its one bounds
-
-            // var newSpan = map.getBounds().toSpan();              // the span of the map set by Google fitBounds (always larger by what we ask)
-            // var askedSpan = bounds.toSpan();                     // the span of what we asked for
-            // var latRatio = (newSpan.lat() / askedSpan.lat()) - 1;  // the % of increase on the latitude
-            // var lngRatio = (newSpan.lng() / askedSpan.lng()) - 1;  // the % of increase on the longitude
-            // // if the % of increase is too big (> to a threshold) we zoom in
-            // if (Math.min(latRatio, lngRatio) > 0.46) {
-            //   // 0.46 is the threshold value for zoming in. It has been established empirically by trying different values.
-            //   this.setZoom(this.getZoom() + 1);
-            // }
-            disbaleNotifications = false;
-            onBoundsChanged(false);
-
-          });
-          map.fitBounds(bounds); // does the job asynchronously
-        }
-      }
-    };
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologyMapSites', ['$compile', '$rootScope', function ($compile, $rootScope) {
-
-    return {
-      restrict: 'E',
-      require: '^mwtnTopologyMap',
-      scope: {
-        sites: "=",
-        selectedSite: "=",
-        api: "="
-      },
-      link: function (scope, element, attrs, mwtnTopologyMapController) {
-        // todo: shouild come from a service
-        var normalIcon = {
-          path: google.maps.SymbolPath.CIRCLE,
-          scale: 10,
-          strokeColor: '#00ccff',
-          strokeOpacity: 0.8,
-          strokeWeight: 2,
-          fillColor: '#00ccff',
-          fillOpacity: 0.35,
-          zIndex: 2
-        };
-
-        var highlightIcon = {
-          path: google.maps.SymbolPath.CIRCLE,
-          scale: 10,
-          strokeColor: '#eaae3c',
-          strokeOpacity: 0.8,
-          strokeWeight: 3,
-          fillColor: '#eaae3c',
-          fillOpacity: 0.65,
-          zIndex: 2
-        };
-
-        var selectedIcon = {
-          path: google.maps.SymbolPath.CIRCLE,
-          scale: 10,
-          strokeColor: '#00FD30',
-          strokeOpacity: 0.8,
-          strokeWeight: 2,
-          fillColor: '#00FD30',
-          fillOpacity: 0.35,
-          zIndex: 2
-        };
-
-        scope.displayedSites = {};
-        scope.knownSites = {};
-
-        scope.$watch("selectedSite", function (newSiteId, oldSiteId) {
-
-          if (oldSiteId && scope.displayedSites[oldSiteId]) {
-            scope.displayedSites[oldSiteId].setOptions({
-              icon: normalIcon
-            });
-          }
-
-          if (newSiteId && scope.displayedSites[newSiteId]) {
-            scope.displayedSites[newSiteId].setOptions({
-              icon: selectedIcon
-            });
-          }
-
-        });
-
-        if (!scope.api) return;
-
-        /**
-         * Updates the google map markers
-         * @param addedSiteIds {string[]} The ids of the sites which are added to the scope.displayedSites dictionary.
-         * @param removedFromVisibleIds {string[]} The ids of sites which are removed from the visible bounding rectangle.
-         * @param movedFromVisibleToKnownIds {string[]} The ids of sites which are moved from the visible bounding rectangle to the extended bounding rectangle.
-         * @param removedFromKnownIds {string[]} The ids of sites which are removed from the extended bounding rectangle.
-         * @param movedFromKnownToVisibleIds {string[]} The ids of sites which are moved from the extended bounding rectangle to the visible bounding rectangle.
-         */
-        scope.api.updateSites = function (addedSiteIds, removedFromVisibleIds, movedFromVisibleToKnownIds, removedFromKnownIds, movedFromKnownToVisibleIds) {
-          if (!addedSiteIds) addedSiteIds = [];
-          if (!removedFromVisibleIds) removedFromVisibleIds = [];
-          if (!movedFromVisibleToKnownIds) movedFromVisibleToKnownIds = [];
-          if (!removedFromKnownIds) removedFromKnownIds = [];
-          if (!movedFromKnownToVisibleIds) movedFromKnownToVisibleIds = [];
-
-          removedFromVisibleIds.forEach(function (siteId) {
-            var marker = scope.displayedSites[siteId];
-            if (marker) {
-              marker.setMap(null);
-              //delete marker;
-              delete scope.displayedSites[siteId];
-            }
-          });
-
-          removedFromKnownIds.forEach(function (siteId) {
-            var marker = scope.knownSites[siteId];
-            if (marker) {
-              marker.setMap(null);
-              //delete marker;
-              delete scope.knownSites[siteId];
-            }
-          });
-
-          movedFromVisibleToKnownIds.forEach(function (siteId) {
-            var marker = scope.displayedSites[siteId];
-            if (marker) {
-              marker.setVisible(false);
-              scope.knownSites[siteId] = marker;
-              delete scope.displayedSites[siteId];
-            }
-          });
-
-          movedFromKnownToVisibleIds.forEach(function (siteId) {
-            var marker = scope.knownSites[siteId];
-            if (marker) {
-              marker.setVisible(true);
-              scope.displayedSites[siteId] = marker;
-              delete scope.knownSites[siteId];
-            }
-          });
-
-          addedSiteIds.forEach(function (newSiteId) {
-            var newSite = scope.sites[newSiteId];
-            var newSiteNormalIcon = Object.assign({}, normalIcon, {
-              fillColor: (newSite.type === 'data-center') ? "#ffff00": "#00ccff",
-              strokeColor: (newSite.type === 'data-center') ? "#ffff00" : "#00ccff"
-            });
-            var newSiteHighlightIcon = Object.assign({}, highlightIcon, { 
-              fillColor: (newSite.type === 'data-center') ? "#ffff00": "#00ccff",
-              strokeColor: (newSite.type === 'data-center') ? "#ffff00" : "#00ccff"
-             });
-            if (newSite && !scope.displayedSites[newSiteId]) {
-
-              // create the marker
-              var marker = new google.maps.Marker({
-                map: mwtnTopologyMapController.map,
-                position: newSite.location,
-                title: newSite.name,
-                icon: newSiteNormalIcon
-              });
-
-              // add event listeners to the marker
-              marker.addListener('click', function () {
-                // cloase all already opened windows
-                if (lastOpenedInfoWindow) {
-                  lastOpenedInfoWindow.close();
-                  lastOpenedInfoWindow = null;
-                }
-
-                // compile the content
-                var infoWindowTemplate = '<mwtn-topology-site-details site-id="siteId" />';
-                var infoWindowScope = $rootScope.$new();
-                infoWindowScope['siteId'] = newSiteId;
-                var infoWindowContent = $compile(infoWindowTemplate)(infoWindowScope)[0];
-
-                // create the info window
-                var infowindow = new google.maps.InfoWindow({
-                  content: infoWindowContent,
-                  disableAutoPan: true
-                });
-
-                // open the window and keek a refenrece to close it if new window opens               
-                infowindow.open(mwtnTopologyMapController.map, marker);
-                lastOpenedInfoWindow = infowindow;
-
-                // remove the reference if the windows is closed                
-                infowindow.addListener('closeclick', function () {
-                  lastOpenedInfoWindow = null;
-                });
-              });
-
-              marker.addListener('mouseover', function () {
-                marker.setOptions({ icon: newSiteHighlightIcon });
-              });
-
-              marker.addListener('mouseout', function () {
-                marker.setOptions({ icon: newSiteNormalIcon });
-              });
-
-              // store marker
-              scope.displayedSites[newSiteId] = marker;
-            }
-          });
-        };
-
-      }
-    }
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologyMapSiteLinks', ['$compile', '$rootScope', function ($compile, $rootScope) {
-    return {
-      restrict: 'E',
-      require: '^mwtnTopologyMap',
-      scope: {
-        selectedSiteLink: "=",
-        siteLinks: "=",
-        api: "="
-      },
-      link: function (scope, element, attrs, mwtnTopologyMapController) {
-
-        var normalColor = "#FF0000";
-        var selectedColor = "#00FD30";
-
-        scope.$watch("selectedSiteLink", function (newSiteLinkId, oldSiteLinkId) {
-
-          if (oldSiteLinkId && scope.displayedSiteLinks[oldSiteLinkId]) {
-            scope.displayedSiteLinks[oldSiteLinkId].setOptions({
-              strokeColor: normalColor,
-            });
-          }
-
-          if (newSiteLinkId && scope.displayedSiteLinks[newSiteLinkId]) {
-            scope.displayedSiteLinks[newSiteLinkId].setOptions({
-              strokeColor: selectedColor,
-            });
-          }
-
-        });
-
-        scope.displayedSiteLinks = {};
-
-        /**
-         * Updates the google map Polylines
-         * @param addedSiteLinkIds {string[]} The ids of sites links which are added to the scope.displayedSiteLinks dictionary and the google map.
-         * @param removedSiteLinkIds {string[]} The ids of sites links which are removed from the visible bounding rectangle within the google map.
-         */
-        scope.api.updateSiteLinks = function (addedSiteLinkIds, removedSiteLinkIds) {
-          if (!addedSiteLinkIds) addedSiteLinkIds = [];
-          if (!removedSiteLinkIds) removedSiteLinkIds = [];
-
-          removedSiteLinkIds.forEach(function (siteLinkId) {
-            var polyline = scope.displayedSiteLinks[siteLinkId];
-            if (polyline) {
-              polyline.setMap(null);
-              //delete polyline;
-              delete scope.displayedSiteLinks[siteLinkId];
-            }
-          });
-
-          addedSiteLinkIds.forEach(function (siteLinkId) {
-            var siteLink = scope.siteLinks[siteLinkId];
-            console.log(siteLink);
-            
-            if (siteLink && !scope.displayedSiteLinks[siteLinkId]) {
-
-              // create the poly line
-              var polyline = new google.maps.Polyline({
-                map: mwtnTopologyMapController.map,
-                path: [siteLink.siteA.location, siteLink.siteZ.location],
-                strokeColor: siteLink.type === 'traffic' ? '#00ccff': '#ffff00',
-                strokeOpacity: 0.8,
-                strokeWeight: siteLink.type === 'traffic' ? 4 : 2,
-                zIndex: 1,
-                geodesic: true
-              });
-              console.log(siteLink.type, polyline.strokeColor);
-              
-              // add event listeners to the polyline
-              polyline.addListener('click', function (event) {
-                // cloase all already opened windows
-                if (lastOpenedInfoWindow) {
-                  lastOpenedInfoWindow.close();
-                  lastOpenedInfoWindow = null;
-                }
-
-                // compile the content
-                var infoWindowTemplate = '<mwtn-topology-link-details link-id="linkId"></mwtn-topology-link-details>';
-                var infoWindowScope = $rootScope.$new();
-                infoWindowScope['linkId'] = siteLinkId;
-                var infoWindowContent = $compile(infoWindowTemplate)(infoWindowScope)[0];
-
-                // create the info window
-                var infowindow = new google.maps.InfoWindow({
-                  content: infoWindowContent,
-                  disableAutoPan: true
-                });
-
-                // open the window and keek a refenrece to close it if new window opens               
-                // adjust and show the info window
-                infowindow.setPosition(event.latLng);
-                infowindow.open(mwtnTopologyMapController.map);
-                lastOpenedInfoWindow = infowindow;
-
-                // remove the reference if the windows is closed                
-                infowindow.addListener('closeclick', function () {
-                  lastOpenedInfoWindow = null;
-                });
-
-              });
-
-              polyline.addListener('mouseover', function () {
-                polyline.setOptions({ strokeWeight: 6 });
-              });
-
-              polyline.addListener('mouseout', function () {
-                polyline.setOptions({ strokeWeight: 3 });
-              });
-
-              // store the ployline              
-              scope.displayedSiteLinks[siteLinkId] = polyline;
-            }
-          });
-        };
-
-      }
-    };
-  }]);
-
-  mwtnTopologyApp.controller('mwtnTopologySiteDetailsController', ['$scope', '$timeout', '$mwtnTopology', function ($scope, $timeout, $mwtnTopology) {
-    var vm = this;
-    vm.site = null;
-
-    $scope.$watch(function () { return vm.siteId }, function (newSiteId, oldSiteId) {
-      if (!newSiteId) return;
-
-      vm.status = {
-        message: 'Searching...',
-        type: 'warning',
-        isWorking: true
-      };
-
-      $mwtnTopology.getSiteDetailsBySiteId(newSiteId).then(function (siteDetails) {
-        vm.site = siteDetails;
-
-        vm.status = {
-          message: undefined,
-          type: 'success',
-          isWorking: false
-        };
-      }, function (err) {
-        vm.status = {
-          message: err,
-          type: 'error',
-          isWorking: false
-        };
-      });
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologySiteDetails', function () {
-    return {
-      scope: { siteId: "=" },
-      restrict: 'E',
-      controller: 'mwtnTopologySiteDetailsController',
-      controllerAs: 'vm',
-      bindToController: true,
-      templateUrl: 'src/app/mwtnTopology/templates/siteDetails.tpl.html'
-    };
-  });
-
-  mwtnTopologyApp.controller('mwtnTopologyLinkDetailsController', ['$scope', '$timeout', '$mwtnTopology', function ($scope, $timeout, $mwtnTopology) {
-    /** @type {{ link: SiteLinkDetails } & {[key: string]: any}} */
-    var vm = this;
-    vm.site = null;
-    vm.link = null;
-
-    $scope.$watch(function () { return vm.linkId }, function (newLinkId, oldLinkId) {
-      if (!newLinkId) return;
-
-      vm.status = {
-        message: 'Searching...',
-        type: 'warning',
-        isWorking: true
-      };
-
-      // getLinkDetailsByLinkId
-      $mwtnTopology.getLinkDetailsByLinkId(newLinkId).then(
-        /** @param {SiteLinkDetails} linkDetails*/
-        function (linkDetails) {
-          vm.link = linkDetails;
-
-          vm.status = {
-            message: undefined,
-            type: 'success',
-            isWorking: false
-          };
-        }, function (err) {
-          vm.status = {
-            message: err,
-            type: 'error',
-            isWorking: false
-          };
-        });
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologyLinkDetails', function () {
-    return {
-      scope: { linkId: "=" },
-      restrict: 'E',
-      controller: 'mwtnTopologyLinkDetailsController',
-      controllerAs: 'vm',
-      bindToController: true,
-      templateUrl: 'src/app/mwtnTopology/templates/linkDetails.tpl.html'
-    };
-  });
-
-  mwtnTopologyApp.controller('mwtnTopologyFrameController', ['$scope', '$rootScope', '$timeout', '$state', '$window', '$mwtnTopology', function ($scope, $rootScope, $timeout, $state, $window, $mwtnTopology) {
-    var vm = this;
-
-    $rootScope.section_logo = 'src/app/mwtnTopology/images/mwtnTopology.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-    /** @type {{ [tabName: string] : { [parameterName : string] : any } }} */
-    var tabParameters = {};
-
-    var tabs;
-    (function (tabs) {
-      tabs[tabs["site"] = 0] = "site";
-      tabs[tabs["physical"] = 1] = "physical";
-      tabs[tabs["ethernet"] = 2] = "ethernet";
-      tabs[tabs["ieee1588"] = 3] = "ieee1588";
-    })(tabs || (tabs = {}));
-
-    $scope.$watch(function () { return vm.activeTab; }, function (newVal, oldVal, scope) {
-      if (newVal == null) return;
-
-      var newName = tabs[newVal];
-
-      if (oldVal != null && tabs[oldVal]) {
-        var oldName = tabs[oldVal];
-        tabParameters[oldName] = $state.params;
-      }
-
-      var newParameters = Object.keys($state.params).reduce(function (acc, cur, ind, arr) { acc[cur] = null; return acc; }, {});
-      Object.assign(newParameters, tabParameters[newName] || {}, { tab: newName, internal: false });
-
-      $state.go('main.mwtnTopology', newParameters, { notify: false });
-      console.log("activeTab: ", newName);
-    });
-
-    $scope.$watch(function () { return $state.params.tab; }, function (newVal, oldVal, scope) {
-      if (newVal == oldVal) return;
-      if (newVal && !$state.params.internal) {
-        vm.activeTab = tabs[newVal || "site"];
-        console.log("navigationTab: ", vm.activeTab);
-      }
-    });
-
-    // hide all tabs until the google api is fully loaded.
-    // initialize with true is the promise is resolved === 1
-    vm.googleIsReady = $mwtnTopology.googleMapsApiPromise.$$state.status === 1;
-
-    if (!vm.googleIsReady) $mwtnTopology.googleMapsApiPromise.then(function () {
-      $timeout(function () {
-        vm.googleIsReady = true;
-      });
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologyFrame', function () {
-    return {
-      restrict: 'E',
-      controller: 'mwtnTopologyFrameController',
-      controllerAs: 'vm',
-      templateUrl: 'src/app/mwtnTopology/templates/frame.tpl.html'
-    };
-  });
-
-  mwtnTopologyApp.controller('mwtnTopologySiteViewController', ['$scope', '$q', '$timeout', '$state', '$window', '$mwtnTopology', function ($scope, $q, $timeout, $state, $window, $mwtnTopology) {
-    var vm = this;
-    // Determines if a database request loop should be canceld.
-    var cancelRequested = false;
-    // Represents a defer which is resolved, if a cancel was requested and fulfilled.
-    var cancelDefer = $q.defer();
-    // Represents the new bounding rectangle who was set with the last user action to change the map bounds.
-    // The value is saved until the cancel operation is fulfilled.
-    /** @type {{top: number, right: number, bottom: number, left: number, zoom: number}} */
-    var waitForCancelMapBoundAndZoom;
-    // While getting all sites collect all site link ids which are available through visible and known sites.
-    // This dictionary will be cleared each time a new map bound is changed and a new database request loop is started.
-    var collectedSiteLinkIds = {};
-
-    vm.status = {
-      // Determines the bounds of the map which is manually set by the code. These are the initial values.
-      manualMapBounds: {
-        top: !Number.isNaN(+$state.params.top) ? +$state.params.top : undefined,
-        bottom: !Number.isNaN(+$state.params.bottom) ? +$state.params.bottom : undefined,
-        left: !Number.isNaN(+$state.params.left) ? +$state.params.left : undefined,
-        right: !Number.isNaN(+$state.params.right) ? +$state.params.right : undefined,
-        zoom: !Number.isNaN(+$state.params.zoom) ? +$state.params.zoom : undefined,
-        lat: !Number.isNaN(+$state.params.lat) ? +$state.params.lat : undefined,
-        lng: !Number.isNaN(+$state.params.lng) ? +$state.params.lng : undefined
-      },
-
-      // Determines if the accordeon group element for SiteMap, SiteGrid or SiteLinkGrid is open.
-      siteMapIsOpen: true,
-      siteGridIsOpen: true,
-      siteLinkGridIsOpen: true,
-      sitePathGridIsOpen: false,
-
-      // Determines if a processing is running.
-      processing: false,
-      totalSitesInBoundingBox: 0,
-      loadedSitesInBoundingBox: 0,
-      maximumCountOfVisibleSites: 300,
-
-      // selectet Elements
-      site: null,
-      siteLink: null,
-      sitePath: null
-    };
-
-    // Contains the known and visible sites as well as known site links as dictionaries.
-    vm.knownSites = {};
-    vm.visibleSites = {};
-    vm.knownSiteLinks = {};
-
-    // Api-Object that will be filled with update methods from the mwtnTopologyMapSites Component.
-    vm.mapSitesComponentApi = {};
-    // Api-Object that will be filled with update methods from the mwtnTopologyMapSiteLinks Component.
-    vm.mapSiteLinksComponentApi = {};
-
-    //addedSiteLinkIds, removedSiteLinkIds
-
-    initializeMapBounds();
-
-    function initializeMapBounds() {
-
-      vm.status.manualMapBounds = {
-        top: !Number.isNaN(+$state.params.top) ? +$state.params.top : undefined,
-        bottom: !Number.isNaN(+$state.params.bottom) ? +$state.params.bottom : undefined,
-        left: !Number.isNaN(+$state.params.left) ? +$state.params.left : undefined,
-        right: !Number.isNaN(+$state.params.right) ? +$state.params.right : undefined,
-        zoom: !Number.isNaN(+$state.params.zoom) ? +$state.params.zoom : undefined,
-        lat: !Number.isNaN(+$state.params.lat) ? +$state.params.lat : undefined,
-        lng: !Number.isNaN(+$state.params.lng) ? +$state.params.lng : undefined
-      };
-
-      // Calculate the initial map control bound, if we have no initial bounds 
-      if ((vm.status.manualMapBounds.top == null && vm.status.manualMapBounds.bottom == null && vm.status.manualMapBounds.right == null && vm.status.manualMapBounds.left == null && vm.status.manualMapBounds.lat == null && vm.status.manualMapBounds.lng == null && $state.params.site == null && $state.params.siteLink == null && $state.params.sitePath == null)) {
-        $mwtnTopology.getOuterBoundingRectangleForSites().then(function (bounds) {
-          // Ensures that the new value is set within a digest cycle. 
-          vm.status.manualMapBounds = bounds;
-        });
-      }
-    }
-
-    $scope.$watch(function () { return $state.params.site; }, function (newVal, oldVal, scope) {
-      if (newVal) {
-        $mwtnTopology.getSiteDetailsBySiteId(newVal).then(function (siteDetails) {
-          if (siteDetails) {
-            // just update the location of the browser if the location has changed      
-            $state.go('main.mwtnTopology', {
-              tab: "site",
-              lat: siteDetails.location.lat,
-              lng: siteDetails.location.lng,
-              zoom: 19,
-              top: null,
-              bottom: null,
-              right: null,
-              left: null,
-              site: $state.params.site,
-              siteLink: null,
-              sitePath: null,
-              internal: false
-            }, {
-                notify: false
-              });
-          };
-        }, function (err) {
-
-        });
-      }
-    });
-
-    $scope.$watch(function () { return $state.params.siteLink; }, function (newVal, oldVal, scope) {
-      if (newVal) {
-        $mwtnTopology.getLinkDetailsByLinkId(newVal).then(function (link) {
-          if (link) {
-
-            var top = link.siteA.location.lat >= link.siteZ.location.lat ? link.siteA.location.lat : link.siteZ.location.lat;
-            var bottom = link.siteA.location.lat >= link.siteZ.location.lat ? link.siteZ.location.lat : link.siteA.location.lat;
-
-            // todo: this code is not able to handle links which overlap the -100|180 ° borderline
-            var left = link.siteA.location.lng <= link.siteZ.location.lng ? link.siteA.location.lng : link.siteZ.location.lng;
-            var right = link.siteA.location.lng <= link.siteZ.location.lng ? link.siteZ.location.lng : link.siteA.location.lng;
-            // just update the location of the browser if the location has changed      
-            $state.go('main.mwtnTopology', {
-              tab: "site",
-              lat: null,
-              lng: null,
-              zoom: $state.params.zoom,
-              top: top,
-              bottom: bottom,
-              right: right,
-              left: left,
-              site: null,
-              siteLink: $state.params.siteLink,
-              sitePath: null,
-              internal: false
-            }, {
-                notify: false
-              });
-          };
-        }, function (err) {
-
-        });
-      }
-    });
-
-    $scope.$watchCollection(function () { return [vm.status.siteMapIsOpen, vm.status.siteGridIsOpen, vm.status.siteLinkGridIsOpen, vm.status.sitePathGridIsOpen] }, function (newVal, oldVal) {
-      if (newVal[1] || newVal[2] || newVal[3]) {
-        $timeout(function () {
-          $window.dispatchEvent(new Event("resize"));
-        });
-      }
-    });
-
-    $scope.$watchCollection(function () { return [+$state.params.top, +$state.params.bottom, +$state.params.left, +$state.params.right, +$state.params.lat, +$state.params.lng, +$state.params.zoom]; }, function (newVal, oldVal, scope) {
-
-      if (oldVal == null || oldVal === newVal) return; // ignore initial value
-
-      if (!vm.status.siteMapIsOpen) {
-        console.log("open Site Map")
-        vm.status.siteMapIsOpen = true;
-        return;
-      }
-
-      vm.status.manualMapBounds = {
-        top: !Number.isNaN(newVal[0]) ? newVal[0] : undefined,
-        bottom: !Number.isNaN(newVal[1]) ? newVal[1] : undefined,
-        left: !Number.isNaN(newVal[2]) ? newVal[2] : undefined,
-        right: !Number.isNaN(newVal[3]) ? newVal[3] : undefined,
-        zoom: !Number.isNaN(newVal[6]) ? newVal[6] : undefined,
-        internal: !!$state.params.internal
-      };
-
-      if (!Number.isNaN(newVal[4]) && !Number.isNaN(newVal[5])) {
-        vm.status.manualMapBounds.lat = newVal[4];
-        vm.status.manualMapBounds.lng = newVal[5];
-      } else {
-        vm.status.manualMapBounds.lat = undefined;
-        vm.status.manualMapBounds.lng = undefined;
-      }
-
-      if (!!$state.params.internal) $state.params.internal = false;
-
-    });
-
-    $scope.$watchCollection(function () { return vm.status.siteMapIsOpen }, function (newVal, oldVal, scope) {
-      if (oldVal == newVal) return; // ignore initial value
-      if (newVal) {
-        // Map (re)-opend
-        initializeMapBounds();
-      } else {
-        // Map closed
-        vm.status.loadedSitesInBoundingBox = 0;
-        vm.status.totalSitesInBoundingBox = 0;
-        vm.status.manualMapBounds = {};
-        vm.knownSites = {};
-        vm.visibleSites = {};
-        vm.knownSiteLinks = {};
-      };
-      // tell all sub components the visuability of the map view
-      $scope.$broadcast('mapViewVisuability', newVal);
-    });
-
-    /* callback and helper methods */
-    /**
-     * A callback function which is called by the map control of the user changed the bounds of the map.
-     * @param mapBoundsAndZoom {{top: number, right: number, bottom: number, left: number, zoom: number}} The new bounds and the new zoom level of the map control.
-     */
-    vm.mapBoundsChanged = function (mapBoundsAndZoom, userOriginated) {
-
-      // just update the location of the browser if the location has changed      
-      $state.go('main.mwtnTopology', {
-        tab: "site",
-        lat: mapBoundsAndZoom.lat,
-        lng: mapBoundsAndZoom.lng,
-        zoom: mapBoundsAndZoom.zoom,
-        top: null,
-        bottom: null,
-        right: null,
-        left: null,
-        site: !userOriginated ? $state.params.site : null,
-        siteLink: !userOriginated ? $state.params.siteLink : null,
-        sitePath: !userOriginated ? $state.params.sitePath : null,
-        internal: true
-      }, {
-          notify: false
-        });
-      console.log("handleBoundsChanged", mapBoundsAndZoom);
-
-      if (vm.status.siteMapIsOpen) refreshAllSites(mapBoundsAndZoom);
-    };
-
-    /**
-     * Refreshes all visible elements in the given view port
-     * @param mapBoundsAndZoom {{top: number, right: number, bottom: number, left: number, zoom: number}} The new bounds and the new zoom level of the map control.
-     */
-    function refreshAllSites(mapBoundsAndZoom) {
-
-      // Datenbankabfragen werden werden in kleine Chunks zerlegt.
-      // Jeder Chunk enthält maximal ${chunkSize} (100) Sites und die Anzahl aller Sites für die spezifische Abfrage in der Antwort.
-      // Sind noch nicht alle Chunks von der Datenbank angefordert worden, wird zuerst der nächste Chunk angefordert.
-      // Der aktuell zurückgegebene Chunk wird aber erst verarbeitet, bevor in einer weiteren Callback-Situation der nächste Datenbank-Chunk abgeholt wird.
-      // Dadurch werden kontinuierlich alle Sites auch auf der Map ergänzt, sobald sie verarbeitet wurden und es kommt zu keiner Verzögerung im Benutzerinterface.
-      // Im Maximum werden aber ${vm.status.maximumCountOfVisibleSites} (2500) Sites abgerufen, um die Google Map nicht zu überlasten.
-
-      // Fallunterscheidung: gibt es bereits eine aktive Datenbankabfrage zu den Sites?
-      // => Nein: Starte eine neue Datenbankabfrage
-      // => Ja: Breche die aktuelle Verarbeitung ab, aktualisiere den Status und starte dann eine neue Datenbankabfrage.
-      if (vm.status.processing) {
-        waitForCancelMapBoundAndZoom = mapBoundsAndZoom;
-
-        if (cancelRequested) {
-          console.log("Cancel is already requested.");
-          return;
-        }
-
-        // Request a database loop cancel.
-        cancelRequested = true;
-        console.log("New Cancel requested.")
-
-        // Wait until the current database loos was canceled.
-        cancelDefer.promise.then(function () {
-          // The database loop is canceled. Create a new defer for the next possible cancel request.
-          console.log("Cancel fulfilled.");
-          cancelDefer = $q.defer();
-          // Restart the database loop with the new bounding rectangle.
-          beginProcessing(waitForCancelMapBoundAndZoom);
-        });
-
-        // Do not start a database loop here - so leave the method.
-        return;
-      }
-
-      // Start a new database loop here.
-      beginProcessing(mapBoundsAndZoom);
-
-      /**
-       * The private function which begins a new database processing loop.
-       * @param mapBoundsAndZoom {{top: number, right: number, bottom: number, left: number, zoom: number}} The new bounds and the new zoom level of the map control.
-       */
-      function beginProcessing(mapBoundsAndZoom) {
-        // Set the processing flag to true.
-        vm.status.processing = true;
-
-        var chunkSize = 100;
-        var chunkSiteStartIndex = 0;
-
-        // If a site link cannot convert its siteA or siteZ (id) Parameter to a real site object these ids will collected.
-        // After a subsequent database call to get these sites the queued site links will be converted.
-        var additionalSiteIds = [];
-        var queuedSiteLinksToConvert = [];
-
-        // Entferne Sites, welche aufgrund des neuen Bounds leicht außer Sicht sind von den sichtbaren Sites.
-        // Hinzufügen von Sites aus den leicht außer Sicht Bereich zum sichtbaren Bereich.
-        var movedOrRemovedSites = refreshOutOfSightSites(mapBoundsAndZoom);
-        var removedFromVisibleIds = movedOrRemovedSites.removedFromVisibleIds;
-        var movedFromVisibleToKnownIds = movedOrRemovedSites.movedFromVisibleToKnownIds;
-        var removedFromKnownIds = movedOrRemovedSites.removedFromKnownIds;
-        var movedFromKnownToVisibleIds = movedOrRemovedSites.movedFromKnownToVisibleIds;
-        var removedSiteLinkIds = movedOrRemovedSites.removedSiteLinkIds;
-
-        // While getting all sites collect all site link ids which are available through visible and known sites.
-        collectedSiteLinkIds = {};
-
-        doSiteRequestLoop();
-
-        /* internal function within beginProcessing */
-        /**
-         * Starts a new database request loop to get all sites.
-         */
-        function doSiteRequestLoop() {
-          requestNextSiteChunk(mapBoundsAndZoom, chunkSize, chunkSiteStartIndex).then(
-            /**
-             * @param result {{addedSiteIds: string[], total: number}} An array with the ids of the sites which are added to the vm.visibleSites dictionary.
-             */
-            function (result) {
-              // update the frontend before continue with the next database request.
-              vm.mapSitesComponentApi.updateSites && vm.mapSitesComponentApi.updateSites(result.addedSiteIds, removedFromVisibleIds, movedFromVisibleToKnownIds, removedFromKnownIds, movedFromKnownToVisibleIds);
-              removedSiteLinkIds && removedSiteLinkIds.length && vm.mapSiteLinksComponentApi.updateSiteLinks && vm.mapSiteLinksComponentApi.updateSiteLinks([], removedSiteLinkIds);
-              // to not re-remove and re-move already removed and moved sites clear the arrays for any subsequent database requests.
-              removedFromVisibleIds = [];
-              movedFromVisibleToKnownIds = [];
-              removedFromKnownIds = [];
-              movedFromKnownToVisibleIds = [];
-              removedSiteLinkIds = [];
-
-              if (cancelRequested) {
-                // reset the cancelRequested flag and resolve the cancel request.
-                cancelRequested = false;
-                cancelDefer.resolve();
-                return;
-              }
-
-              // Enforce angular to process a new digest cycle.
-              $timeout(function () {
-                vm.status.totalSitesInBoundingBox = result.total;
-                vm.status.loadedSitesInBoundingBox = Math.min(chunkSiteStartIndex + chunkSize, result.total);
-                if (chunkSiteStartIndex + chunkSize >= result.total || chunkSiteStartIndex + chunkSize >= vm.status.maximumCountOfVisibleSites) {
-                  // This was the last database request to get sites.
-                  // Remove all known site link ids from the collectedSiteLinkIds dictionary.
-                  var knownSiteLinkIds = Object.keys(vm.knownSiteLinks);
-                  knownSiteLinkIds.forEach(function (knownSiteLinkId) {
-                    if (collectedSiteLinkIds[knownSiteLinkId]) {
-                      delete collectedSiteLinkIds[knownSiteLinkId];
-                    }
-                  });
-
-                  // Start the request loop for site links now.
-                  doSiteLinkRequestLoop(Object.keys(collectedSiteLinkIds));
-                } else {
-                  // There are more data, request the database again.
-                  chunkSiteStartIndex += chunkSize;
-
-                  doSiteRequestLoop();
-                }
-              });
-
-            }, processError);
-        }
-
-        function endProcessing() {
-          vm.status.processing = false;
-
-          $timeout(function () {
-            vm.status.site = $state.params.site;
-            vm.status.siteLink = $state.params.siteLink;
-          });
-        }
-
-        /**
-         * Starts a new database request loop to get all site links.
-         */
-        function doSiteLinkRequestLoop(siteLinkIds) {
-          var requestedSiteLinkIds = siteLinkIds.splice(0, chunkSize);
-
-          $mwtnTopology.getSiteLinksByIds(requestedSiteLinkIds).then(
-            /**
-             * Processes the database result.
-             * The returned site links doesn't contain site objects but site ids.
-             * In a subsequent step these ids will be converted into real site objects.
-             * @param result {{id: string, siteA: string, siteZ: string}[]} The database result.
-             */
-            function (result) {
-              // Subsequent convert.
-              // All site links which siteA and siteZ site ids are known could be added to vm.knownSiteLinks.
-              // The rest has to saved until all requests are finished.
-              // Another database call will get the additional sites to convert these site links.
-              var addedSiteLinkIds = result.reduce(function (accumulator, currentSiteLink) {
-                var siteA = vm.visibleSites[currentSiteLink.siteA] || vm.knownSites[currentSiteLink.siteA];
-                var siteZ = vm.visibleSites[currentSiteLink.siteZ] || vm.knownSites[currentSiteLink.siteZ];
-                if (siteA && siteZ) {
-                  vm.knownSiteLinks[currentSiteLink.id] = {
-                    id: currentSiteLink.id,
-                    siteA: siteA,
-                    siteZ: siteZ,
-                    type: currentSiteLink.type
-                  };
-                  accumulator.push(currentSiteLink.id);
-                } else {
-                  // Theoretically, only siteA or siteZ can be unknown. I still check both separately.
-                  var isPushed = false;
-                  if (!siteA) {
-                    additionalSiteIds.push(currentSiteLink.siteA);
-                    queuedSiteLinksToConvert.push(currentSiteLink);
-                    isPushed = true;
-                  }
-                  if (!siteZ) {
-                    additionalSiteIds.push(currentSiteLink.siteZ);
-                    isPushed || queuedSiteLinksToConvert.push(currentSiteLink);
-                  }
-                }
-                return accumulator;
-              }, []);
-
-              // update the frontend before continue with the next database request.
-              vm.mapSiteLinksComponentApi.updateSiteLinks && vm.mapSiteLinksComponentApi.updateSiteLinks(addedSiteLinkIds);
-
-              if (cancelRequested) {
-                // reset the cancelRequested flag and resolve the cancel request.
-                cancelRequested = false;
-                cancelDefer.resolve();
-                return;
-              }
-
-              // Enforce angular to process a new digest cycle. (And to let angular time to redraw the map.)
-              $timeout(function () {
-                if (siteLinkIds.length === 0) {
-                  if (additionalSiteIds.length === 0) {
-                    endProcessing();
-                    return;
-                  }
-
-                  // Only get a maximum of chunkSize additional sites.
-                  // Site links more than that will not be drawed in the map due to performance reasons.
-                  // If the user zooms in the additional site links will be requested again.
-                  $mwtnTopology.getSitesByIds(additionalSiteIds.splice(0, chunkSize)).then(
-                    /**
-                     * Processes the database result to gain new sites within the bounding box of the database request.
-                     * @param result {{total: number, sites: {id: string, name: string, location: {lat: number, lng: number}, amslGround: number, references: {siteLinks: string[]}}[]}} The database result.
-                     */
-                    function (result) {
-                      var addedSiteLinkIds = queuedSiteLinksToConvert.reduce(function (accumulator, currentSiteLink) {
-                        var siteA = vm.visibleSites[currentSiteLink.siteA] || vm.knownSites[currentSiteLink.siteA] || result.sites.find(
-                          function (site) {
-                            return site.id === currentSiteLink.siteA
-                          });
-                        var siteZ = vm.visibleSites[currentSiteLink.siteZ] || vm.knownSites[currentSiteLink.siteZ] || result.sites.find(
-                          function (site) {
-                            return site.id === currentSiteLink.siteZ
-                          });
-                        if (siteA && siteZ) {
-                          vm.knownSiteLinks[currentSiteLink.id] = {
-                            id: currentSiteLink.id,
-                            siteA: siteA,
-                            siteZ: siteZ,
-                            type: currentSiteLink.type
-                          };
-                          accumulator.push(currentSiteLink.id);
-                        }
-                        return accumulator;
-                      }, []);
-                      // update the frontend the last time until the user changed the map position.
-                      vm.mapSiteLinksComponentApi.updateSiteLinks && vm.mapSiteLinksComponentApi.updateSiteLinks(addedSiteLinkIds);
-
-                      // all done - puh.
-                      endProcessing();
-                    }, processError);
-
-                } else {
-                  // There are more data, request the database again.
-                  doSiteLinkRequestLoop(siteLinkIds);
-                }
-              });
-
-            }, processError);
-        }
-
-      }
-    };
-
-    /**
-     * Recalculates the targets site container for Sites within knownSites and visibleSites.
-     * @param mapBoundsAndZoom {{top: number, right: number, bottom: number, left: number, zoom: number}} The new bounds and the new zoom level of the map control.
-     */
-    function refreshOutOfSightSites(mapBoundsAndZoom) {
-      var additionalWidth = (mapBoundsAndZoom.right - mapBoundsAndZoom.left) / 4;
-      var additionalHeight = (mapBoundsAndZoom.top - mapBoundsAndZoom.bottom) / 4;
-      var slightlyTop = mapBoundsAndZoom.top + additionalHeight;
-      var slightlyRight = mapBoundsAndZoom.right + additionalWidth;
-      var slightlyBottom = mapBoundsAndZoom.bottom - additionalHeight;
-      var slightlyLeft = mapBoundsAndZoom.left - additionalWidth;
-
-      var removedFromVisibleIds = [];
-      var movedFromVisibleToKnownIds = [];
-      var removedFromKnownIds = [];
-      var movedFromKnownToVisibleIds = [];
-      var removedSiteLinkIds = [];
-
-      var visibleSiteKeys = Object.keys(vm.visibleSites);
-      var knownSiteKeys = Object.keys(vm.knownSites);
-      var knownSiteLinkKeys = Object.keys(vm.knownSiteLinks);
-
-      visibleSiteKeys.forEach(function (siteId) {
-        /** @var {{id: string, name: string, location: {lat: number, lng: number}, amslGround: number, references: {siteLinks: string[]}} site */
-        var site = vm.visibleSites[siteId];
-
-        if (site.location.lat > slightlyTop || site.location.lng > slightlyRight || site.location.lat < slightlyBottom || site.location.lng < slightlyLeft) {
-          // This site is completly out of sight - so remove it and add the id to the removedFromVisibleIds list.
-          delete vm.visibleSites[siteId];
-          removedFromVisibleIds.push(siteId);
-          return;
-        }
-
-        if (site.location.lat > mapBoundsAndZoom.top || site.location.lng > mapBoundsAndZoom.right || site.location.lat < mapBoundsAndZoom.bottom || site.location.lng < mapBoundsAndZoom.left) {
-          // This site is moved from the visible map bounds to the extended map bounds and will only hide but stay in the google object.
-          vm.knownSites[siteId] = site;
-          delete vm.visibleSites[siteId];
-          movedFromVisibleToKnownIds.push(siteId);
-          return;
-        }
-      });
-
-      knownSiteKeys.forEach(function (siteId) {
-        /** @type {{id: string, name: string, location: {lat: number, lng: number}, amslGround: number, references: {siteLinks: string[]}} site */
-        var site = vm.knownSites[siteId];
-
-        if (site.location.lat > slightlyTop || site.location.lng > slightlyRight || site.location.lat < slightlyBottom || site.location.lng < slightlyLeft) {
-          // This site is completly out of sight - so remove it and add the id to the removedFromKnownIds list.
-          delete vm.knownSites[siteId];
-          removedFromKnownIds.push(siteId);
-          return;
-        }
-
-        if (site.location.lat <= mapBoundsAndZoom.top && site.location.lng <= mapBoundsAndZoom.right && site.location.lat >= mapBoundsAndZoom.bottom && site.location.lng >= mapBoundsAndZoom.left) {
-          // This site is moved from the extended map bounds to the visible map bounds. Therefore the hidden google maps object should set visible again.
-          vm.visibleSites[siteId] = site;
-          delete vm.knownSites[siteId];
-          movedFromKnownToVisibleIds.push(siteId);
-          return;
-        }
-      });
-
-      knownSiteLinkKeys.forEach(function (siteLinkId) {
-        /** @type {{id: string, siteA: {id: string, name: string, location: {lat: number, lng: number}, amslGround: number, references: {siteLinks: string[]}}, siteZ: {id: string, name: string, location: {lat: number, lng: number}, amslGround: number, references: {siteLinks: string[]}}}} siteLink */
-        var siteLink = vm.knownSiteLinks[siteLinkId];
-        var siteA = siteLink.siteA;
-        var siteZ = siteLink.siteZ;
-
-        if ((siteA.location.lat > slightlyTop || siteA.location.lng > slightlyRight || siteA.location.lat < slightlyBottom || siteA.location.lng < slightlyLeft) &&
-          (siteZ.location.lat > slightlyTop || siteZ.location.lng > slightlyRight || siteZ.location.lat < slightlyBottom || siteZ.location.lng < slightlyLeft)) {
-          // This site link is completly out of sight - so remove it and add the id to the removedSiteLinkIds list.
-          delete vm.knownSiteLinks[siteLinkId];
-          removedSiteLinkIds.push(siteLinkId);
-        }
-      });
-
-      return {
-        removedFromVisibleIds: removedFromVisibleIds,
-        movedFromVisibleToKnownIds: movedFromVisibleToKnownIds,
-        removedFromKnownIds: removedFromKnownIds,
-        movedFromKnownToVisibleIds: movedFromKnownToVisibleIds,
-        removedSiteLinkIds: removedSiteLinkIds
-      };
-    }
-
-    /**
-     * Requests a chunk of sites from the database.
-     * @param mapBoundsAndZoom {{top: number, right: number, bottom: number, left: number, zoom: number}} The bounds and the zoom level of the map control to request the next chunk for.
-     * @param chunkSize {number} The chunk size of a single database request. To big values will block the user interface, to small values will lead in to many database requests.
-     * @param chunkSiteStartIndex {number} The index of the first site returned by the database.
-     */
-    function requestNextSiteChunk(mapBoundsAndZoom, chunkSize, chunkSiteStartIndex) {
-      var requestNextSiteChunkDefer = $q.defer();
-      var addedSiteIds = [];
-
-      // Request the next chunk.
-      $mwtnTopology.getSitesInBoundingBox(mapBoundsAndZoom, chunkSize, chunkSiteStartIndex).then(
-        /**
-         * Processes the database result to gain new sites within the bounding box of the database request.
-         * @param result {{chunkSize: number, chunkSiteStartIndex: number, total: number, sites: {id: string, name: string, location: {lat: number, lng: number}, amslGround: number, references: {siteLinks: string[]}}[]}} The database result.
-         */
-        function (result) {
-          result.sites.forEach(function (site) {
-            // The map bounds may have changed since the start of the database request.
-            // Therefore check if the site is within the bounding rectangle.
-
-            if (!$mwtnTopology.isInBounds(mapBoundsAndZoom, site.location)) {
-              return;
-            }
-
-            // add all site link ids to the selectedSiteLinkIds dictionary.
-            site.references.siteLinks.forEach(function (siteLinkId) {
-              collectedSiteLinkIds[siteLinkId] = true;
-            });
-
-            // check, if the site is within the knownSites dictionary.
-            if (vm.knownSites[site.id]) {
-              delete vm.knownSites[site.id];
-            }
-
-            // check if the site is within the visibleSites dictionary.
-            if (vm.visibleSites[site.id]) {
-              // Override the site (refresh)
-              vm.visibleSites[site.id] = site;
-            } else {
-              // Add the site to the dictionary and remember the siteId.
-              vm.visibleSites[site.id] = site;
-              addedSiteIds.push(site.id);
-            }
-          });
-
-          requestNextSiteChunkDefer.resolve({
-            addedSiteIds: addedSiteIds,
-            total: result.total
-          });
-        }, requestNextSiteChunkDefer.reject);
-
-      return requestNextSiteChunkDefer.promise;
-    }
-
-    /**
-     * Handles error messages by writing the information to the javascript console.
-     * Resets the processing flag.
-     * @param error Information about the error.
-     */
-    function processError(error) {
-      // Reset the processing flag.
-      vm.status.processing = false;
-      // Write the error information to the console.
-      console.error(error);
-    }
-
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologySiteView', function () {
-    return {
-      restrict: 'E',
-      controller: 'mwtnTopologySiteViewController',
-      controllerAs: 'vm',
-      bindToController: true,
-      templateUrl: 'src/app/mwtnTopology/templates/siteView.tpl.html',
-      scope: {
-        initialMapBounds: "="
-      }
-    };
-  });
-
-  mwtnTopologyApp.controller('mwtnTopologySiteGridController', ['$scope', '$timeout', '$state', '$mwtnCommons', '$mwtnTopology', 'uiGridConstants', function ($scope, $timeout, $state, $mwtnCommons, $mwtnTopology, uiGridConstants) {
-    var vm = this;
-
-    // The page number to show in the grid.
-    var paginationPage = 1;
-    // The page size.
-    var paginationPageSize = 100;
-    // The grid column object with current sorting informations.
-    var sortColumn = null;
-    // The grid column object with current sorting informations.
-    var gridFilters = [];
-    // caches all sites at the current grid page
-    var sitesAtCurrentPageCache = {};
-
-    vm.showAllSites = false;
-
-    vm.onNavigateToSite = function (row) {
-      var site = sitesAtCurrentPageCache[row.entity.id];
-      $state.go("main.mwtnTopology", {
-        tab: "site",
-        lat: site.location.lat,
-        lng: site.location.lng,
-        zoom: 19,
-        site: site.id,
-        internal: false
-      }, { notify: false });
-    };
-
-    // see http://ui-grid.info/docs/#/tutorial/317_custom_templates
-    var buttonCellTemplate = '<div class="ui-grid-cell-contents tooltip-uigrid" title="TOOLTIP"><i ng-click="grid.appScope.vm.onNavigateToSite(row)" ng-class="{\'fa\':true, \'fa-map-marker\': true, \'{{COL_FIELD}}\':true}" aria-hidden="true"></i></div>';
-
-    vm.gridOptions = Object.assign({}, $mwtnCommons.gridOptions, {
-      showGridFooter: false, // disable the grid footer because the pagination component sets its own.
-      paginationPageSizes: [10, 25, 50, 100],
-      paginationPageSize: paginationPageSize,
-      useExternalPagination: true,
-      useExternalFiltering: true,
-      useExternalSorting: true,
-      totalItems: 0,
-      columnDefs: [{
-        field: "id",
-        type: "string",
-        displayName: "Id"
-      },
-      {
-        field: "name",
-        type: "string",
-        displayName: "Name"
-      },
-      {
-        field: "location",
-        type: "string",
-        displayName: "Location"
-      },
-      {
-        field: "amslGround",
-        type: "string",
-        displayName: "AmslGround"
-      },
-      {
-        field: "countLinks",
-        type: "number",
-        displayName: "Count (Links)"
-      },
-      {
-        field: "countNetworkElements",
-        type: "number",
-        displayName: "Count (Network elements)"
-      },
-      {
-        field: "buttons",
-        type: "string",
-        displayName: "",
-        width: 40,
-        enableFiltering: false,
-        enableSorting: false,
-        cellTemplate: buttonCellTemplate,
-        pinnedRight: true
-      }
-      ],
-      data: [],
-      onRegisterApi: function (gridApi) {
-        // http://ui-grid.info/docs/#/api/ui.grid.core.api:PublicApi
-        vm.gridApi = gridApi;
-
-        vm.gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {
-          // Save the current sort column for later use.
-          sortColumn = (!sortColumns || sortColumns.length === 0)
-            ? null
-            : sortColumns[0];
-          loadPage();
-        });
-
-        vm.gridApi.pagination.on.paginationChanged($scope, function (newPage, newPageSize) {
-          // Save the pagination informations for later use.
-          paginationPage = newPage;
-          paginationPageSize = newPageSize;
-          loadPage();
-        });
-
-        vm.gridApi.core.on.filterChanged($scope, function () {
-          // Save the all filters for later use.
-          var filters = [];
-          this.grid.columns.forEach(function (col, ind) {
-            if (col.filters[0] && col.filters[0].term) {
-              filters.push({ field: col.field, term: col.filters[0].term });
-            }
-          });
-          gridFilters = filters;
-          loadPage();
-        });
-
-        loadPage();
-      }
-    });
-
-    $scope.$on("mapViewVisuability", function (event, data) {
-      vm.showAllSites = !data;
-    });
-
-    $scope.$watch("visibleSites", function (newVisibleSites, oldVisibleSites) {
-      console.log("watch: visibleSites");
-      if (!vm.showAllSites) loadPage();
-    }, true); // deep watch, maybe find a better solution; e.g. with an api object like the site in the map.
-
-    $scope.$watch(function () { return vm.showAllSites; }, loadPage);
-
-    function loadPage() {
-      if (vm.showAllSites) {
-        loadRemotePage();
-      } else {
-        loadLocalPage();
-      }
-    }
-
-    /**
-     * Calculates the page content of the grid and sets the values to the gridOprions.data object.
-     */
-    function loadLocalPage() {
-      var siteIds = Object.keys($scope.visibleSites);
-
-      var tempData = siteIds.filter(function (siteId, ind, arr) {
-        var site = $scope.visibleSites[siteId];
-        return gridFilters.map(function (filter) {
-          switch (filter.field) {
-            case "countLinks":
-              return (site.references.siteLinks ? site.references.siteLinks.length : 0) == +filter.term;
-            default:
-              return site[filter.field].contains(filter.term);
-          }
-        }).and(true);
-      }).map(function (siteId) {
-        var site = $scope.visibleSites[siteId];
-        var orderBy;
-
-        if (!sortColumn || !sortColumn.sort.direction) {
-          return {
-            id: siteId
-          }
-        }
-
-        switch (sortColumn.field) {
-          case "countLinks":
-            orderBy = site.references.siteLinks ? site.references.siteLinks.length : 0;
-            break;
-          case "countNetworkElements":
-            orderBy = site.references.networkElements ? site.references.networkElements.length : 0;
-            break;
-          case "buttons":
-            orderBy = siteId;
-            break;
-          default:
-            orderBy = site[sortColumn.field];
-            break;
-        }
-
-        return {
-          id: siteId,
-          orderBy: orderBy
-        };
-      });
-
-      if (sortColumn && sortColumn.sort.direction) {
-        tempData.sort(function (left, right) {
-          if (left === right || left.orderBy === right.orderBy) {
-            return 0;
-          }
-          if (left.orderBy > right.orderBy) {
-            return (sortColumn.sort.direction === uiGridConstants.ASC) ? 1 : -1;
-          }
-          return (sortColumn.sort.direction === uiGridConstants.ASC) ? -1 : 1;
-        });
-      }
-
-      var maxPageNumber = Math.max(1, Math.ceil(tempData.length / paginationPageSize));
-      var currentPage = Math.min(maxPageNumber, paginationPage);
-      var orderedSitesAtCurrentPage = tempData.slice((currentPage - 1) * paginationPageSize, currentPage * paginationPageSize);
-
-      sitesAtCurrentPageCache = {};
-      var orderedData = [];
-
-      orderedSitesAtCurrentPage.forEach(function (orderedSite) {
-        var site = $scope.visibleSites[orderedSite.id];
-        sitesAtCurrentPageCache[site.id] = site;
-        orderedData.push({
-          id: orderedSite.id,
-          name: site.name,
-          location: site.location.lat.toLocaleString("en-US", {
-            minimumFractionDigits: 4
-          }) + ", " + site.location.lng.toLocaleString("en-US", {
-            minimumFractionDigits: 4
-          }),
-          amslGround: site.amslGround,
-          countLinks: site.references.siteLinks ? site.references.siteLinks.length : 0,
-          countNetworkElements: site.references.networkElements ? site.references.networkElements.length : 0
-        });
-      });
-
-      $timeout(function () {
-        vm.gridOptions.data = orderedData;
-        vm.gridOptions.totalItems = tempData.length;
-      });
-    }
-
-    /**
-     * Loads the page content for the grid and sets the values to the gridOprions.data object.
-     */
-    function loadRemotePage() {
-
-      $mwtnTopology.getSites((sortColumn && sortColumn.field), sortColumn && ((sortColumn.sort.direction && sortColumn.sort.direction === uiGridConstants.ASC) ? 'asc' : 'desc'), gridFilters, paginationPageSize, (paginationPage - 1) * paginationPageSize).then(function (result) {
-        sitesAtCurrentPageCache = result.sites.reduce(function (acc, cur, ind, arr) {
-          acc[cur.id] = cur;
-          return acc;
-        }, {});
-        vm.gridOptions.data = result.sites.map(function (site) {
-          return {
-            id: site.id,
-            name: site.name,
-            location: site.location.lat.toLocaleString("en-US", {
-              minimumFractionDigits: 4
-            }) + ", " + site.location.lng.toLocaleString("en-US", {
-              minimumFractionDigits: 4
-            }),
-            amslGround: site.amslGround,
-            countLinks: site.references.siteLinks ? site.references.siteLinks.length : 0,
-            countNetworkElements: site.references.networkElements ? site.references.networkElements.length : 0
-          }
-        });
-        vm.gridOptions.totalItems = result.total;
-      });
-    }
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologySiteGrid', function () {
-    return {
-      restrict: 'E',
-      replace: false,
-      controller: 'mwtnTopologySiteGridController',
-      controllerAs: 'vm',
-      scope: {
-        visibleSites: "="
-      },
-      templateUrl: 'src/app/mwtnTopology/templates/siteGrid.tpl.html'
-    };
-  });
-
-  mwtnTopologyApp.controller('mwtnTopologySiteLinkGridController', ['$scope', '$timeout', '$state', '$mwtnCommons', '$mwtnTopology', 'uiGridConstants', function ($scope, $timeout, $state, $mwtnCommons, $mwtnTopology, uiGridConstants) {
-    var vm = this;
-
-    // The page number to show in the grid.
-    var paginationPage = 1;
-    // The page size.
-    var paginationPageSize = 100;
-    // The grid column object with current sorting informations.
-    var sortColumn = null;
-    // The grid column object with current sorting informations.
-    var gridFilters = [];
-
-    var linksAtCurrentPageCache = {};
-
-    vm.showAllLinks = false;
-
-    vm.onNavigateToLink = function (row) {
-      var link = linksAtCurrentPageCache[row.entity.id];
-
-      var top = link.siteA.location.lat >= link.siteZ.location.lat ? link.siteA.location.lat : link.siteZ.location.lat;
-      var bottom = link.siteA.location.lat >= link.siteZ.location.lat ? link.siteZ.location.lat : link.siteA.location.lat;
-
-      // todo: this code is not able to handle links which overlap the -100|180 ° borderline
-      var left = link.siteA.location.lng <= link.siteZ.location.lng ? link.siteA.location.lng : link.siteZ.location.lng;
-      var right = link.siteA.location.lng <= link.siteZ.location.lng ? link.siteZ.location.lng : link.siteA.location.lng;
-
-      $state.go("main.mwtnTopology", {
-        tab: "site",
-        top: top,
-        bottom: bottom,
-        left: left,
-        right: right,
-        siteLink: link.id,
-        internal: false
-      }, { notify: false });
-      console.log(link);
-    };
-
-    // see http://ui-grid.info/docs/#/tutorial/317_custom_templates
-    var buttonCellTemplate = '<div class="ui-grid-cell-contents tooltip-uigrid" title="TOOLTIP"><i ng-click="grid.appScope.vm.onNavigateToLink(row)" ng-class="{\'fa\':true, \'fa-map-marker\': true, \'{{COL_FIELD}}\':true}" aria-hidden="true"></i></div>';
-
-    vm.gridOptions = Object.assign({}, $mwtnCommons.gridOptions, {
-      // enableFiltering: false,
-      showGridFooter: false, // disable the grid footer because the pagination component sets its own.
-      paginationPageSizes: [10, 25, 50, 100],
-      paginationPageSize: paginationPageSize,
-      useExternalPagination: true,
-      useExternalFiltering: true,
-      useExternalSorting: true,
-      totalItems: 0,
-      columnDefs: [{
-        field: "id",
-        type: "string",
-        displayName: "Id"
-      },
-      {
-        field: "name",
-        type: "string",
-        displayName: "Name"
-      },
-      {
-        field: "siteIdA",
-        type: "string",
-        displayName: "SiteA"
-      },
-      {
-        field: "siteIdZ",
-        type: "string",
-        displayName: "SiteZ"
-      },
-      {
-        field: "buttons",
-        type: "string",
-        displayName: "",
-        width: 40,
-        enableFiltering: false,
-        enableSorting: false,
-        cellTemplate: buttonCellTemplate,
-        pinnedRight: true
-      }
-      ],
-      data: [],
-      onRegisterApi: function (gridApi) {
-        // http://ui-grid.info/docs/#/api/ui.grid.core.api:PublicApi
-        vm.gridApi = gridApi;
-
-        vm.gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {
-          // save the current sort column for later use.
-          sortColumn = (!sortColumns || sortColumns.length === 0) ?
-            null :
-            sortColumns[0];
-
-          loadPage();
-        });
-
-        vm.gridApi.pagination.on.paginationChanged($scope, function (newPage, newPageSize) {
-          paginationPage = newPage;
-          paginationPageSize = newPageSize;
-          loadPage();
-        });
-
-        vm.gridApi.core.on.filterChanged($scope, function () {
-          // Save the all filters for later use.
-          var filters = [];
-          this.grid.columns.forEach(function (col, ind) {
-            if (col.filters[0] && col.filters[0].term) {
-              filters.push({ field: col.field, term: col.filters[0].term });
-            }
-          });
-          gridFilters = filters;
-          loadPage();
-        });
-
-        loadPage();
-      }
-    });
-
-    $scope.$on("mapViewVisuability", function (event, data) {
-      vm.showAllLinks = !data;
-    });
-
-    $scope.$watch("knownSiteLinks", function (newKnownSiteLinks, oldKnownSiteLinks) {
-      console.log("watch: knownSiteLinks");
-      loadPage();
-    }, true); // deep watch, maybe find a better solution; e.g. with an api object like the site in the map.
-
-    $scope.$watch(function () { return vm.showAllLinks; }, loadPage);
-
-    function loadPage() {
-      if (vm.showAllLinks) {
-        loadRemotePage();
-      } else {
-        loadLocalPage();
-      }
-    }
-
-    /**
-        * Calculates the page content of the grid and sets the values to the gridOprions.data object.
-        */
-    function loadLocalPage() {
-      var linkIds = Object.keys($scope.knownSiteLinks);
-
-      var tempData = linkIds.filter(function (linkId, ind, arr) {
-        var link = $scope.knownSiteLinks[linkId];
-        return gridFilters.map(function (filter) {
-          switch (filter.field) {
-            case 'siteIdA':
-              return link.siteA.id.contains(filter.term);
-            case 'siteIdZ':
-              return link.siteZ.id.contains(filter.term);
-            default:
-              return link[filter.field].contains(filter.term);
-          }
-        }).and(true);
-      }).map(function (linkId) {
-        var link = $scope.knownSiteLinks[linkId];
-        var orderBy;
-
-        if (!sortColumn || !sortColumn.sort.direction) {
-          return {
-            id: linkId
-          }
-        }
-
-        switch (sortColumn.field) {
-          case 'siteIdA':
-            orderBy = link.siteA.id;
-            break;
-          case 'siteIdZ':
-            orderBy = link.siteZ.id;
-            break;
-          default:
-            orderBy = link[sortColumn.field];
-            break;
-        }
-
-        return {
-          id: linkId,
-          orderBy: orderBy
-        };
-      });
-
-      if (sortColumn && sortColumn.sort.direction) {
-        tempData.sort(function (left, right) {
-          if (left === right || left.orderBy === right.orderBy) {
-            return 0;
-          }
-          if (left.orderBy > right.orderBy) {
-            return (sortColumn.sort.direction === uiGridConstants.ASC) ? 1 : -1;
-          }
-          return (sortColumn.sort.direction === uiGridConstants.ASC) ? -1 : 1;
-        });
-      }
-
-      var maxPageNumber = Math.max(1, Math.ceil(tempData.length / paginationPageSize));
-      var currentPage = Math.min(maxPageNumber, paginationPage);
-      var orderedSitesAtCurrentPage = tempData.slice((currentPage - 1) * paginationPageSize, currentPage * paginationPageSize);
-
-      linksAtCurrentPageCache = {};
-      var orderedData = [];
-
-      orderedSitesAtCurrentPage.forEach(function (orderdLink) {
-        var link = $scope.knownSiteLinks[orderdLink.id];
-        linksAtCurrentPageCache[link.id] = link;
-        orderedData.push({
-          id: link.id,
-          name: link.name,
-          siteIdA: link.siteA.id,
-          siteIdZ: link.siteZ.id,
-          type: link.type
-        });
-      });
-
-      $timeout(function () {
-        vm.gridOptions.data = orderedData;
-        vm.gridOptions.totalItems = tempData.length;
-      });
-    }
-
-    /**
-     * Loads the page content for the grid and sets the values to the gridOprions.data object.
-     */
-    function loadRemotePage() {
-      linksAtCurrentPageCache = {};
-
-      // the links for one page
-      $mwtnTopology.getLinks((sortColumn && sortColumn.field), sortColumn && ((sortColumn.sort.direction && sortColumn.sort.direction === uiGridConstants.ASC) ? 'asc' : 'desc'), gridFilters, paginationPageSize, (paginationPage - 1) * paginationPageSize).then(function (result) {
-        // get all site id s  
-        var siteIds = {};
-        result.links.forEach(function (link) {
-          siteIds[link.siteA] = link.siteA;
-          siteIds[link.siteZ] = link.siteZ;
-        });
-
-        // load all sites         
-        $mwtnTopology.getSitesByIds(Object.keys(siteIds)).then(function (sitesResult) {
-          var sites = sitesResult.sites.reduce(function (acc, cur, ind, arr) {
-            acc[cur.id] = cur;
-            return acc;
-          }, {});
-          result.links.forEach(function (link) {
-            linksAtCurrentPageCache[link.id] = {
-              id: link.id,
-              name: link.name,
-              siteA: sites[link.siteA],
-              siteZ: sites[link.siteZ],
-              type: link.type
-            };
-          });
-          vm.gridOptions.data = result.links.map(function (link) {
-            return {
-              id: link.id,
-              name: link.name,
-              siteIdA: link.siteA,
-              siteIdZ: link.siteZ,
-              type: link.type
-            }
-          });
-          vm.gridOptions.totalItems = result.total;
-
-        });
-      });
-    }
-
-
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologySiteLinkGrid', function () {
-    return {
-      restrict: 'E',
-      replace: false,
-      controller: 'mwtnTopologySiteLinkGridController',
-      controllerAs: 'vm',
-      templateUrl: 'src/app/mwtnTopology/templates/siteLinkGrid.tpl.html',
-      scope: {
-        knownSiteLinks: "="
-      },
-    };
-  });
-
-  mwtnTopologyApp.controller('mwtnTopologySitePathGridController', ['$scope', function ($scope) {
-    var vm = this;
-
-    vm.showAllPaths = false;
-
-    $scope.$on("mapViewVisuability", function (event, data) {
-      vm.showAllPaths = !data;
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologySitePathGrid', function () {
-    return {
-      restrict: 'E',
-      replace: false,
-      controller: 'mwtnTopologySitePathGridController',
-      controllerAs: 'vm',
-      templateUrl: 'src/app/mwtnTopology/templates/sitePathGrid.tpl.html'
-    };
-  });
-
-  /********************************************* Physical ***********************************/
-
-  mwtnTopologyApp.controller('mwtnTopologyPhysicalViewController', ['$scope', '$q', '$timeout', '$state', '$window', '$mwtnTopology', function ($scope, $q, $timeout, $state, $window, $mwtnTopology) {
-    var vm = this;
-    vm.status = {
-      graphIsOpen: false,
-      networkElementsIsOpen: false,
-      LinksIsOpen: false
-    };
-
-    $scope.$watchCollection(function () { return [vm.status.graphIsOpen, vm.status.networkElementsIsOpen, vm.status.LinksIsOpen] }, function (newVal, oldVal) {
-      if (newVal[1] || newVal[2]) {
-        $timeout(function () {
-          $window.dispatchEvent(new Event("resize"));
-        });
-      }
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologyPhysicalView', function () {
-    return {
-      restrict: 'E',
-      controller: 'mwtnTopologyPhysicalViewController',
-      controllerAs: 'vm',
-      bindToController: true,
-      templateUrl: 'src/app/mwtnTopology/templates/physicalView.tpl.html',
-      scope: {
-
-      }
-    };
-  });
-
-  /** 
-   * Typedefinitions for the mwtnTopologyPhysicalPathData service.
-   * @typedef { { 'site' | 'device' |  'port' } } NodeLayerType
-   * @typedef { { x: number, y: number } } PositionType
-   * @typedef { { id: string, label: string, parent: string, grentparent: string, active: string, latitude: number, longitude: number  } } NodeDataVo
-   * @typedef { { data: NodeDataVo, position: PositionType  } } NodeVo
-   * @typedef { { id: string, label: string, parent: string, type: string, layer: NodeLayerType, active: boolean, latitude?: number, longitude?: number  } } NodeData
-   * @typedef { { data: NodeData, position: PositionType  } } Node
-   * @typedef { { id: string, source: string, target: string, label: string , lentgh: string, azimuthAZ: string , azimuthZA: string , layer: string , active: string } } EdgeData
-   * @typedef { { data: EdgeData } Edge
-   */
-  mwtnTopologyApp.factory("mwtnTopologyPhysicalPathData", ['$q','$mwtnTopology',
-    /** @param $q { ng.IQService } */
-    function ($q, $mwtnTopology) {
-      var colors = {
-        root: '#f54',
-        port: '#377',
-        device: '#252',
-        site: '#525',
-        edge: '#49a',
-        white: '#eed',
-        grey: '#555',
-        selected: '#ff0'
-      };
-
-      var styles = [
-        {
-          selector: 'node',
-          css: {
-            'content': 'data(label)',
-            'text-valign': 'center',
-            'text-halign': 'center',
-            'background-color': '#666666',
-            'border-color': '#000000',
-            'border-width': '1px',
-            'color': '#ffffff'
-          }
-        },
-        {
-          selector: 'node[layer = "MWPS"]',
-          css: {
-            'content': 'data(label)',
-            'text-valign': 'center',
-            'text-halign': 'center',
-            'background-color': '#316ac5',
-            'border-color': '#000000',
-            'border-width': '1px',
-            'color': '#ffffff'
-          }
-        },
-        {
-          selector: '$node > node',
-          css: {
-            'shape': 'roundrectangle',
-            'padding-top': '10px',
-            'padding-left': '10px',
-            'padding-bottom': '10px',
-            'padding-right': '10px',
-            'text-valign': 'top',
-            'text-halign': 'center',
-            'background-color': '#eeeeee',
-            'color': '#444444',
-            'border-color': '#888888'
-          }
-        },
-        {
-          selector: 'node[type = "site"]',
-          css: {
-            'shape': 'roundrectangle',
-            'padding-top': '10px',
-            'padding-left': '10px',
-            'padding-bottom': '10px',
-            'padding-right': '10px',
-            'text-valign': 'center',
-            'text-halign': 'center',
-            'background-color': '#fefefe',
-            'color': '#444444',
-            'border-color': '#888888',
-            'font-weight': 'bold'
-          }
-        },
-        {
-          selector: 'node[type = "device"][active = "true"]',
-          css: {
-            'background-color': '#316ac5',
-            'background-opacity': '0.3',
-            'border-color': '#316ac5',
-            'border-width': '2px',
-            'color': '#444444'
-          }
-        },
-        {
-          selector: 'node[type = "port"][active = "true"]',
-          css: {
-            'background-opacity': '1.0',
-          }
-        },
-        {
-          selector: 'node[active = "false"]',
-          css: {
-            'background-opacity': '0.3',
-            'border-opacity': '0.5'
-          }
-        },
-
-        {
-          selector: 'edge',
-          css: {
-            'content': 'data(id)',
-            'target-arrow-shape': 'triangle',
-            'line-color': '#666666',
-            'color': '#444444'
-          }
-        },
-        {
-          selector: 'edge[active = "false"]',
-          css: {
-            'line-color': '#cccccc',
-            'text-opacity': '0.9'
-          }
-        },
-        {
-          selector: 'edge[layer = "MWPS"]',
-          css: {
-            'content': 'data(id)',
-            'target-arrow-shape': 'triangle',
-            'width': '5px',
-            'line-color': '#316ac5',
-            'color': '#444444'
-          }
-        },
-        {
-          selector: 'edge[layer = "MWPS"][active = "false"]',
-          css: {
-            'line-color': '#C0D1EC',
-            'text-opacity': '0.9'
-          }
-        },
-        {
-          selector: ':selected',
-          css: {
-            'background-color': 'black',
-            'line-color': 'black',
-            'target-arrow-color': 'black',
-            'source-arrow-color': 'black'
-          }
-        }
-      ];
-
-        var events = eventsFabric();
-
-      /** Heplerfunction to retrive all elements from the database and convert to the structure needed */
-      function getElements() {
-        var res = $q.defer();
-
-        $q.all([
-          $mwtnTopology.getAllNodes(),
-          $mwtnTopology.getAllEdges()
-         ]).then(function (results) {
-           res.resolve({ nodes: results[0], edges: results[1] });
-        });
-        
-        return res.promise;
-      }
-
-      var result = {
-        colors: colors,
-        getElements: getElements,
-        styles: styles,
-        events: events
-      };
-
-      var someMethodChangingTheElements = function () {
-        // @Martin: hier kannst Du die Elements ändern, anschließend mußt Du das Ereignis veröffentlichen
-        //          das Ereigniss wird in der Directive aufgefangen und die Grig wird neu gezeichnet
-
-        // Hinweis: Die Reihenfolge muss so bleiben und du kannst NUR result.elements ändern.
-
-        events.publish("elementsChanged", {
-          elements: result.elements
-        });
-      };
-
-      return result;
-    }]);
-
-    mwtnTopologyApp.directive("mwtnTopologyPhysicalPathGraph", ["mwtnTopologyPhysicalPathData", "$mwtnTopology", "$mwtnCommons", function (pathGraphData, $mwtnTopology, $mwtnCommons) {
-
-    return {
-      restrict: 'E',
-      replace: true,
-      template: '<div style="height:750px; width: 100%;"></div>',
-      controller: function () {
-
-      },
-      scope: {
-
-      },
-      link: function (scope, element, attrs, ctrl) {
-
-        var cy = cytoscape({
-          container: element[0],
-
-          boxSelectionEnabled: false,
-          autounselectify: true,
-
-          style: pathGraphData.styles,
-          elements: [],
-          layout: {
-            name: 'preset',
-            padding: 5
-          }
-        });
-
-        cy.viewport({
-          zoom: 0.50,
-          pan: { x: 100, y: 50 }
-        });
-  
-        pathGraphData.getElements().then(function (elements) {
-          cy.json({
-            elements: elements
-          });
-
-          // disable drag & drop
-          cy.nodes().ungrabify();
-        });
-
-        var filterActiveMountPoints = function (mountpoints) {
-          return mountpoints.filter(function (mountpoint) {
-            if (!mountpoint) return false;
-            // console.warn(mountpoint['node-id'], mountpoint['netconf-node-topology:connection-status']);
-            return mountpoint['netconf-node-topology:connection-status'] === 'connected';
-          }).map(function (mountpoint) {
-            return mountpoint['node-id'];
-          });
-        };
-
-        var setDevicesActive = function (nodeIds) {
-          // console.warn(nodeIds);
-          cy.nodes().filter(function (node) {
-            node.data('active', 'false');
-            return node.data('type') === 'device' && nodeIds.contains(node.data('id'));
-          }).map(function (node) {
-            node.data('active', 'true');
-          });
-        };
-
-        var setAllDevicesInactive = function () {
-          cy.nodes().map(function (node) {
-            node.data('active', 'false');
-          });
-        };
-
-        var setPortAndEdgedActive = function () {
-          cy.edges().map(function (edge) {
-            var active = 'true';
-            edge.connectedNodes().map(function (port) {
-              // console.log('  node', JSON.stringify(edge.data()));
-              var parent = cy.getElementById(port.data('parent'));
-              if (parent.data('active') === 'false') {
-                port.data('active', 'false');
-                edge.data('active', 'false');
-              } else {
-                port.data('active', 'true');
-              }
-            });
-          });
-        };
-
-        var setCss = function () {
-          var width = 5 / cy.zoom();
-          var stroke = 1 / cy.zoom();
-          cy.edges().css('width', width);
-          cy.nodes().css('border-width', stroke);
-        };
-
-        var init = function () {
-          $mwtnCommons.getMountPoints().then(function (mountpoints) {
-            var filtered = filterActiveMountPoints(mountpoints);
-            setDevicesActive(filtered);
-            setPortAndEdgedActive();
-          }, function (error) {
-            setAllDevicesInactive();
-            setPortAndEdgedActive();
-          });
-        };
-
-        init();
-        setCss();
-
-        var orderLtps = function () {
-          var done = [];
-          var x = 0;
-          var y = 0;
-          var row = 0;
-          var offset = 100;
-          var selector = "[type = 'device']";
-          var devices = cy.nodes(selector).sort(function (a, b) {
-            if (a.children().length > b.children().length) return -1;
-            if (a.children().length < b.children().length) return 1;
-            return 0;
-          }).map(function (device) {
-            device.children().filter(function (ltp) {
-              return done.indexOf(ltp.id()) === -1;
-            }).map(function (ltp) {
-              ltp.position({ x: x, y: y });
-              y = y + offset;
-              var remeberX = x;
-              ltp.connectedEdges().map(function (edge) {
-                edge.connectedNodes().sort(function (a, b) {
-                  if (a.data("parent") === device.id()) return -1;
-                  return 1;
-                }).map(function (node) {
-                  // x = remeberX + 0 * offset;
-                  node.position({ x: x, y: y });
-                  x = x + 3 * offset;
-                  y = y + offset;
-                  done.push(node.id());
-                });
-                y = y - 2 * offset;
-
-              });
-              x = remeberX;
-              done.push(ltp.id());
-            });
-            y = row * 6 * offset;
-            x = x + 6 * offset;
-
-            if (x > 4000) {
-              row = row + 1;
-              x = 0;
-              y = row * 6 * offset;
-            }
-            return device;
-          });
-        };
-
-        var dragedNodes = [];    
-        // add an event handler for 'tabdrag' for all ports 
-        cy.on('drag', 'node[type = "port"]', function (event) {
-          var id = event.target.data().id;
-          dragedNodes.indexOf(id) <= -1 && dragedNodes.push(id);
-        });
-
-        cy.on('tap', function (event) {
-          if (event.target !== cy) {
-            console.info('click', JSON.stringify(event.target.data()));
-          } else {
-            orderLtps();
-            // cy.zoom(0.1);
-            cy.fit();
-            cy.center();
-          }
-        });
-
-        cy.on('zoom', function (event) {
-          setCss();
-        });
-
-        // global keyboard event handler
-        function handleKey(e) {
-          if (!e.ctrlKey && !e.commandKey) return;
-          switch (e.which) {
-            case 69:
-              dragedNodes = [];
-              cy.nodes().grabify();
-              e.preventDefault();
-              return false;
-              break;
-            case 83:
-              cy.nodes().ungrabify();
-              e.preventDefault();
-              var modifiedNodes = dragedNodes.map(id => ({ id: id, position: cy.nodes().getElementById(id).position() }));
-              $mwtnTopology.saveChangedNodes(modifiedNodes);
-              console.log("dragedNodes", modifiedNodes);
-              return false;
-              break;
-            // default:
-            //   console.log(e.which);
-            //   e.preventDefault();
-            //   return false;
-            //   break;
-          }
-        }
-
-        // register global keyboard event handler
-        window.addEventListener('keydown', handleKey, false);
-
-        scope.$on('$destroy', function () {
-          // un-register global keyboard event handler
-          window.removeEventListener('keydown', handleKey, false);
-        });
-
-      }
-    }
-  }]);
-
-  mwtnTopologyApp.controller("mwtnTopologyNetworkElementsGridController", ['$scope', '$timeout', '$state', '$mwtnCommons', '$mwtnTopology', 'uiGridConstants', 'mwtnTopologyPhysicalPathData', function ($scope, $timeout, $state, $mwtnCommons, $mwtnTopology, uiGridConstants, mwtnTopologyPhysicalPathData) {
-    var vm = this;
-
-    // The page number to show in the grid.
-    var paginationPage = 1;
-    // The page size.
-    var paginationPageSize = 100;
-    // The grid column object with current sorting informations.
-    var sortColumn = null;
-    // The grid column object with current sorting informations.
-    var gridFilters = [];
-    // caches all sites at the current grid page
-
-    vm.gridOptions = Object.assign({}, $mwtnCommons.gridOptions, {
-      showGridFooter: false, // disable the grid footer because the pagination component sets its own.
-      paginationPageSizes: [10, 25, 50, 100],
-      paginationPageSize: paginationPageSize,
-      useExternalPagination: true,
-      useExternalFiltering: true,
-      useExternalSorting: true,
-      totalItems: 0,
-      columnDefs: [{
-        field: "id",
-        type: "string",
-        displayName: "Id"
-      },
-      {
-        field: "layer",
-        type: "string",
-        displayName: "Layer",
-        width: 100,
-      },
-      {
-        field: "active",
-        type: "string",
-        displayName: "Active",
-        width: 100,
-      },
-      {
-        field: "latitude",
-        type: "string",
-        displayName: "Latitude",
-        visible: false
-      },
-      {
-        field: "longitude",
-        type: "string",
-        displayName: "Longitude",
-        visible: false
-      },
-      {
-        field: "installed", // capacity in Mbit/s
-        type: "number",
-        displayName: "Installed [Mbit/s]",
-        className: "number",
-        width: 150
-      },
-      {
-        field: "configured", // capacity in Mbit/s
-        type: "number",
-        displayName: "Configured [Mbit/s]",
-        className: "number",
-        width: 150
-      },
-      {
-        field: "effective", // capacity in Mbit/s
-        type: "number",
-        displayName: "Effective [Mbit/s]",
-        className: "number",
-        width: 150
-      }
-      ],
-      data: [],
-      onRegisterApi: function (gridApi) {
-        // http://ui-grid.info/docs/#/api/ui.grid.core.api:PublicApi
-        vm.gridApi = gridApi;
-
-        vm.gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {
-          // Save the current sort column for later use.
-          sortColumn = (!sortColumns || sortColumns.length === 0) ?
-            null :
-            sortColumns[0];
-          loadPage();
-        });
-
-        vm.gridApi.pagination.on.paginationChanged($scope, function (newPage, newPageSize) {
-          // Save the pagination informations for later use.
-          paginationPage = newPage;
-          paginationPageSize = newPageSize;
-          loadPage();
-        });
-
-        vm.gridApi.core.on.filterChanged($scope, function () {
-          // Save the all filters for later use.
-          var filters = [];
-          this.grid.columns.forEach(function (col, ind) {
-            if (col.filters[0] && col.filters[0].term) {
-              filters.push({
-                field: col.field,
-                term: col.filters[0].term
-              });
-            }
-          });
-          gridFilters = filters;
-          loadPage();
-        });
-
-        loadPage();
-      }
-    });
-
-    /**
-     * Calculates the page content of the grid and sets the values to the gridOprions.data object.
-     */
-    function loadPage() {
-
-      // extract all ports        
-      var ports = mwtnTopologyPhysicalPathData.elements.nodes.filter(function (node, ind, arr) {
-        return node && node.data && node.data.type === 'port';
-      }).reduce(function (acc, cur, ind, arr) {
-        if (cur.data) acc[cur.data.id] = cur.data;
-        return acc;
-      }, {});
-
-      // get all port ids
-      var portIds = Object.keys(ports);
-
-      // apply the grid filters
-      var tempData = portIds.filter(function (portId, ind, arr) {
-        var port = ports[portId];
-        return gridFilters.map(function (filter) {
-          switch (filter.field) {
-            case "active":
-              return port[filter.field].toString().contains(filter.term);
-            default:
-              return port[filter.field].contains(filter.term);
-          }
-        }).and(true);
-      }).map(function (portId) {
-        var port = ports[portId];
-        var orderBy;
-
-        if (!sortColumn || !sortColumn.sort.direction) {
-          return {
-            id: port.id
-          }
-        }
-
-        switch (sortColumn.field) {
-          case "active":
-            orderBy = port[sortColumn.field] ? 1 : 0;
-            break;
-          default:
-            orderBy = port[sortColumn.field];
-            break;
-        }
-
-        return {
-          id: port.id,
-          orderBy: orderBy
-        };
-      });
-
-      if (sortColumn && sortColumn.sort.direction) {
-        tempData.sort(function (left, right) {
-          if (left === right || left.orderBy === right.orderBy) {
-            return 0;
-          }
-          if (left.orderBy > right.orderBy) {
-            return (sortColumn.sort.direction === uiGridConstants.ASC) ? 1 : -1;
-          }
-          return (sortColumn.sort.direction === uiGridConstants.ASC) ? -1 : 1;
-        });
-      }
-
-      var maxPageNumber = Math.max(1, Math.ceil(tempData.length / paginationPageSize));
-      var currentPage = Math.min(maxPageNumber, paginationPage);
-      var orderedPortsAtCurrentPage = tempData.slice((currentPage - 1) * paginationPageSize, currentPage * paginationPageSize);
-
-      portsAtCurrentPageCache = {};
-      var orderedData = [];
-
-      orderedPortsAtCurrentPage.forEach(function (orderedPort) {
-        var port = ports[orderedPort.id];
-        portsAtCurrentPageCache[port.id] = port;
-        orderedData.push({
-          id: orderedPort.id,
-          layer: port.layer,
-          active: port.active,
-          latitude: port.latitude.toLocaleString("en-US", {
-            minimumFractionDigits: 4
-          }),
-          longitude: port.longitude.toLocaleString("en-US", {
-            minimumFractionDigits: 4
-          }),
-          installed: 0,
-          configured: 0,
-          effective: 0
-        });
-      });
-
-      $timeout(function () {
-        vm.gridOptions.data = orderedData;
-        vm.gridOptions.totalItems = tempData.length;
-      });
-    }
-
-    // subscribe to the elementsChanged event to reload the grid page if the data in the service has chenged      
-    mwtnTopologyPhysicalPathData.events.subscribe("elementsChanged", function (data) {
-      loadPage();
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive("mwtnTopologyNetworkElementsGrid", [function () {
-    return {
-      restrict: 'E',
-      replace: false,
-      controller: 'mwtnTopologyNetworkElementsGridController',
-      controllerAs: 'vm',
-      scope: {
-
-      },
-      templateUrl: 'src/app/mwtnTopology/templates/networkElementsGrid.tpl.html'
-    };
-  }]);
-
-  mwtnTopologyApp.controller("mwtnTopologyLinksGridController", ['$scope', '$timeout', '$state', '$mwtnCommons', '$mwtnTopology', 'uiGridConstants', 'mwtnTopologyPhysicalPathData', function ($scope, $timeout, $state, $mwtnCommons, $mwtnTopology, uiGridConstants, mwtnTopologyPhysicalPathData) {
-    var vm = this;
-
-    // The page number to show in the grid.
-    var paginationPage = 1;
-    // The page size.
-    var paginationPageSize = 100;
-    // The grid column object with current sorting informations.
-    var sortColumn = null;
-    // The grid column object with current sorting informations.
-    var gridFilters = [];
-    // caches all sites at the current grid page
-
-    vm.gridOptions = Object.assign({}, $mwtnCommons.gridOptions, {
-      showGridFooter: false, // disable the grid footer because the pagination component sets its own.
-      paginationPageSizes: [10, 25, 50, 100],
-      paginationPageSize: paginationPageSize,
-      useExternalPagination: true,
-      useExternalFiltering: true,
-      useExternalSorting: true,
-      totalItems: 0,
-      columnDefs: [{
-        field: "id",
-        type: "string",
-        displayName: "Id"
-      },
-      {
-        field: "source",
-        type: "string",
-        displayName: "PortA"
-      },
-      {
-        field: "target",
-        type: "string",
-        displayName: "PortZ"
-      },
-      {
-        field: "layer",
-        type: "string",
-        displayName: "Layer"
-      },
-      {
-        field: "length",
-        type: "string",
-        displayName: "Length"
-      },
-      {
-        field: "azimuthAZ",
-        type: "string",
-        displayName: "azimuthAZ"
-      },
-      {
-        field: "azimuthZA",
-        type: "string",
-        displayName: "azimuthZA"
-      }
-      ],
-      data: [],
-      onRegisterApi: function (gridApi) {
-        // http://ui-grid.info/docs/#/api/ui.grid.core.api:PublicApi
-        vm.gridApi = gridApi;
-
-        vm.gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {
-          // Save the current sort column for later use.
-          sortColumn = (!sortColumns || sortColumns.length === 0) ?
-            null :
-            sortColumns[0];
-          loadPage();
-        });
-
-        vm.gridApi.pagination.on.paginationChanged($scope, function (newPage, newPageSize) {
-          // Save the pagination informations for later use.
-          paginationPage = newPage;
-          paginationPageSize = newPageSize;
-          loadPage();
-        });
-
-        vm.gridApi.core.on.filterChanged($scope, function () {
-          // Save the all filters for later use.
-          var filters = [];
-          this.grid.columns.forEach(function (col, ind) {
-            if (col.filters[0] && col.filters[0].term) {
-              filters.push({
-                field: col.field,
-                term: col.filters[0].term
-              });
-            }
-          });
-          gridFilters = filters;
-          loadPage();
-        });
-
-        loadPage();
-      }
-    });
-
-    /**
-     * Calculates the page content of the grid and sets the values to the gridOprions.data object.
-     */
-    function loadPage() {
-      // extract all ports        
-      var ports = mwtnTopologyPhysicalPathData.elements.nodes.filter(function (node, ind, arr) {
-        return node && node.data && node.data.type === 'port';
-      }).reduce(function (acc, cur, ind, arr) {
-        if (cur.data) acc[cur.data.id] = cur.data;
-        return acc;
-      }, {});
-
-      // extract all links        
-      var links = mwtnTopologyPhysicalPathData.elements.edges.filter(function (node, ind, arr) {
-        return true; // node && node.data && node.data.type === 'port';
-      }).reduce(function (acc, cur, ind, arr) {
-        if (cur.data) {
-
-          if (cur.data.layer === 'MWPS') {
-            var portA = ports[cur.data.source];
-            var portZ = ports[cur.data.target];
-
-            // calculate length
-            cur.data.length = (portA && portZ) ? $mwtnTopology.getDistance(portA.latitude, portA.longitude, portZ.latitude, portZ.longitude) : 0;
-            cur.data.azimuthAZ = (portA && portZ) ? $mwtnTopology.bearing(portA.latitude, portA.longitude, portZ.latitude, portZ.longitude) : 0;
-            cur.data.azimuthZA = (portA && portZ) ? $mwtnTopology.bearing(portZ.latitude, portZ.longitude, portA.latitude, portA.longitude) : 0;
-
-          } else {
-            cur.data.length = 0;
-            cur.data.azimuthAZ = 0;
-            cur.data.azimuthZA = 0;
-          }
-          acc[cur.data.id] = cur.data;
-        }
-        return acc;
-      }, {});
-
-      // get all link ids
-      var linkIds = Object.keys(links);
-
-      // apply the grid filters
-      var tempData = linkIds.filter(function (linkId, ind, arr) {
-        var link = links[linkId];
-        return gridFilters.map(function (filter) {
-          switch (filter.field) {
-            case "length":
-            case "azimuthAZ":
-            case "azimuthZA":
-              return true;
-            default:
-              return link[filter.field].contains(filter.term);
-          }
-        }).and(true);
-      }).map(function (linkId) {
-        var link = links[linkId];
-        var orderBy;
-
-        if (!sortColumn || !sortColumn.sort.direction) {
-          return {
-            id: link.id
-          }
-        }
-
-        switch (sortColumn.field) {
-          default:
-            orderBy = link[sortColumn.field];
-            break;
-        }
-
-        return {
-          id: link.id,
-          orderBy: orderBy
-        };
-      });
-
-      if (sortColumn && sortColumn.sort.direction) {
-        tempData.sort(function (left, right) {
-          if (left === right || left.orderBy === right.orderBy) {
-            return 0;
-          }
-          if (left.orderBy > right.orderBy) {
-            return (sortColumn.sort.direction === uiGridConstants.ASC) ? 1 : -1;
-          }
-          return (sortColumn.sort.direction === uiGridConstants.ASC) ? -1 : 1;
-        });
-      }
-
-      var maxPageNumber = Math.max(1, Math.ceil(tempData.length / paginationPageSize));
-      var currentPage = Math.min(maxPageNumber, paginationPage);
-      var orderedLinksAtCurrentPage = tempData.slice((currentPage - 1) * paginationPageSize, currentPage * paginationPageSize);
-
-      linksAtCurrentPageCache = {};
-      var orderedData = [];
-
-      orderedLinksAtCurrentPage.forEach(function (orderedLink) {
-        var link = links[orderedLink.id];
-        linksAtCurrentPageCache[link.id] = link;
-        orderedData.push({
-          id: orderedLink.id,
-          source: link.source,
-          target: link.target,
-          layer: link.layer,
-          length: link.length,
-          azimuthAZ: link.azimuthAZ.toLocaleString("en-US", {
-            minimumFractionDigits: 4
-          }),
-          azimuthZA: link.azimuthZA.toLocaleString("en-US", {
-            minimumFractionDigits: 4
-          }),
-        });
-      });
-
-      $timeout(function () {
-        vm.gridOptions.data = orderedData;
-        vm.gridOptions.totalItems = tempData.length;
-      });
-    }
-
-    // subscribe to the elementsChanged event to reload the grid page if the data in the service has chenged      
-    var subscription = mwtnTopologyPhysicalPathData.events.subscribe("elementsChanged", function (data) {
-      loadPage();
-      // to unsubscribe call subscription.remove();
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive("mwtnTopologyLinksGrid", [function () {
-    return {
-      restrict: 'E',
-      replace: false,
-      controller: 'mwtnTopologyLinksGridController',
-      controllerAs: 'vm',
-      scope: {
-
-      },
-      templateUrl: 'src/app/mwtnTopology/templates/linksGrid.tpl.html'
-    };
-  }]);
-
-  /********************************************* Ethernet ***********************************/
-
-  mwtnTopologyApp.controller('mwtnTopologyEthernetViewController', ['$scope', '$q', '$timeout', '$state', '$window', '$mwtnTopology', function ($scope, $q, $timeout, $state, $window, $mwtnTopology) {
-    var vm = this;
-    vm.status = {
-      topologyIsOpen: false,
-      portsOpen: false,
-      ethConnectionsIsOpen: false
-    }
-
-    $scope.$watchCollection(function () { return [vm.status.topologyIsOpen, vm.status.portsOpen, vm.status.ethConnectionsIsOpen] }, function (newVal, oldVal) {
-      if (newVal[1] || newVal[2]) {
-        $timeout(function () {
-          $window.dispatchEvent(new Event("resize"));
-        });
-      }
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologyEthernetView', function () {
-    return {
-      restrict: 'E',
-      controller: 'mwtnTopologyEthernetViewController',
-      controllerAs: 'vm',
-      bindToController: true,
-      templateUrl: 'src/app/mwtnTopology/templates/ethernetView.tpl.html',
-      scope: {
-
-      }
-    };
-  });
-
-  mwtnTopologyApp.factory("mwtnTopologyEthernetPathData", function () {
-    var colors = {
-      root: '#f54',
-      port: '#377',
-      device: '#252',
-      site: '#525',
-      edge: '#49a',
-      white: '#eed',
-      grey: '#555',
-      selected: '#ff0'
-    };
-
-    var styles = [
-      {
-        selector: 'node',
-        css: {
-          'content': 'data(label)',
-          'text-valign': 'center',
-          'text-halign': 'center',
-          'background-color': '#eeeeee',
-          'border-color': '#000000',
-          'border-width': '1px',
-          'color': '#000000'
-        }
-      },
-      {
-        selector: 'node[type = "label"]',
-        css: {
-          'content': 'data(label)',
-          'border-width': '0px',
-          'background-color': '#ffffff',
-          'font-size': '50px',
-          'text-valign': 'bottom',
-          'text-halign': 'right',
-
-        }
-      },
-
-      {
-        selector: 'node[layer = "MWPS"]',
-        css: {
-          'content': 'data(label)',
-          'text-valign': 'center',
-          'text-halign': 'center',
-          'background-color': '#316ac5',
-          'border-color': '#000000',
-          'border-width': '1px',
-          'color': '#ffffff'
-        }
-      },
-      {
-        selector: 'node[layer = "ETH-TTP"]',
-        css: {
-          'content': 'data(label)',
-          'text-valign': 'center',
-          'text-halign': 'center',
-          'background-color': '#008800',
-          'border-color': '#004400',
-          'border-width': '1px',
-          'color': '#ffffff'
-        }
-      },
-      {
-        selector: '$node > node',
-        css: {
-          'shape': 'roundrectangle',
-          'padding-top': '10px',
-          'padding-left': '10px',
-          'padding-bottom': '10px',
-          'padding-right': '10px',
-          'text-valign': 'top',
-          'text-halign': 'center',
-          'background-color': '#eeeeee',
-          'color': '#444444',
-          'border-color': '#888888'
-        }
-      },
-      {
-        selector: 'node[type = "site"]',
-        css: {
-          'shape': 'roundrectangle',
-          'padding-top': '10px',
-          'padding-left': '10px',
-          'padding-bottom': '10px',
-          'padding-right': '10px',
-          'text-valign': 'center',
-          'text-halign': 'center',
-          'background-color': '#fefefe',
-          'color': '#444444',
-          'border-color': '#888888',
-          'font-weight': 'bold'
-        }
-      },
-      {
-        selector: 'node[type = "device"]',
-        css: {
-          'background-color': '#eeeeee',
-          'background-opacity': '0.1',
-          'border-color': '#888888',
-          'border-width': '2px',
-          'color': '#444444'
-        }
-      },
-      {
-        selector: 'node[type = "device"][active = "true"]',
-        css: {
-          'background-color': '#316ac5',
-          'background-opacity': '0.1',
-          'border-color': '#316ac5',
-          'border-width': '2px',
-          'color': '#444444'
-        }
-      },
-      {
-        selector: 'node[type = "port"][active = "true"]',
-        css: {
-          'background-opacity': '1.0',
-        }
-      },
-      {
-        selector: 'node[path = "working"]',
-        css: {
-          'background-color': '#FFA500',
-          'border-color': '#FFA500',
-          'border-width': '2px',
-          'color': '#444444'
-        }
-      },
-      {
-        selector: 'node[path = "protection"]',
-        css: {
-          'background-color': '#ffffff',
-          'border-color': '#FFA500',
-          'border-width': '2px',
-          'color': '#444444'
-        }
-      },
-      {
-        selector: '$node > node[path = "working"]',
-        css: {
-          'background-color': '#FFA500',
-          'border-color': '#FFA500',
-          'border-width': '2px',
-          'color': '#444444'
-        }
-      },
-      {
-        selector: '$node > node[path = "protection"]',
-        css: {
-          'border-color': '#FFA500',
-          'border-width': '2px',
-          'color': '#444444'
-        }
-      },
-      {
-        selector: 'node[active = "false"]',
-        css: {
-          'background-opacity': '0.3',
-          'border-opacity': '0.5'
-        }
-      },
-      {
-        selector: 'edge',
-        css: {
-          'content': 'data(id)',
-          'target-arrow-shape': 'triangle',
-          'line-color': '#666666',
-          'color': '#444444'
-        }
-      },
-      {
-        selector: 'edge[active = "false"]',
-        css: {
-          'line-color': '#cccccc',
-          'text-opacity': '0.9'
-        }
-      },
-      {
-        selector: 'edge[layer = "ETC"]',
-        css: {
-          'content': 'data(id)',
-          'target-arrow-shape': 'triangle',
-          'width': '3px',
-          'line-color': '#316ac5',
-          'color': '#444444'
-        }
-      },
-      {
-        selector: 'edge[layer = "ETH"]',
-        css: {
-          'content': '',
-          'target-arrow-shape': 'triangle',
-          'width': '2px',
-          'line-color': '#FFA500',
-          'color': '#000000'
-        }
-      }, {
-        selector: 'edge[layer = "ETC"][active = "false"]',
-        css: {
-          'line-color': '#C0D1EC',
-          'text-opacity': '0.9'
-        }
-      },
-
-      {
-        selector: 'edge[layer = "ETH"][path = "false"]',
-        css: {
-          'opacity': '0.0'
-        }
-      },
-      {
-        selector: 'edge[path = "working"]',
-        css: {
-          'line-color': '#FFA500',
-          'width': '5px',
-          'opacity': '1.0'
-        }
-      },
-      {
-        selector: 'edge[path = "protection"]',
-        css: {
-          'line-color': '#FFA500',
-          'line-style': 'dashed',
-          'width': '3px',
-          'opacity': '1.0'
-        }
-      },
-      {
-        selector: ':selected',
-        css: {
-          'background-color': 'black',
-          'line-color': 'black',
-          'target-arrow-color': 'black',
-          'source-arrow-color': 'black'
-        }
-      }
-    ];
-
-    var elements = {
-      nodes: [
-        { data: { id: 'label', label : '' , type: 'label' }, position: { x: -259, y: -167 } },
-
-        { data: { id: 'north', label : 'north' , type: 'site', latitude: 50.734916, longitude: 7.137636 } },
-        { data: { id: 'north-east', label : 'north-east' , type: 'site', latitude: 50.733028, longitude: 7.151086 } },
-        { data: { id: 'north-west', label : 'north-west' , type: 'site', latitude: 50.730230, longitude: 7.126017 } },
-        { data: { id: 'east', label : 'east' , type: 'site', latitude: 50.725672, longitude: 7.158488 } },
-        { data: { id: 'west', label : 'west' , type: 'site', latitude: 50.721914, longitude: 7.120521 } },
-        { data: { id: 'south-east', label : 'south-east' , type: 'site', latitude: 50.717158, longitude: 7.155506 } },
-        { data: { id: 'south-west', label : 'south-west' , type: 'site', latitude: 50.714359, longitude: 7.130437 } },
-        { data: { id: 'south', label : 'south' , type: 'site', latitude: 50.712472, longitude: 7.143887 } },
-
-        { data: { id: 'ADVA-Y', label : 'ADVA-Y' , parent : 'north-east', type: 'device', active: 'true' , latitude: 50.733028, longitude: 7.151086 } },
-        { data: { id: 'ADVA-Z', label : 'ADVA-Z' , parent : 'south', type: 'device', active: 'true' , latitude: 50.712472, longitude: 7.143887 } },
-        { data: { id: 'Aviat-A', label : 'Aviat-A' , parent : 'north-east', type: 'device', active: 'true' , latitude: 50.733028, longitude: 7.151086 } },
-        { data: { id: 'Aviat-Z', label : 'Aviat-Z' , parent : 'east', type: 'device', active: 'true' , latitude: 50.725672, longitude: 7.158488 } },
-        { data: { id: 'Ceragon-A', label : 'Ceragon-A' , parent : 'north-west', type: 'device', active: 'true' , latitude: 50.730230, longitude: 7.126017 } },
-        { data: { id: 'Ceragon-Z', label : 'Ceragon-Z' , parent : 'west', type: 'device', active: 'true' , latitude: 50.721914, longitude: 7.120521 } },
-        { data: { id: 'DragonWave-A', label : 'DragonWave-A' , parent : 'south-west', type: 'device', active: 'true' , latitude: 50.714359, longitude: 7.130437 } },
-        { data: { id: 'DragonWave-Z', label : 'DragonWave-Z' , parent : 'south', type: 'device', active: 'true' , latitude: 50.712472, longitude: 7.143887 } },
-        { data: { id: 'ELVA-1-A', label : 'ELVA-1-A' , parent : 'north', type: 'device', active: 'true' , latitude: 50.734916, longitude: 7.137636 } },
-        { data: { id: 'ELVA-1-Z', label : 'ELVA-1-Z' , parent : 'south-west', type: 'device', active: 'true' , latitude: 50.714359, longitude: 7.130437 } },
-        { data: { id: 'Ericsson-A', label : 'Ericsson-A' , parent : 'north-east', type: 'device', active: 'true' , latitude: 50.733028, longitude: 7.151086 } },
-        { data: { id: 'Ericsson-Z', label : 'Ericsson-Z' , parent : 'east', type: 'device', active: 'true' , latitude: 50.725672, longitude: 7.158488 } },
-        { data: { id: 'Fujitsu-A', label : 'Fujitsu-A' , parent : 'east', type: 'device', active: 'true' , latitude: 50.725672, longitude: 7.158488 } },
-        { data: { id: 'Fujitsu-Z', label : 'Fujitsu-Z' , parent : 'south-east', type: 'device', active: 'true' , latitude: 50.717158, longitude: 7.155506 } },
-        { data: { id: 'Huawei-A', label : 'Huawei-A' , parent : 'south-west', type: 'device', active: 'true' , latitude: 50.714359, longitude: 7.130437 } },
-        { data: { id: 'Huawei-Z', label : 'Huawei-Z' , parent : 'south', type: 'device', active: 'true' , latitude: 50.712472, longitude: 7.143887 } },
-        { data: { id: 'Intracom-A', label : 'Intracom-A' , parent : 'south', type: 'device', active: 'true' , latitude: 50.712472, longitude: 7.143887 } },
-        { data: { id: 'Intracom-Z', label : 'Intracom-Z' , parent : 'south-east', type: 'device', active: 'true' , latitude: 50.717158, longitude: 7.155506 } },
-        { data: { id: 'NEC-A', label : 'NEC-A' , parent : 'north', type: 'device', active: 'true' , latitude: 50.734916, longitude: 7.137636 } },
-        { data: { id: 'NEC-Z', label : 'NEC-Z' , parent : 'north-east', type: 'device', active: 'true' , latitude: 50.733028, longitude: 7.151086 } },
-        { data: { id: 'Nokia-A', label : 'Nokia-A' , parent : 'west', type: 'device', active: 'fasel' , latitude: 50.721914, longitude: 7.120521 } },
-        { data: { id: 'Nokia-Z', label : 'Nokia-Z' , parent : 'south-west', type: 'device', active: 'true' , latitude: 50.714359, longitude: 7.130437 } },
-        { data: { id: 'SIAE-A', label : 'SIAE-A' , parent : 'south', type: 'device', active: 'true' , latitude: 50.712472, longitude: 7.143887 } },
-        { data: { id: 'SIAE-Z', label : 'SIAE-Z' , parent : 'south-east', type: 'device', active: 'true' , latitude: 50.717158, longitude: 7.155506 } },
-        { data: { id: 'ZTE-A', label : 'ZTE-A' , parent : 'north-west', type: 'device', active: 'true' , latitude: 50.730230, longitude: 7.126017 } },
-        { data: { id: 'ZTE-Z', label : 'ZTE-Z' , parent : 'north', type: 'device', active: 'true' , latitude: 50.734916, longitude: 7.137636 } },
-
-        { data: { id: 'Aviat-Z#5', label : '#5' , parent : 'Aviat-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.725672, longitude: 7.158488 }, position: { x: 1984, y: 390 } },
-        { data: { id: 'Aviat-Z#6', label : '#6' , parent : 'Aviat-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.725672, longitude: 7.158488 }, position: { x: 1984, y: 321 } },
-        { data: { id: 'Ericsson-Z#5', label : '#5' , parent : 'Ericsson-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.725672, longitude: 7.158488 }, position: { x: 1777, y: 393 } },
-        { data: { id: 'Ericsson-Z#6', label : '#6' , parent : 'Ericsson-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.725672, longitude: 7.158488 }, position: { x: 1765, y: 325 } },
-        { data: { id: 'Fujitsu-A#5', label : '#5' , parent : 'Fujitsu-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.725672, longitude: 7.158488 }, position: { x: 1859, y: 567 } },
-        { data: { id: 'Fujitsu-A#6', label : '#6' , parent : 'Fujitsu-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.725672, longitude: 7.158488 }, position: { x: 1859, y: 647 } },
-        { data: { id: 'ELVA-1-A#2', label : '#2' , parent : 'ELVA-1-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.734916, longitude: 7.137636 }, position: { x: 895, y: 150 } },
-        { data: { id: 'ELVA-1-A#6', label : '#6' , parent : 'ELVA-1-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.734916, longitude: 7.137636 }, position: { x: 815, y: 150 } },
-        { data: { id: 'NEC-A#3', label : '#3' , parent : 'NEC-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.734916, longitude: 7.137636 }, position: { x: 955, y: -52 } },
-        { data: { id: 'NEC-A#6', label : '#6' , parent : 'NEC-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.734916, longitude: 7.137636 }, position: { x: 1035, y: -52 } },
-        { data: { id: 'ZTE-Z#4', label : '#4' , parent : 'ZTE-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.734916, longitude: 7.137636 }, position: { x: 707, y: -67 } },
-        { data: { id: 'ZTE-Z#5', label : '#5' , parent : 'ZTE-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.734916, longitude: 7.137636 }, position: { x: 747, y: -27 } },
-        { data: { id: 'ZTE-Z#6', label : '#6' , parent : 'ZTE-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.734916, longitude: 7.137636 }, position: { x: 667, y: -27 } },
-        // { data: { id: 'ADVA-Y#1', label : '#1' , parent : 'ADVA-Y' , type:'port', layer:'ETY', active:'true', latitude:50.733028, longitude:7.151086}, position: { x: 1392, y: 229 } },
-        { data: { id: 'ADVA-Y#2', label : '#2' , parent : 'ADVA-Y' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1449, y: 172 } },
-        { data: { id: 'ADVA-Y#3', label : '#3' , parent : 'ADVA-Y' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1392, y: 172 } },
-        { data: { id: 'ADVA-Y#4', label : '#4' , parent : 'ADVA-Y' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1449, y: 229 } },
-        { data: { id: 'Aviat-A#5', label : '#5' , parent : 'Aviat-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1654, y: -47 } },
-        { data: { id: 'Aviat-A#6', label : '#6' , parent : 'Aviat-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1654, y: 22 } },
-        { data: { id: 'Ericsson-A#4', label : '#4' , parent : 'Ericsson-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1605, y: 229 } },
-        { data: { id: 'Ericsson-A#5', label : '#5' , parent : 'Ericsson-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1605, y: 172 } },
-        { data: { id: 'Ericsson-A#6', label : '#6' , parent : 'Ericsson-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1664, y: 226 } },
-        // { data: { id: 'NEC-Z#3', label : '#3' , parent : 'NEC-Z' , type:'port', layer:'ETY', active:'true', latitude:50.733028, longitude:7.151086}, position: { x: 1392, y: 16 } },
-        { data: { id: 'NEC-Z#4', label : '#4' , parent : 'NEC-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1449, y: 16 } },
-        { data: { id: 'NEC-Z#2', label : '#2' , parent : 'NEC-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1449, y: -41 } },
-        { data: { id: 'NEC-Z#6', label : '#6' , parent : 'NEC-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1382, y: -23 } },
-        { data: { id: 'Ceragon-A#5', label : '#5' , parent : 'Ceragon-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.730230, longitude: 7.126017 }, position: { x: 195, y: 312 } },
-        { data: { id: 'Ceragon-A#6', label : '#6' , parent : 'Ceragon-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.730230, longitude: 7.126017 }, position: { x: 136, y: 366 } },
-        { data: { id: 'ZTE-A#5', label : '#5' , parent : 'ZTE-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.730230, longitude: 7.126017 }, position: { x: 345, y: 108 } },
-        { data: { id: 'ZTE-A#6', label : '#6' , parent : 'ZTE-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.730230, longitude: 7.126017 }, position: { x: 408, y: 99 } },
-        { data: { id: 'ADVA-Z#1', label : '#1' , parent : 'ADVA-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1139, y: 1001 } },
-        // { data: { id: 'ADVA-Z#2', label : '#2' , parent : 'ADVA-Z' , type:'port', layer:'ETY', active:'true', latitude:50.712472, longitude:7.143887}, position: { x: 1196, y: 944 } },
-        // { data: { id: 'ADVA-Z#3', label : '#3' , parent : 'ADVA-Z' , type:'port', layer:'ETY', active:'true', latitude:50.712472, longitude:7.143887}, position: { x: 1139, y: 944 } },
-        { data: { id: 'ADVA-Z#4', label : '#4' , parent : 'ADVA-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1196, y: 1001 } },
-        { data: { id: 'DragonWave-Z#2', label : '#2' , parent : 'DragonWave-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1133, y: 1252 } },
-        { data: { id: 'DragonWave-Z#6', label : '#6' , parent : 'DragonWave-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1053, y: 1252 } },
-        { data: { id: 'Huawei-Z#3', label : '#3' , parent : 'Huawei-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1046, y: 1094 } },
-        // { data: { id: 'Huawei-Z#4', label : '#4' , parent : 'Huawei-Z' , type:'port', layer:'ETY', active:'true', latitude:50.712472, longitude:7.143887}, position: { x: 989, y: 1094 } },
-        { data: { id: 'Huawei-Z#5', label : '#5' , parent : 'Huawei-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1058, y: 1123 } },
-        { data: { id: 'Huawei-Z#6', label : '#6' , parent : 'Huawei-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 978, y: 1123 } },
-        { data: { id: 'Intracom-A#2', label : '#2' , parent : 'Intracom-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1203, y: 1252 } },
-        { data: { id: 'Intracom-A#6', label : '#6' , parent : 'Intracom-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1283, y: 1252 } },
-        { data: { id: 'SIAE-A#4', label : '#4' , parent : 'SIAE-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1289, y: 1094 } },
-        { data: { id: 'SIAE-A#5', label : '#5' , parent : 'SIAE-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1278, y: 1123 } },
-        { data: { id: 'SIAE-A#6', label : '#6' , parent : 'SIAE-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1346, y: 1094 } },
-        { data: { id: 'Fujitsu-Z#5', label : '#5' , parent : 'Fujitsu-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.717158, longitude: 7.155506 }, position: { x: 1855, y: 821 } },
-        { data: { id: 'Fujitsu-Z#6', label : '#6' , parent : 'Fujitsu-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.717158, longitude: 7.155506 }, position: { x: 1855, y: 741 } },
-        { data: { id: 'Intracom-Z#5', label : '#5' , parent : 'Intracom-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.717158, longitude: 7.155506 }, position: { x: 1755, y: 998 } },
-        { data: { id: 'Intracom-Z#6', label : '#6' , parent : 'Intracom-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.717158, longitude: 7.155506 }, position: { x: 1714, y: 1018 } },
-        { data: { id: 'SIAE-Z#4', label : '#4' , parent : 'SIAE-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.717158, longitude: 7.155506 }, position: { x: 1590, y: 784 } },
-        { data: { id: 'SIAE-Z#5', label : '#5' , parent : 'SIAE-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.717158, longitude: 7.155506 }, position: { x: 1647, y: 784 } },
-        { data: { id: 'SIAE-Z#6', label : '#6' , parent : 'SIAE-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.717158, longitude: 7.155506 }, position: { x: 1588, y: 838 } },
-        { data: { id: 'DragonWave-A#2', label : '#2' , parent : 'DragonWave-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.714359, longitude: 7.130437 }, position: { x: 455, y: 1178 } },
-        { data: { id: 'DragonWave-A#6', label : '#6' , parent : 'DragonWave-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.714359, longitude: 7.130437 }, position: { x: 535, y: 1178 } },
-        { data: { id: 'ELVA-1-Z#2', label : '#2' , parent : 'ELVA-1-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.714359, longitude: 7.130437 }, position: { x: 455, y: 878 } },
-        { data: { id: 'ELVA-1-Z#6', label : '#6' , parent : 'ELVA-1-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.714359, longitude: 7.130437 }, position: { x: 535, y: 878 } },
-        { data: { id: 'Huawei-A#5', label : '#5' , parent : 'Huawei-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.714359, longitude: 7.130437 }, position: { x: 605, y: 1028 } },
-        { data: { id: 'Huawei-A#6', label : '#6' , parent : 'Huawei-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.714359, longitude: 7.130437 }, position: { x: 685, y: 1028 } },
-        { data: { id: 'Nokia-Z33', label : '33' , parent : 'Nokia-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.714359, longitude: 7.130437 }, position: { x: 385, y: 1028 } },
-        { data: { id: 'Nokia-Z#6', label : '#6' , parent : 'Nokia-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.714359, longitude: 7.130437 }, position: { x: 305, y: 1028 } },
-        { data: { id: 'Ceragon-Z#4', label : '#4' , parent : 'Ceragon-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.721914, longitude: 7.120521 }, position: { x: -159, y: 547 } },
-        { data: { id: 'Ceragon-Z#5', label : '#5' , parent : 'Ceragon-Z' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.721914, longitude: 7.120521 }, position: { x: -159, y: 604 } },
-        { data: { id: 'Ceragon-Z#6', label : '#6' , parent : 'Ceragon-Z' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.721914, longitude: 7.120521 }, position: { x: -130, y: 536 } },
-        // { data: { id: 'Nokia-A13', label : '13' , parent : 'Nokia-A' , type:'port', layer:'ETY', active:'true', latitude:50.721914, longitude:7.120521}, position: { x: 40, y: 801 } },
-        // { data: { id: 'Nokia-A34', label : '34' , parent : 'Nokia-A' , type:'port', layer:'ETY', active:'true', latitude:50.721914, longitude:7.120521}, position: { x: 28, y: 772 } },
-        { data: { id: 'Nokia-A11', label : '11' , parent : 'Nokia-A' , type: 'port', layer: 'ETY', active: 'true', latitude: 50.721914, longitude: 7.120521 }, position: { x: -29, y: 772 } },
-        { data: { id: 'Nokia-A#6', label : '#6' , parent : 'Nokia-A' , type: 'port', layer: 'ETC', active: 'true', latitude: 50.721914, longitude: 7.120521 }, position: { x: 28, y: 829 } },
-
-        { data: { id: 'Spirent#1', label : '#1' , parent : 'Spirent' , type: 'host', layer: 'ETH-TTP', active: 'true', service: 'service13' }, position: { x: 707, y: -167 } },
-        { data: { id: 'Spirent#2', label : '#2' , parent : 'Spirent' , type: 'host', layer: 'ETH-TTP', active: 'true', service: 'service24' }, position: { x: -259, y: 547 } },
-        { data: { id: 'Spirent#3', label : '#3' , parent : 'Spirent' , type: 'host', layer: 'ETH-TTP', active: 'true', service: 'service13' }, position: { x: 1292, y: 172 } },
-        { data: { id: 'Spirent#4', label : '#4' , parent : 'Spirent' , type: 'host', layer: 'ETH-TTP', active: 'true', service: 'service24' }, position: { x: 1490, y: 784 } },
-        { data: { id: 'Spirent#5', label : '#5' , parent : 'Spirent' , type: 'host', layer: 'ETH-TTP', active: 'true', service: 'service56' }, position: { x: 1754, y: -47 } },
-        { data: { id: 'Spirent#6', label : '#6' , parent : 'Spirent' , type: 'host', layer: 'ETH-TTP', active: 'true', service: 'service56' }, position: { x: 455, y: 1278 } },
-        { data: { id: 'Spirent#7', label : '#7' , parent : 'Spirent' , type: 'host', layer: 'ETH-TTP', active: 'true', service: 'service78' }, position: { x: 895, y: 250 } },
-        { data: { id: 'Spirent#8', label : '#8' , parent : 'Spirent' , type: 'host', layer: 'ETH-TTP', active: 'true', service: 'service78' }, position: { x: 455, y: 778 } },
-
-      ],
-      edges: [
-
-        { data: { id: '21', source: 'Aviat-A#6', target: 'Aviat-Z#6', label: '21', layer: 'ETC' , active: 'true' } },
-        { data: { id: '31', source: 'Ceragon-A#6', target: 'Ceragon-Z#6', label: '31', layer: 'ETC' , active: 'true' } },
-        { data: { id: '41', source: 'DragonWave-A#6', target: 'DragonWave-Z#6', label: '41', layer: 'ETC' , active: 'true' } },
-        { data: { id: '121', source: 'ELVA-1-A#6', target: 'ELVA-1-Z#6', label: '121' , layer: 'ETC' , active: 'true' } },
-        { data: { id: 'ERI1', source: 'Ericsson-A#6', target: 'Ericsson-Z#6', label: 'ERI1', layer: 'ETC' , active: 'true' } },
-        { data: { id: '61', source: 'Fujitsu-A#6', target: 'Fujitsu-Z#6', label: '61', layer: 'ETC' , active: 'true' } },
-        { data: { id: '71', source: 'Huawei-A#6', target: 'Huawei-Z#6', label: '71', layer: 'ETC' , active: 'true' } },
-        { data: { id: '131', source: 'Intracom-A#6', target: 'Intracom-Z#6', label: '131', layer: 'ETC' , active: 'true' } },
-        { data: { id: '81', source: 'NEC-A#6', target: 'NEC-Z#6', label: '81', layer: 'ETC' , active: 'true' } },
-        { data: { id: '91', source: 'Nokia-A#6', target: 'Nokia-Z#6', label: '91', layer: 'ETC' , active: 'true' } },
-        { data: { id: '101', source: 'SIAE-A#6', target: 'SIAE-Z#6', label: '101', layer: 'ETC' , active: 'true' } },
-        { data: { id: '111', source: 'ZTE-A#6', target: 'ZTE-Z#6', label: '111', layer: 'ETC' , active: 'true' } },
-
-        // { data: { id: 'ETY01', source: 'ADVA-A#1', target: 'Nokia-A34', label: 'ADVA-A#1-Nokia-A34' , layer: 'ETY' , active: 'true' } },
-        // { data: { id: 'ETY02', source: 'ADVA-A#2', target: 'ZTE-A#4', label: 'ADVA-A#2-ZTE-A#4' , layer: 'ETY' , active: 'false' } },
-        // { data: { id: 'ETY03', source: 'ADVA-B#1', target: 'Nokia-A13', label: 'ADVA-B#1-Nokia-A13' , layer: 'ETY' , active: 'true' } },
-        // { data: { id: 'ETY04', source: 'ADVA-B#2', target: 'ZTE-A#3', label: 'ADVA-B#2-ZTE-A#3' , layer: 'ETY' , active: 'true' } },
-        // { data: { id: 'ETY05', source: 'ADVA-Y#1', target: 'Huawei-Z#4', label: 'ADVA-Y#1-Huawei-Z#4' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY06', source: 'ADVA-Y#2', target: 'NEC-Z#4', label: 'ADVA-Y#2-NEC-Z#4' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY07', source: 'ADVA-Y#3', target: 'Spirent#3', label: 'ADVA-Y#3-Spirent#3' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY08', source: 'ADVA-Y#4', target: 'Ericsson-A#4', label: 'ADVA-Y#4-Ericsson-A#4' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY09', source: 'ADVA-Z#1', target: 'Huawei-Z#3', label: 'ADVA-Z#1-Huawei-Z#3' , layer: 'ETY' , active: 'true' } },
-        // { data: { id: 'ETY10', source: 'ADVA-Z#2', target: 'NEC-Z#3', label: 'ADVA-Z#2-NEC-Z#3' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY11', source: 'ADVA-Z#4', target: 'SIAE-A#4', label: 'ADVA-Z#4-SIAE-A#4' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY12', source: 'Aviat-A#5', target: 'Spirent#5', label: 'Aviat-A#5-Spirent#5' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY13', source: 'Aviat-Z#5', target: 'Fujitsu-A#5', label: 'Aviat-Z#5-Fujitsu-A#5' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY14', source: 'Ceragon-A#5', target: 'ZTE-A#5', label: 'Ceragon-A#5-ZTE-A#5' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY15', source: 'Ceragon-Z#4', target: 'Spirent#2', label: 'Ceragon-Z#4-Spirent#2' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY16', source: 'Ceragon-Z#5', target: 'Nokia-A11', label: 'Ceragon-Z#5-Nokia-A11' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY17', source: 'DragonWave-A#2', target: 'Spirent#6', label: 'DragonWave-A#2-Spirent#6' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY18', source: 'DragonWave-Z#2', target: 'Intracom-A#2', label: 'DragonWave-Z#2-Intracom-A#2' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY19', source: 'ELVA-1-A#2', target: 'Spirent#7', label: 'ELVA-1-A#2-Spirent#7' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY20', source: 'ELVA-1-Z#2', target: 'Spirent#8', label: 'ELVA-1-Z#2-Spirent#8' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY21', source: 'Ericsson-A#5', target: 'NEC-Z#2', label: 'Ericsson-A#5-NEC-Z#2' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY22', source: 'Ericsson-Z#5', target: 'SIAE-Z#5', label: 'Ericsson-Z#5-SIAE-Z#5' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY23', source: 'Fujitsu-Z#5', target: 'Intracom-Z#5', label: 'Fujitsu-Z#5-Intracom-Z#5' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY24', source: 'Huawei-A#5', target: 'Nokia-Z33', label: 'Huawei-A#5-Nokia-Z33' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY25', source: 'Huawei-Z#5', target: 'SIAE-A#5', label: 'Huawei-Z#5-SIAE-A#5' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY26', source: 'NEC-A#3', target: 'ZTE-Z#5', label: 'NEC-A#3-ZTE-Z#5' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY27', source: 'SIAE-Z#4', target: 'Spirent#4', label: 'SIAE-Z#4-Spirent#4' , layer: 'ETY' , active: 'true' } },
-        { data: { id: 'ETY28', source: 'ZTE-Z#4', target: 'Spirent#1', label: 'Spirent#1-ZTE-Z#4' , layer: 'ETY' , active: 'true' } },
-
-        {  data:  {  id:  'ADVA-Y#2-ETH-13<->ADVA-Y#3-ETH-13',  source:  'ADVA-Y#2',  target:  'ADVA-Y#3',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'ADVA-Y#2-ETH-24<->ADVA-Y#4-ETH-24',  source:  'ADVA-Y#2',  target:  'ADVA-Y#4',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'ADVA-Y#3-ETH-13<->ADVA-Y#4-ETH-13',  source:  'ADVA-Y#3',  target:  'ADVA-Y#4',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Aviat-A#5-ETH-56<->Aviat-A#6-ETH-56',  source:  'Aviat-A#5',  target:  'Aviat-A#6',  label:  'service56' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service56' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Aviat-Z#5-ETH-56<->Aviat-Z#6-ETH-56',  source:  'Aviat-Z#5',  target:  'Aviat-Z#6',  label:  'service56' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service56' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Ceragon-A#5-ETH-13<->Ceragon-A#6-ETH-13',  source:  'Ceragon-A#5',  target:  'Ceragon-A#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Ceragon-A#5-ETH-24<->Ceragon-A#6-ETH-24',  source:  'Ceragon-A#5',  target:  'Ceragon-A#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'Ceragon-Z#4-ETH-24<->Ceragon-Z#5-ETH-24',  source:  'Ceragon-Z#4',  target:  'Ceragon-Z#5',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Ceragon-Z#4-ETH-24<->Ceragon-Z#6-ETH-24',  source:  'Ceragon-Z#4',  target:  'Ceragon-Z#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'Ceragon-Z#5-ETH-13<->Ceragon-Z#6-ETH-13',  source:  'Ceragon-Z#5',  target:  'Ceragon-Z#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'DragonWave-A#2-ETH-56<->DragonWave-A#6-ETH-56',  source:  'DragonWave-A#2',  target:  'DragonWave-A#6',  label:  'service56' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service56' ,  rule:  'working'  }  },
-        {  data:  {  id:  'DragonWave-Z#2-ETH-56<->DragonWave-Z#6-ETH-56',  source:  'DragonWave-Z#2',  target:  'DragonWave-Z#6',  label:  'service56' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service56' ,  rule:  'working'  }  },
-        {  data:  {  id:  'ELVA-1-A#2-ETH-78<->ELVA-1-A#6-ETH-78',  source:  'ELVA-1-A#2',  target:  'ELVA-1-A#6',  label:  'service78' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service78' ,  rule:  'working'  }  },
-        {  data:  {  id:  'ELVA-1-Z#2-ETH-78<->ELVA-1-Z#6-ETH-78',  source:  'ELVA-1-Z#2',  target:  'ELVA-1-Z#6',  label:  'service78' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service78' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Ericsson-A#4-ETH-13<->Ericsson-A#6-ETH-13',  source:  'Ericsson-A#4',  target:  'Ericsson-A#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Ericsson-A#4-ETH-24<->Ericsson-A#6-ETH-24',  source:  'Ericsson-A#4',  target:  'Ericsson-A#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'Ericsson-Z#5-ETH-13<->Ericsson-Z#6-ETH-13',  source:  'Ericsson-Z#5',  target:  'Ericsson-Z#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Ericsson-Z#5-ETH-24<->Ericsson-Z#6-ETH-24',  source:  'Ericsson-Z#5',  target:  'Ericsson-Z#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'Fujitsu-A#5-ETH-56<->Fujitsu-A#6-ETH-56',  source:  'Fujitsu-A#5',  target:  'Fujitsu-A#6',  label:  'service56' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service56' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Fujitsu-Z#5-ETH-56<->Fujitsu-Z#6-ETH-56',  source:  'Fujitsu-Z#5',  target:  'Fujitsu-Z#6',  label:  'service56' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service56' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Huawei-A#5-ETH-13<->Huawei-A#6-ETH-13',  source:  'Huawei-A#5',  target:  'Huawei-A#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Huawei-A#5-ETH-24<->Huawei-A#6-ETH-24',  source:  'Huawei-A#5',  target:  'Huawei-A#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Huawei-Z#5-ETH-13<->Huawei-Z#6-ETH-13',  source:  'Huawei-Z#5',  target:  'Huawei-Z#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Huawei-Z#5-ETH-24<->Huawei-Z#6-ETH-24',  source:  'Huawei-Z#5',  target:  'Huawei-Z#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Intracom-A#2-ETH-56<->Intracom-A#6-ETH-56',  source:  'Intracom-A#2',  target:  'Intracom-A#6',  label:  'service56' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service56' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Intracom-Z#5-ETH-56<->Intracom-Z#6-ETH-56',  source:  'Intracom-Z#5',  target:  'Intracom-Z#6',  label:  'service56' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service56' ,  rule:  'working'  }  },
-        {  data:  {  id:  'NEC-A#3-ETH-13<->NEC-A#6-ETH-13',  source:  'NEC-A#3',  target:  'NEC-A#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'NEC-A#3-ETH-24<->NEC-A#6-ETH-24',  source:  'NEC-A#3',  target:  'NEC-A#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'NEC-Z#4-ETH-13<->NEC-Z#6-ETH-13',  source:  'NEC-Z#4',  target:  'NEC-Z#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'NEC-Z#4-ETH-24<->NEC-Z#6-ETH-24',  source:  'NEC-Z#4',  target:  'NEC-Z#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'Nokia-A11-ETH-13<->Nokia-A#6-ETH-13',  source:  'Nokia-A11',  target:  'Nokia-A#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Nokia-A11-ETH-24<->Nokia-A#6-ETH-24',  source:  'Nokia-A11',  target:  'Nokia-A#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Nokia-Z33-ETH-13<->Nokia-Z#6-ETH-13',  source:  'Nokia-Z33',  target:  'Nokia-Z#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'Nokia-Z33-ETH-24<->Nokia-Z#6-ETH-24',  source:  'Nokia-Z33',  target:  'Nokia-Z#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'working'  }  },
-        {  data:  {  id:  'SIAE-A#5-ETH-13<->SIAE-A#6-ETH-13',  source:  'SIAE-A#5',  target:  'SIAE-A#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'SIAE-A#5-ETH-24<->SIAE-A#6-ETH-24',  source:  'SIAE-A#5',  target:  'SIAE-A#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'working'  }  },
-        {  data:  {  id:  'SIAE-Z#4-ETH-24<->SIAE-Z#6-ETH-24',  source:  'SIAE-Z#4',  target:  'SIAE-Z#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'working'  }  },
-        {  data:  {  id:  'SIAE-Z#4-ETH-24<->SIAE-Z#5-ETH-24',  source:  'SIAE-Z#4',  target:  'SIAE-Z#5',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'SIAE-Z#5-ETH-13<->SIAE-Z#6-ETH-13',  source:  'SIAE-Z#5',  target:  'SIAE-Z#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'ZTE-A#5-ETH-13<->ZTE-A#6-ETH-13',  source:  'ZTE-A#5',  target:  'ZTE-A#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'ZTE-A#5-ETH-24<->ZTE-A#6-ETH-24',  source:  'ZTE-A#5',  target:  'ZTE-A#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'ZTE-A#5-ETH-24<->ZTE-A#6-ETH-24',  source:  'ZTE-A#5',  target:  'ZTE-A#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'ZTE-Z#4-ETH-13<->ZTE-Z#6-ETH-13',  source:  'ZTE-Z#4',  target:  'ZTE-Z#6',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'working'  }  },
-        {  data:  {  id:  'ZTE-Z#4-ETH-13<->ZTE-Z#5-ETH-13',  source:  'ZTE-Z#4',  target:  'ZTE-Z#5',  label:  'service13' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service13' ,  rule:  'protection'  }  },
-        {  data:  {  id:  'ZTE-Z#5-ETH-24<->ZTE-Z#6-ETH-24',  source:  'ZTE-Z#5',  target:  'ZTE-Z#6',  label:  'service24' ,  layer:  'ETH' ,  active:  'true' ,  path:  'false'  ,  service:  'service24' ,  rule:  'protection'  }  },
-      ]
-    };
-
-    var events = eventsFabric();
-
-    var result = {
-      colors: colors,
-      elements: elements,
-      styles: styles,
-      events: events
-    };
-
-    var someMethodChangingTheElements = function () {
-      // @Martin: hier kannst Du die Elements ändern, anschließend mußt Du das Ereignis veröffentlichen
-      //          das Ereigniss wird in der Directive aufgefangen und die Grig wird neu gezeichnet
-
-      // Hinweis: Die Reihenfolge muss so bleiben und du kannst NUR result.elements ändern.
-
-      events.publish("elementsChanged", {
-        elements: result.elements
-      });
-    };
-
-    return result;
-  });
-
-  mwtnTopologyApp.directive("mwtnTopologyEthernetPathGraph", ["mwtnTopologyEthernetPathData", '$mwtnCommons', function (mwtnTopologyEthernetPathData, $mwtnCommons) {
-
-    return {
-      restrict: 'E',
-      replace: true,
-      template: '<div id="cy" style="height: 750px; width: 100%;"></div>',
-      controller: function () {
-
-      },
-      scope: {
-
-      },
-      link: function (scope, element, attrs, ctrl) {
-
-        var cy = cytoscape({
-          container: element[0],
-
-          boxSelectionEnabled: false,
-          autounselectify: true,
-
-          style: mwtnTopologyEthernetPathData.styles,
-          elements: mwtnTopologyEthernetPathData.elements,
-          layout: {
-            name: 'preset',
-            padding: 5
-          }
-        });
-
-        // @ Martin: Hier wird das Ereignis aus dem Service aboniert.
-        //           Es ist möglich mehrere Ereignisse zu definieren.
-        mwtnTopologyEthernetPathData.events.subscribe("elementsChanged", function (data) {
-
-          // @Martin: cy aktualisiert sich mit Hilfe der Referenz auf die Elemente aus dem Service
-          cy.json({
-            elements: mwtnTopologyEthernetPathData.elements // oder data.elements
-          });
-
-        });
-
-        // pathGraphData.events.subscribe("styleChanged", function () {
-        //   cy.json({
-        //      style: mwtnTopologyEthernetPathData.styles
-        //   });
-        // });
-
-        cy.viewport({
-          zoom: 0.5,
-          pan: { x: 150, y: 100 }
-        });
-
-        var clearService = function () {
-          var lable = cy.getElementById('label');
-          lable.data('label', '');
-
-          var pathState = ['working', 'protection', 'hidden'];
-          pathState.map(function (state) {
-            var selector = "[path = '" + state + "']";
-            cy.elements(selector).map(function (element) {
-              element.data('path', 'false');
-            });
-          });
-        };
-
-        var highlightService = function (service) {
-          var lable = cy.getElementById('label');
-          lable.data('label', service);
-
-          var selector = "[service = '" + service + "']";
-          // start and end service node (host, traffic analyser)
-          cy.nodes(selector).map(function (node) {
-            // console.log(node.id());
-            node.data('path', 'working');
-          });
-
-          ['protection', 'working'].map(function (state) {
-            selector = "[service = '" + service + "'][rule = '" + state + "']";
-            cy.edges(selector).map(function (edge) {
-              edge.connectedNodes().map(function (node) {
-                node.data('path', edge.data('rule'));
-              });
-            });
-            return state;
-          }).reverse().map(function (state) {
-            selector = "[path = '" + state + "']";
-            cy.nodes(selector).connectedEdges().filter(function (edge) {
-              return edge.data('service') === service || edge.data('layer') !== "ETH";
-            }).map(function (edge) {
-              edge.data('path', state);
-            });
-          });
-        };
-        var filterActiveMountPoints = function (mountpoints) {
-          return mountpoints.filter(function (mountpoint) {
-            if (!mountpoint) return false;
-            // console.warn(mountpoint['node-id'], mountpoint['netconf-node-topology:connection-status']);
-            return mountpoint['netconf-node-topology:connection-status'] === 'connected';
-          }).map(function (mountpoint) {
-            return mountpoint['node-id'];
-          });
-        };
-
-        var setDevicesActive = function (nodeIds) {
-          // console.warn(nodeIds);
-          cy.nodes().filter(function (node) {
-            node.data('active', 'false');
-            return node.data('type') === 'device' && nodeIds.contains(node.data('id'));
-          }).map(function (node) {
-            node.data('active', 'true');
-          });
-        };
-
-        var setAllDevicesInactive = function () {
-          cy.nodes().map(function (node) {
-            node.data('active', 'false');
-          });
-        };
-
-        var setPortAndEdgedActive = function () {
-          cy.edges().map(function (edge) {
-            var active = 'true';
-            edge.connectedNodes().map(function (port) {
-              // console.log('  node', JSON.stringify(edge.data()));
-              var parent = cy.getElementById(port.data('parent'));
-              if (parent.data('active') === 'false') {
-                port.data('active', 'false');
-                edge.data('active', 'false');
-              } else {
-                port.data('active', 'true');
-              }
-            });
-          });
-        };
-
-        var init = function () {
-          var timerName = 'init ethernet';
-          console.time(timerName);
-          $mwtnCommons.getMountPoints().then(function (mountpoints) {
-            var filtered = filterActiveMountPoints(mountpoints);
-            setDevicesActive(filtered);
-            setPortAndEdgedActive();
-            console.timeEnd(timerName);
-          }, function (error) {
-            setAllDevicesInactive();
-            setPortAndEdgedActive();
-            console.timeEnd(timerName);
-          });
-
-        };
-        init();
-
-        cy.on('tap', function (event) {
-          clearService();
-          if (event.target !== cy) {
-            if (event.target.data('service')) {
-              highlightService(event.target.data('service'));
-            }
-          } else {
-            init();
-          }
-        });
-      }
-    }
-  }]);
-
-  mwtnTopologyApp.controller("mwtnTopologyPortsGridController", ['$scope', '$timeout', '$state', '$mwtnCommons', '$mwtnTopology', 'uiGridConstants', 'mwtnTopologyEthernetPathData', function ($scope, $timeout, $state, $mwtnCommons, $mwtnTopology, uiGridConstants, mwtnTopologyEthernetPathData) {
-    var vm = this;
-
-    // The page number to show in the grid.
-    var paginationPage = 1;
-    // The page size.
-    var paginationPageSize = 100;
-    // The grid column object with current sorting informations.
-    var sortColumn = null;
-    // The grid column object with current sorting informations.
-    var gridFilters = [];
-    // caches all sites at the current grid page
-
-    vm.gridOptions = Object.assign({}, $mwtnCommons.gridOptions, {
-      showGridFooter: false, // disable the grid footer because the pagination component sets its own.
-      paginationPageSizes: [10, 25, 50, 100],
-      paginationPageSize: paginationPageSize,
-      useExternalPagination: true,
-      useExternalFiltering: true,
-      useExternalSorting: true,
-      totalItems: 0,
-      columnDefs: [{
-        field: "id",
-        type: "string",
-        displayName: "Id"
-      },
-      {
-        field: "layer",
-        type: "string",
-        displayName: "Layer"
-      },
-      {
-        field: "active",
-        type: "string",
-        displayName: "Active"
-      }
-      ],
-      data: [],
-      onRegisterApi: function (gridApi) {
-        // http://ui-grid.info/docs/#/api/ui.grid.core.api:PublicApi
-        vm.gridApi = gridApi;
-
-        vm.gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {
-          // Save the current sort column for later use.
-          sortColumn = (!sortColumns || sortColumns.length === 0) ?
-            null :
-            sortColumns[0];
-          loadPage();
-        });
-
-        vm.gridApi.pagination.on.paginationChanged($scope, function (newPage, newPageSize) {
-          // Save the pagination informations for later use.
-          paginationPage = newPage;
-          paginationPageSize = newPageSize;
-          loadPage();
-        });
-
-        vm.gridApi.core.on.filterChanged($scope, function () {
-          // Save the all filters for later use.
-          var filters = [];
-          this.grid.columns.forEach(function (col, ind) {
-            if (col.filters[0] && col.filters[0].term) {
-              filters.push({
-                field: col.field,
-                term: col.filters[0].term
-              });
-            }
-          });
-          gridFilters = filters;
-          loadPage();
-        });
-
-        loadPage();
-      }
-    });
-
-    /**
-     * Calculates the page content of the grid and sets the values to the gridOprions.data object.
-     */
-    function loadPage() {
-
-      // extract all ports        
-      var ports = mwtnTopologyEthernetPathData.elements.nodes.filter(function (node, ind, arr) {
-        return node && node.data && node.data.type === 'port';
-      }).reduce(function (acc, cur, ind, arr) {
-        if (cur.data) acc[cur.data.id] = cur.data;
-        return acc;
-      }, {});
-
-      // get all port ids
-      var portIds = Object.keys(ports);
-
-      // apply the grid filters
-      var tempData = portIds.filter(function (portId, ind, arr) {
-        var port = ports[portId];
-        return gridFilters.map(function (filter) {
-          switch (filter.field) {
-            case "active":
-              return port[filter.field].toString().contains(filter.term);
-            default:
-              return port[filter.field].contains(filter.term);
-          }
-        }).and(true);
-      }).map(function (portId) {
-        var port = ports[portId];
-        var orderBy;
-
-        if (!sortColumn || !sortColumn.sort.direction) {
-          return {
-            id: port.id
-          }
-        }
-
-        switch (sortColumn.field) {
-          case "active":
-            orderBy = port[sortColumn.field] ? 1 : 0;
-            break;
-          default:
-            orderBy = port[sortColumn.field];
-            break;
-        }
-
-        return {
-          id: port.id,
-          orderBy: orderBy
-        };
-      });
-
-      if (sortColumn && sortColumn.sort.direction) {
-        tempData.sort(function (left, right) {
-          if (left === right || left.orderBy === right.orderBy) {
-            return 0;
-          }
-          if (left.orderBy > right.orderBy) {
-            return (sortColumn.sort.direction === uiGridConstants.ASC) ? 1 : -1;
-          }
-          return (sortColumn.sort.direction === uiGridConstants.ASC) ? -1 : 1;
-        });
-      }
-
-      var maxPageNumber = Math.max(1, Math.ceil(tempData.length / paginationPageSize));
-      var currentPage = Math.min(maxPageNumber, paginationPage);
-      var orderedPortsAtCurrentPage = tempData.slice((currentPage - 1) * paginationPageSize, currentPage * paginationPageSize);
-
-      portsAtCurrentPageCache = {};
-      var orderedData = [];
-
-      orderedPortsAtCurrentPage.forEach(function (orderedPort) {
-        var port = ports[orderedPort.id];
-        portsAtCurrentPageCache[port.id] = port;
-        orderedData.push({
-          id: orderedPort.id,
-          layer: port.layer,
-          active: port.active
-        });
-      });
-
-      $timeout(function () {
-        vm.gridOptions.data = orderedData;
-        vm.gridOptions.totalItems = tempData.length;
-      });
-    }
-
-    // subscribe to the elementsChanged event to reload the grid page if the data in the service has chenged      
-    mwtnTopologyEthernetPathData.events.subscribe("elementsChanged", function (data) {
-      loadPage();
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive("mwtnTopologyPortsGrid", [function () {
-    return {
-      restrict: 'E',
-      replace: false,
-      controller: 'mwtnTopologyPortsGridController',
-      controllerAs: 'vm',
-      scope: {
-
-      },
-      templateUrl: 'src/app/mwtnTopology/templates/portsGrid.tpl.html'
-    };
-  }]);
-
-  mwtnTopologyApp.controller("mwtnTopologyEthConnectionsGridController", ['$scope', '$timeout', '$state', '$mwtnCommons', '$mwtnTopology', 'uiGridConstants', 'mwtnTopologyEthernetPathData', function ($scope, $timeout, $state, $mwtnCommons, $mwtnTopology, uiGridConstants, mwtnTopologyEthernetPathData) {
-    var vm = this;
-
-    // The page number to show in the grid.
-    var paginationPage = 1;
-    // The page size.
-    var paginationPageSize = 100;
-    // The grid column object with current sorting informations.
-    var sortColumn = null;
-    // The grid column object with current sorting informations.
-    var gridFilters = [];
-    // caches all sites at the current grid page
-
-    vm.gridOptions = Object.assign({}, $mwtnCommons.gridOptions, {
-      showGridFooter: false, // disable the grid footer because the pagination component sets its own.
-      paginationPageSizes: [10, 25, 50, 100],
-      paginationPageSize: paginationPageSize,
-      useExternalPagination: true,
-      useExternalFiltering: true,
-      useExternalSorting: true,
-      totalItems: 0,
-      columnDefs: [{
-        field: "id",
-        type: "string",
-        displayName: "Id",
-        width: 400
-      },
-      {
-        field: "source",
-        type: "string",
-        displayName: "PortA",
-        width: 200
-      },
-      {
-        field: "target",
-        type: "string",
-        displayName: "PortZ",
-        width: 200
-      },
-      {
-        field: "layer",
-        type: "string",
-        displayName: "Layer",
-        width: 80
-      },
-      {
-        field: "service",
-        type: "string",
-        displayName: "Service",
-        width: 150
-      },
-      {
-        field: "rule",
-        type: "string",
-        displayName: "Rule",
-        width: 150
-      }
-      ],
-      data: [],
-      onRegisterApi: function (gridApi) {
-        // http://ui-grid.info/docs/#/api/ui.grid.core.api:PublicApi
-        vm.gridApi = gridApi;
-
-        vm.gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {
-          // Save the current sort column for later use.
-          sortColumn = (!sortColumns || sortColumns.length === 0) ?
-            null :
-            sortColumns[0];
-          loadPage();
-        });
-
-        vm.gridApi.pagination.on.paginationChanged($scope, function (newPage, newPageSize) {
-          // Save the pagination informations for later use.
-          paginationPage = newPage;
-          paginationPageSize = newPageSize;
-          loadPage();
-        });
-
-        vm.gridApi.core.on.filterChanged($scope, function () {
-          // Save the all filters for later use.
-          var filters = [];
-          this.grid.columns.forEach(function (col, ind) {
-            if (col.filters[0] && col.filters[0].term) {
-              filters.push({
-                field: col.field,
-                term: col.filters[0].term
-              });
-            }
-          });
-          gridFilters = filters;
-          loadPage();
-        });
-
-        loadPage();
-      }
-    });
-
-    /**
-     * Calculates the page content of the grid and sets the values to the gridOprions.data object.
-     */
-    function loadPage() {
-
-      // extract all links        
-      var links = mwtnTopologyEthernetPathData.elements.edges.filter(function (link, ind, arr) {
-        // return true; // node && node.data && node.data.type === 'port'; 
-        return link.data.layer === 'ETH';
-      }).reduce(function (acc, cur, ind, arr) {
-        if (cur.data) {
-          acc[cur.data.id] = cur.data;
-        }
-        return acc;
-      }, {});
-
-      // get all relevant link ids
-      var linkIds = Object.keys(links);
-
-      // apply the grid filters
-      var tempData = linkIds.filter(function (linkId, ind, arr) {
-        var link = links[linkId];
-        return gridFilters.map(function (filter) {
-          switch (filter.field) {
-            default:
-              return link[filter.field].contains(filter.term);
-          }
-        }).and(true);
-      }).map(function (linkId) {
-        var link = links[linkId];
-        var orderBy;
-
-        if (!sortColumn || !sortColumn.sort.direction) {
-          return {
-            id: link.id
-          }
-        }
-
-        switch (sortColumn.field) {
-          default:
-            orderBy = link[sortColumn.field];
-            break;
-        }
-
-        return {
-          id: link.id,
-          orderBy: orderBy
-        };
-      });
-
-      if (sortColumn && sortColumn.sort.direction) {
-        tempData.sort(function (left, right) {
-          if (left === right || left.orderBy === right.orderBy) {
-            return 0;
-          }
-          if (left.orderBy > right.orderBy) {
-            return (sortColumn.sort.direction === uiGridConstants.ASC) ? 1 : -1;
-          }
-          return (sortColumn.sort.direction === uiGridConstants.ASC) ? -1 : 1;
-        });
-      }
-
-      var maxPageNumber = Math.max(1, Math.ceil(tempData.length / paginationPageSize));
-      var currentPage = Math.min(maxPageNumber, paginationPage);
-      var orderedLinksAtCurrentPage = tempData.slice((currentPage - 1) * paginationPageSize, currentPage * paginationPageSize);
-
-      linksAtCurrentPageCache = {};
-      var orderedData = [];
-
-      orderedLinksAtCurrentPage.forEach(function (orderedLink) {
-        var link = links[orderedLink.id];
-        linksAtCurrentPageCache[link.id] = link;
-        orderedData.push({
-          id: orderedLink.id,
-          source: link.source,
-          target: link.target,
-          layer: link.layer,
-          service: link.service,
-          rule: link.rule
-        });
-      });
-
-      $timeout(function () {
-        vm.gridOptions.data = orderedData;
-        vm.gridOptions.totalItems = tempData.length;
-      });
-    }
-
-    // subscribe to the elementsChanged event to reload the grid page if the data in the service has chenged      
-    var subscription = mwtnTopologyEthernetPathData.events.subscribe("elementsChanged", function (data) {
-      loadPage();
-      // to unsubscribe call subscription.remove();
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive("mwtnTopologyEthConnectionsGrid", [function () {
-    return {
-      restrict: 'E',
-      replace: false,
-      controller: 'mwtnTopologyEthConnectionsGridController',
-      controllerAs: 'vm',
-      scope: {
-
-      },
-      templateUrl: 'src/app/mwtnTopology/templates/ethConnectionsGrid.tpl.html'
-    };
-  }]);
-
-  /********************************************* IEEE 1588v2 (PTP) **************************/
-
-  mwtnTopologyApp.controller('mwtnTopologyIeee1588ViewController', ['$scope', '$q', '$timeout', '$state', '$window', '$mwtnTopology', function ($scope, $q, $timeout, $state, $window, $mwtnTopology) {
-    var vm = this;
-    vm.status = {
-      topologyIsOpen: false,
-      portsOpen: false,
-      ethConnectionsIsOpen: false
-    }
-
-    $scope.$watchCollection(function () { return [vm.status.topologyIsOpen, vm.status.portsOpen, vm.status.ethConnectionsIsOpen] }, function (newVal, oldVal) {
-      if (newVal[1] || newVal[2]) {
-        $timeout(function () {
-          $window.dispatchEvent(new Event("resize"));
-        });
-      }
-    });
-  }]);
-
-  mwtnTopologyApp.directive('mwtnTopologyIeee1588View', function () {
-    return {
-      restrict: 'E',
-      controller: 'mwtnTopologyIeee1588ViewController',
-      controllerAs: 'vm',
-      bindToController: true,
-      templateUrl: 'src/app/mwtnTopology/templates/ieee1588View.tpl.html',
-      scope: {
-
-      }
-    };
-  });
-
-  mwtnTopologyApp.factory("mwtnTopologyIeee1588PathData", function () {
-    var colors = {
-      root: '#f54',
-      port: '#377',
-      device: '#252',
-      site: '#525',
-      edge: '#49a',
-      white: '#eed',
-      grey: '#555',
-      selected: '#ff0'
-    };
-
-    var styles = [
-      {
-        selector: 'node',
-        css: {
-          'content': 'data(label)',
-          'text-valign': 'center',
-          'text-halign': 'center',
-          'background-color': '#aaaaaa',
-          'border-color': '#000000',
-          'border-width': '1px',
-          'color': '#ffffff'
-        }
-      },
-      {
-        selector: '$node > node',
-        css: {
-          'shape': 'roundrectangle',
-          'padding-top': '10px',
-          'padding-left': '10px',
-          'padding-bottom': '10px',
-          'padding-right': '10px',
-          'text-valign': 'top',
-          'text-halign': 'center',
-          'background-color': '#eeeeee',
-          'color': '#444444',
-          'border-color': '#888888'
-        }
-      },
-      {
-        selector: 'node[type = "site"]',
-        css: {
-          'shape': 'roundrectangle',
-          'padding-top': '10px',
-          'padding-left': '10px',
-          'padding-bottom': '10px',
-          'padding-right': '10px',
-          'text-valign': 'center',
-          'text-halign': 'center',
-          'background-color': '#fefefe',
-          'color': '#444444',
-          'border-color': '#888888',
-          'font-weight': 'bold'
-        }
-      },
-      {
-        selector: 'node[type = "ptp-clock"][active = "true"]',
-        css: {
-          'background-color': '#316ac5',
-          'background-opacity': '0.2',
-          'border-color': '#316ac5',
-          'border-opacity': '0.8',
-          'border-width': '2px',
-          'color': '#444444'
-        }
-      },
-      {
-        selector: 'node[type = "port"][active = "true"]',
-        css: {
-          'background-opacity': '1.0',
-        }
-      },
-      {
-        selector: 'node[active = "false"]',
-        css: {
-          'background-opacity': '0.3',
-          'border-opacity': '0.5'
-        }
-      },
-      {
-        selector: 'node[path = "true"]',
-        css: {
-          'background-color': '#ff00ff',
-          'background-opacity': '0.9',
-          'border-color': '#880088',
-        }
-      },
-      {
-        selector: '$node > node[path = "true"]',
-        css: {
-          'background-color': '#ff00ff',
-          'background-opacity': '0.3',
-          'border-color': '#ff00ff',
-          'border-opacity': '1.0',
-          'border-width': '2px',
-        }
-      },
-      {
-        selector: 'edge',
-        css: {
-          'content': 'data(id)',
-          'target-arrow-shape': 'triangle',
-          'line-color': '#666666',
-          'color': '#444444'
-        }
-      },
-      {
-        selector: 'edge[active = "false"]',
-        css: {
-          'line-color': '#cccccc',
-          'text-opacity': '0.9'
-        }
-      },
-      {
-        selector: 'edge[path = "true"]',
-        css: {
-          'line-color': '#ff00ff',
-          'width': '5px'
-        }
-      },
-      {
-        selector: ':selected',
-        css: {
-          'background-color': 'black',
-          'line-color': 'black',
-          'target-arrow-color': 'black',
-          'source-arrow-color': 'black'
-        }
-      }];
-
-    var elements = {
-      nodes: [
-        { data: { id: 'north', label: 'north', type: 'site', latitude: 50.734916, longitude: 7.137636 } },
-        { data: { id: 'north-east', label: 'north-east', type: 'site', latitude: 50.733028, longitude: 7.151086 } },
-        { data: { id: 'north-west', label: 'north-west', type: 'site', latitude: 50.730230, longitude: 7.126017 } },
-        { data: { id: 'east', label: 'east', type: 'site', latitude: 50.725672, longitude: 7.158488 } },
-        { data: { id: 'west', label: 'west', type: 'site', latitude: 50.721914, longitude: 7.120521 } },
-        { data: { id: 'south-east', label: 'south-east', type: 'site', latitude: 50.717158, longitude: 7.155506 } },
-        { data: { id: 'south-west', label: 'south-west', type: 'site', latitude: 50.714359, longitude: 7.130437 } },
-        { data: { id: 'south', label: 'south', type: 'site', latitude: 50.712472, longitude: 7.143887 } },
-
-        {  data:  {  id:  'ADVA-A',  label :  'ADVA-A' ,  parent :  'west', type: 'ptp-clock', base64: 'AIDq//6MFzA=', hex: '0x47 0x4D 0x30 0x30 0x30 0x30 0x30 0x31', active: 'true' , latitude: 50.721914, longitude: 7.120521, parentDs: '', path: 'false' }   },
-        {  data:  {  id:  'ADVA-B',  label :  'ADVA-B' ,  parent :  'north-west', type: 'ptp-clock', base64: 'AIDq//6MGDA=', hex: '0x47 0x4D 0x30 0x30 0x30 0x30 0x30 0x32', active: 'true' , latitude: 50.730230, longitude: 7.126017, parentDs: '', path: 'false' }   },
-        {  data:  {  id:  'ADVA-Y',  label :  'ADVA-Y' ,  parent :  'north-east', type: 'ptp-clock', base64: 'AIDqb0hQAAE=', hex: '0x53 0x4C 0x41 0x56 0x45 0x30 0x30 0x31', active: 'true' , latitude: 50.733028, longitude: 7.151086, parentDs: 'NEC-Z#4', path: 'false' }   },
-        {  data:  {  id:  'ADVA-Z',  label :  'ADVA-Z' ,  parent :  'south', type: 'ptp-clock', base64: 'AIDqb0mAAAA=', hex: '0x53 0x4C 0x41 0x56 0x45 0x30 0x30 0x32', active: 'true' , latitude: 50.712472, longitude: 7.143887, parentDs: 'Huawei-Z#3', path: 'false' }   },
-        {  data:  {  id:  'Ericsson-A',  label :  'Ericsson-A' ,  parent :  'north-east', type: 'ptp-clock', base64: 'BE4G//4jsio=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x30 0x31', active: 'true' , latitude: 50.733028, longitude: 7.151086, parentDs: 'NEC-Z#2', path: 'false' }   },
-        {  data:  {  id:  'Ericsson-Z',  label :  'Ericsson-Z' ,  parent :  'east', type: 'ptp-clock', base64: 'BE4G//4jtBA=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x30 0x32', active: 'true' , latitude: 50.725672, longitude: 7.158488, parentDs: 'Ericsson-A#6', path: 'false' }   },
-        {  data:  {  id:  'Huawei-A',  label :  'Huawei-A' ,  parent :  'south-west', type: 'ptp-clock', base64: 'ACWeIQAJq6A=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x30 0x33', active: 'true' , latitude: 50.714359, longitude: 7.130437, parentDs: 'Nokia-Z33', path: 'false' }   },
-        {  data:  {  id:  'Huawei-Z',  label :  'Huawei-Z' ,  parent :  'south', type: 'ptp-clock', base64: 'ACWeIQAJAm8=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x30 0x34', active: 'true' , latitude: 50.712472, longitude: 7.143887, parentDs: 'Huawei-A#6', path: 'false' }   },
-        {  data:  {  id:  'NEC-A',  label :  'NEC-A' ,  parent :  'north', type: 'ptp-clock', base64: 'jN+d//5XDuA=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x30 0x35', active: 'true' , latitude: 50.734916, longitude: 7.137636, parentDs: 'ZTE-Z#5', path: 'false' }   },
-        {  data:  {  id:  'NEC-Z',  label :  'NEC-Z' ,  parent :  'north-east', type: 'ptp-clock', base64: 'jN+d//5XDwA=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x30 0x36', active: 'true' , latitude: 50.733028, longitude: 7.151086, parentDs: 'NEC-A#6', path: 'false' }   },
-        {  data:  {  id:  'Nokia-A',  label :  'Nokia-A' ,  parent :  'west', type: 'ptp-clock', base64: 'ACGu//4Crac=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x30 0x37', active: 'true' , latitude: 50.721914, longitude: 7.120521, parentDs: 'ADVA-A#1', path: 'false' }   },
-        {  data:  {  id:  'Nokia-Z',  label :  'Nokia-Z' ,  parent :  'south-west', type: 'ptp-clock', base64: 'ACGu//4CrZY=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x30 0x38', active: 'true' , latitude: 50.714359, longitude: 7.130437, parentDs: 'Nokia-A#6', path: 'false' }   },
-        {  data:  {  id:  'SIAE-A',  label :  'SIAE-A' ,  parent :  'south', type: 'ptp-clock', base64: 'ALCs//4R6K8=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x30 0x39', active: 'true' , latitude: 50.712472, longitude: 7.143887, parentDs: 'Huawei-Z#5', path: 'false' }   },
-        {  data:  {  id:  'SIAE-Z',  label :  'SIAE-Z' ,  parent :  'south-east', type: 'ptp-clock', base64: 'ALCs//4RucQ=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x31 0x30', active: 'true' , latitude: 50.717158, longitude: 7.155506, parentDs: 'SIAE-A#6', path: 'false' }   },
-        {  data:  {  id:  'ZTE-A',  label :  'ZTE-A' ,  parent :  'north-west', type: 'ptp-clock', base64: 'DBJi//7Zdpo=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x31 0x31', active: 'true' , latitude: 50.730230, longitude: 7.126017, parentDs: 'ADVA-B#2', path: 'false' }   },
-        {  data:  {  id:  'ZTE-Z',  label :  'ZTE-Z' ,  parent :  'north', type: 'ptp-clock', base64: 'DBJi//7ZdqQ=', hex: '0x42 0x43 0x30 0x30 0x30 0x30 0x31 0x32', active: 'true' , latitude: 50.734916, longitude: 7.137636, parentDs: 'ZTE-A#6', path: 'false' }   },
-
-        { data: { id: 'ADVA-A#1', label: '#1', parent: 'ADVA-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.721914, longitude: 7.120521 }, position: { x: 124, y: 564 } },
-        { data: { id: 'ADVA-A#2', label: '#2', parent: 'ADVA-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.721914, longitude: 7.120521 }, position: { x: 124, y: 507 } },
-        { data: { id: 'ADVA-B#1', label: '#1', parent: 'ADVA-B', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.730230, longitude: 7.126017 }, position: { x: 380, y: 381 } },
-        { data: { id: 'ADVA-B#2', label: '#2', parent: 'ADVA-B', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.730230, longitude: 7.126017 }, position: { x: 380, y: 301 } },
-        { data: { id: 'ADVA-Y#1', label: '#1', parent: 'ADVA-Y', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1392, y: 229 } },
-        { data: { id: 'ADVA-Y#2', label: '#2', parent: 'ADVA-Y', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1449, y: 172 } },
-        { data: { id: 'ADVA-Z#1', label: '#1', parent: 'ADVA-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1139, y: 1001 } },
-        { data: { id: 'ADVA-Z#2', label: '#2', parent: 'ADVA-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1196, y: 944 } },
-        { data: { id: 'Ericsson-A#5', label: '#5', parent: 'Ericsson-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1605, y: 172 } },
-        { data: { id: 'Ericsson-A#6', label: '#6', parent: 'Ericsson-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1664, y: 226 } },
-        { data: { id: 'Ericsson-Z#6', label: '#6', parent: 'Ericsson-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.725672, longitude: 7.158488 }, position: { x: 1765, y: 325 } },
-        { data: { id: 'Huawei-A#5', label: '#5', parent: 'Huawei-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.714359, longitude: 7.130437 }, position: { x: 605, y: 1028 } },
-        { data: { id: 'Huawei-A#6', label: '#6', parent: 'Huawei-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.714359, longitude: 7.130437 }, position: { x: 685, y: 1028 } },
-        { data: { id: 'Huawei-Z#3', label: '#3', parent: 'Huawei-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1046, y: 1094 } },
-        { data: { id: 'Huawei-Z#4', label: '#4', parent: 'Huawei-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.712472, longitude: 7.143887 }, position: { x: 989, y: 1094 } },
-        { data: { id: 'Huawei-Z#5', label: '#5', parent: 'Huawei-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1058, y: 1123 } },
-        { data: { id: 'Huawei-Z#6', label: '#6', parent: 'Huawei-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.712472, longitude: 7.143887 }, position: { x: 978, y: 1123 } },
-        { data: { id: 'NEC-A#3', label: '#3', parent: 'NEC-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.734916, longitude: 7.137636 }, position: { x: 955, y: -52 } },
-        { data: { id: 'NEC-A#6', label: '#6', parent: 'NEC-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.734916, longitude: 7.137636 }, position: { x: 1035, y: -52 } },
-        { data: { id: 'NEC-Z#2', label: '#2', parent: 'NEC-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1449, y: -41 } },
-        { data: { id: 'NEC-Z#3', label: '#3', parent: 'NEC-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1392, y: 16 } },
-        { data: { id: 'NEC-Z#4', label: '#4', parent: 'NEC-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1449, y: 16 } },
-        { data: { id: 'NEC-Z#6', label: '#6', parent: 'NEC-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.733028, longitude: 7.151086 }, position: { x: 1382, y: -23 } },
-        { data: { id: 'Nokia-A13', label: '13', parent: 'Nokia-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.721914, longitude: 7.120521 }, position: { x: 40, y: 801 } },
-        { data: { id: 'Nokia-A34', label: '34', parent: 'Nokia-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.721914, longitude: 7.120521 }, position: { x: 28, y: 772 } },
-        { data: { id: 'Nokia-A#6', label: '#6', parent: 'Nokia-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.721914, longitude: 7.120521 }, position: { x: 28, y: 829 } },
-        { data: { id: 'Nokia-Z33', label: '33', parent: 'Nokia-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.714359, longitude: 7.130437 }, position: { x: 385, y: 1028 } },
-        { data: { id: 'Nokia-Z#6', label: '#6', parent: 'Nokia-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.714359, longitude: 7.130437 }, position: { x: 305, y: 1028 } },
-        { data: { id: 'SIAE-A#5', label: '#5', parent: 'SIAE-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1278, y: 1123 } },
-        { data: { id: 'SIAE-A#6', label: '#6', parent: 'SIAE-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.712472, longitude: 7.143887 }, position: { x: 1346, y: 1094 } },
-        { data: { id: 'SIAE-Z#6', label: '#6', parent: 'SIAE-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.717158, longitude: 7.155506 }, position: { x: 1588, y: 838 } },
-        { data: { id: 'ZTE-A#3', label: '#3', parent: 'ZTE-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.730230, longitude: 7.126017 }, position: { x: 380, y: 168 } },
-        { data: { id: 'ZTE-A#4', label: '#4', parent: 'ZTE-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.730230, longitude: 7.126017 }, position: { x: 345, y: 148 } },
-        { data: { id: 'ZTE-A#6', label: '#6', parent: 'ZTE-A', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.730230, longitude: 7.126017 }, position: { x: 408, y: 99 } },
-        { data: { id: 'ZTE-Z#5', label: '#5', parent: 'ZTE-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.734916, longitude: 7.137636 }, position: { x: 747, y: -27 } },
-        { data: { id: 'ZTE-Z#6', label: '#6', parent: 'ZTE-Z', type: 'port', layer: 'PTP', active: 'true', path: 'false', latitude: 50.734916, longitude: 7.137636 }, position: { x: 667, y: -27 } },
-
-      ],
-      edges: [
-        { data: { id: 'ERI1', source: 'Ericsson-A#6', target: 'Ericsson-Z#6', label: 'ERI1', layer: 'PTP', active: 'true' } },
-        { data: { id: '71', source: 'Huawei-A#6', target: 'Huawei-Z#6', label: '71', layer: 'PTP', active: 'true' } },
-        { data: { id: '81', source: 'NEC-A#6', target: 'NEC-Z#6', label: '81', layer: 'PTP', active: 'true' } },
-        { data: { id: '91', source: 'Nokia-A#6', target: 'Nokia-Z#6', label: '91', layer: 'PTP', active: 'true' } },
-        { data: { id: '101', source: 'SIAE-A#6', target: 'SIAE-Z#6', label: '101', layer: 'PTP', active: 'true' } },
-        { data: { id: '111', source: 'ZTE-A#6', target: 'ZTE-Z#6', label: '111', layer: 'PTP', active: 'true' } },
-
-        { data: { id: 'ETY01', source: 'ADVA-A#1', target: 'Nokia-A34', label: 'ADVA-A#1-Nokia-A34', layer: 'PTP', active: 'true' } },
-        { data: { id: 'ETY02', source: 'ADVA-A#2', target: 'ZTE-A#4', label: 'ADVA-A#2-ZTE-A#4', layer: 'PTP', active: 'false' } },
-        { data: { id: 'ETY03', source: 'ADVA-B#1', target: 'Nokia-A13', label: 'ADVA-B#1-Nokia-A13', layer: 'PTP', active: 'true' } },
-        { data: { id: 'ETY04', source: 'ADVA-B#2', target: 'ZTE-A#3', label: 'ADVA-B#2-ZTE-A#3', layer: 'PTP', active: 'true' } },
-        { data: { id: 'ETY05', source: 'ADVA-Y#1', target: 'Huawei-Z#4', label: 'ADVA-Y#1-Huawei-Z#4', layer: 'PTP', active: 'true' } },
-        { data: { id: 'ETY06', source: 'ADVA-Y#2', target: 'NEC-Z#4', label: 'ADVA-Y#2-NEC-Z#4', layer: 'PTP', active: 'true' } },
-        { data: { id: 'ETY09', source: 'ADVA-Z#1', target: 'Huawei-Z#3', label: 'ADVA-Z#1-Huawei-Z#3', layer: 'PTP', active: 'true' } },
-        { data: { id: 'ETY10', source: 'ADVA-Z#2', target: 'NEC-Z#3', label: 'ADVA-Z#2-NEC-Z#3', layer: 'PTP', active: 'true' } },
-        { data: { id: 'ETY21', source: 'Ericsson-A#5', target: 'NEC-Z#2', label: 'Ericsson-A#5-NEC-Z#2', layer: 'PTP', active: 'true' } },
-        { data: { id: 'ETY24', source: 'Huawei-A#5', target: 'Nokia-Z33', label: 'Huawei-A#5-Nokia-Z33', layer: 'PTP', active: 'true' } },
-        { data: { id: 'ETY25', source: 'Huawei-Z#5', target: 'SIAE-A#5', label: 'Huawei-Z#5-SIAE-A#5', layer: 'PTP', active: 'true' } },
-        { data: { id: 'ETY26', source: 'NEC-A#3', target: 'ZTE-Z#5', label: 'NEC-A#3-ZTE-Z#5', layer: 'PTP', active: 'true' } },
-
-      ]
-    };
-
-    var events = eventsFabric();
-
-    var result = {
-      colors: colors,
-      elements: elements,
-      styles: styles,
-      events: events
-    };
-
-    var someMethodChangingTheElements = function () {
-      // @Martin: hier kannst Du die Elements ändern, anschließend mußt Du das Ereignis veröffentlichen
-      //          das Ereigniss wird in der Directive aufgefangen und die Grig wird neu gezeichnet
-
-      // Hinweis: Die Reihenfolge muss so bleiben und du kannst NUR result.elements ändern.
-
-      events.publish("elementsChanged", {
-        elements: result.elements
-      });
-    };
-
-    return result;
-  });
-
-  mwtnTopologyApp.directive("mwtnTopologyIeee1588PathGraph", ["mwtnTopologyIeee1588PathData", "$mwtnPtp", function (mwtnTopologyIeee1588PathData, $mwtnPtp) {
-
-    return {
-      restrict: 'E',
-      replace: true,
-      template: '<div style="height: 750px; width: 100%;"></div>',
-      controller: function () {
-
-      },
-      scope: {
-
-      },
-      link: function (scope, element, attrs, ctrl) {
-
-        var cy = cytoscape({
-          container: element[0],
-
-          boxSelectionEnabled: false,
-          autounselectify: true,
-
-          style: mwtnTopologyIeee1588PathData.styles,
-          elements: mwtnTopologyIeee1588PathData.elements,
-          layout: {
-            name: 'preset',
-            padding: 5
-          }
-        });
-
-        // @ Martin: Hier wird das Ereignis aus dem Service aboniert.
-        //           Es ist möglich mehrere Ereignisse zu definieren.
-        mwtnTopologyIeee1588PathData.events.subscribe("elementsChanged", function (data) {
-
-          // @Martin: cy aktualisiert sich mit Hilfe der Referenz auf die Elemente aus dem Service
-          cy.json({
-            elements: mwtnTopologyIeee1588PathData.elements // oder data.elements
-          });
-        });
-
-        // pathGraphData.events.subscribe("styleChanged", function () {
-        //   cy.json({
-        //      style: mwtnTopologyIeee1588PathData.styles
-        //   });
-        // });
-
-        cy.viewport({
-          zoom: 0.5,
-          pan: { x: 150, y: 100 }
-        });
-
-        var clearPtpPath = function () {
-          var selector = "[path = 'true']";
-          cy.elements(selector).map(function (element) {
-            element.data('path', 'false');
-          });
-        };
-
-        var highlightPtpMaster = function (id) {
-          var selector = "[id = '" + id + "']";
-          cy.nodes(selector).map(function (node) {
-            if (node.data('parentDs') && node.data('parentDs') != '') {
-              // console.warn('parentDs', node.data('parentDs'));
-              var parentNode = node.data('parentDs').slice(0, -2);
-              if (parentNode !== id) {
-                highlightPtpMaster(parentNode);
-
-                // highlight edge
-                selector = "[id = '" + node.data('parentDs') + "']";
-                cy.nodes(selector).connectedEdges().map(function (edge) {
-                  edge.data('path', 'true');
-                  edge.connectedNodes().map(function (node) {
-                    node.data('path', 'true');
-                  });
-                });
-              }
-            }
-          });
-        };
-
-        var setAllDevicesInactive = function () {
-          cy.nodes().map(function (node) {
-            node.data('active', 'false');
-          });
-        };
-
-        var setPortAndEdgedActive = function () {
-          cy.edges().map(function (edge) {
-            var active = 'true';
-            edge.connectedNodes().map(function (port) {
-              // console.log('  node', JSON.stringify(edge.data()));
-              var parent = cy.getElementById(port.data('parent'));
-              if (parent.data('active') === 'false') {
-                port.data('active', 'false');
-                edge.data('active', 'false');
-              } else {
-                port.data('active', 'true');
-              }
-            });
-          });
-        };
-
-        var init = function () {
-          setAllDevicesInactive();
-          $mwtnPtp.getPtpClocks().then(function (clocks) {
-            // setDevicesActive(Object.keys(clocks));
-            var hex = true;
-            // update clock ids first
-            Object.keys(clocks).map(function (key) {
-              var clock = clocks[key];
-              var graphClock = cy.getElementById(key);
-              graphClock.data('active', 'true')
-              graphClock.data('base64', clock.getIdentity());
-              graphClock.data('hex', clock.getIdentity(hex));
-            });
-            // update rest
-            Object.keys(clocks).map(function (key) {
-              var clock = clocks[key];
-              var graphClock = cy.getElementById(key);
-              var graphParentDs = nodeId(clock.getParent().slice(0, -2));
-              graphClock.data('parentDs', graphParentDs + clock.getParent().slice(-2));
-              graphClock.data('grandMaster', nodeId(clock.getGrandMaster()));
-
-              // clock.getPtpPorts().map(function(port){
-              //   // console.warn(port.getId(), port.getNumber(), port.getState(), port.isSlave(), port.isMaster(), port.getLogicalTerminationPointReference());
-              //   var portKey = [key, port.getNumber() < 10 ? '#' : '', port.getNumber()].join('');
-              //   var graphPort = cy.getElementById(portKey);
-              //   // console.warn(JSON.stringify(graphPort.data()));
-              //   if (graphPort === undefined) {
-              //     console.error('PtpPort not found in graph:' , portKey);
-              //   } else {
-              //     console.info('PtpPort found in graph:' , portKey);
-              //   }
-
-              // });
-            });
-            setPortAndEdgedActive();
-          }, function (error) {
-            setPortAndEdgedActive();
-            console.error(JSON.stringify(error));
-          });
-        };
-        // init();
-
-        var getNodeId = function (base64) {
-          if (base64 === undefined || base64 === '') return '';
-
-          var selector = "[type = 'ptp-clock']";
-          var result = cy.nodes(selector).filter(function (graphClock) {
-            // console.error(base64, graphClock.data('base64'), graphClock.data('base64') === base64);
-            return graphClock.data('base64') === base64;
-          });
-          if (result.length === 0) {
-            console.warn('Clock', base64, 'not found!');
-            return '';
-          } else {
-            return result[0].id();
-          }
-        };
-
-        var getParentClock = function (nodeId) {
-          $mwtnPtp.getParent(nodeId).then(function (parentPortIdentity) {
-            var parentNode = getNodeId(parentPortIdentity['clock-identity']);
-            console.log(JSON.stringify(parentPortIdentity), parentNode);
-            if (parentNode) {
-              getParentClock(parentNode);
-            }
-          });
-        };
-
-        cy.on('tap', function (event) {
-          console.log('tap');
-          clearPtpPath();
-          if (event.target !== cy) {
-            if (event.target.data('type') === 'ptp-clock') {
-              getParentClock(event.target.id());
-              //   highlightPtpMaster(event.target.id());
-            } else if (event.target.data('type') === 'port') {
-              var parent = cy.getElementById(event.target.data('parent'));
-              // highlightPtpMaster(parent.id());
-              getParentClock(event.target.id());
-            }
-          } else {
-            // init();
-          }
-        });
-
-      }
-    }
-  }]);
-
-  mwtnTopologyApp.controller("mwtnTopologyClocksGridController", ['$scope', '$timeout', '$state', '$mwtnCommons', '$mwtnTopology', 'uiGridConstants', 'mwtnTopologyIeee1588PathData', function ($scope, $timeout, $state, $mwtnCommons, $mwtnTopology, uiGridConstants, mwtnTopologyIeee1588PathData) {
-    var vm = this;
-
-    // The page number to show in the grid.
-    var paginationPage = 1;
-    // The page size.
-    var paginationPageSize = 100;
-    // The grid column object with current sorting informations.
-    var sortColumn = null;
-    // The grid column object with current sorting informations.
-    var gridFilters = [];
-    // caches all sites at the current grid page
-
-    vm.gridOptions = Object.assign({}, $mwtnCommons.gridOptions, {
-      showGridFooter: false, // disable the grid footer because the pagination component sets its own.
-      paginationPageSizes: [10, 25, 50, 100],
-      paginationPageSize: paginationPageSize,
-      useExternalPagination: true,
-      useExternalFiltering: true,
-      useExternalSorting: true,
-      totalItems: 0,
-      columnDefs: [{
-        field: "id",
-        type: "string",
-        displayName: "Node id",
-        width: 120
-      },
-      {
-        field: "hex",
-        type: "string",
-        displayName: "Clock identity in hex",
-        width: 300
-      }, {
-        field: "base64",
-        type: "string",
-        displayName: "... in base64",
-        width: 150
-      },
-      {
-        field: "parentDs",
-        type: "string",
-        displayName: "parentDs",
-        width: 150
-      },
-      {
-        field: "grandMaster",
-        type: "string",
-        displayName: "grandmaster",
-        width: 300
-      },
-      {
-        field: "active",
-        type: "string",
-        displayName: "Active",
-        width: 80
-      }
-      ],
-      data: [],
-      onRegisterApi: function (gridApi) {
-        // http://ui-grid.info/docs/#/api/ui.grid.core.api:PublicApi
-        vm.gridApi = gridApi;
-
-        vm.gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {
-          // Save the current sort column for later use.
-          sortColumn = (!sortColumns || sortColumns.length === 0) ?
-            null :
-            sortColumns[0];
-          loadPage();
-        });
-
-        vm.gridApi.pagination.on.paginationChanged($scope, function (newPage, newPageSize) {
-          // Save the pagination informations for later use.
-          paginationPage = newPage;
-          paginationPageSize = newPageSize;
-          loadPage();
-        });
-
-        vm.gridApi.core.on.filterChanged($scope, function () {
-          // Save the all filters for later use.
-          var filters = [];
-          this.grid.columns.forEach(function (col, ind) {
-            if (col.filters[0] && col.filters[0].term) {
-              filters.push({
-                field: col.field,
-                term: col.filters[0].term
-              });
-            }
-          });
-          gridFilters = filters;
-          loadPage();
-        });
-
-        loadPage();
-      }
-    });
-
-    /**
-     * Calculates the page content of the grid and sets the values to the gridOprions.data object.
-     */
-    function loadPage() {
-
-      // extract all ports        
-      var ports = mwtnTopologyIeee1588PathData.elements.nodes.filter(function (node, ind, arr) {
-        return node && node.data && node.data.type === 'ptp-clock';
-      }).reduce(function (acc, cur, ind, arr) {
-        if (cur.data) acc[cur.data.id] = cur.data;
-        return acc;
-      }, {});
-
-      // get all port ids
-      var portIds = Object.keys(ports);
-
-      // apply the grid filters
-      var tempData = portIds.filter(function (portId, ind, arr) {
-        var port = ports[portId];
-        return gridFilters.map(function (filter) {
-          switch (filter.field) {
-            case "active":
-              return port[filter.field].toString().contains(filter.term);
-            default:
-              return port[filter.field].contains(filter.term);
-          }
-        }).and(true);
-      }).map(function (portId) {
-        var port = ports[portId];
-        var orderBy;
-
-        if (!sortColumn || !sortColumn.sort.direction) {
-          return {
-            id: port.id
-          }
-        }
-
-        switch (sortColumn.field) {
-          case "active":
-            orderBy = port[sortColumn.field] ? 1 : 0;
-            break;
-          default:
-            orderBy = port[sortColumn.field];
-            break;
-        }
-
-        return {
-          id: port.id,
-          orderBy: orderBy
-        };
-      });
-
-      if (sortColumn && sortColumn.sort.direction) {
-        tempData.sort(function (left, right) {
-          if (left === right || left.orderBy === right.orderBy) {
-            return 0;
-          }
-          if (left.orderBy > right.orderBy) {
-            return (sortColumn.sort.direction === uiGridConstants.ASC) ? 1 : -1;
-          }
-          return (sortColumn.sort.direction === uiGridConstants.ASC) ? -1 : 1;
-        });
-      }
-
-      var maxPageNumber = Math.max(1, Math.ceil(tempData.length / paginationPageSize));
-      var currentPage = Math.min(maxPageNumber, paginationPage);
-      var orderedPortsAtCurrentPage = tempData.slice((currentPage - 1) * paginationPageSize, currentPage * paginationPageSize);
-
-      portsAtCurrentPageCache = {};
-      var orderedData = [];
-
-      orderedPortsAtCurrentPage.forEach(function (orderedPort) {
-        var port = ports[orderedPort.id]; // TODO [sko] varible port should be renamed to clock
-        portsAtCurrentPageCache[port.id] = port;
-        orderedData.push({
-          id: orderedPort.id,
-          layer: port.layer,
-          active: port.active,
-          hex: port.hex,
-          base64: port.base64,
-          parentDs: port.parentDs,
-          grandMaster: port.grandMaster
-        });
-      });
-
-      $timeout(function () {
-        vm.gridOptions.data = orderedData;
-        vm.gridOptions.totalItems = tempData.length;
-      });
-    }
-
-    // subscribe to the elementsChanged event to reload the grid page if the data in the service has chenged      
-    mwtnTopologyIeee1588PathData.events.subscribe("elementsChanged", function (data) {
-      loadPage();
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive("mwtnTopologyClocksGrid", [function () {
-    return {
-      restrict: 'E',
-      replace: false,
-      controller: 'mwtnTopologyClocksGridController',
-      controllerAs: 'vm',
-      scope: {
-
-      },
-      templateUrl: 'src/app/mwtnTopology/templates/clocksGrid.tpl.html'
-    };
-  }]);
-
-  mwtnTopologyApp.controller("mwtnTopologyPtpLinksGridController", ['$scope', '$timeout', '$state', '$mwtnCommons', '$mwtnTopology', 'uiGridConstants', 'mwtnTopologyIeee1588PathData', function ($scope, $timeout, $state, $mwtnCommons, $mwtnTopology, uiGridConstants, mwtnTopologyIeee1588PathData) {
-    var vm = this;
-
-    // The page number to show in the grid.
-    var paginationPage = 1;
-    // The page size.
-    var paginationPageSize = 100;
-    // The grid column object with current sorting informations.
-    var sortColumn = null;
-    // The grid column object with current sorting informations.
-    var gridFilters = [];
-    // caches all sites at the current grid page
-
-    vm.gridOptions = Object.assign({}, $mwtnCommons.gridOptions, {
-      showGridFooter: false, // disable the grid footer because the pagination component sets its own.
-      paginationPageSizes: [10, 25, 50, 100],
-      paginationPageSize: paginationPageSize,
-      useExternalPagination: true,
-      useExternalFiltering: true,
-      useExternalSorting: true,
-      totalItems: 0,
-      columnDefs: [{
-        field: "id",
-        type: "string",
-        displayName: "Id"
-      },
-      {
-        field: "source",
-        type: "string",
-        displayName: "PortA"
-      },
-      {
-        field: "target",
-        type: "string",
-        displayName: "PortZ"
-      },
-      {
-        field: "active",
-        type: "string",
-        displayName: "active"
-      }
-      ],
-      data: [],
-      onRegisterApi: function (gridApi) {
-        // http://ui-grid.info/docs/#/api/ui.grid.core.api:PublicApi
-        vm.gridApi = gridApi;
-
-        vm.gridApi.core.on.sortChanged($scope, function (grid, sortColumns) {
-          // Save the current sort column for later use.
-          sortColumn = (!sortColumns || sortColumns.length === 0) ?
-            null :
-            sortColumns[0];
-          loadPage();
-        });
-
-        vm.gridApi.pagination.on.paginationChanged($scope, function (newPage, newPageSize) {
-          // Save the pagination informations for later use.
-          paginationPage = newPage;
-          paginationPageSize = newPageSize;
-          loadPage();
-        });
-
-        vm.gridApi.core.on.filterChanged($scope, function () {
-          // Save the all filters for later use.
-          var filters = [];
-          this.grid.columns.forEach(function (col, ind) {
-            if (col.filters[0] && col.filters[0].term) {
-              filters.push({
-                field: col.field,
-                term: col.filters[0].term
-              });
-            }
-          });
-          gridFilters = filters;
-          loadPage();
-        });
-
-        loadPage();
-      }
-    });
-
-    /**
-     * Calculates the page content of the grid and sets the values to the gridOprions.data object.
-     */
-    function loadPage() {
-
-      // extract all links        
-      var links = mwtnTopologyIeee1588PathData.elements.edges.filter(function (node, ind, arr) {
-        return true; // node && node.data && node.data.type === 'port';
-      }).reduce(function (acc, cur, ind, arr) {
-        if (cur.data) {
-          acc[cur.data.id] = cur.data;
-        }
-        return acc;
-      }, {});
-
-      // get all link ids
-      var linkIds = Object.keys(links);
-
-      // apply the grid filters
-      var tempData = linkIds.filter(function (linkId, ind, arr) {
-        var link = links[linkId];
-        return gridFilters.map(function (filter) {
-          switch (filter.field) {
-            default:
-              return link[filter.field].contains(filter.term);
-          }
-        }).and(true);
-      }).map(function (linkId) {
-        var link = links[linkId];
-        var orderBy;
-
-        if (!sortColumn || !sortColumn.sort.direction) {
-          return {
-            id: link.id
-          }
-        }
-
-        switch (sortColumn.field) {
-          case "active":
-            orderBy = link[sortColumn.field] ? 1 : 0;
-          default:
-            orderBy = link[sortColumn.field];
-            break;
-        }
-
-        return {
-          id: link.id,
-          orderBy: orderBy
-        };
-      });
-
-      if (sortColumn && sortColumn.sort.direction) {
-        tempData.sort(function (left, right) {
-          if (left === right || left.orderBy === right.orderBy) {
-            return 0;
-          }
-          if (left.orderBy > right.orderBy) {
-            return (sortColumn.sort.direction === uiGridConstants.ASC) ? 1 : -1;
-          }
-          return (sortColumn.sort.direction === uiGridConstants.ASC) ? -1 : 1;
-        });
-      }
-
-      var maxPageNumber = Math.max(1, Math.ceil(tempData.length / paginationPageSize));
-      var currentPage = Math.min(maxPageNumber, paginationPage);
-      var orderedLinksAtCurrentPage = tempData.slice((currentPage - 1) * paginationPageSize, currentPage * paginationPageSize);
-
-      linksAtCurrentPageCache = {};
-      var orderedData = [];
-
-      orderedLinksAtCurrentPage.forEach(function (orderedLink) {
-        var link = links[orderedLink.id];
-        linksAtCurrentPageCache[link.id] = link;
-        orderedData.push({
-          id: orderedLink.id,
-          source: link.source,
-          target: link.target,
-          active: link.active
-        });
-      });
-
-      $timeout(function () {
-        vm.gridOptions.data = orderedData;
-        vm.gridOptions.totalItems = tempData.length;
-      });
-    }
-
-    // subscribe to the elementsChanged event to reload the grid page if the data in the service has chenged      
-    var subscription = mwtnTopologyIeee1588PathData.events.subscribe("elementsChanged", function (data) {
-      loadPage();
-      // to unsubscribe call subscription.remove();
-    });
-
-  }]);
-
-  mwtnTopologyApp.directive("mwtnTopologyPtpLinksGrid", [function () {
-    return {
-      restrict: 'E',
-      replace: false,
-      controller: 'mwtnTopologyPtpLinksGridController',
-      controllerAs: 'vm',
-      scope: {
-
-      },
-      templateUrl: 'src/app/mwtnTopology/templates/ptpLinksGrid.tpl.html'
-    };
-  }]);
-
-  mwtnTopologyApp.filter('coordinateFilter', coordinateFilter);
-
-  function coordinateFilter($sce) {
-
-    return function (coordinate, conversion, type, places) {
-
-      // The filter will be running as we type values into the input boxes, which returns undefined
-      // and brings up an error in the console. Here wait until the coordinate is defined
-      if (coordinate != undefined) {
-
-        // Check for user input that is a positive or negative number with the option
-        // that it is a float. Match only the numbers and not the white space or other characters
-        var pattern = /[-+]?[0-9]*\.?[0-9]+/g
-        var match = String(coordinate).match(pattern);
-
-        if (conversion === "toDD" && match && coordinateIsValid(match, type)) {
-          // If the match array only has one item, the user has provided decimal degrees
-          // and we can just return what the user typed in
-          if (match.length === 1) {
-            return parseFloat(match);
-          }
-
-          // If the match array has a length of three then we know degrees, minutes, and seconds
-          // were provided so we can convert it to decimal degrees
-          if (match.length === 3) {
-            return toDecimalDegrees(match);
-          }
-        }
-
-        else if (conversion === 'toDMS' && match && coordinateIsValid(match, type)) {
-          // When converting from decimal degrees to degrees, minutes and seconds, if
-          // the match array has one item we know the user has input decimal degrees
-          // so we can convert it to degrees, minutes and seconds
-          if (match.length === 1) {
-            return toDegreesMinutesSeconds(match, type);
-          }
-
-          // To properly format the converted coordinates we will need to add in HTML entities
-          // which means we'll need to bind the returned string as HTML and thus we need
-          // to use $sce (Strict Contextual Escaping) to say that we trust what is being bound as HTML
-          if (match.length === 3) {
-            return $sce.trustAsHtml(match[0] + '&deg; ' + match[1] + '&prime; ' + match[2] + '&Prime; ');
-          }
-        }
-
-        // Output a notice that the coordinates are invalid if they are
-        else if (!coordinateIsValid(match, type)) {
-          return "Invalid Coordinate!";
-        }
-
-        function toDecimalDegrees(coord) {
-          // Setup for all parts of the DMS coordinate and the necessary math to convert
-          // from DMS to DD
-          var degrees = parseInt(coord[0]);
-          var minutes = parseInt(coord[1]) / 60;
-          var seconds = parseInt(coord[2]) / 3600;
-
-          // When the degrees value is negative, the math is a bit different
-          // than when the value is positive. This checks whether the value is below zero
-          // and does subtraction instead of addition if it is. 
-          if (degrees < 0) {
-            var calculated = degrees - minutes - seconds;
-            return calculated.toFixed(places || 4);
-          }
-          else {
-            var calculated = degrees + minutes + seconds
-            return calculated.toFixed(places || 4);
-          }
-        }
-
-        // This function converts from DD to DMS. Math.abs is used a lot because
-        // for the minutes and seconds, negative values aren't valid 
-        function toDegreesMinutesSeconds(decimal_degrees, type) {
-
-          var dd = decimal_degrees[0];
-          var direction = 'E';
-
-          if (type === 'lat') {
-            if (dd < 0) {
-              direction = 'S';
-            } else {
-              direction = 'N'
-            }
-          } else {
-            if (dd < 0) {
-              direction = 'W';
-            } else {
-              direction = 'E'
-            }
-          }
-
-          dd = Math.abs(dd);
-          var degrees = Math.floor(dd);
-          var frac = dd - degrees; // get fractional part
-          var min = Math.floor(frac * 60);
-          var sec = frac * 3600 - min * 60;
-
-          var formated = [degrees, '° ', ("0" + min).slice(-2), '\' ', ("0" + sec.toFixed(4)).slice(-7), '\" ', direction];
-          return formated.join('');
-
-          //           var degrees = coordinate[0].split('.')[0];
-          //           var minutes = Math.abs(Math.floor(60 * (Math.abs(coordinate[0]) - Math.abs(degrees))));
-          //           var seconds = 3600 * (Math.abs(coordinate[0]) - Math.abs(degrees) - Math.abs(minutes) / 60).toFixed(2);
-
-          //            return $sce.trustAsHtml(degrees + '° ' + minutes + '\' ' + seconds + '\" ');
-
-        }
-
-        // This function checks whether the coordinate value the user enters is valid or not. 
-        // If the coordinate doesn't pass one of these rules, the function will return false
-        // which will then alert the user that the coordinate is invalid.
-        function coordinateIsValid(coordinate, type) {
-          if (coordinate) {
-
-            // The degree values of latitude coordinates have a range between -90 and 90
-            if (coordinate[0] && type === 'lat') {
-              if (!(-90 <= +(coordinate[0]) <= 90)) return false;
-            }
-            // The degree values longitude coordinates have a range between -180 and 180
-            else if (coordinate[0] && type === 'lon') {
-              if (!(-180 <= +(coordinate[0]) <= 180)) return false;
-            }
-            // Minutes and seconds can only be between 0 and 60
-            if (coordinate[1]) {
-              if (!(0 <= +(coordinate[1]) <= 60)) return false;
-            }
-            if (coordinate[2]) {
-              if (!(0 <= +(coordinate[2]) <= 60)) return false;
-            }
-          }
-
-          // If the coordinate made it through all the rules above, the function
-          // returns true because the coordinate is good
-          return true;
-        }
-      }
-    }
-  }
-});
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.module.js
deleted file mode 100755 (executable)
index db795d2..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD',
-        'app/routingConfig',
-        'app/core/core.services',
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-
-  var mwtnTopologyApp = angular.module('app.mwtnTopology', ['app.core', 'ui.router.state', 'ui.grid', 'ui.grid.pagination', 'ui.grid.selection', 'ui.bootstrap', 'config', 'app.mwtnCommons']);
-
-  mwtnTopologyApp.config(function ($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    // // AF/MF: Warum? (Remove as soon as possible)
-    // mwtnTopologyApp.register = {
-    //   controller: $controllerProvider.register,
-    //   directive: $compileProvider.directive,
-    //   factory: $provide.factory,
-    //   service: $provide.service
-    // };
-
-    NavHelperProvider.addControllerUrl('app/mwtnTopology/mwtnTopology.controller');
-    NavHelperProvider.addToMenu('mwtnTopology', {
-      "link": "#/pnfTopology/site",
-      "active": "main.mwtnTopology",
-      "title": "pnf Topology",
-      "icon": "fa fa-connectdevelop",  // Add navigation icon css class here
-      "page": {
-        "title": "pnf Topology",
-        "description": "mwtnTopology"
-      }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.mwtnTopology', {
-      url: 'pnfTopology/:tab?&top&bottom&right&left&lat&lng&zoom&site&siteLink&sitePath',
-      reloadOnSearch: false,
-      access: access.admin,
-      params: {
-        internal: false
-      },
-      views: {
-        content: {
-          template: '<mwtn-topology-frame />'
-        }
-      }
-    });
-
-  });
-
-  return mwtnTopologyApp;
-});
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.rest b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.rest
deleted file mode 100755 (executable)
index 323b13a..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-###\r
-# get outer bounding box for all sites.\r
-POST http://03-wtp-poc:9200/mwtn/site/_search HTTP/1.1\r
-content-type: application/json\r
-\r
-{\r
-  "aggregations": {\r
-    "top": {\r
-      "max": {\r
-        "field": "location.lat"\r
-      }\r
-    },\r
-    "right": {\r
-      "max": {\r
-        "field": "location.lon"\r
-      }\r
-    },\r
-    "bottom": {\r
-      "min": {\r
-        "field": "location.lat"\r
-      }\r
-    },\r
-    "left": {\r
-      "min": {\r
-        "field": "location.lon"\r
-      }\r
-    }\r
-  },\r
-  "size": 0\r
-}\r
-\r
-###\r
-# get sites in bounding box\r
-POST http://03-wtp-poc:9200/mwtn/site/_search HTTP/1.1\r
-content-type: application/json\r
-\r
-{\r
-  "query": {\r
-    "geo_bounding_box": {\r
-      "location": {\r
-        "top": -10.681254175812176,\r
-        "right": -48.3738302863769,\r
-        "bottom": -10.736012963621369,\r
-        "left": -48.433356043212834\r
-      }\r
-    }\r
-  },\r
-  "size": 100\r
-}\r
-\r
-###\r
-# get single site by id\r
-POST http://03-wtp-poc:9200/mwtn/site/_search HTTP/1.1\r
-content-type: application/json\r
-\r
-{\r
-  "query": {\r
-    "bool": {\r
-      "must": [\r
-        {\r
-          "term": {\r
-            "id": "vivsp"\r
-          }\r
-        }\r
-      ]\r
-    }\r
-  }\r
-}\r
-\r
-###\r
-# get sites with site links\r
-POST http://03-wtp-poc:9200/mwtn/site/_search HTTP/1.1\r
-content-type: application/json\r
-\r
-{\r
-  "query": {\r
-    "bool": {\r
-      "must": {\r
-        "exists": {\r
-          "field": "references.site-links"\r
-        }\r
-      }\r
-    }\r
-  },\r
-  "size": 100\r
-}\r
-\r
-###\r
-# get the first 3 site links\r
-POST http://03-wtp-poc:9200/mwtn/site-link/_search HTTP/1.1\r
-content-type: application/json\r
-\r
-{\r
-  "query": {\r
-    "match_all": {}\r
-  },\r
-  "size": 3\r
-}\r
-\r
-###\r
-# get site links where siteA or siteZ refers to a list ob site ids.\r
-POST http://03-wtp-poc:9200/mwtn/site-link/_search HTTP/1.1\r
-content-type: application/json\r
-\r
-{\r
-  "query": {\r
-    "bool": {\r
-      "filter": {\r
-        "term": {\r
-          "siteA": "atdrj"\r
-        }\r
-      }\r
-    }\r
-  }\r
-}\r
-\r
-###\r
-# get site links where siteLinkId is one of the ids in given List.\r
-POST http://03-wtp-poc:9200/mwtn/site-link/_search\r
-content-type: application/json\r
-\r
-{\r
-  "query": {\r
-    "bool": {\r
-      "should": [\r
-        {"term": {"id" : "aaapb:aacal"}},\r
-        {"term": {"id" : "site-6:site-7"}},\r
-        {"term": {"id" : "site-7:site-8"}}\r
-      ]\r
-    }\r
-  }\r
-}\r
-\r
-###\r
-# get the first 3 site links\r
-POST http://03-wtp-poc:9200/mwtn/site/_search HTTP/1.1\r
-content-type: application/json\r
-\r
-{\r
-  "query": {\r
-    "match_all": {}\r
-  },\r
-  "sort" : {\r
-    "name": {\r
-      "order": "asc"\r
-    }\r
-  },\r
-  "size": 30\r
-}\r
-\r
-###\r
-# get the first 3 site links\r
-POST http://03-wtp-poc:9200/mwtn/site/_search HTTP/1.1\r
-content-type: application/json\r
-\r
-{\r
-  "query": {\r
-    "match_all": {}\r
-  },\r
-  "sort" : {\r
-    "_script" : {  \r
-      "script" : {\r
-        "lang": "expression",\r
-        "inline" : "doc['references'].value['site-links'].length"\r
-      } ,  \r
-      "type" : "number",  \r
-      "order" : "desc"  \r
-    }  \r
-  },\r
-  "size": 30\r
-}\r
-\r
-\r
-###\r
-# get the first 3 site links\r
-POST http://03-wtp-poc:9200/mwtn/site/_search HTTP/1.1\r
-content-type: application/json\r
-\r
-{\r
-  "from":0,\r
-  "size":10,\r
-  "sort": {\r
-     "id":{\r
-        "order":"asc"\r
-    }\r
-  },\r
-  "query":{\r
-    "regexp":{\r
-      "name":".*00.*"\r
-    }\r
-  }\r
-}\r
-\r
-\r
-###\r
-# get the first 3 site links\r
-GET http://03-wtp-poc:9200/mwtn/site/_search HTTP/1.1\r
-content-type: application/json\r
-\r
-{\r
-  "query": {\r
-    "function_score": {\r
-      "script_score": {\r
-        "script": "Math.pow(2, 2)",\r
-        "lang": "groovy"\r
-      }\r
-    }\r
-  }\r
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/mwtnTopology.services.js
deleted file mode 100755 (executable)
index 195c08f..0000000
+++ /dev/null
@@ -1,1020 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-/** Type Definitions 
- * @typedef {{id: string, siteLink: string, radio: string, polarization: string }} AirInterfaceLink
- * @typedef {{id: string, siteA: string, siteZ: string, siteNameA: string, siteNameZ: string, airInterfaceLinks: AirInterfaceLink[] }} DbLink
- * @typedef {{data: {hits: {hits: {_id: string, _index: string, _score: number, _source: DbLink, _type: string}[], max_score: number, total: number}}, status: number}} DbLinkResult */
-
-define(['app/mwtnTopology/mwtnTopology.module'], function (mwtnTopologyApp) {
-// module.exports = function () {
-//   const mwtnTopologyApp = require('app/mwtnTopology/mwtnTopology.module');
-//   const mwtnTopologyCommons = require('app/mwtnCommons/mwtnCommons.service');
-
-  mwtnTopologyApp.factory('$mwtnTopology', function ($q, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-    var service = {};
-
-    // AF/MF: Obsolete - will removed soon. All data access function
-    service.getRequiredNetworkElements = $mwtnCommons.getRequiredNetworkElements;
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.highlightFilteredHeader = $mwtnCommons.highlightFilteredHeader;
-    service.getAllData = $mwtnDatabase.getAllData;
-    
-
-    /**
-      * Since not all browsers implement this we have our own utility that will
-      * convert from degrees into radians
-      *
-      * @param deg - The degrees to be converted into radians
-      * @return radians
-      */
-    var _toRad = function (deg) {
-      return deg * Math.PI / 180;
-    };
-
-    /**
-     * Since not all browsers implement this we have our own utility that will
-     * convert from radians into degrees
-     *
-     * @param rad - The radians to be converted into degrees
-     * @return degrees
-     */
-    var _toDeg = function (rad) {
-      return rad * 180 / Math.PI;
-    };
-
-    // public functions
-    /**
-     * Calculate the bearing between two positions as a value from 0-360
-     *
-     * @param lat1 - The latitude of the first position
-     * @param lng1 - The longitude of the first position
-     * @param lat2 - The latitude of the second position
-     * @param lng2 - The longitude of the second position
-     *
-     * @return int - The bearing between 0 and 360
-     */
-    service.bearing = function (lat1, lng1, lat2, lng2) {
-        var dLon = (lng2 - lng1);
-        var y = Math.sin(dLon) * Math.cos(lat2);
-        var x = Math.cos(lat1) * Math.sin(lat2) - Math.sin(lat1) * Math.cos(lat2) * Math.cos(dLon);
-        var brng = _toDeg(Math.atan2(y, x));
-        return 360 - ((brng + 360) % 360);
-      },
-
-    
-    /**
-     * Gets the geospatial distance between two points
-     * @param lat1 {number} The latitude of the first point.
-     * @param lon1 {number} The longitude of the first point.
-     * @param lat2 {number} The latitude of the second point.
-     * @param lon2 {number} The longitude of the second point.
-     * @returns {number} The distance between the two given points.
-     */
-    service.getDistance = function (lat1, lon1, lat2, lon2) {
-      var R = 6371; // km
-      var φ1 = _toRad(lat1);
-      var φ2 = _toRad(lat2);
-      var Δφ = _toRad(lat2 - lat1);
-      var Δλ = _toRad(lon2 - lon1);
-
-      var a = Math.sin(Δφ / 2) * Math.sin(Δφ / 2) +
-        Math.cos(φ1) * Math.cos(φ2) *
-        Math.sin(Δλ / 2) * Math.sin(Δλ / 2);
-      var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));
-
-      return (R * c).toFixed(3);
-    };
-
-    /**
-     * Gets a promise which is resolved if the database has been calculated the bounds containing all sites.
-     * @returns {promise} The promise which is resolved if the database has completed its calculation.
-     */
-    service.getOuterBoundingRectangleForSites = function () {
-      var getOuterBoundingRectangleForSitesDefer = $q.defer();
-      var aggregation = {
-        "aggregations": {
-          "top": {
-            "max": {
-              "field": "location.lat"
-            }
-          },
-          "right": {
-            "max": {
-              "field": "location.lon"
-            }
-          },
-          "bottom": {
-            "min": {
-              "field": "location.lat"
-            }
-          },
-          "left": {
-            "min": {
-              "field": "location.lon"
-            }
-          }
-        },
-        "size": 0
-      };
-
-      $mwtnDatabase.getAggregatedData('mwtn', 'site', aggregation).then(function (result) {
-        getOuterBoundingRectangleForSitesDefer.resolve({
-          top: result.data.aggregations.top.value,
-          right: result.data.aggregations.right.value,
-          bottom: result.data.aggregations.bottom.value,
-          left: result.data.aggregations.left.value
-        });
-      }, function (error) {
-        getOuterBoundingRectangleForSitesDefer.reject(error);
-      });
-
-      return getOuterBoundingRectangleForSitesDefer.promise;
-    };
-
-    /**
-     * Gets a promise which resolved with an array of sites within the given bounding box.
-     * @param boundingBox {{top: number, right: number, bottom: number, left: number}} The bounding box to get all sites for.
-     * @param chunkSize {number} The maximum count of sites who should return.
-     * @param chunkSiteStartIndex {number} The index of the first site element to get.
-     */
-    service.getSitesInBoundingBox = function (boundingBox, chunkSize, chunkSiteStartIndex) {
-      var resultDefer = $q.defer();
-
-      var filter = {
-        "geo_bounding_box": {
-          "location": {
-            "top": boundingBox.top,
-            "right": boundingBox.right,
-            "bottom": boundingBox.bottom,
-            "left": boundingBox.left
-          }
-        }
-      };
-
-      $mwtnDatabase.getFilteredData("mwtn", "site", chunkSiteStartIndex, chunkSize, filter)
-        .then(processResult, resultDefer.reject);
-
-      return resultDefer.promise;
-
-      /**
-       * Callback for the database request.
-       * @param result {{data: {hits: {hits: {_id: string, _index: string, _score: number, _source: {id: string, name: string, location: {lat: number, lon: number}, "amsl-ground": number, references: {"network-elements": string[], "site-links": string[]}}, _type: string}[], max_score: number, total: number}}, status: number}} The database result.
-       */
-      function processResult(result) {
-        var hits = result && result.data && result.data.hits;
-        if (!hits) {
-          resultDefer.reject("Invalid result.");
-          return;
-        }
-
-        var total = hits.total;
-        var sites = [];
-
-        for (var hitIndex = 0; hitIndex < hits.hits.length; ++hitIndex) {
-          var site = hits.hits[hitIndex];
-          sites.push({
-            id: site._source.id,
-            name: site._source.name,
-            type: site._source.type,
-            location: {
-              lat: site._source.location.lat,
-              lng: site._source.location.lon
-            },
-            amslGround: site._source["amsl-ground"],
-            references: {
-              siteLinks: site._source.references["site-links"]
-            }
-          });
-        }
-
-        resultDefer.resolve({
-          chunkSize: chunkSize,
-          chunkSiteStartIndex: chunkSiteStartIndex,
-          total: total,
-          sites: sites
-        })
-      }
-    };
-
-    /**
-     * Gets a promise which is resolved with an array of sites filtered by given site ids.
-     * This function does not use chunks!
-     * @param siteIds {string[]} The ids of the sites to return.
-     */
-    service.getSitesByIds = function (siteIds) {
-      var resultDefer = $q.defer();
-
-      if (!siteIds || siteIds.length === 0) {
-        resultDefer.resolve([]);
-        return resultDefer.promise;
-      }
-
-      var query = {
-        bool: {
-          should: siteIds.map(function (siteId) {
-            return { term: { id: siteId } };
-          })
-        }
-      };
-
-      $mwtnDatabase.getFilteredData("mwtn", "site", 0, siteIds.length, query)
-        .then(processResult, resultDefer.reject);
-
-      return resultDefer.promise;
-
-      /**
-       * Callback for the database request.
-       * @param result {{data: {hits: {hits: {_id: string, _index: string, _score: number, _source: {id: string, name: string, location: {lat: number, lon: number}, "amsl-ground": number, references: {"network-elements": string[], "site-links": string[]}}, _type: string}[], max_score: number, total: number}}, status: number}} The database result.
-       */
-      function processResult(result) {
-        var hits = result && result.data && result.data.hits;
-        if (!hits) {
-          resultDefer.reject("Invalid result.");
-          return;
-        }
-
-        var total = hits.total;
-        var sites = [];
-
-        for (var hitIndex = 0; hitIndex < hits.hits.length; ++hitIndex) {
-          var site = hits.hits[hitIndex];
-          sites.push({
-            id: site._source.id,
-            name: site._source.name,
-            type: site._source.type,
-            location: {
-              lat: site._source.location.lat,
-              lng: site._source.location.lon
-            },
-            amslGround: site._source["amsl-ground"],
-            references: {
-              siteLinks: site._source.references["site-links"]
-            }
-          });
-        }
-
-        resultDefer.resolve({
-          total: total,
-          sites: sites
-        })
-      }
-    };
-
-    /**
-     * Gets a promise which is resolved with an array of sites using the given filter expression.
-     */
-    service.getSites = function (sortColumn, sortDirection, filters, chunkSize, chunkSiteStartIndex) {
-      var resultDefer = $q.defer();
-
-      // determine the sort parameter
-      var sort = null;
-      if (sortColumn != null && sortDirection != null) {
-        sort = {};
-        switch (sortColumn) {
-          case 'countNetworkElements':
-          case 'countLinks':
-            sort = null;
-            break;
-          case 'amslGround':
-            sort['amsl-ground'] = {
-              order: sortDirection === 'desc' ? 'desc' : 'asc'
-            }
-            break;
-          default:
-            sort[sortColumn] = {
-              order: sortDirection === 'desc' ? 'desc' : 'asc'
-            }
-            break;
-        }
-      }
-
-       // determine the query parameter
-      var query = {};
-      if (filters == null || filters.length == 0) {
-        query["match_all"] = {};
-      } else {
-        var regexp = {};
-        filters.forEach(function (filter) {
-          if (filter && filter.field) {
-            regexp[filter.field] = '.*'+ filter.term + '.*';
-          }
-        });
-        query["regexp"] = regexp;
-      }
-
-
-      if (sort) {
-        $mwtnDatabase.getFilteredSortedData("mwtn", "site", chunkSiteStartIndex, chunkSize, sort, query).then(processResult, resultDefer.reject);
-      } else {
-        $mwtnDatabase.getFilteredData("mwtn", "site", chunkSiteStartIndex, chunkSize, query).then(processResult, resultDefer.reject);
-      }
-
-      return resultDefer.promise;
-
-      /**
-       * Callback for the database request.
-       * @param result {{data: {hits: {hits: {_id: string, _index: string, _score: number, _source: {id: string, name: string, location: {lat: number, lon: number}, "amsl-ground": number, references: {"network-elements": string[], "site-links": string[]}}, _type: string}[], max_score: number, total: number}}, status: number}} The database result.
-       */
-      function processResult(result) {
-        var hits = result && result.data && result.data.hits;
-        if (!hits) {
-          resultDefer.reject("Invalid result.");
-          return;
-        }
-
-        var total = hits.total;
-        var sites = [];
-
-        for (var hitIndex = 0; hitIndex < hits.hits.length; ++hitIndex) {
-          var site = hits.hits[hitIndex];
-          sites.push({
-            id: site._source.id,
-            name: site._source.name,
-            type: site._source.type,
-            location: {
-              lat: site._source.location.lat,
-              lng: site._source.location.lon
-            },
-            amslGround: site._source["amsl-ground"],
-            references: {
-              siteLinks: site._source.references["site-links"]
-            }
-          });
-        }
-
-        resultDefer.resolve({
-          total: total,
-          sites: sites
-        })
-      }
-    };
-
-    /**
-     * Gets a promise which resolved with an array of site links referenced by given sites.
-     * @param sites {({id: string, name: string, location: {lat: number, lng: number}, amslGround: number, references: {siteLinks: string[]})[]}
-     * @param chunkSize {number} The maximum count of site links who should return.
-     * @param chunkSiteLinkStartIndex {number} The index of the first site link element to get.
-     */
-    service.getSiteLinksForSites = function (sites, chunkSize, chunkSiteLinkStartIndex) {
-      var resultDefer = $q.defer();
-
-      if (!sites || sites.length === 0) {
-        resultDefer.resolve([]);
-        return resultDefer.promise;
-      }
-
-      var siteLinkIds = Object.keys(sites.reduce(function (accumulator, currentSite) {
-        // Add all site link ids referenced by the current site to the accumulator object.
-        currentSite.references.siteLinks.forEach(function (siteLinkId) {
-          // The value "true"" isnt important, i only use the key (siteLinkId) later.
-          // But this way i dont have to check, if the key is already known.
-          accumulator[siteLinkId] = true;
-        });
-        return accumulator;
-      }, {})).map(function (siteLinkId) {
-        return { term: { id: siteLinkId } };
-      });
-
-      var query = {
-        bool: { should: siteLinkIds }
-      };
-
-      $mwtnDatabase.getFilteredData("mwtn", "site-link", chunkSiteLinkStartIndex, chunkSize, query).then(
-        /**
-         * Callback for the database request.
-         * @param result {{data: {hits: {hits: {_id: string, _index: string, _score: number, _source: {id: string, siteA: string, siteZ: string, siteNameA: string, siteNameZ: string, airInterfaceLinks: {id: string, siteLink: string, radio: string, polarization: string }[] }, _type: string}[], max_score: number, total: number}}, status: number}} The database result.
-         */
-        function (result) {
-          var hits = result && result.data && result.data.hits;
-          if (!hits) {
-            resultDefer.reject("Invalid result.");
-            return;
-          }
-
-          if (hits.total === 0) {
-            resultDefer.resolve([]);
-            return;
-          }
-
-          // get additional sites that wont be given in the sites array but are referenced by the site links.
-          // get all sites, referenced by the site links.
-          var allReferencedSiteIds = hits.hits.reduce(function (accumulator, currentSiteLink) {
-            accumulator[currentSiteLink._source.siteA] = true;
-            accumulator[currentSiteLink._source.siteZ] = true;
-            return accumulator;
-          }, {});
-          // remove all known sites
-          sites.forEach(function (site) {
-            if (allReferencedSiteIds.hasOwnProperty(site.id)) {
-              delete allReferencedSiteIds[site.id];
-            }
-          });
-
-          var additionalReferencedSiteIds = Object.keys(allReferencedSiteIds).map(function (referencedSiteId) {
-            return { term: { id: referencedSiteId } };
-          });
-
-          if (additionalReferencedSiteIds.length > 0) {
-            query = {
-              bool: { should: additionalReferencedSiteIds }
-            };
-
-            $mwtnDatabase.getFilteredData("mwtn", "site", 0, 400, query).then(
-              /**
-               * Callback for the database request.
-               * @param result {{data: {hits: {hits: {_id: string, _index: string, _score: number, _source: {id: string, name: string, location: {lat: number, lon: number}, "amsl-ground": number, references: {"network-elements": string[], "site-links": string[]}}, _type: string}[], max_score: number, total: number}}, status: number}} The database result.
-               */
-              function (result) {
-                var siteHits = result && result.data && result.data.hits;
-                if (!siteHits) {
-                  resultDefer.reject("Invalid result.");
-                  return;
-                }
-
-                var additionalSites = siteHits.hits.map(function (site) {
-                  return {
-                    id: site._source.id,
-                    name: site._source.name,
-                    type: site._source.type,
-                    location: {
-                      lat: site._source.location.lat,
-                      lng: site._source.location.lon
-                    },
-                    amslGround: site._source["amsl-ground"],
-                    type: site._source.type,
-                    references: {
-                      siteLinks: site._source.references["site-links"]
-                    }
-                  };
-                });
-
-                var siteLinks = hits.hits.map(function (siteLink) {
-                  return {
-                    id: siteLink._source.id,
-                    siteA: sites.find(function (site) { return site.id === siteLink._source.siteA; }) || additionalSites.find(function (site) { return site.id === siteLink._source.siteA; }),
-                    siteZ: sites.find(function (site) { return site.id === siteLink._source.siteZ; }) || additionalSites.find(function (site) { return site.id === siteLink._source.siteZ; }),
-                    type: siteLink._source.type,
-                    length: 5000 // AF/MF: the length will be served from the database in the next version.
-                  };
-                });
-
-                resultDefer.resolve(siteLinks);
-              },
-              resultDefer.reject);
-
-            return;
-          }
-
-          var siteLinks = hits.hits.map(function (siteLink) {
-            return {
-              id: siteLink._source.id,
-              siteA: sites.find(function (site) { return site.id === siteLink._source.siteA; }),
-              siteZ: sites.find(function (site) { return site.id === siteLink._source.siteZ; }),
-              type: siteLink._source.type,
-              length: 5000 // AF/MF: the length will be served from the database in the next version.
-            };
-          });
-
-          resultDefer.resolve(siteLinks);
-        },
-        resultDefer.reject);
-
-      return resultDefer.promise;
-    };
-
-    /**
-     * Gets a promise which is resolved with an array of planned filtered by given network element ids.
-     * This function does not use chunks!
-     * @param neIds {string[]} The ids of the site links to return.
-     */
-    service.getPlannedNetworkElementsByIds = function (neIds) {
-      var resultDefer = $q.defer();
-
-      if (!neIds || neIds.length === 0) {
-        resultDefer.resolve([]);
-        return resultDefer.promise;
-      }
-
-      var query = {
-        bool: {
-          should: neIds.map(function (neId) {
-            return { term: { id: neId } };
-          })
-        }
-      };
-
-      $mwtnDatabase.getFilteredData("mwtn", "planned-network-elements", 0, neIds.length, query).then(
-        /**
-         * Callback for the database request.
-         * @param result {{data: {hits: {hits: {_id: string, _index: string, _score: number, _source: {id: string, name: string, type: string}, _type: string}[], max_score: number, total: number}}, status: number}} The database result.
-         */
-        function (result) {
-          var hits = result && result.data && result.data.hits;
-          if (!hits) {
-            resultDefer.reject("Invalid result.");
-            return;
-          }
-
-          if (hits.total === 0) {
-            resultDefer.resolve([]);
-            return;
-          }
-
-          var plannedNetworkElements = hits.hits.map(function (plannedNetworkElement) {
-            return {
-              id: plannedNetworkElement._source.id,
-              name: plannedNetworkElement._source.name,
-              type: plannedNetworkElement._source.radioType
-            };
-          });
-
-          resultDefer.resolve(plannedNetworkElements);
-        }, resultDefer.reject);
-
-      return resultDefer.promise;
-    };
-
-
-    /**
-     * Gets a promise which is resolved with an array of site links filtered by given site link ids.
-     * This function does not use chunks!
-     * @param siteLinkIds {string[]} The ids of the site links to return.
-     */
-    service.getSiteLinksByIds = function (siteLinkIds) {
-      var resultDefer = $q.defer();
-
-      if (!siteLinkIds || siteLinkIds.length === 0) {
-        resultDefer.resolve([]);
-        return resultDefer.promise;
-      }
-
-      var query = {
-        bool: {
-          should: siteLinkIds.map(function (siteLinkId) {
-            return { term: { id: siteLinkId } };
-          })
-        }
-      };
-
-      $mwtnDatabase.getFilteredData("mwtn", "site-link", 0, siteLinkIds.length, query).then(
-        /**
-         * Callback for the database request.
-         * @param result {{data: {hits: {hits: {_id: string, _index: string, _score: number, _source: {id: string, siteA: string, siteZ: string}, _type: string}[], max_score: number, total: number}}, status: number}} The database result.
-         */
-        function (result) {
-          var hits = result && result.data && result.data.hits;
-          if (!hits) {
-            resultDefer.reject("Invalid result.");
-            return;
-          }
-
-          if (hits.total === 0) {
-            resultDefer.resolve([]);
-            return;
-          }
-
-          var siteLinks = hits.hits.map(function (siteLink) {
-            return {
-              id: siteLink._source.id,
-              siteA: siteLink._source.siteA,
-              siteZ: siteLink._source.siteZ,
-              azimuthAz: siteLink._source.azimuthAZ,
-              azimuthZa: siteLink._source.azimuthZA,
-              length: siteLink._source.length,
-              type: siteLink._source.type
-            };
-          });
-
-          resultDefer.resolve(siteLinks);
-        }, resultDefer.reject);
-
-      return resultDefer.promise;
-    };
-
-    /**
-     *  Gets a promise with all details for a given site by its id.
-     *  @param siteId {string} The id of the site to request the details for.
-     */
-    service.getSiteDetailsBySiteId = function (siteId) {
-      var resultDefer = $q.defer();
-
-      var siteQuery = {
-        "bool": {
-          "must": [
-            {
-              "term": {
-                "id": siteId
-              }
-            }
-          ]
-        }
-      };
-
-      // get all site details
-      $mwtnDatabase.getFilteredData("mwtn", "site", 0, 1, siteQuery).then(
-        /**
-        * Callback for the database request.
-       * @param result {{data: {hits: {hits: {_id: string, _index: string, _score: number, _source: {id: string, name: string, location: {lat: number, lon: number}, "amsl-ground": number, references: {"network-elements": string[], "site-links": string[]}}, _type: string}[], max_score: number, total: number}}, status: number}} The database result.
-        */
-        function (result) {
-          if (result.data.hits.total != 1) {
-            // todo: handle this error
-            resultDefer.reject("Error loading details for " + siteId + ((result.data.hits.total) ? ' Too many recoeds found.' : ' No record found.'));
-          }
-          var site = result.data.hits.hits[0];
-          var siteDetails = {
-            id: site._source.id,
-            name: site._source.name,
-            type: site._source.type,
-            location: {
-              lat: site._source.location.lat,
-              lng: site._source.location.lon
-            },
-            amslGround: site._source["amsl-ground"],
-            references: {
-              siteLinks: site._source.references["site-links"],
-              networkElements: site._source.references["network-elements"]
-            }
-          };
-          
-          service.getSiteLinksByIds(siteDetails.references.siteLinks).then(
-            /** Callback for the database request.
-             *  @param result {{id: string, siteA: string, siteZ: string }[]}
-             */
-            function (result) {
-              siteDetails.siteLinks = result;
-              resultDefer.resolve(siteDetails);
-            });
-
-            service.getPlannedNetworkElementsByIds(siteDetails.references.networkElements).then(
-            /** Callback for the database request.
-             *  @param result {{id: string, name: string, type: string }[]}
-             */
-            function (result) {
-              siteDetails.plannedNetworkElements = result;
-              resultDefer.resolve(siteDetails);
-            });
-        }
-      );
-      return resultDefer.promise;
-    };
-    
-    /**
-     *  Gets a promise with all details for a given link by its id.
-     *  @param siteId {string} The id of the link to request the details for.
-     */
-    service.getLinkDetailsByLinkId = function (linkId) {
-      var resultDefer = $q.defer();
-
-      var linkQuery = {
-        "bool": {
-          "must": [
-            {
-              "term": {
-                "id": linkId
-              }
-            }
-          ]
-        }
-      };
-
-      // get all site details
-      $mwtnDatabase.getFilteredData("mwtn", "site-link", 0, 1, linkQuery).then(
-        /**
-        * Callback for the database request.
-       * @param result { DbLinkResult }  The database result.
-        */
-        function (result) {
-          if (result.data.hits.total != 1) {
-            // todo: handle this error
-            resultDefer.reject("Error loading details for " + siteId + ((result.data.hits.total) ? ' Too many recoeds found.' : ' No record found.'));
-          }
-          var link = result.data.hits.hits[0];
-          var linkDetails = {
-            id: link._source.id,
-            siteA: link._source.siteA,
-            siteZ: link._source.siteZ,
-            siteNameA: link._source.siteNameA,
-            siteNameZ: link._source.siteNameZ,
-            length: link._source.length,
-            azimuthA: link._source.azimuthAZ,
-            azimuthB: link._source.azimuthZA,
-            airInterfaceLinks: link._source.airInterfaceLinks,
-            type: link._source.type,
-            airInterfaceLinks: link._source.airInterfaceLinks
-          };
-
-          service.getSitesByIds([link._source.siteA, link._source.siteZ]).then(
-            /** Callback for the database request.
-             *  @param result {{ total: number, sites: { id: string, name: string } []}}
-             */
-            function (result) {
-              var siteA = result.sites.find(function (site) { return site.id == linkDetails.siteA });
-              var siteZ = result.sites.find(function (site) { return site.id == linkDetails.siteZ });
-              if (result.total != 2 || !siteA || !siteZ) {
-                resultDefer.reject("Could not load Sites for link "+linkDetails.id);
-              } 
-              linkDetails.siteA = siteA;
-              linkDetails.siteZ = siteZ;
-              
-              resultDefer.resolve(linkDetails);
-            })
-        }
-      );
-      return resultDefer.promise;
-    } 
-
-    /**
-     * Gets a promise which is resolved with an array of links using the given filter expression.
-     */
-    service.getLinks = function (sortColumn, sortDirection, filters, chunkSize, chunkSiteStartIndex) {
-      var resultDefer = $q.defer();
-
-      // determine the sort parameter
-      var sort = null;
-      if (sortColumn != null && sortDirection != null) {
-        sort = {};
-        switch (sortColumn) {
-          case 'siteIdA':
-            sort['siteA'] = {
-              order: sortDirection === 'desc' ? 'desc' : 'asc'
-            }
-            break;
-          case 'siteIdZ':
-            sort['siteZ'] = {
-              order: sortDirection === 'desc' ? 'desc' : 'asc'
-            }
-            break;
-          default:
-            sort[sortColumn] = {
-              order: sortDirection === 'desc' ? 'desc' : 'asc'
-            }
-            break;
-        }
-      }
-
-      // determine the query parameter
-      var query = {};
-      if (filters == null || filters.length == 0) {
-        query["match_all"] = {};
-      } else {
-        var regexp = {};
-        filters.forEach(function (filter) {
-          if (filter && filter.field) {
-            switch (filter.field) {
-              case 'siteIdA':
-                regexp['siteIdA'] = '.*' + filter.term + '.*';  
-                break;  
-              case 'siteIdZ':
-                regexp['siteZ'] = '.*' + filter.term + '.*';  
-                break; 
-              default:
-                regexp[filter.field] = '.*' + filter.term + '.*';
-                break;
-            }
-          }
-        });
-        query["regexp"] = regexp;
-      }
-
-
-      if (sort) {
-        $mwtnDatabase.getFilteredSortedData("mwtn", "site-link", chunkSiteStartIndex, chunkSize, sort, query).then(processResult, resultDefer.reject);
-      } else {
-        $mwtnDatabase.getFilteredData("mwtn", "site-link", chunkSiteStartIndex, chunkSize, query).then(processResult, resultDefer.reject);
-      }
-
-      /**
-         * Callback for the database request.
-         * @param result {{data: {hits: {hits: {_id: string, _index: string, _score: number, _source: {id: string, siteA: string, siteZ: string}, _type: string}[], max_score: number, total: number}}, status: number}} The database result.
-         */
-      function processResult (result) {
-        var hits = result && result.data && result.data.hits;
-        if (!hits) {
-          resultDefer.reject("Invalid result.");
-          return;
-        }
-
-        var total = hits.total;
-        var links = [];
-
-        var siteLinks = hits.hits.map(function (siteLink) {
-          return {
-            id: siteLink._source.id,
-            siteA: siteLink._source.siteA,
-            siteZ: siteLink._source.siteZ,
-            type: siteLink._source.type,
-          };
-        });
-
-        resultDefer.resolve({
-          total: total,
-          links: siteLinks
-        });
-      }
-
-      return resultDefer.promise;
-
-      
-    };
-   
-    /**
-     * Determines if a coordinate is in a bounding box
-     *  @param bounds {{ top: number, left: number, right: number, bottom: number}} The bounding box.
-     *  @param coordinate {{ lat: number, lng: number }} The coordinate.
-     *  @return if the bounding box contains the coordinate 
-     */
-    service.isInBounds = function(bounds, coordinate) {
-      var isLongInRange = (bounds.right < bounds.left)
-        ? coordinate.lng >= bounds.left || coordinate.lng <= bounds.right 
-        : coordinate.lng >= bounds.left && coordinate.lng <= bounds.right ;
-      
-      return coordinate.lat >= bounds.bottom && coordinate.lat <= bounds.top && isLongInRange;
-    } 
-
-    service.getAllEdges = function () {
-      var edges = [];
-      return getGenericChunk("edge", edges).then(function () {
-        return edges;
-      });
-    };
-
-    /**
-     * Retrieves all nodes.
-     * @return a Promis containing an array of nodes
-     */
-    service.getAllNodes = function () {
-      var resultDefer = $q.defer();
-      var nodes = [];
-      getGenericChunk("node", nodes).then(function () {
-
-        // recreate the tree structure from the flat list
-        var finalNodes = nodes.reduce(
-          /** @param acc { Node[] } */
-          function (acc, cur, ind, arr) {
-            // the site will be added with the first device, so it can not be missing after the first device is in
-            if (!acc.some(node => node.data.type == "site" && node.data.id == cur.data.grandparent)) {
-              acc.push({
-                data: {
-                  type: "site",
-                  id: cur.data.grandparent,
-                  label: cur.data.grandparent,
-                  active: cur.data.active
-                }
-              });
-            }
-            if (!acc.some(node => node.data.type == "device" && node.data.id == cur.data.parent)) {
-              acc.push({
-                data: {
-                  _parent: cur.data.grandparent,
-                  type: "device",
-                  id: cur.data.parent,
-                  get parent() { return cur.data.grandparent },
-                  set parent(val) { debugger; },
-                  label: cur.data.parent,
-                  active: cur.data.active
-                }
-              });
-            }
-            acc.push({
-              data: Object.keys(cur.data).reduce(function (obj, key) {
-                if (key == 'grandparent') {
-                  obj['type'] = 'port'
-                } else {
-                  cur.data.hasOwnProperty(key) && (obj[key] = cur.data[key]);
-                }
-                return obj;
-              }, {}),
-              position: cur.position
-            });
-            return acc;
-          }, []);
-
-        resultDefer.resolve(finalNodes);
-      }, function (err) {
-        console.error(err);
-        resultDefer.reject(err);
-      });
-      return resultDefer.promise;
-    }
-
-    /** @param nodes {{id: string,position:{ x:number, y:number}}}[]} */
-    service.saveChangedNodes = function (nodes) {
-      return $mwtnDatabase.getBase('topology').then(function (base) {
-        var resultDefer = $q.when();
-
-        nodes.forEach(function (node) {
-          resultDefer = resultDefer.then(function () {
-            return $mwtnDatabase.genericRequest({
-              method: 'POST',
-              base: base.base,
-              index: base.index,
-              docType: 'node',
-              command: encodeURI(node.id) +'/_update',
-              data: { 
-                "doc": {
-                  "position": node.position
-                }
-              }
-            });
-          })
-        });
-        return resultDefer;
-      });
-    }
-
-    // Start to initialize google maps api and save the returned promise.
-    service.googleMapsApiPromise = initializeGoogleMapsApi();
-
-    return service;
-
-    // private helper functions of $mwtnTopology
-
-    function getGenericChunk(docType, target) {
-      var size = 30;
-      return $mwtnDatabase.getAllData('topology', docType, target.length || 0, size, undefined)
-        .then(function (result) {
-          if (result.status === 200 && result.data) {
-            var total = (result.data.hits && result.data.hits.total) || 0;
-            var hits = (total && result.data.hits.hits) || [];
-            hits.forEach(function (hit) {
-              target.push(hit._source || {});
-            });
-            if (total > target.length) {
-              return getGenericChunk(docType, target);
-            }
-            return $q.resolve(true);
-          } else {
-            return $q.reject("Could not load " + docType + ".");
-          }
-      }, function (err) {
-        resultDefer.reject(err);
-      });
-
-      return resultDefer.promise;
-    }
-
-
-    /**
-     * Gets a promise which is resolved if the google maps api initialization is completed.
-     * @returns {promise} The promise which is resolved if the initialization is completed.
-     */
-    function initializeGoogleMapsApi() {
-      var googleMapsApiDefer = $q.defer();
-      window.googleMapsApiLoadedEvent = new Event("googleMapsApiLoaded");
-
-      window.addEventListener("googleMapsApiLoaded", function (event) {
-
-        /**
-         * Calculates the bounds this map would display at a given zoom level.
-         *
-         * @member google.maps.Map
-         * @method boundsAt
-         * @param {Number}                 zoom         Zoom level to use for calculation.
-         * @param {google.maps.LatLng}     [center]     May be set to specify a different center than the current map center.
-         * @param {google.maps.Projection} [projection] May be set to use a different projection than that returned by this.getProjection().
-         * @param {Element}                [div]        May be set to specify a different map viewport than this.getDiv() (only used to get dimensions).
-         * @return {google.maps.LatLngBounds} the calculated bounds.
-         *
-         * @example
-         * var bounds = map.boundsAt(5); // same as map.boundsAt(5, map.getCenter(), map.getProjection(), map.getDiv());
-         */
-        google.maps.Map.prototype.boundsAt = function (zoom, center, projection, div) {
-          var p = projection || this.getProjection();
-          if (!p) return undefined;
-          var d = $(div || this.getDiv());
-          var zf = Math.pow(2, zoom) * 2;
-          var dw = d.getStyle('width').toInt() / zf;
-          var dh = d.getStyle('height').toInt() / zf;
-          var cpx = p.fromLatLngToPoint(center || this.getCenter());
-          return new google.maps.LatLngBounds(
-            p.fromPointToLatLng(new google.maps.Point(cpx.x - dw, cpx.y + dh)),
-            p.fromPointToLatLng(new google.maps.Point(cpx.x + dw, cpx.y - dh)));
-        }
-
-        googleMapsApiDefer.resolve();
-      });
-
-      var head = document.getElementsByTagName('head')[0];
-
-      var callbackScript = document.createElement("script");
-      callbackScript.appendChild(document.createTextNode("function googleMapsApiLoadedCallback() { window.dispatchEvent(window.googleMapsApiLoadedEvent); };"));
-
-      var googleScript = document.createElement('script');
-      googleScript.src = "https://maps.googleapis.com/maps/api/js?key=AIzaSyBWyNNhRUhXxQpvR7i-Roh23PaWqi-kNdQ&callback=googleMapsApiLoadedCallback";
-
-      head.appendChild(callbackScript);
-      head.appendChild(googleScript);
-
-      return googleMapsApiDefer.promise;
-    }
-
-  });
-
-});
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/accordeonHeader.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/accordeonHeader.tpl.html
deleted file mode 100755 (executable)
index 21b2a28..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<div role="tab" id="{{::headingId}}" aria-selected="{{isOpen}}" class="panel-heading" ng-keypress="toggleOpen($event)">\r
-    <h4 class="panel-title">\r
-        <a role="button" data-toggle="collapse" href aria-expanded="{{isOpen}}" aria-controls="{{::panelId}}" tabindex="0" class="accordion-toggle"\r
-            ng-click="toggleOpen()" uib-accordion-transclude="heading" ng-disabled="isDisabled" uib-tabindex-toggle>\r
-            <i class="pull-left fa" ng-class="{'fa-chevron-down': isOpen, 'fa-chevron-right': !isOpen}"></i>\r
-            <span uib-accordion-header ng-class="{'text-muted': isDisabled}">{{heading}}</span>\r
-        </a>\r
-    </h4>\r
-</div>\r
-<div id="{{::panelId}}" aria-labelledby="{{::headingId}}" aria-hidden="{{!isOpen}}" role="tabpanel" class="panel-collapse collapse"\r
-    uib-collapse="!isOpen">\r
-    <div class="panel-body" ng-transclude></div>\r
-</div>\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/clocksGrid.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/clocksGrid.tpl.html
deleted file mode 100755 (executable)
index b5d3cbc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<div class="mwtnTopologyGrid" ui-grid="vm.gridOptions" ui-grid-pagination ui-grid-pinning ui-grid-selection ui-grid-resize-columns ui-grid-move-columns></div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ethConnectionsGrid.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ethConnectionsGrid.tpl.html
deleted file mode 100755 (executable)
index b5d3cbc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<div class="mwtnTopologyGrid" ui-grid="vm.gridOptions" ui-grid-pagination ui-grid-pinning ui-grid-selection ui-grid-resize-columns ui-grid-move-columns></div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ethernetView.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ethernetView.tpl.html
deleted file mode 100755 (executable)
index 7f23447..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<uib-accordion close-others="false">\r
-\r
-    <div uib-accordion-group="" class="panel-primary" is-open="vm.status.topologyIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-        heading="{{'Topology' | translate }}">\r
-        <mwtn-topology-ethernet-path-graph ng-if="vm.status.topologyIsOpen" />\r
-    </div>\r
-\r
-    <div uib-accordion-group="" class="panel-primary" is-open="vm.status.portsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-        heading="{{'Ports' | translate}}">\r
-        <mwtn-topology-ports-grid />\r
-    </div>\r
-\r
-    <div uib-accordion-group="" class="panel-primary" is-open="vm.status.ethConnectionsIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-        heading="{{'ETH connections' | translate}}">\r
-        <mwtn-topology-eth-connections-grid />\r
-    </div>\r
-   \r
-</uib-accordion>\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/frame.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/frame.tpl.html
deleted file mode 100755 (executable)
index 7e15cfb..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-<ht-header help-link='sdnr/mwtnTopology/0.4.0/README.md'></ht-header>
-<div class="owl">
-       <!-- Display a loading indicator as long as google isn't initialized. -->
-       <div class="bbg" ng-if="!vm.googleIsReady">
-               <i class="fa fa-spinner fa-pulse" aria-hidden="true"></i>
-               <span>{{'MWTN_LOADING' | translate}}</span>
-       </div>
-
-       <uib-tabset id="mwtnTopology" active="vm.activeTab" ng-if="vm.googleIsReady">
-
-               <uib-tab index="0" heading="{{'MWTN_SITE' | translate}}">
-                       <mwtn-topology-site-view  />
-               </uib-tab>
-
-    <uib-tab index="1" heading="{{'MWTN_AIR_INTERFACE' | translate}}">
-      <mwtn-topology-physical-view />
-    </uib-tab>
-
-               <!-- [sko] no data for TST
-    <uib-tab index="2" heading="{{'MWTN_ETHERNET' | translate}}">
-      <mwtn-topology-ethernet-view />
-    </uib-tab>
-
-    <uib-tab index="3" heading="{{'MWTN_PTP' | translate}}">
-      <mwtn-topology-ieee1588-view />
-    </uib-tab>  -->
-
-       </uib-tabset>
-
-       <hr />
-       <div class="owl">
-               <span>ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-       </div>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ieee1588View.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ieee1588View.tpl.html
deleted file mode 100755 (executable)
index 4551aa6..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<uib-accordion close-others="false">\r
-\r
-    <div uib-accordion-group="" class="panel-primary" is-open="vm.status.topologyIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-        heading="{{'Graph' | translate }}">\r
-        <mwtn-topology-ieee1588-path-graph ng-if="vm.status.topologyIsOpen" />\r
-    </div>\r
-\r
-    <div uib-accordion-group="" class="panel-primary" is-open="vm.status.portsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-        heading="{{'Clocks' | translate}}">\r
-        <mwtn-topology-clocks-grid />\r
-    </div>\r
-\r
-    <div uib-accordion-group="" class="panel-primary" is-open="vm.status.ethConnectionsIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-        heading="{{'PTP links' | translate}}">\r
-        <mwtn-topology-ptp-links-grid />\r
-    </div>\r
-   \r
-</uib-accordion>\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/linkDetails.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/linkDetails.tpl.html
deleted file mode 100755 (executable)
index e26979a..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-<div>\r
-  <uib-alert type="{{status.type}}" ng-show="status.message"> <i ng-show="status.isWorking" class="fa fa-spinner fa-pulse"></i> \r
-    <b><span>{{status.message}}</span></b> \r
-  </uib-alert>\r
-  <div ng-show="!status.message">\r
-    <p>\r
-      <span>Sitelink name: </span>\r
-      <b>{{vm.link.name || vm.link.id }}</b>\r
-      <br/>      \r
-      <span>Length: </span>\r
-      <b> {{vm.link.length || 0 | number:3 }} </b>\r
-      <span> km</span>\r
-      <br/>      \r
-      <span>Type: </span>\r
-      <b> {{vm.link.type || 'traffic' }} </b>\r
-      <span> </span>\r
-    </p>\r
-    <table>\r
-      <caption class="text-left">\r
-        <b>{{'SITE' | translate}} A</b>\r
-      </caption>\r
-      <tbody>\r
-        <tr>\r
-          <td class="text-right" style="padding-right: 5px;">{{'MWTN_SITE_ID' | translate}}:</td>\r
-          <td class="text-left">\r
-            <b>{{vm.link.siteA.id}}</b>\r
-          </td>\r
-        </tr>\r
-        <tr>\r
-          <td class="text-right" style="padding-right: 5px;">{{'MWTN_NAME' | translate}}:</td>\r
-          <td class="text-left">\r
-            <b>{{vm.link.siteA.name}}</b>\r
-          </td>\r
-        </tr>\r
-        <tr>\r
-          <td class="text-right" style="padding-right: 5px;">Lat/Lon:</td>\r
-          <td class="text-left">\r
-            <b>{{vm.link.siteA.location.lat | coordinateFilter:'toDMS':'lat'}} | {{vm.link.siteA.location.lng | coordinateFilter:'toDMS':'lon'}}</b>\r
-          </td>\r
-        </tr>\r
-        <tr>\r
-          <td class="text-right" style="padding-right: 5px;">Azimuth:</td>\r
-          <td class="text-left">\r
-            <b> {{vm.link.azimuthA || 0 | number:1 }} </b>\r
-            <span> °</span>\r
-          </td>\r
-        </tr>\r
-      </tbody>\r
-    </table>\r
-    <table>\r
-      <caption class="text-left">\r
-        <b>{{'MWTN_SITE' | translate}} Z</b>\r
-      </caption>\r
-      <tbody>\r
-        <tr>\r
-          <td class="text-right" style="padding-right: 5px;">{{'MWTN_SITE_ID' | translate}}:</td>\r
-          <td class="text-left">\r
-            <b>{{vm.link.siteZ.id}}</b>\r
-          </td>\r
-        </tr>\r
-        <tr>\r
-          <td class="text-right" style="padding-right: 5px;">Site-Name:</td>\r
-          <td class="text-left">\r
-            <b>{{vm.link.siteZ.name}}</b>\r
-          </td>\r
-        </tr>\r
-        <tr>\r
-          <td class="text-right" style="padding-right: 5px;">Lat/Lon:</td>\r
-          <td class="text-left">\r
-            <b>{{vm.link.siteZ.location.lat | coordinateFilter:'toDMS':'lat'}} | {{vm.link.siteZ.location.lng | coordinateFilter:'toDMS':'lon'}}</b>\r
-          </td>\r
-        </tr>\r
-        <tr>\r
-          <td class="text-right" style="padding-right: 5px;">Azimuth:</td>\r
-          <td class="text-left">\r
-            <b> {{vm.link.azimuthB || 0 | number:1 }} </b>\r
-            <span> °</span>\r
-          </td>\r
-        </tr>\r
-      </tbody>\r
-    </table> \r
-    <br/>\r
-    <br/>\r
-    <table class='table table-striped' ng-show="vm.link.airInterfaceLinks && vm.link.airInterfaceLinks.length">\r
-       <caption class="text-left">\r
-        <b>{{'MWTN_AIR_INTERFACE_LINKS' | translate}}</b>\r
-      </caption>\r
-      <thead>\r
-        <tr>\r
-          <th>{{'MWTN_ID' | translate}}</th>\r
-          <th>{{'MWTN_RADIO' | translate}}</th>\r
-          <th>{{'MWTN_BAND' | translate}}</th>\r
-          <th>{{'MWTN_POLARIZATION' | translate}}</th>\r
-          <th>{{'MWTN_STATUS' | translate}}</th>\r
-        </tr>\r
-      </thead>\r
-      <tbody>\r
-        <tr ng-repeat="airIf in vm.link.airInterfaceLinks">\r
-          <td> {{ airIf.id}} </td>\r
-          <td> {{ airIf.radio}} </td>\r
-          <td> {{ airIf.bandDesignator }} </td>\r
-          <td> {{ airIf.polarization }} </td>\r
-          <td> {{ airIf.mainStatus }} </td>\r
-\r
-          \r
-        </tr>\r
-      </tbody>\r
-    </table>\r
-  </div>\r
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/links.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/links.tpl.html
deleted file mode 100755 (executable)
index 8299a83..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<div id="mwtnNodesGrid" ui-grid="gridOptionsLinks" ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns ui-grid-move-columns
- class="mwtnTopologyGrid"></div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/linksGrid.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/linksGrid.tpl.html
deleted file mode 100755 (executable)
index b5d3cbc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<div class="mwtnTopologyGrid" ui-grid="vm.gridOptions" ui-grid-pagination ui-grid-pinning ui-grid-selection ui-grid-resize-columns ui-grid-move-columns></div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/maps.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/maps.tpl.html
deleted file mode 100755 (executable)
index 71e6c0e..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-<!--
-<ui-gmap-google-map bounds="mapObjects.map.bounds"
-                    center="mapObjects.map.center"
-                    control="mapObjects.map.control"
-                    dragging="mapObjects.map.dragging"
-                    events="mapObjects.map.events"
-                    options="mapObjects.map.options"
-                    zoom="mapObjects.map.zoom">
-
-            <ui-gmap-markers
-                models="mapObjects.sites.models"
-                idkey="marker.id"
-                fit="true"
-                coords="'self'"
-                options="'options'"
-                icon="mapObjects.sites.icon"
-                doCluster="doGoogleCluster"
-                events="mapObjects.sites.events"
-                >
-            </ui-gmap-markers>
-
-            <ui-gmap-window
-                coords="mapObjects.sites.tooltip"
-                options="mapObjects.sites.tooltipOptions"
-                show="mapObjects.sites.tooltip.show">
-            </ui-gmap-window>-->
-
-            <!--  siteLinks -->
-<!--
-            <ui-gmap-polylines
-                models="mapObjects.siteLinks.models"
-                events="mapObjects.siteLinks.events"
-                path="'path'"
-                stroke="'stroke'"
-                geodesic="'geodesic'"
-                editable="'editable'"
-                draggable="'draggable'"
-                static="true"
-                visible="mapObjects.siteLinks.visible"
-                zindex="'zIndex'"
-                >
-            </ui-gmap-polylines>
-
-</ui-gmap-google-map>-->
-
-<map center="{{mapObjects.map.center}}"
-     map-type-id=“MapTypeId.HYBRID”
-     street-view-control="false">
-
-     <marker data-ng-repeat="mapObjects.sites.models"
-             position="{{}}"
-      />
-</map>
-
-<!--
-  <sigma-topology drag-nodes="true" topology-data="topologyData" trigger-resize-sigma="triggerResizeSigma" panel="panel"
-   topology-custfunc="topologyCustfunc">
-  </sigma-toppology>
- -->
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/networkElementsGrid.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/networkElementsGrid.tpl.html
deleted file mode 100755 (executable)
index b5d3cbc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<div class="mwtnTopologyGrid" ui-grid="vm.gridOptions" ui-grid-pagination ui-grid-pinning ui-grid-selection ui-grid-resize-columns ui-grid-move-columns></div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/nodes.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/nodes.tpl.html
deleted file mode 100755 (executable)
index 826e7dd..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-<div id="mwtnNodesGrid" ui-grid="gridOptionsNodes" ui-grid-exporter ui-grid-selection ui-grid-pinning ui-grid-resize-columns ui-grid-move-columns
- class="mwtnTopologyGrid"></div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/physicalView.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/physicalView.tpl.html
deleted file mode 100755 (executable)
index dfeabe4..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<uib-accordion close-others="false">\r
-\r
-  <div uib-accordion-group="" class="panel-primary" is-open="vm.status.graphIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-    heading="{{'MWTN_GRAPH' | translate }}">\r
-    <mwtn-topology-physical-path-graph ng-if="vm.status.graphIsOpen" />\r
-  </div>\r
-\r
-  <div uib-accordion-group="" class="panel-primary" is-open="vm.status.networkElementsIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-    heading="{{'MWTN_AIR_INTERFACES' | translate}}">\r
-    <mwtn-topology-network-elements-grid />\r
-  </div>\r
-\r
-  <div uib-accordion-group="" class="panel-primary" is-open="vm.status.LinksIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-    heading="{{'MWTN_LINKS' | translate}}">\r
-    <mwtn-topology-links-grid />\r
-  </div>\r
-\r
-</uib-accordion>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/portsGrid.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/portsGrid.tpl.html
deleted file mode 100755 (executable)
index b5d3cbc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<div class="mwtnTopologyGrid" ui-grid="vm.gridOptions" ui-grid-pagination ui-grid-pinning ui-grid-selection ui-grid-resize-columns ui-grid-move-columns></div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ptpLinksGrid.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/ptpLinksGrid.tpl.html
deleted file mode 100755 (executable)
index b5d3cbc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<div class="mwtnTopologyGrid" ui-grid="vm.gridOptions" ui-grid-pagination ui-grid-pinning ui-grid-selection ui-grid-resize-columns ui-grid-move-columns></div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteDetails.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteDetails.tpl.html
deleted file mode 100755 (executable)
index 3a06fa8..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<div class="owl">\r
-  <uib-alert type="{{status.type}}" ng-show="status.message">\r
-    <i ng-show="status.isWorking" class="fa fa-spinner fa-pulse" aria-hidden="true"></i>\r
-    <b><span>{{status.message}}</span></b>\r
-  </uib-alert>\r
-  <div ng-show="!status.message">\r
-    <p>\r
-      <span>{{'MWTN_SITE_ID' | translate}}: </span>\r
-      <b>{{vm.site.id}}</b>\r
-    </p>\r
-    <hr />\r
-    <p>\r
-      <span>{{'MWTN_SITE_NAME' | translate}}: </span>\r
-      <b>{{vm.site.name}}</b>\r
-      <br />\r
-      <span>{{'MWTN_LAT_LON' | translate}}</span>\r
-      <b>{{ vm.site.location.lat | coordinateFilter:'toDMS':'lat'}} | {{ vm.site.location.lng | coordinateFilter:'toDMS':'lon'}}</b>\r
-      <br />\r
-      <span>{{'MWTN_AMSL_GRD' | translate}}: </span>\r
-      <b> {{vm.site.amslGround | number:2 }} </b>\r
-      <span> [m]</span>\r
-      <br />\r
-      <span>{{'MWTN_TYPE' | translate}}: </span>\r
-      <b> {{vm.site.type || 'pyhsical-network-function' }} </b>\r
-      <span> </span>\r
-    </p>\r
-    <p>\r
-      <b>Site-Links ({{vm.site.siteLinks.length}}): </b>\r
-      <span style="color: #337ab7;" class="pointer glyphicon glyphicon-plus-sign" aria-hidden="true" ng-class="{'selected-site' : createNewLinkMode}"\r
-        ng-show="showNewLinkButton" ng-click="toggleCreateNewLinkMode()"></span>\r
-      <p />\r
-      <table class='table table-striped' ng-show="vm.site.siteLinks.length">\r
-        <thead>\r
-          <tr>\r
-            <th class='text-left'>Site-Link-Name</th>\r
-            <th class='text-right'>Azimuth A [°]</th>\r
-            <th class='text-right'>Azimuth Z [°]</th>\r
-            <th class='text-right'>Length [km]</th>\r
-          </tr>\r
-        </thead>\r
-        <tbody>\r
-          <tr ng-repeat='siteLink in vm.site.siteLinks'>\r
-            <td class='text-left'>\r
-              <a href='/ux/#/siteLinks/{{siteIndex}}/{{siteLink._source.id.high}}/{{siteLink._source.id.low}}' target='htSolutions'>{{siteLink.id}}</a>\r
-            </td>\r
-            <td class='text-right'>{{ siteLink.azimuthAz | number : 1 }}</td>\r
-            <td class='text-right'>{{ siteLink.azimuthZa | number : 1 }}</td>\r
-            <td class='text-right'>{{ siteLink.length  | number : 3 }}</td>\r
-          </tr>\r
-        </tbody>\r
-      </table>\r
-    <p>\r
-      <b>Network elements ({{vm.site.plannedNetworkElements.length}}): </b>\r
-      <!--\r
-      <span style="color: #337ab7;" class="pointer glyphicon glyphicon-plus-sign" aria-hidden="true" ng-class="{'selected-site' : createNewLinkMode}"\r
-        ng-show="showNewLinkButton" ng-click="toggleCreateNewLinkMode()"></span> -->\r
-      <p />\r
-      <table class='table table-striped' ng-show="vm.site.plannedNetworkElements.length">\r
-        <thead>\r
-          <tr>\r
-            <th class='text-left'>{{'MWTN_ID' | translate}}</th>\r
-            <th class='text-left'>{{'MWTN_NAME' | translate}}</th>\r
-            <th class='text-left'>{{'MWTN_TYPE' | translate}}</th>\r
-          </tr>\r
-        </thead>\r
-        <tbody>\r
-          <tr ng-repeat='ne in vm.site.plannedNetworkElements'>\r
-            <td class='text-left'>\r
-              <a href='#/pnfInventory/{{ne.id}}' target='htSolutions'>{{ne.id}}</a>\r
-            </td>\r
-            <td class='text-left'>{{ ne.name }}</td>\r
-            <td class='text-left'>{{ ne.type }}</td>\r
-          </tr>\r
-        </tbody>\r
-      </table>\r
-  </div>\r
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteGrid.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteGrid.tpl.html
deleted file mode 100755 (executable)
index 612fb92..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<!--<h1 style="color:#000">Here is the sites grid</h1>-->\r
-<div class="checkbox">\r
-    <label>\r
-        <input type="checkbox" ng-model="vm.showAllSites">\r
-        Show all sites\r
-    </label>\r
-</div>\r
-\r
-<div class="mwtnTopologyGrid" ui-grid="vm.gridOptions" ui-grid-pagination ui-grid-pinning ui-grid-selection ui-grid-resize-columns ui-grid-move-columns></div>\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteLinkGrid.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteLinkGrid.tpl.html
deleted file mode 100755 (executable)
index ba4f270..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-<div class="checkbox">\r
-  <label>\r
-        <input type="checkbox" ng-model="vm.showAllLinks">\r
-        Show all links\r
-    </label>\r
-</div>\r
-\r
-<div class="mwtnTopologyGrid" ui-grid="vm.gridOptions" ui-grid-pagination ui-grid-pinning ui-grid-selection ui-grid-resize-columns ui-grid-move-columns></div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/sitePathGrid.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/sitePathGrid.tpl.html
deleted file mode 100755 (executable)
index bc1372e..0000000
+++ /dev/null
@@ -1 +0,0 @@
-<h1 style="color:#000">Here is the site paths grid</h1>\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteView.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/siteView.tpl.html
deleted file mode 100755 (executable)
index e56a227..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-<uib-accordion close-others="false">\r
-\r
-    <div uib-accordion-group="" class="panel-primary" is-open="vm.status.siteMapIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-        heading="{{'Map (' + vm.status.loadedSitesInBoundingBox + ' of ' + vm.status.totalSitesInBoundingBox + ' sites loaded)'}}">\r
-\r
-        <mwtn-topology-map ng-if="vm.status.siteMapIsOpen" manual-map-bounds="vm.status.manualMapBounds" on-bounds-changed="vm.mapBoundsChanged(data, userOriginated)">\r
-            <mwtn-topology-map-sites sites="vm.visibleSites" selected-site="vm.status.site" api="vm.mapSitesComponentApi" />\r
-            <mwtn-topology-map-site-links site-links="vm.knownSiteLinks" selected-site-link="vm.status.siteLink" \r
-                                          api="vm.mapSiteLinksComponentApi" />\r
-        </mwtn-topology-map>\r
-    </div>\r
-\r
-    <div uib-accordion-group="" class="panel-primary" is-open="vm.status.siteGridIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-        heading="{{'Sites' | translate}}">\r
-\r
-        <mwtn-topology-site-grid visible-sites="vm.visibleSites" />\r
-    </div>\r
-\r
-    <div uib-accordion-group="" class="panel-primary" is-open="vm.status.siteLinkGridIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-        heading="{{'Site links' | translate}}">\r
-\r
-        <mwtn-topology-site-link-grid known-site-links="vm.knownSiteLinks" />\r
-    </div>\r
-    \r
-    <!-- [sko, 2017-06-23] TODO deferred\r
-    <div uib-accordion-group="" class="panel-primary" is-open="vm.status.sitePathGridIsOpen" template-url="src/app/mwtnTopology/templates/accordeonHeader.tpl.html"\r
-      heading="{{'Site paths' | translate}}">\r
-\r
-      <mwtn-topology-site-path-grid />\r
-    </div> -->\r
-</uib-accordion>\r
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/topology.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/mwtnTopology-module/src/main/resources/mwtnTopology/templates/topology.tpl.html
deleted file mode 100755 (executable)
index 6a71bbf..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-  <sigma-topology drag-nodes="true" topology-data="topologyData" trigger-resize-sigma="triggerResizeSigma" panel="panel" topology-custfunc="topologyCustfunc">
-  </sigma-toppology> 
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/mwtnTopology/pom.xml
deleted file mode 100644 (file)
index 0131f51..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <parent>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <artifactId>mwtn</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-  <relativePath>..</relativePath>
- </parent>
-
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>mwtnTopology</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>mwtnTopology-module</module>
-  <module>mwtnTopology-bundle</module>
- </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-bundle/pom.xml
deleted file mode 100644 (file)
index 87ebbd3..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>odlChat</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>odlChat-bundle</artifactId>
- <name>${prefix} ${project.artifactId}</name>
- <packaging>bundle</packaging>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>odlChat-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>odlChat-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index ad015bd..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="odlChat"/>
-        <property name="url" value="/src/app/odlChat"/>
-        <property name="directory" value="/odlChat"/>
-        <property name="requireJs" value="app/odlChat/odlChat.module"/>
-        <property name="angularJs" value="app.odlChat"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/odlChat/odlChat-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/pom.xml
deleted file mode 100644 (file)
index 730c40b..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>odlChat</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>odlChat-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/logo_chat.gif b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/logo_chat.gif
deleted file mode 100644 (file)
index deb44fd..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/logo_chat.gif and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat-custom.css
deleted file mode 100644 (file)
index 4d9f8d2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-/**
- *  Add your application related css here
- */
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.controller.js
deleted file mode 100644 (file)
index 310e05d..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(
-    [ 'app/odlChat/odlChat.module', 'app/odlChat/odlChat.services' ],
-    function(odlChatApp) {
-
-      var main = function($scope, $rootScope, $odlChat) {
-
-        $rootScope.section_logo = 'src/app/odlChat/odlChat.png';
-     
-        $scope.collection = [];
-        $scope.chat = {
-          nickname : 'anonymous',
-          message : "Hey, what's up?!"
-        };
-
-        var listenToNotifications = function(socketLocation) {
-          try {
-            var notificatinSocket = new WebSocket(socketLocation);
-
-            notificatinSocket.onmessage = function(event) {
-              // we process our received event here
-              $odlChat.getData(event, function(info, tweet) {
-                $scope.collection.push(tweet);
-                if ($scope.collection.length > 20) {
-                  $scope.collection.shift();
-                }
-                
-                $scope.chat.message = info;
-              });
-            };
-            notificatinSocket.onerror = function(error) {
-              console.log("Socket error: " + JSON.stringify(error));
-            };
-            notificatinSocket.onopen = function(event) {
-              console.log("Socket connection opened.");
-            };
-            notificatinSocket.onclose = function(event) {
-              console.log("Socket connection closed.");
-            };
-            // if there is a problem on socket creation we get
-            // exception (i.e. when socket address is incorrect)
-          } catch (e) {
-            alert("Error when creating WebSocket" + e);
-          }
-        };
-
-        $scope.send = function(chat) {
-          $odlChat.send(chat, function(info) {
-            console.log(info);
-          });
-        };
-
-        var path = "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='odlChat']";
-        $odlChat.register(path, function(socketLocation) {
-          listenToNotifications(socketLocation);
-        });
-      };
-
-      odlChatApp.register.controller('odlChatCtrl', [ '$scope', '$rootScope',
-          '$odlChat', main ]);
-
-    });
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.module.js
deleted file mode 100644 (file)
index 6bd5387..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 'app/routingConfig', 'app/core/core.services', 'common/config/env.module'], function(ng) {
-  var odlChatApp = angular.module('app.odlChat', ['app.core', 'ui.router.state','config']);
-
-  odlChatApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    odlChatApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/odlChat/odlChat.controller');
-    NavHelperProvider.addToMenu('odlChat', {
-      "link" : "#/odlChat",
-      "active" : "main.odlChat",
-      "title" : "Chat",
-      "icon" : "fa-comments", // Add navigation icon css class here
-      "page" : {
-        "title" : "Chat",
-        "description" : "odlChat"
-      }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.odlChat', {
-        url: 'odlChat',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/odlChat/odlChat.tpl.html',
-                controller: 'odlChatCtrl'
-            }
-        }
-    });
-
-  });
-
-  return odlChatApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.png
deleted file mode 100755 (executable)
index 3b79097..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.services.js
deleted file mode 100644 (file)
index 1a137f5..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/mwtnCommons/mwtnCommons.module', 'app/odlChat/odlChat.module'],function(odlChatApp) {
-
-  odlChatApp.register.factory('$odlChat', function($http, $mwtnCommons) {
-
-    var createStream = function(streamName, callback) {
-      var request = {
-        method : 'GET',
-        url : [ service.base, 'streams/stream/', streamName ].join('')
-      };
-      $http(request).then(function successCallback(response) {
-        console.log(response.headers('Location'));
-        callback(response.headers('Location'));
-      }, function errorCallback(response) {
-        console.error(JSON.stringify(response));
-        callback();
-      });
-    };
-
-    var service = {
-      base : window.location.origin + "/restconf/",
-    };
-    
-
-    service.getData = function(event, callback) {
-
-      var request = {
-        method : 'GET',
-        url : [ service.base,
-            'config/opendaylight-inventory:nodes/node/odlChat/' ].join('')
-      };
-      $http(request).then(function successCallback(response) {
-        tweet = {
-          nickname : response.data.node[0]['flow-node-inventory:manufacturer'],
-          message : response.data.node[0]['flow-node-inventory:description'],
-          time : JSON.stringify(new Date()).split('T')[1].substring(0, 5)
-        };
-        callback('', tweet);
-      }, function errorCallback(response) {
-        console.error(JSON.stringify(response));
-        callback('ERROR while sending ;(');
-      });
-
-    };
-
-    service.register = function(path, callback) {
-      var request = {
-        method : 'POST',
-        url : [ service.base,
-            'operations/sal-remote:create-data-change-event-subscription' ]
-            .join(''),
-        data : {
-          "input" : {
-            "path" : path,
-            "sal-remote-augment:datastore" : "CONFIGURATION",
-            "sal-remote-augment:scope" : "SUBTREE"
-          }
-        }
-      };
-      $http(request).then(
-          function successCallback(response) {
-            createStream(response.data.output['stream-name'], function(
-                socketLocation) {
-              callback(socketLocation);
-            });
-          }, function errorCallback(response) {
-            console.error(JSON.stringify(response));
-          });
-    };
-
-    service.send = function(chat, callback) {
-      var request = {
-        method : 'PUT',
-        url : [ service.base,
-            'config/opendaylight-inventory:nodes/node/odlChat' ].join(''),
-        data : {
-          "node" : [ {
-            "id" : "odlChat",
-            "flow-node-inventory:manufacturer" : chat.nickname,
-            "flow-node-inventory:software" : "",
-            "flow-node-inventory:serial-number" : "",
-            "flow-node-inventory:hardware" : "",
-            "flow-node-inventory:description" : chat.message
-          } ]
-        }
-      };
-      $http(request).then(function successCallback(response) {
-        callback('send successfully');
-      }, function errorCallback(response) {
-        console.error(JSON.stringify(response));
-        callback('ERROR while sending ;(');
-      });
-    };
-    return service;
-  });
-});
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/odlChat-module/src/main/resources/odlChat/odlChat.tpl.html
deleted file mode 100644 (file)
index c3d90ae..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<!-- This is the landing page of you application, Update the content as per your requirements -->
-<div class="owl container" style="width: 800px">
-
- <div class="row">
-  <div class="col-md-11">
-   <h4>Simple chat application based on (ODL) WebSockets</h4>
-  </div>
- </div>
-
- <div class="row">
-  <div class="col-md-11">
-   <hr/ >
-  </div>
- </div>
-
- <div class="row">
-  <div class="col-md-11">
-   <p>
-    <span class="white">The beauty of WebSockets within OpenDaylight.</span>
-   </p>
-   <p>
-    <span class="white">Useful links:</span>
-   <ul>
-    <li>
-     <a href="https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Restconf:Change_event_notification_subscription">
-      <span class="white">https://wiki.opendaylight.org/view/OpenDaylight_Controller:MD-SAL:Restconf:Change_event_notification_subscription</span>
-     </a>
-    </li>
-    <li>
-     <a href="https://wiki.opendaylight.org/view/OpenDaylight_DLUX:Create_application_with_archetype">
-      <span class="white">https://wiki.opendaylight.org/view/OpenDaylight_DLUX:Create_application_with_archetype</span>
-     </a>
-    </li>
-   </ul>
-   </p>
-   <p>
-    <span class="white">Code:</span>
-   <ul>
-    <li>
-     <a href="https://github.com/OpenNetworkingFoundation/CENTENNIAL/tree/master/code/ux/odlChat">
-      <span class="white">https://github.com/OpenNetworkingFoundation/CENTENNIAL/tree/master/code/ux/odlChat</span>
-     </a>
-    </li>
-   </ul>
-   </p>
-
-
-  </div>
- </div>
-
- <div class="row">
-  <div class="col-md-11">
-   <hr/ >
-  </div>
- </div>
-
- <div class="row" ng-repeat="tweet in collection">
-  <div class="col-md-2 text-right">
-   <span class="white">{{tweet.nickname}}:</span>
-  </div>
-  <div class="col-md-8">
-   <span class="white">
-    <b>{{tweet.message}}</b>
-   </span>
-  </div>
-  <div class="col-md-1">
-   <span>{{tweet.time}}</span>
-  </div>
- </div>
-
- <div class="row">
-  <div class="col-md-11">
-   <hr/ >
-  </div>
- </div>
-
- <div class="row">
-  <div class="col-md-2 text-right">
-   <input class="form-control" type="text" step="1" ng-model="chat.nickname" />
-  </div>
-  <div class="col-md-8 text-right">
-   <input class="form-control" type="text" step="1" ng-model="chat.message" />
-  </div>
-  <div class="col-md-1">
-   <button class="btn btn-primary" type="submit" ng-click="send(chat)">{{'MWTN_SEND' | translate}}</button>
-  </div>
- </div>
-
- <div class="row">
-  <div class="col-md-2 text-right">
-   <span class="white">{{'MWTN_NICKNAME' | translate}} </span>
-  </div>
-  <div class="col-md-8 text-right">
-   <span class="white">{{'MWTN_MESSAGE' | translate}} </span>
-  </div>
-  <div class="col-md-1"></div>
- </div>
-</div>
-<hr />
-<div class="owl">
- <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/odlChat/pom.xml
deleted file mode 100644 (file)
index f81b02e..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
-  <relativePath>..</relativePath>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>odlChat</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>odlChat-module</module>
-  <module>odlChat-bundle</module>
- </modules>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-bundle/pom.xml
deleted file mode 100644 (file)
index 3a409fe..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>onapAai</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>onapAai-bundle</artifactId>
- <packaging>bundle</packaging>
- <name>${prefix} ${project.artifactId}</name>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>onapAai-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>onapAai-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 1a2ab2e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="onapAai"/>
-        <property name="url" value="/src/app/onapAai"/>
-        <property name="directory" value="/onapAai"/>
-        <property name="requireJs" value="app/onapAai/onapAai.module"/>
-        <property name="angularJs" value="app.onapAai"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/onapAai/onapAai-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/pom.xml
deleted file mode 100644 (file)
index 6c2eef3..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>onapAai</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>onapAai-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/images/onapAai.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/images/onapAai.png
deleted file mode 100755 (executable)
index a372488..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/images/onapAai.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai-custom.css
deleted file mode 100644 (file)
index fc31468..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- *  Add your application related css here
- */
-.onapAaiGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.onapAaiGrid span {
-  color: #393939;
-}
-.ht-pagination span {
-  color: #393939;
-}
-.ht-pagination span.dark {
-  color: #393939;
-}
-.dark {
-  color: #393939;
-}
-
-
-
-.onapAaiGrid div.debug {
-  color: #393939;
-  background-color: white;
-}
-.onapAaiGrid div.error {
-  color: #ff0000;
-  background-color: #ffeeee;
-  font-weight: bold;
-}
-
-.onapAaiGrid div.info {
-  color: #3276b1;
-  background-color: #eeeeff;
-}
-
-.onapAaiGrid div.warning {
-  color: #ffa500;
-  background-color: #ffeedd;
-}
-
-.rotated {
-    transform: rotate(180deg);
-    -webkit-transform: rotate(180deg);
-    -ms-transform: rotate(180deg);
-    -moz-transform: rotate(180deg);
-    -o-transform: rotate(180deg);
-}
-
-h3.modal-title {
-  color: #393939;
-}
-
-.modal-body span {
-  color: #393939;
-} 
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.controller.js
deleted file mode 100644 (file)
index 6c5685e..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/onapAai/onapAai.module',
-  'app/onapAai/onapAai.services'],
-  function (onapAaiApp) {
-
-    onapAaiApp.register.controller('onapAaiCtrl', ['uiGridConstants', '$uibModal', '$scope', '$rootScope', '$window', '$timeout', '$onapAai', '$mwtnLog',
-      function (uiGridConstants, $uibModal, $scope, $rootScope, $window, $timeout, $onapAai, $mwtnLog) {
-
-        var COMPONENT = 'onapAaiCtrl';
-        $mwtnLog.info({ component: COMPONENT, message: 'onapAaiCtrl started!' });
-
-        $rootScope.section_logo = 'src/app/onapAai/images/onapAai.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-        $scope.highlightFilteredHeader = $onapAai.highlightFilteredHeader;
-
-        // Grid
-        $scope.gridOptions = JSON.parse(JSON.stringify($onapAai.gridOptions));
-        $scope.gridOptions.columnDefs = [
-          { field: 'pnf-id', type: 'string', displayName: 'ID', headerCellClass: $scope.highlightFilteredHeader, width: 170 },
-          { field: 'pnf-name', type: 'string', displayName: 'Name', headerCellClass: $scope.highlightFilteredHeader, width: 200 },
-          { field: 'equip-type', type: 'string', displayName: 'Type', headerCellClass: $scope.highlightFilteredHeader, width: 160 },
-          { field: 'equip-vendor', type: 'string', displayName: 'Vendor', headerCellClass: $scope.highlightFilteredHeader, width: 100 },
-          { field: 'equip-model', type: 'string', displayName: 'Model', headerCellClass: $scope.highlightFilteredHeader, width: 160 },
-          { field: 'ipaddress-v4-oam', type: 'string', displayName: 'If OAM', headerCellClass: $scope.highlightFilteredHeader, width: 140 },
-          { field: 'in-maint', type: 'string', displayName: 'Maintenance', headerCellClass: $scope.highlightFilteredHeader, width: 100 },
-          { field: 'interfaces', type: 'string', displayName: '#p-interfaces', headerCellClass: $scope.highlightFilteredHeader, width: 100, visible: false },
-          { field: 'resourceVersion', type: 'string', displayName: 'Resource version', headerCellClass: $scope.highlightFilteredHeader, width: 100, visible: false }
-        ];
-
-        $onapAai.getAaiPnfs().then(function(success){
-          $scope.gridOptions.data = success.data.pnf;
-          $scope.gridOptions.data.map(function(item){
-            item.interfaces = 1;
-          });
-        }, function(error) {
-          console.log('error');
-          $scope.error = error;
-        });
-
-      }]);
-
-  });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.module.js
deleted file mode 100644 (file)
index a3deb33..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var onapAaiApp = angular.module('app.onapAai', ['ui.grid', 'ui.bootstrap', 'app.core',
-      'ui.router.state', 'config', 'ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns', 'ui.grid.infiniteScroll','ui.grid.pagination' ]);
-
-  onapAaiApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    onapAaiApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/onapAai/onapAai.controller');
-    NavHelperProvider.addToMenu('onapAai', {
-     "link" : "#/onapAai/",
-     "active" : "main.onapAai",
-     "title" : "ONAP AAI",
-     "icon" : "fa fa-th",  // Add navigation icon css class here
-     "page" : {
-        "title" : "ONAP AAI",
-        "description" : "Open Network Automation Platform (ONAP) - Active and Available Inventory (AAI)"
-    }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.onapAai', {
-        url: 'onapAai/:nodeId',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/onapAai/onapAai.tpl.html',
-                controller: 'onapAaiCtrl'
-            }
-        }
-    });
-
-  });
-
-  return onapAaiApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.services.js
deleted file mode 100644 (file)
index dfbbf47..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/onapAai/onapAai.module', 'app/mwtnCommons/mwtnCommons.services'], function (onapAaiApp) {
-
-  onapAaiApp.register.factory('$onapAai', function ($q, $http, Base64, $mwtnCommons, $mwtnDatabase, $mwtnLog, Device) {
-
-    var service = {};
-
-    var functionId = "mwtn";
-    var docType = "device";
-    var from = 0;
-    var size = 9999;
-    var sort = undefined;
-    var deviceLookup = {};
-    $mwtnDatabase.getAllData(functionId, docType, from, size, sort).then(
-      function successCallback(response) {
-        response.data.hits.hits.map(function(device){
-          deviceLookup[device._id] = new Device(device._source);
-        });
-      }, function errorCallback(response) {
-        deviceLookup = {};
-      });
-
-    service.checkModules = $mwtnCommons.checkModules;
-    service.getMwtnWebSocketUrl = $mwtnCommons.getMwtnWebSocketUrl;
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.formatData = $mwtnCommons.formatData;
-    service.formatTimeStamp = $mwtnCommons.formatTimeStamp;
-    service.deleteDocType = $mwtnDatabase.deleteDocType;
-    
-
-    var transactionId = 1;
-    var getHeaders = function () {
-      return {
-        'Accept': 'application/json',
-        'Content-Type': 'application/json',
-        'X-TransactionId': transactionId++
-      }
-    };
-
-    // create or modify a pnf in aai
-    service.createPnf = function (pnfId, doc) {
-      var base = window.location.origin;
-      var getIp = function (extension) {
-        return extension.filter(function (item) {
-          return item['value-name'] === 'neIpAddress';
-        }).map(function (item) {
-          return item.value;
-        })[0];
-      }
-
-      var device = deviceLookup[pnfId];
-      if (!device) device = new Device({"id":pnfId,"name":pnfId,"mediator-ipv4":"127.0.0.1","netconf-port":"830","oam-ipv4":"127.0.0.1","site":"unknown","controller":"this","controller-site":"unknown","vendor":"unknown","type":"unknown","model":"unknown","version":"0.0"});      
-      var data = {
-        "pnf-name": pnfId,
-        "pnf-id": doc.connect.host + ':' + doc.connect.port,
-        "equip-type": device.getType(),
-        "equip-model": device.getModel(),
-        "equip-vendor": device.getVendor(),
-        "ipaddress-v4-oam": getIp(doc['core-model:network-element'].extension) | doc.connect.host,
-        "in-maint": false
-      };
-      console.info('pnf', data);
-      var request = {
-        method: 'PUT',
-        url: base + '/aai/network/pnfs/pnf/' + pnfId, // to es config
-        // withCredentials: true,
-        headers: getHeaders(),
-        data: data
-      };
-      var deferred = $q.defer();
-      $http(request).then(function successCallback(response) {
-        deferred.resolve(response);
-      }, function errorCallback(response) {
-        deferred.reject(response);
-      });
-
-      return deferred.promise;
-    };
-
-    service.deletePnf = function (pnfId) {
-      // curl -X DELETE http://localhost:8282/aai/network/pnfs/pnf/Ericsson-A1 --insecure -v -u AAI:AAI -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'X-FromAppId: SDNR' -H 'X-TransactionId: 9999'
-      var base = window.location.origin;
-      var request = {
-        method: 'DELETE',
-        url: base + '/aai/network/pnfs/pnf/' + pnfId, // to es config
-        // withCredentials: true,
-        headers: getHeaders()
-      };
-      var deferred = $q.defer();
-      $http(request).then(function successCallback(response) {
-        deferred.resolve(response);
-      }, function errorCallback(response) {
-        deferred.reject(response);
-      });
-
-      return deferred.promise;
-    };
-
-    service.getAaiPnfs = function () {
-      // curl https://10.31.1.55:8443/network/pnfs -k -v -u abc:def -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'X-FromAppId: SDNR' -H 'X-TransactionId: 9999'
-
-      var base = window.location.origin;
-      var request = {
-        method: 'GET',
-        url: base + '/aai/network/pnfs', // to es config
-        // withCredentials: true,
-        headers: getHeaders(),
-      };
-
-      var deferred = $q.defer();
-      $http(request).then(function successCallback(response) {
-        deferred.resolve(response);
-      }, function errorCallback(response) {
-        deferred.reject(response);
-      });
-
-      return deferred.promise;
-    };
-
-    return service;
-  });
-
-  // Class Device
-  onapAaiApp.register.factory('Device', function () {
-    var Device = function (data) {
-      if (!data) {
-        data = {id:new Date(), type: 'unknown', name:'unknonw', model: 'unkonwn', vendor:'unknonw', version:'unkonwn'};
-      }
-      this.data = data;
-      this.getData = function () {
-        return this.data;
-      };
-      this.getId = function () {
-        return this.getData().id;
-      };
-      this.getType = function () {
-        return this.getData().type;
-      };
-      this.getName = function () {
-        return this.getData().name;
-      };
-      this.getModel = function () {
-        return this.getData().model;
-      };
-      this.getVendor = function () {
-        return this.getData().vendor;
-      };
-      this.getVersion = function () {
-        return this.getData().version;
-      };
-    };
-    return Device;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/onapAai-module/src/main/resources/onapAai/onapAai.tpl.html
deleted file mode 100644 (file)
index c121b6d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-<ht-header help-link='sdnr/onapAai/0.4.0/README.md'></ht-header>
-<pre ng-if="error">{{ error | json }}</pre>
-
-
-<div id="onapAaiGrid" ui-grid="gridOptions" ui-grid-exporter ui-grid-selection ui-grid-pinning
-  ui-grid-resize-columns ui-grid-move-columns class="onapAaiGrid" ng-if="!error"></div>
-</div>
-
-<hr />
-<div class="owl">
-  <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapAai/pom.xml
deleted file mode 100644 (file)
index 6049029..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>onapAai</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>onapAai-module</module>
-  <module>onapAai-bundle</module>
- </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-bundle/pom.xml
deleted file mode 100644 (file)
index ca91f48..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>onapDcae</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>onapDcae-bundle</artifactId>
- <packaging>bundle</packaging>
- <name>${prefix} ${project.artifactId}</name>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>onapDcae-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>onapDcae-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 18c3ba0..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="onapDcae"/>
-        <property name="url" value="/src/app/onapDcae"/>
-        <property name="directory" value="/onapDcae"/>
-        <property name="requireJs" value="app/onapDcae/onapDcae.module"/>
-        <property name="angularJs" value="app.onapDcae"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/onapDcae/onapDcae-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/pom.xml
deleted file mode 100644 (file)
index 6391694..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>onapDcae</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>onapDcae-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/images/onap-5g-architecture.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/images/onap-5g-architecture.png
deleted file mode 100755 (executable)
index 368bdd4..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/images/onap-5g-architecture.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/images/onapDcae.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/images/onapDcae.png
deleted file mode 100755 (executable)
index a7f1dc2..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/images/onapDcae.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae-custom.css
deleted file mode 100644 (file)
index ff7de9a..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- *  Add your application related css here
- */
-.onapDcaeGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.onapDcaeGrid span {
-  color: #393939;
-}
-.ht-pagination span {
-  color: #393939;
-}
-.ht-pagination span.dark {
-  color: #393939;
-}
-.dark {
-  color: #393939;
-}
-
-
-
-.onapDcaeGrid div.debug {
-  color: #393939;
-  background-color: white;
-}
-.onapDcaeGrid div.error {
-  color: #ff0000;
-  background-color: #ffeeee;
-  font-weight: bold;
-}
-
-.onapDcaeGrid div.info {
-  color: #3276b1;
-  background-color: #eeeeff;
-}
-
-.onapDcaeGrid div.warning {
-  color: #ffa500;
-  background-color: #ffeedd;
-}
-
-.rotated {
-    transform: rotate(180deg);
-    -webkit-transform: rotate(180deg);
-    -ms-transform: rotate(180deg);
-    -moz-transform: rotate(180deg);
-    -o-transform: rotate(180deg);
-}
-
-h3.modal-title {
-  color: #393939;
-}
-
-.modal-body span {
-  color: #393939;
-} 
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.controller.js
deleted file mode 100644 (file)
index 565ce3a..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/onapDcae/onapDcae.module',
-  'app/onapDcae/onapDcae.services'],
-  function (onapDcaeApp) {
-
-    onapDcaeApp.register.controller('onapDcaeCtrl', ['uiGridConstants', '$uibModal', '$scope', '$rootScope', '$window', '$timeout', '$onapDcae', '$mwtnLog',
-      function (uiGridConstants, $uibModal, $scope, $rootScope, $window, $timeout, $onapDcae, $mwtnLog) {
-
-        var COMPONENT = 'onapDcaeCtrl';
-        $mwtnLog.info({ component: COMPONENT, message: 'onapDcaeCtrl started!' });
-
-        $rootScope.section_logo = 'src/app/onapDcae/images/onapDcae.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-      }]);
-
-  });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.module.js
deleted file mode 100644 (file)
index 579d740..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var onapDcaeApp = angular.module('app.onapDcae', ['ui.grid', 'ui.bootstrap', 'app.core',
-      'ui.router.state', 'config', 'ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns', 'ui.grid.infiniteScroll','ui.grid.pagination' ]);
-
-  onapDcaeApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    onapDcaeApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/onapDcae/onapDcae.controller');
-    NavHelperProvider.addToMenu('onapDcae', {
-     "link" : "#/onapDcae/",
-     "active" : "main.onapDcae",
-     "title" : "ONAP DCAE",
-     "icon" : "fa fa-line-chart",  // Add navigation icon css class here
-     "page" : {
-        "title" : "ONAP DCAE",
-        "description" : "Open Network Automation Platform (ONAP) - Data Collection, Analytics and Events (DCAE)"
-     }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.onapDcae', {
-        url: 'onapDcae/:nodeId',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/onapDcae/onapDcae.tpl.html',
-                controller: 'onapDcaeCtrl'
-            }
-        }
-    });
-
-  });
-
-  return onapDcaeApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.services.js
deleted file mode 100644 (file)
index ad875c6..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/onapDcae/onapDcae.module', 'app/mwtnCommons/mwtnCommons.services'], function (onapDcaeApp) {
-
-  onapDcaeApp.register.factory('$onapDcae', function ($q, $http, Base64, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-
-    var service = {};
-
-    service.checkModules = $mwtnCommons.checkModules;
-    
-    
-    return service;
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/onapDcae-module/src/main/resources/onapDcae/onapDcae.tpl.html
deleted file mode 100644 (file)
index 144bccc..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<ht-header help-link='sdnr/onapDcae/0.4.0/README.md'></ht-header>
-
-
-<h3>5G Architecture</h3>
-<img src="src/app/onapDcae/images/onap-5g-architecture.png" class="img-rounded" alt="5G Architecture" width"1200">
-
-<h1 style="margin-top: -440px; color: red; transform: rotate(-30deg);">Candidate for ONAP Beijing PoC June25</h1>
-<br/><br/><br/><br/><br/>
-
-<hr />
-<div class="owl">
-  <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapDcae/pom.xml
deleted file mode 100644 (file)
index b32c1ef..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>onapDcae</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>onapDcae-module</module>
-  <module>onapDcae-bundle</module>
- </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-bundle/pom.xml
deleted file mode 100644 (file)
index dd43c81..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>onapSo</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>onapSo-bundle</artifactId>
- <packaging>bundle</packaging>
- <name>${prefix} ${project.artifactId}</name>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>onapSo-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>onapSo-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index e44af85..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="onapSo"/>
-        <property name="url" value="/src/app/onapSo"/>
-        <property name="directory" value="/onapSo"/>
-        <property name="requireJs" value="app/onapSo/onapSo.module"/>
-        <property name="angularJs" value="app.onapSo"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/onapSo/onapSo-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/pom.xml
deleted file mode 100644 (file)
index f5d04d8..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>onapSo</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>onapSo-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/images/onap-end-to-end-slicing.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/images/onap-end-to-end-slicing.png
deleted file mode 100755 (executable)
index c798dc1..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/images/onap-end-to-end-slicing.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/images/onapSo.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/images/onapSo.png
deleted file mode 100755 (executable)
index f2a595f..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/images/onapSo.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo-custom.css
deleted file mode 100644 (file)
index f2aaeb7..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- *  Add your application related css here
- */
-
- .app-onapSo * {
-  box-sizing: border-box;
-}
-
-.app-onapSo .col {
-height: 70px;
-width: 12.5%;
-float: left;
-padding: 15px;
-}
-
-.app-onapSo .row::after {
-  content: "";
-  clear: both;
-  display: table;
-}
-
-
-
-.onapSoGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.onapSoGrid span {
-  color: #393939;
-}
-.ht-pagination span {
-  color: #393939;
-}
-.ht-pagination span.dark {
-  color: #393939;
-}
-.dark {
-  color: #393939;
-}
-
-
-
-.onapSoGrid div.debug {
-  color: #393939;
-  background-color: white;
-}
-.onapSoGrid div.error {
-  color: #ff0000;
-  background-color: #ffeeee;
-  font-weight: bold;
-}
-
-.onapSoGrid div.info {
-  color: #3276b1;
-  background-color: #eeeeff;
-}
-
-.onapSoGrid div.warning {
-  color: #ffa500;
-  background-color: #ffeedd;
-}
-
-.rotated {
-    transform: rotate(180deg);
-    -webkit-transform: rotate(180deg);
-    -ms-transform: rotate(180deg);
-    -moz-transform: rotate(180deg);
-    -o-transform: rotate(180deg);
-}
-
-h3.modal-title {
-  color: #393939;
-}
-
-.modal-body span {
-  color: #393939;
-} 
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.controller.js
deleted file mode 100644 (file)
index cb07fc7..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/onapSo/onapSo.module',
-  'app/onapSo/onapSo.services'],
-  function (onapSoApp) {
-
-    onapSoApp.register.controller('onapSoCtrl', ['uiGridConstants', '$uibModal', '$scope', '$rootScope', '$window', '$timeout', '$onapSo', '$mwtnLog',
-      function (uiGridConstants, $uibModal, $scope, $rootScope, $window, $timeout, $onapSo, $mwtnLog) {
-
-        var COMPONENT = 'onapSoCtrl';
-        $mwtnLog.info({ component: COMPONENT, message: 'onapSoCtrl started!' });
-
-        $rootScope.section_logo = 'src/app/onapSo/images/onapSo.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-        $scope.highlightFilteredHeader = $onapSo.highlightFilteredHeader;
-
-        $scope.pnf = {
-          pnfName: { id: 'pnfName', labelId: 'PNF_NAME', value: 'New-PNF' },
-          pnfId: { id: 'pnfId', labelId: 'PNF_IDENTIFIER', value: 'New-PNF network unique identifier' },
-          equipType: { id: 'equipType', labelId: 'PNF_EQUIPMENT_TYPE', value: 'Fancy equipment type' },
-          equipModel: { id: 'equipModel', labelId: 'PNF_EQUIPMENT_MODEL', value: 'Best in class' },
-          equipVendor: { id: 'equipVendor', labelId: 'PNF_EQUIPMENT_VENDOR', value: 'ONAP SDN-R Community' },
-          ipaddressV4Oam: { id: 'ipaddressV4Oam', labelId: 'PNF_IPv4ADDRESS', value: '10.10.10.10' },
-          inMaintenance: { id: 'inMaintenance', labelId: 'PNF_MAINTENANCE_MODE', value: false },
-          resourceVersion: { id: 'resourceVersion', labelId: 'PNF_RESOURCE_VERSION', value: '' }
-        }
-
-        $scope.createPnfInAai = function () {
-          
-          var data = {
-            "pnf-name": $scope.pnf.pnfName.value,
-            "pnf-id": $scope.pnf.pnfId.value,
-            "equip-type": $scope.pnf.equipType.value,
-            "equip-model": $scope.pnf.equipModel.value,
-            "equip-vendor": $scope.pnf.equipVendor.value,
-            "ipaddress-v4-oam": $scope.pnf.ipaddressV4Oam.value,
-            "in-maint": $scope.pnf.inMaintenance.value
-          }
-
-          $onapSo.createPnf(data).then(function (response) {
-            console.info('successfully created: ', data['pnf-name']);
-            $onapSo.getPnf(data).then(function (success) {
-              // console.info('success', JSON.stringify(success.data));
-              $scope.pnf.resourceVersion.value = success.data['resource-version'];
-            }, function (error) {
-              console.log('error1', JSON.stringify(error.data));
-              $scope.error = error;
-            });
-            }, function (error) {
-            console.log('error2', JSON.stringify(error.data));
-            $scope.error = error;
-          });
-        }
-
-        $scope.deletePnfInAai = function () {
-          var data = {
-            "pnf-name": $scope.pnf.pnfName.value,
-          }          
-          $onapSo.getPnf(data).then(function (success) {
-              console.info('success', JSON.stringify(success.data));
-              $scope.pnf.resourceVersion.value = success.data['resource-version'];
-            data['resource-version'] = success.data['resource-version'];
-            $onapSo.deletePnf(data).then(function (success) {
-              console.info('success', JSON.stringify(success));
-              $scope.pnf.resourceVersion.value = success.data['resource-version'];
-            }, function (error) {
-              console.log('error', JSON.stringify(error.data));
-              $scope.error = error;
-            });
-            }, function (error) {
-            console.log('error', JSON.stringify(error.data));
-            $scope.error = error;
-          });
-        }
-
-      }]);
-
-    });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.module.js
deleted file mode 100644 (file)
index b2bfec4..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var onapSoApp = angular.module('app.onapSo', ['ui.grid', 'ui.bootstrap', 'app.core',
-      'ui.router.state', 'config', 'ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns', 'ui.grid.infiniteScroll','ui.grid.pagination' ]);
-
-  onapSoApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    onapSoApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/onapSo/onapSo.controller');
-    NavHelperProvider.addToMenu('onapSo', {
-     "link" : "#/onapSo/",
-     "active" : "main.onapSo",
-     "title" : "ONAP SO",
-     "icon" : "fa fa-music",  // Add navigation icon css class here
-     "page" : {
-        "title" : "ONAP SO",
-        "description" : "Open Network Automation Platform (ONAP) - Master Service Orchestrator (MSO)"
-    }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.onapSo', {
-        url: 'onapSo/:nodeId',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/onapSo/onapSo.tpl.html',
-                controller: 'onapSoCtrl'
-            }
-        }
-    });
-
-  });
-
-  return onapSoApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.services.js
deleted file mode 100644 (file)
index 3e14e7c..0000000
+++ /dev/null
@@ -1,162 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/onapSo/onapSo.module', 'app/mwtnCommons/mwtnCommons.services'], function (onapSoApp) {
-
-  onapSoApp.register.factory('$onapSo', function ($q, $http, Base64, $mwtnCommons, $mwtnDatabase, $mwtnLog, Device) {
-
-    var service = {};
-
-    var functionId = "mwtn";
-    var docType = "device";
-    var from = 0;
-    var size = 9999;
-    var sort = undefined;
-    var deviceLookup = {};
-    $mwtnDatabase.getAllData(functionId, docType, from, size, sort).then(
-      function successCallback(response) {
-        response.data.hits.hits.map(function(device){
-          deviceLookup[device._id] = new Device(device._source);
-        });
-      }, function errorCallback(response) {
-        deviceLookup = {};
-      });
-
-    service.checkModules = $mwtnCommons.checkModules;
-    service.getMwtnWebSocketUrl = $mwtnCommons.getMwtnWebSocketUrl;
-    service.gridOptions = $mwtnCommons.gridOptions;
-    service.formatData = $mwtnCommons.formatData;
-    service.formatTimeStamp = $mwtnCommons.formatTimeStamp;
-    service.deleteDocType = $mwtnDatabase.deleteDocType;
-    
-
-    var transactionId = 1;
-    var getHeaders = function () {
-      return {
-        'Accept': 'application/json',
-        'Content-Type': 'application/json',
-        'X-TransactionId': transactionId++
-      }
-    };
-
-    // create or modify a pnf in aai
-    service.createPnf = function (pnf) {
-      var base = window.location.origin;
-      var request = {
-        method: 'PUT',
-        url: base + '/aai/network/pnfs/pnf/' + pnf['pnf-name'],
-        // withCredentials: true,
-        headers: getHeaders(),
-        data: pnf
-      };
-      var deferred = $q.defer();
-      $http(request).then(function successCallback(response) {
-        deferred.resolve(response);
-      }, function errorCallback(response) {
-        deferred.reject(response);
-      });
-
-      return deferred.promise;
-    };
-
-    service.deletePnf = function (pnf) {
-      // curl -X DELETE http://localhost:8282/aai/network/pnfs/pnf/Ericsson-A1 --insecure -v -u AAI:AAI -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'X-FromAppId: SDNR' -H 'X-TransactionId: 9999'
-      var base = window.location.origin;
-      var request = {
-        method: 'DELETE',
-        url: base + '/aai/network/pnfs/pnf/' + pnf['pnf-name'] + '/?resource-version=' + pnf['resource-version'], 
-        // withCredentials: true,
-        headers: getHeaders()
-      };
-      var deferred = $q.defer();
-      $http(request).then(function successCallback(response) {
-        deferred.resolve(response);
-      }, function errorCallback(response) {
-        deferred.reject(response);
-      });
-
-      return deferred.promise;
-    };
-
-    service.getPnf = function (pnf) {
-      
-      console.log('get', JSON.stringify(pnf));
-      var base = window.location.origin;
-      var request = {
-        method: 'GET',
-        url: base + '/aai/network/pnfs/pnf/' + pnf['pnf-name'],
-        // withCredentials: true,
-        headers: getHeaders()
-      };
-      var deferred = $q.defer();
-      $http(request).then(function successCallback(response) {
-        deferred.resolve(response);
-      }, function errorCallback(response) {
-        deferred.reject(response);
-      });
-
-      return deferred.promise;
-    };
-
-    service.getAaiPnfs = function () {
-      // curl https://10.31.1.55:8443/network/pnfs -k -v -u abc:def -H 'Content-Type: application/json' -H 'Accept: application/json' -H 'X-FromAppId: SDNR' -H 'X-TransactionId: 9999'
-
-      var base = window.location.origin;
-      var request = {
-        method: 'GET',
-        url: base + '/aai/network/pnfs', // to es config
-        // withCredentials: true,
-        headers: getHeaders(),
-      };
-
-      var deferred = $q.defer();
-      $http(request).then(function successCallback(response) {
-        deferred.resolve(response);
-      }, function errorCallback(response) {
-        deferred.reject(response);
-      });
-
-      return deferred.promise;
-    };
-
-    return service;
-  });
-
-  // Class Device
-  onapSoApp.register.factory('Device', function () {
-    var Device = function (data) {
-      if (!data) {
-        data = {id:new Date(), type: 'unknown', name:'unknonw', model: 'unkonwn', vendor:'unknonw', version:'unkonwn'};
-      }
-      this.data = data;
-      this.getData = function () {
-        return this.data;
-      };
-      this.getId = function () {
-        return this.getData().id;
-      };
-      this.getType = function () {
-        return this.getData().type;
-      };
-      this.getName = function () {
-        return this.getData().name;
-      };
-      this.getModel = function () {
-        return this.getData().model;
-      };
-      this.getVendor = function () {
-        return this.getData().vendor;
-      };
-      this.getVersion = function () {
-        return this.getData().version;
-      };
-    };
-    return Device;
-  });
-
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/onapSo-module/src/main/resources/onapSo/onapSo.tpl.html
deleted file mode 100644 (file)
index 777e271..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-<ht-header help-link='sdnr/onapSo/0.4.0/README.md'></ht-header>
-
-<!--
-"pnf-name": "@pnfId@",
-"pnf-id": "@pnfId@",
-"equip-type": "@type@",
-"equip-model": "@model@",
-"equip-vendor": "@vendor@",
-"ipaddress-v4-oam": "@oamIp@",
-"in-maint": true,
--->
-
-<div class="app-onapSo container owl">
-
-  <div class="row">
-
-    <div class="col-md-12">
-      <h3>Design Phase</h3>
-      <h4>Create PNF via SO in A&amp;AI</h4>
-    </div>
-
-  </div>
-  <div class="row">
-
-    <div class="col-md-3 form-group">
-      <label for="{{ pnf.pnfName.id }}">{{ pnf.pnfName.labelId | translate }}</label>
-      <br/>
-      <input type="text" class="form-control" id="{{ pnf.pnfName.id }}" ng-model="pnf.pnfName.value">
-    </div>
-
-    <div class="col-md-3 form-group">
-      <label for="{{ pnf.pnfId.id }}">{{ pnf.pnfId.labelId | translate }}</label>
-      <br/>
-      <input type="text" class="form-control" id="{{ pnf.pnfId.id }}" ng-model="pnf.pnfId.value">
-    </div>
-
-    <div class="col-md-3 form-group">
-      <label for="{{ pnf.equipType.id }}">{{ pnf.equipType.labelId | translate }}</label>
-      <br/>
-      <input type="text" class="form-control" id="{{ pnf.equipType.id }}" ng-model="pnf.equipType.value">
-    </div>
-
-    <div class="col-md-3 form-group">
-      <label for="{{ pnf.equipModel.id }}">{{ pnf.equipModel.labelId | translate }}</label>
-      <br/>
-      <input type="text" class="form-control" id="{{ pnf.equipModel.id }}" ng-model="pnf.equipModel.value">
-    </div>
-
-    <div class="col-md-3 form-group">
-      <label for="{{ pnf.equipVendor.id }}">{{ pnf.equipVendor.labelId | translate }}</label>
-      <br/>
-      <input type="text" class="form-control" id="{{ pnf.equipVendor.id }}" ng-model="pnf.equipVendor.value">
-    </div>
-
-    <div class="col-md-3 form-group">
-      <label for="{{ pnf.ipaddressV4Oam.id }}">{{ pnf.ipaddressV4Oam.labelId | translate }}</label>
-      <br/>
-      <input type="text" class="form-control" id="{{ pnf.ipaddressV4Oam.id }}" ng-model="pnf.ipaddressV4Oam.value">
-    </div>
-
-    <div class="col-md-3 form-check">
-      <input type="checkbox" class="form-check-input" id="{{ pnf.inMaintenance.id }}" ng-model="pnf.inMaintenance.value">
-      <label class="form-check-label" for="{{ pnf.inMaintenance.id }}">
-        <span>{{ pnf.inMaintenance.labelId | translate }}</span>
-      </label>
-    </div>
-
-    <div class="col-md-3 form-group">
-      <label for="{{ pnf.resourceVersion.id }}">{{ pnf.resourceVersion.labelId | translate }}</label>
-      <br/>
-      <input type="text" class="form-control" id="{{ pnf.resourceVersion.id }}" ng-model="pnf.resourceVersion.value">
-    </div>
-
-  </div>
-
-  <div class="row">
-
-    <div class="col-md-12">
-      <button type="button" class="btn btn-primary" ng-click="createPnfInAai()">
-        <i class="fa fa-plus" aria-hidden="true"></i>
-        <span>{{'PNF_CREATE_IN_AAI' | translate}}</span>
-      </button>
-    </div>
-
-  </div>
-  <!-- api gateway must be enhanced to support query
-      <div class="row">
-
-    <div class="col-md-12">
-      <button type="button" class="btn btn-danger" ng-click="deletePnfInAai()">
-        <i class="fa fa-minus" aria-hidden="true"></i>
-        <span>{{'PNF_DELETE_IN_AAI' | translate}}</span>
-      </button>
-    </div>
-
-  </div>-->
-
-</div>
-
-<hr />
-<div class="owl">
-  <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/onapSo/pom.xml
deleted file mode 100644 (file)
index 6dc13ae..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>onapSo</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>onapSo-module</module>
-  <module>onapSo-bundle</module>
- </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-bundle/pom.xml
deleted file mode 100644 (file)
index 25624e3..0000000
+++ /dev/null
@@ -1,115 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>otnBrowser</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <artifactId>otnBrowser-bundle</artifactId>
- <packaging>bundle</packaging>
- <name>${prefix} ${project.artifactId}</name>
- <dependencies>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.core</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.osgi</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${osgi.core.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.apache.felix</groupId>
-   <artifactId>org.osgi.compendium</artifactId>
-   <version>${apache.felix.compendium}</version>
-  </dependency>
-  <dependency>
-   <groupId>org.opendaylight.dlux</groupId>
-   <artifactId>loader</artifactId>
-   <version>${dlux.loader.version}</version>
-  </dependency>
-  <dependency>
-   <groupId>com.highstreet.technologies.odl.dlux</groupId>
-   <artifactId>otnBrowser-module</artifactId>
-   <version>0.5.1-SNAPSHOT</version>
-  </dependency>
- </dependencies>
- <build>
-  <resources>
-   <resource>
-    <directory>target/generated-resources</directory>
-   </resource>
-   <resource>
-    <directory>src/main/resources</directory>
-   </resource>
-  </resources>
-  <plugins>
-   <plugin>
-    <groupId>org.apache.maven.plugins</groupId>
-    <artifactId>maven-dependency-plugin</artifactId>
-    <version>2.6</version>
-    <executions>
-     <!--loader Resources -->
-     <execution>
-      <id>unpack-loader-resources</id>
-      <goals>
-       <goal>unpack-dependencies</goal>
-      </goals>
-      <phase>generate-resources</phase>
-      <configuration>
-       <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-       <groupId>com.highstreet.technologies.odl.dlux</groupId>
-       <includeArtifactIds>otnBrowser-module</includeArtifactIds>
-       <excludes>META-INF\/**</excludes>
-       <excludeTransitive>true</excludeTransitive>
-       <ignorePermissions>false</ignorePermissions>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin>
-   <plugin>
-    <groupId>org.apache.felix</groupId>
-    <artifactId>maven-bundle-plugin</artifactId>
-    <extensions>true</extensions>
-    <configuration>
-     <instructions>
-      <Import-Package>org.osgi.service.http,
-       org.osgi.framework;version="1.0.0",
-       org.opendaylight.dlux.loader
-      </Import-Package>
-      <Export-Package></Export-Package>
-     </instructions>
-    </configuration>
-   </plugin>
-   <!-- <plugin>
-    <artifactId>maven-resources-plugin</artifactId>
-    <version>3.0.1</version>
-    <executions>
-     <execution>
-      <id>copy-resources</id>
-      <!- - here the phase you need - ->
-      <phase>package</phase>
-      <goals>
-       <goal>copy-resources</goal>
-      </goals>
-      <configuration>
-       <outputDirectory>../../deploy</outputDirectory>
-       <resources>
-        <resource>
-         <directory>target</directory>
-         <includes>
-          <include>${project.artifactId}-${project.version}.jar</include>
-         </includes>
-         <filtering>true</filtering>
-        </resource>
-       </resources>
-      </configuration>
-     </execution>
-    </executions>
-   </plugin> -->
-  </plugins>
- </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 745b231..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="otnBrowser"/>
-        <property name="url" value="/src/app/otnBrowser"/>
-        <property name="directory" value="/otnBrowser"/>
-        <property name="requireJs" value="app/otnBrowser/otnBrowser.module"/>
-        <property name="angularJs" value="app.otnBrowser"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/otnBrowser/otnBrowser-custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/pom.xml
deleted file mode 100644 (file)
index 78e9aff..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>otnBrowser</artifactId>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <version>0.5.1-SNAPSHOT</version>
-    </parent>
-    <artifactId>otnBrowser-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <packaging>jar</packaging>
-</project>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/images/otnBrowser.png b/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/images/otnBrowser.png
deleted file mode 100755 (executable)
index f753898..0000000
Binary files a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/images/otnBrowser.png and /dev/null differ
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser-custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser-custom.css
deleted file mode 100644 (file)
index e2123e9..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- *  Add your application related css here
- */
-.otnBrowserGrid {
-  height: 600px;
-  background-color: white;
-}
-
-.otnBrowserGrid span {
-  color: #393939;
-}
-.ht-pagination span {
-  color: #393939;
-}
-.ht-pagination span.dark {
-  color: #393939;
-}
-.dark {
-  color: #393939;
-}
-
-
-
-.otnBrowserGrid div.debug {
-  color: #393939;
-  background-color: white;
-}
-.otnBrowserGrid div.error {
-  color: #ff0000;
-  background-color: #ffeeee;
-  font-weight: bold;
-}
-
-.otnBrowserGrid div.info {
-  color: #3276b1;
-  background-color: #eeeeff;
-}
-
-.otnBrowserGrid div.warning {
-  color: #ffa500;
-  background-color: #ffeedd;
-}
-
-.rotated {
-    transform: rotate(180deg);
-    -webkit-transform: rotate(180deg);
-    -ms-transform: rotate(180deg);
-    -moz-transform: rotate(180deg);
-    -o-transform: rotate(180deg);
-}
-
-h3.modal-title {
-  color: #393939;
-}
-
-.modal-body span {
-  color: #393939;
-} 
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.controller.js
deleted file mode 100644 (file)
index 8dc0fdb..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/otnBrowser/otnBrowser.module',
-  'app/otnBrowser/otnBrowser.services'],
-  function (otnBrowserApp) {
-
-    otnBrowserApp.register.controller('otnBrowserCtrl', ['uiGridConstants', '$uibModal', '$scope', '$rootScope', '$window', '$timeout', '$otnBrowser', '$mwtnLog',
-      function (uiGridConstants, $uibModal, $scope, $rootScope, $window, $timeout, $otnBrowser, $mwtnLog) {
-
-        var COMPONENT = 'otnBrowserCtrl';
-        $mwtnLog.info({ component: COMPONENT, message: 'otnBrowserCtrl started!' });
-
-        $rootScope.section_logo = 'src/app/otnBrowser/images/otnBrowser.png'; // Add your topbar logo location here such as 'assets/images/logo_topology.gif'
-
-        $scope.highlightFilteredHeader = $otnBrowser.highlightFilteredHeader;
-
-      }]);
-
-  });
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.module.js
deleted file mode 100644 (file)
index 7dc6802..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2016 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['angularAMD', 
-        'app/routingConfig', 
-        'app/core/core.services', 
-        'common/config/env.module',
-        'app/mwtnCommons/mwtnCommons.module'], function(ng) {
-  var otnBrowserApp = angular.module('app.otnBrowser', ['ui.grid', 'ui.bootstrap', 'app.core',
-      'ui.router.state', 'config', 'ui.grid.exporter',
-      'ui.grid.moveColumns', 'ui.grid.pinning', 'ui.grid.selection',
-      'ui.grid.resizeColumns', 'ui.grid.infiniteScroll','ui.grid.pagination' ]);
-
-  otnBrowserApp.config(function($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $translateProvider) {
-    otnBrowserApp.register = {
-      controller : $controllerProvider.register,
-      directive : $compileProvider.directive,
-      factory : $provide.factory,
-      service : $provide.service
-    };
-
-
-    NavHelperProvider.addControllerUrl('app/otnBrowser/otnBrowser.controller');
-    NavHelperProvider.addToMenu('otnBrowser', {
-     "link" : "#/otnBrowser/",
-     "active" : "main.otnBrowser",
-     "title" : "OTN Config",
-     "icon" : "fa fa-cogs",  // Add navigation icon css class here
-     "page" : {
-        "title" : "OTN Config",
-        "description" : "Optical Transport Network (OTN) - Configuration"
-    }
-    });
-
-    var access = routingConfig.accessLevels;
-
-    $stateProvider.state('main.otnBrowser', {
-        url: 'otnBrowser/:nodeId',
-        access: access.admin,
-        views : {
-            'content' : {
-                templateUrl: 'src/app/otnBrowser/otnBrowser.tpl.html',
-                controller: 'otnBrowserCtrl'
-            }
-        }
-    });
-
-  });
-
-  return otnBrowserApp;
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.services.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.services.js
deleted file mode 100644 (file)
index 64b8772..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (c) 2017 highstreet technologies GmbH and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-define(['app/otnBrowser/otnBrowser.module', 'app/mwtnCommons/mwtnCommons.services'], function (otnBrowserApp) {
-
-  otnBrowserApp.register.factory('$otnBrowser', function ($q, $http, Base64, $mwtnCommons, $mwtnDatabase, $mwtnLog) {
-
-    var service = {};
-
-    service.checkModules = $mwtnCommons.checkModules;
-    
-
-    return service;
-  });
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/otnBrowser-module/src/main/resources/otnBrowser/otnBrowser.tpl.html
deleted file mode 100644 (file)
index c5d5544..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-<ht-header help-link='sdnr/otnBrowser/0.4.0/README.md'></ht-header>
-
-<h1 style="color: red; transform: rotate(-30deg);">Under Construction</h1>
-<br/><br/><br/><br/><br/>
-
-<hr />
-<div class="owl">
-  <span class="white">ONAP SDN-R | ONF Wireless for @distversion@ - Build: @buildtime@</span>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/otnBrowser/pom.xml
deleted file mode 100644 (file)
index c363ee5..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
-  <artifactId>mwtn</artifactId>
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <version>0.5.1-SNAPSHOT</version>
- </parent>
- <packaging>pom</packaging>
- <groupId>com.highstreet.technologies.odl.dlux</groupId>
- <artifactId>otnBrowser</artifactId>
- <version>0.5.1-SNAPSHOT</version>
- <name>${prefix} ${project.artifactId}</name>
-
- <prerequisites>
-  <maven>3.0</maven>
- </prerequisites>
-
- <modules>
-  <module>otnBrowser-module</module>
-  <module>otnBrowser-bundle</module>
- </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/pom.xml
deleted file mode 100644 (file)
index 1aa61d8..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.opendaylight.odlparent</groupId>
-    <artifactId>odlparent</artifactId>
-    <version>1.8.1-Carbon</version>
-    <relativePath />
-  </parent>
-
-  <groupId>com.highstreet.technologies.odl.dlux</groupId>
-  <artifactId>mwtn</artifactId>
-  <version>0.5.1-SNAPSHOT</version>
-  <name>ONF :: Wireless :: ${project.artifactId}</name>
-  <packaging>pom</packaging>
-
-  <prerequisites>
-    <maven>3.3.3</maven>
-  </prerequisites>
-
-  <properties>
-    <prefix>ONF :: Wireless :: </prefix>
-
-    <apache.felix.compendium>1.4.0</apache.felix.compendium>
-    <decanter.version>1.1.0</decanter.version>
-    <elasticsearch.version>2.2.0</elasticsearch.version>
-    <osgi.core.version>5.0.0</osgi.core.version>
-
-    <dlux.version>0.5.1-Carbon</dlux.version>
-    <mdsal.version>1.5.1-Carbon</mdsal.version>
-    <mdsal.model.version>0.10.1-Carbon</mdsal.model.version>
-    <restconf.version>1.5.1-Carbon</restconf.version>
-    <yangtools.version>1.1.1-Carbon</yangtools.version>
-    <openflow.plugin.version>0.4.1-Carbon</openflow.plugin.version>
-    <netconf.version>1.2.1-Carbon</netconf.version>
-    <l2switch.version>0.5.1-Carbon</l2switch.version>
-    <dlux.loader.version>0.5.1-Carbon</dlux.loader.version>
-
-    <configfile.directory>etc/opendaylight/karaf</configfile.directory>
-
-    <maven.build.timestamp.format>yyyy-MM-dd HH:mm</maven.build.timestamp.format>
-    <buildtime>${maven.build.timestamp} UTC</buildtime>
-    <distversion>OpenDaylight Carbon-SR1</distversion>
-
-  </properties>
-
-  <modules>
-    <module>mwtnCommons</module>
-    <module>mwtnConnect</module>
-    <module>onapAai</module>
-    <module>onapDcae</module>
-    <module>onapSo</module>
-
-    <!-- <module>ethService</module>
-    <module>otnBrowser</module> -->
-
-    <module>mwtnFault</module>
-    <module>mwtnBrowser</module>
-    <module>mwtnPerformanceCurrent</module>
-    <module>mwtnPerformanceHistory</module>
-    <module>mwtnPerformanceLink</module>
-    <module>security</module>
-
-    <module>mwtnInventory</module>
-    <!-- <module>emergency</module> -->
-    
-    <module>mwtnTopology</module>
-
-    <module>mwtnTdm</module>
-
-    <!-- sko not updated to core-model 1.2
-    <module>mwtnCompare</module>
-    <module>mwtnSpectrum</module>
-    <module>mwtnClosedLoop</module> -->
-
-    <module>mwtnMediator</module>
-    <module>mwtnEvents</module>
-    <module>mwtnTest</module>
-    <module>mwtnLog</module>
-    
-    <module>odlChat</module>
-
-    <module>help</module>
-    <module>features</module>
-
-  </modules>
-
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-deploy-plugin</artifactId>
-        <configuration>
-          <skip>false</skip>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-install-plugin</artifactId>
-        <configuration>
-          <skip>false</skip>
-        </configuration>
-      </plugin>
-            <plugin>
-                <groupId>com.google.code.maven-replacer-plugin</groupId>
-                <artifactId>replacer</artifactId>
-                <version>1.5.3</version>
-                <executions>
-                    <execution>
-                        <phase>prepare-package</phase>
-                        <goals>
-                            <goal>replace</goal>
-                        </goals>
-                    </execution>
-                </executions>
-                <configuration>
-                    <basedir>${project.basedir}/target/classes</basedir>
-                    <includes>
-                        <include>**/*.html</include>
-                        <include>**/*.js</include>
-                        <include>**/*.css</include>
-                    </includes>
-                    <replacements>
-                        <replacement>
-                            <token>@distversion@</token>
-                            <value>${distversion}</value>
-                        </replacement>
-                        <replacement>
-                            <token>@buildtime@</token>
-                            <value>${buildtime}</value>
-                        </replacement>
-                    </replacements>
-                </configuration>
-            </plugin>
-    </plugins>
-  </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/pom.xml
deleted file mode 100644 (file)
index 8973079..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-
-    <parent>
-        <groupId>com.highstreet.technologies.odl.dlux</groupId>
-        <artifactId>mwtn</artifactId>
-        <version>0.5.1-SNAPSHOT</version>
-        <relativePath>../</relativePath>
-    </parent>
-
-    <groupId>org.onap.sdnc.dluxapps</groupId>
-    <artifactId>security</artifactId>
-    <!-- <name> formatting is used by autorelease to parse and notify projects on
-       build failure. Please do not modify this unless you have a good reason. -->
-    <name>${prefix} ${project.artifactId}</name>
-    <version>0.5.1</version>
-    <packaging>pom</packaging>
-
-    <prerequisites>
-        <maven>3.0</maven>
-    </prerequisites>
-
-  <modules>
-    <module>security-module</module>
-    <module>security-bundle</module>
-  </modules>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-bundle/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-bundle/pom.xml
deleted file mode 100644 (file)
index 34358bb..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>org.onap.sdnc.dluxapps</groupId>
-        <artifactId>security</artifactId>
-        <version>0.5.1</version>
-    </parent>
-
-    <groupId>org.onap.sdnc.dluxapps</groupId>
-    <artifactId>security-bundle</artifactId>
-    <packaging>bundle</packaging>
-    <!-- <name> formatting is used by autorelease to parse and notify projects on
-         build failure. Please do not modify this unless you have a good reason. -->
-    <name>${prefix} ${project.artifactId}</name>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.opendaylight.dlux</groupId>
-            <artifactId>loader</artifactId>
-            <version>0.5.1-Carbon</version>
-        </dependency>
-        <dependency>
-            <groupId>org.onap.sdnc.dluxapps</groupId>
-            <artifactId>security-module</artifactId>
-            <version>0.5.1</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
-    <build>
-        <resources>
-            <resource>
-                <directory>target/generated-resources</directory>
-            </resource>
-            <resource>
-                <directory>src/main/resources</directory>
-            </resource>
-        </resources>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-dependency-plugin</artifactId>
-                <executions>
-                    <!--loader Resources-->
-                    <execution>
-                        <id>unpack-loader-resources</id>
-                        <goals>
-                            <goal>unpack-dependencies</goal>
-                        </goals>
-                        <phase>generate-resources</phase>
-                        <configuration>
-                            <outputDirectory>${project.build.directory}/generated-resources</outputDirectory>
-                            <groupId>org.onap.sdnc.dluxapps</groupId>
-                            <includeArtifactIds>security-module</includeArtifactIds>
-                            <!-- <includes>security/src\/**</includes> -->
-                            <excludes>META-INF\/**</excludes>
-                            <excludeTransitive>true</excludeTransitive>
-                            <ignorePermissions>false</ignorePermissions>
-                        </configuration>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.felix</groupId>
-                <artifactId>maven-bundle-plugin</artifactId>
-                <extensions>true</extensions>
-                <configuration>
-                    <instructions>
-                        <Import-Package>org.osgi.service.http,
-                            org.osgi.framework;version="1.0.0",
-                            org.opendaylight.dlux.loader
-                        </Import-Package>
-                        <Export-Package></Export-Package>
-                    </instructions>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-</project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-bundle/src/main/resources/OSGI-INF/blueprint/blueprint.xml
deleted file mode 100644 (file)
index 65ef78a..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
-    <reference id="httpService" availability="mandatory" activation="eager" interface="org.osgi.service.http.HttpService"/>
-    <reference id="loader" availability="mandatory" activation="eager" interface="org.opendaylight.dlux.loader.DluxModuleLoader"/>
-
-    <bean id="bundle" init-method="initialize" destroy-method="clean" class="org.opendaylight.dlux.loader.DluxModule">
-        <property name="httpService" ref="httpService"/>
-        <property name="loader" ref="loader"/>
-        <property name="moduleName" value="security"/>
-        <property name="url" value="/src/app/security"/>
-        <property name="directory" value="/security/src"/>
-        <property name="requireJs" value="app/security/security.module"/>
-        <property name="angularJs" value="app.security"/>
-        <property name="cssDependencies">
-            <list>
-                <value>src/app/security/security.custom.css</value>
-            </list>
-        </property>
-    </bean>
-</blueprint>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/pom.xml b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/pom.xml
deleted file mode 100644 (file)
index 95ae27b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project
-    xmlns="http://maven.apache.org/POM/4.0.0"
-    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <artifactId>security</artifactId>
-        <groupId>org.onap.sdnc.dluxapps</groupId>
-        <version>0.5.1</version>
-        <relativePath>../</relativePath>
-    </parent>
-    <groupId>org.onap.sdnc.dluxapps</groupId>
-    <artifactId>security-module</artifactId>
-    <name>${prefix} ${project.artifactId}</name>
-    <version>0.5.1</version>
-    <packaging>jar</packaging>
-
- </project>
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/build.config.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/build.config.js
deleted file mode 100644 (file)
index c8396a3..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * This file/module contains all configuration for the build process.
- */
-module.exports = {
-    build_dir: 'build',
-    app_dir: 'app',
-
-    app_files: {
-        js: [
-            'src/*/**/*.js',
-            '!node/**/*.*',
-            '!node_modules/**/*.*',
-            '!src/vendor/**/*.*'
-        ],
-        root_js: [
-            'src/*.js'
-        ],
-        less: [
-            'src/assets/less/*.less'
-        ],
-        img: [
-            'src/assets/img/*.*'
-        ],
-
-        templates: [
-            'src/*/**/*.tpl.html',
-            'src/*.tpl.html'
-        ]
-    },
-
-    assets_files: {
-        less: [],
-        css: [],
-        data: []
-    },
-
-    vendor_files: {
-        js: [],
-        css: [],
-        fonts: []
-    }
-};
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/gulpfile.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/gulpfile.js
deleted file mode 100644 (file)
index c3a15c4..0000000
+++ /dev/null
@@ -1,142 +0,0 @@
-var gulp = require('gulp'),
-    del = require('del'),
-    gutil = require('gulp-util'),
-    concat = require('gulp-concat'),
-    runSequence = require('run-sequence'),
-    install = require("gulp-install"),
-    connect = require('gulp-connect'),
-    open = require('gulp-open'),
-    argv = require('yargs').argv,
-    less = require('gulp-less'),
-    debug = require('gulp-debug'),
-    replace = require('gulp-replace-task');
-
-var config = require( './build.config.js');
-
-
-/**
- * Task for cleaning build directory
- */
-gulp.task('clean', function() {
-    // You can use multiple globbing patterns as you would with `gulp.src`
-    return del(config.build_dir);
-});
-
-/**
- * Copy assets
- */
-gulp.task('copyAssetsCss', function () {
-    return gulp.src(config.assets_files.css)
-        .pipe(
-            gulp.dest(
-                (config.build_dir) + '/assets/css'
-            )
-        );
-});
-
-gulp.task('copyAssetsData', function () {
-    return gulp.src(config.assets_files.data)
-        .pipe(gulp.dest((config.build_dir) + '/assets/data'));
-});
-
-/**
- * Copy app files
- */
-gulp.task('copyTemplates', function () {
-    gutil.log(gutil.colors.cyan('INFO :: copying APP Template files'));
-    // Copy html
-    return gulp.src(config.app_files.templates)
-        .pipe(gulp.dest(config.build_dir));
-});
-
-gulp.task('copyAppJs', function () {
-    gutil.log(gutil.colors.cyan('INFO :: copying APP Controller JS files'));
-    return gulp.src(config.app_files.js)
-        .pipe(gulp.dest(config.build_dir));
-});
-
-gulp.task('copyRootJs', function () {
-    gutil.log(gutil.colors.cyan('INFO :: copying APP Root JS files'));
-    return gulp.src(config.app_files.root_js)
-        .pipe(gulp.dest(config.build_dir));
-});
-
-/**
- * Compile css from less files
- */
-gulp.task('less', function () {
-    gutil.log(gutil.colors.cyan('INFO :: compiling LESS file'));
-    return gulp.src(config.app_files.less)
-        .pipe(less())
-        .pipe(gulp.dest((config.build_dir) + '/assets/css'));
-});
-
-/**
- * Copy app assets images
- */
-gulp.task('copyAppImgs', function () {
-    gutil.log(gutil.colors.cyan('INFO :: copying image files'));
-    return gulp.src(config.app_files.img)
-        .pipe(gulp.dest((config.build_dir) + '/assets/img'));
-
-});
-
-/**
- * Copy vendor files
- */
-gulp.task('copyVendorCss', function () {
-    gutil.log(gutil.colors.cyan('INFO :: copying VENDOR css'));
-    return gulp.src(config.vendor_files.css, { cwd : 'node_modules/**' })
-        .pipe(gulp.dest((config.build_dir) + '/vendor'));
-});
-
-gulp.task('copyVendorFonts', function () {
-    gutil.log(gutil.colors.cyan('INFO :: copying VENDOR fonts'));
-    return gulp.src(config.vendor_files.fonts, { cwd : 'node_modules/**' })
-        .pipe(gulp.dest((config.build_dir) + '/vendor'));
-});
-
-gulp.task('copyVendorJs', function () {
-    gutil.log(gutil.colors.cyan('INFO :: copying VENDOR js files'));
-    return gulp.src(config.vendor_files.js, { cwd : 'node_modules/**' })
-        .pipe(gulp.dest((config.build_dir) + '/vendor'));
-});
-
-/**
- * Copy task aggregated
- */
-gulp.task('copy', function() {
-    runSequence('less', [
-        'copyAssetsCss',
-        'copyAssetsData',
-        'copyTemplates',
-        'copyAppJs',
-        'copyRootJs',
-        'copyVendorCss',
-        'copyVendorFonts',
-        'copyAppImgs'
-    ], 'copyVendorJs');
-});
-
-/**
- * Build task
- */
-gulp.task('build', function(){
-    runSequence('clean', 'copy');
-});
-
-
-/**
- * Live preview main task for development
- * argument --live should be used to force build task to build only live preview
- */
-gulp.task('default', function (){
-
-    if (!argv.live) {
-        gutil.log(gutil.colors.red('ERROR :: --live argument must be used for live preview!'));
-    }
-
-    gutil.log(gutil.colors.cyan('INFO :: opening new browser tab live:' + argv.live));
-
-    runSequence('build');
-});
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/package.json b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/package.json
deleted file mode 100644 (file)
index 2fb0b71..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-{
-  "name": "odl-dluxapps-security",
-  "version": "0.5.1",
-  "main": "main.js",
-  "devDependencies": {
-    "gulp-bower": "0.0.13"
-  },
-  "dependencies": {
-    "del": "^2.2.0",
-    "gulp": "^3.9.1",
-    "gulp-concat": "^2.6.0",
-    "gulp-connect": "^5.0.0",
-    "gulp-debug": "^3.0.0",
-    "gulp-install": "^0.6.0",
-    "gulp-less": "^3.1.0",
-    "gulp-open": "^2.0.0",
-    "gulp-replace-task": "^0.11.0",
-    "gulp-util": "^3.0.7",
-    "run-sequence": "^1.1.5"
-  },
-  "repository": {
-    "type": "git",
-    "url": "https://git.opendaylight.org/gerrit/dluxapps"
-  },
-  "license": "EPL",
-  "keywords": [
-    "odl"
-  ]
-}
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.controller.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.controller.js
deleted file mode 100644 (file)
index e7f12c2..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-define("security.service", ["require", "exports", "angularAMD"], function (require, exports, angular) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var security = angular.module('app.security');
-    var SecurityService = /** @class */ (function () {
-        function SecurityService($q, $http, $window, env) {
-            this.$q = $q;
-            this.$http = $http;
-            this.$window = $window;
-            this.env = env;
-            this.ensureCrendentials();
-        }
-        SecurityService.prototype.ensureCrendentials = function () {
-            var credentialsDefer = this.$q.defer();
-            this.credentials = credentialsDefer.promise;
-            var url = this.env.getBaseURL('MD_SAL') + "/oauth2/token";
-            this.$http({
-                method: "POST",
-                url: url,
-                headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
-                data: "grant_type=password&username=" + this.$window.sessionStorage.odlUser + "&password=" + this.$window.sessionStorage.odlPass + "&scope=sdn"
-            }).then(function (res) {
-                credentialsDefer.resolve(res.data && res.data.access_token);
-            }, function (err) {
-                credentialsDefer.reject(err);
-            });
-        };
-        Object.defineProperty(SecurityService.prototype, "token", {
-            get: function () {
-                return this.credentials;
-            },
-            enumerable: true,
-            configurable: true
-        });
-        SecurityService.prototype.getAllUsers = function () {
-            var _this = this;
-            var url = this.env.getBaseURL('MD_SAL') + "/auth/v1/users";
-            return this.token.then(function (token) {
-                return _this.$http({
-                    method: "GET",
-                    url: url,
-                    headers: { 'Authorization': "Bearer " + token }
-                }).then(function (result) { return result.data && result.data.users; });
-            });
-        };
-        SecurityService.prototype.getAllRoles = function () {
-            var _this = this;
-            var url = this.env.getBaseURL('MD_SAL') + "/auth/v1/roles";
-            return this.token.then(function (token) {
-                return _this.$http({
-                    method: "GET",
-                    url: url,
-                    headers: { 'Authorization': "Bearer " + token }
-                }).then(function (result) { return result.data && result.data.roles; });
-            });
-        };
-        SecurityService.prototype.getUserById = function (userId) {
-            var _this = this;
-            var url = this.env.getBaseURL('MD_SAL') + "/auth/v1/users/" + userId;
-            return this.token.then(function (token) {
-                return _this.$http({
-                    method: "GET",
-                    url: url,
-                    headers: { 'Authorization': "Bearer " + token }
-                }).then(function (result) { return result.data && result.data; });
-            });
-        };
-        SecurityService.prototype.getRolesForDomainUser = function (userId, domain) {
-            var _this = this;
-            if (domain === void 0) { domain = "sdn"; }
-            var url = this.env.getBaseURL('MD_SAL') + "/auth/v1/domains/" + domain + "/users/" + userId + "/roles";
-            return this.token.then(function (token) {
-                return _this.$http({
-                    method: "GET",
-                    url: url,
-                    headers: { 'Authorization': "Bearer " + token }
-                }).then(function (result) { return result.data && result.data.roles; });
-            });
-        };
-        return SecurityService;
-    }());
-    exports.SecurityService = SecurityService;
-    security.service('securityService', ['$q', '$http', '$window', 'ENV', SecurityService]);
-});
-define( ["require", "exports", "security.service"], function (require, exports) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    var security = angular.module('app.security');
-    var UserDetailsCtrl = /** @class */ (function () {
-        function UserDetailsCtrl($scope, $uibModalInstance, userid, roles) {
-            var _this = this;
-            this.$uibModalInstance = $uibModalInstance;
-            this.userid = userid;
-            this.roles = roles;
-            this.ok = function () {
-                _this.$uibModalInstance.close( /* Parameter*/);
-            };
-            this.cancel = function () {
-                _this.$uibModalInstance.dismiss('cancel');
-            };
-        }
-        return UserDetailsCtrl;
-    }());
-    security.controller('userDetailsCtrl', ['$scope', '$uibModalInstance', 'userid', 'roles', UserDetailsCtrl]);
-    var SecurityCtrl = /** @class */ (function () {
-        function SecurityCtrl($scope, $timeout, $q, $uibModal, $document, $mwtnCommons, securityService) {
-            this.$q = $q;
-            this.$uibModal = $uibModal;
-            this.$document = $document;
-            this.securityService = securityService;
-            $scope.message = "Empty";
-            $scope.users = [];
-            $scope.roles = [];
-            $scope.currentUser = {};
-            $scope.getCurrentUserById = function (id) {
-                id !== null && securityService.getRolesForDomainUser(id).then(function (roles) {
-                    var parentElem = angular.element($document[0].querySelector('#security'));
-                    var modalInstance = $uibModal.open({
-                        animation: true,
-                        ariaLabelledBy: 'modal-title',
-                        ariaDescribedBy: 'modal-body',
-                        templateUrl: 'src/app/security/templates/userDetails.html',
-                        controller: 'userDetailsCtrl',
-                        controllerAs: 'vm',
-                        appendTo: parentElem,
-                        size: 'sm',
-                        resolve: {
-                            roles: function () { return roles; },
-                            userid: function () { return id; },
-                        }
-                    });
-                });
-            };
-            securityService.token.then(function (res) {
-                $q.all([
-                    securityService.getAllUsers(),
-                    securityService.getAllRoles()
-                ]).then(function (_a) {
-                    var users = _a[0], roles = _a[1];
-                    $scope.users = users;
-                    $scope.roles = roles;
-                });
-            });
-        }
-        return SecurityCtrl;
-    }());
-    security.controller('securityCtrl', ['$scope', '$timeout', '$q', '$uibModal', '$document', '$mwtnCommons', 'securityService', SecurityCtrl]);
-});
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHkuY29udHJvbGxlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbInNyYy9hcHAvc2VjdXJpdHkvc2VjdXJpdHkuc2VydmljZS50cyIsInNyYy9hcHAvc2VjdXJpdHkvc2VjdXJpdHkuY29udHJvbGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7SUFFQSxJQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBdUJoRDtRQUdFLHlCQUFvQixFQUFnQixFQUFVLEtBQXNCLEVBQVUsT0FBTyxFQUFVLEdBQWdCO1lBQTNGLE9BQUUsR0FBRixFQUFFLENBQWM7WUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFpQjtZQUFVLFlBQU8sR0FBUCxPQUFPLENBQUE7WUFBVSxRQUFHLEdBQUgsR0FBRyxDQUFhO1lBQzdHLElBQUksQ0FBQyxrQkFBa0IsRUFBRSxDQUFDO1FBQzVCLENBQUM7UUFFTyw0Q0FBa0IsR0FBMUI7WUFDRSxJQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFVLENBQUM7WUFDakQsSUFBSSxDQUFDLFdBQVcsR0FBRyxnQkFBZ0IsQ0FBQyxPQUFPLENBQUM7WUFFNUMsSUFBTSxHQUFHLEdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLGtCQUFlLENBQUM7WUFDNUQsSUFBSSxDQUFDLEtBQUssQ0FBMkI7Z0JBQ25DLE1BQU0sRUFBRSxNQUFNO2dCQUNkLEdBQUcsRUFBRSxHQUFHO2dCQUNSLE9BQU8sRUFBRSxFQUFFLGNBQWMsRUFBRSxtQ0FBbUMsRUFBRTtnQkFDaEUsSUFBSSxFQUFFLGtDQUFnQyxJQUFJLENBQUMsT0FBTyxDQUFDLGNBQWMsQ0FBQyxPQUFPLGtCQUFhLElBQUksQ0FBQyxPQUFPLENBQUMsY0FBYyxDQUFDLE9BQU8sZUFBWTthQUN0SSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsR0FBRztnQkFDVCxnQkFBZ0IsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksSUFBSSxHQUFHLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxDQUFDO1lBQzlELENBQUMsRUFBRSxVQUFBLEdBQUc7Z0JBQ0osZ0JBQWdCLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQy9CLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELHNCQUFXLGtDQUFLO2lCQUFoQjtnQkFDRSxPQUFPLElBQUksQ0FBQyxXQUFXLENBQUM7WUFDMUIsQ0FBQzs7O1dBQUE7UUFFTSxxQ0FBVyxHQUFsQjtZQUFBLGlCQVNDO1lBUkMsSUFBTSxHQUFHLEdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLG1CQUFnQixDQUFDO1lBQzdELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBQSxLQUFLO2dCQUMxQixPQUFPLEtBQUksQ0FBQyxLQUFLLENBQW9CO29CQUNuQyxNQUFNLEVBQUUsS0FBSztvQkFDYixHQUFHLEVBQUUsR0FBRztvQkFDUixPQUFPLEVBQUUsRUFBRSxlQUFlLEVBQUUsWUFBVSxLQUFPLEVBQUU7aUJBQ2hELENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxFQUFoQyxDQUFnQyxDQUFDLENBQUE7WUFDckQsQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDO1FBRU0scUNBQVcsR0FBbEI7WUFBQSxpQkFTQztZQVJDLElBQU0sR0FBRyxHQUFNLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxtQkFBZ0IsQ0FBQztZQUM3RCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQUEsS0FBSztnQkFDMUIsT0FBTyxLQUFJLENBQUMsS0FBSyxDQUFvQjtvQkFDbkMsTUFBTSxFQUFFLEtBQUs7b0JBQ2IsR0FBRyxFQUFFLEdBQUc7b0JBQ1IsT0FBTyxFQUFFLEVBQUUsZUFBZSxFQUFFLFlBQVUsS0FBTyxFQUFFO2lCQUNoRCxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsTUFBTSxJQUFJLE9BQUEsTUFBTSxDQUFDLElBQUksSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBaEMsQ0FBZ0MsQ0FBQyxDQUFBO1lBQ3JELENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVNLHFDQUFXLEdBQWxCLFVBQW1CLE1BQWM7WUFBakMsaUJBU0M7WUFSQyxJQUFNLEdBQUcsR0FBTSxJQUFJLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsdUJBQWtCLE1BQVEsQ0FBQztZQUN2RSxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLFVBQUEsS0FBSztnQkFDMUIsT0FBTyxLQUFJLENBQUMsS0FBSyxDQUFPO29CQUN0QixNQUFNLEVBQUUsS0FBSztvQkFDYixHQUFHLEVBQUUsR0FBRztvQkFDUixPQUFPLEVBQUUsRUFBRSxlQUFlLEVBQUUsWUFBVSxLQUFPLEVBQUU7aUJBQ2hELENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBQSxNQUFNLElBQUksT0FBQSxNQUFNLENBQUMsSUFBSSxJQUFJLE1BQU0sQ0FBQyxJQUFJLEVBQTFCLENBQTBCLENBQUMsQ0FBQTtZQUMvQyxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFTSwrQ0FBcUIsR0FBNUIsVUFBNkIsTUFBYyxFQUFFLE1BQXFCO1lBQWxFLGlCQVNDO1lBVDRDLHVCQUFBLEVBQUEsY0FBcUI7WUFDaEUsSUFBTSxHQUFHLEdBQU0sSUFBSSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLHlCQUFvQixNQUFNLGVBQVUsTUFBTSxXQUFRLENBQUM7WUFDL0YsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFBLEtBQUs7Z0JBQzFCLE9BQU8sS0FBSSxDQUFDLEtBQUssQ0FBb0I7b0JBQ25DLE1BQU0sRUFBRSxLQUFLO29CQUNiLEdBQUcsRUFBRSxHQUFHO29CQUNSLE9BQU8sRUFBRSxFQUFFLGVBQWUsRUFBRSxZQUFVLEtBQU8sRUFBRTtpQkFDaEQsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFBLE1BQU0sSUFBSSxPQUFBLE1BQU0sQ0FBQyxJQUFJLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQWhDLENBQWdDLENBQUMsQ0FBQTtZQUNyRCxDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDSCxzQkFBQztJQUFELENBQUMsQUF2RUQsSUF1RUM7SUF2RVksMENBQWU7SUF5RTVCLFFBQVEsQ0FBQyxPQUFPLENBQUMsaUJBQWlCLEVBQUUsQ0FBQyxJQUFJLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQzs7Ozs7SUM1RnhGLElBQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLENBQUM7SUFFaEQ7UUFDRSx5QkFBWSxNQUFNLEVBQVUsaUJBQWlCLEVBQVMsTUFBYyxFQUFTLEtBQWE7WUFBMUYsaUJBRUM7WUFGMkIsc0JBQWlCLEdBQWpCLGlCQUFpQixDQUFBO1lBQVMsV0FBTSxHQUFOLE1BQU0sQ0FBUTtZQUFTLFVBQUssR0FBTCxLQUFLLENBQVE7WUFJbkYsT0FBRSxHQUFHO2dCQUNWLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxLQUFLLEVBQUMsY0FBYyxDQUFDLENBQUM7WUFDL0MsQ0FBQyxDQUFDO1lBRUssV0FBTSxHQUFHO2dCQUNkLEtBQUksQ0FBQyxpQkFBaUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDM0MsQ0FBQyxDQUFDO1FBUkYsQ0FBQztRQVNILHNCQUFDO0lBQUQsQ0FBQyxBQVpELElBWUM7SUFFRCxRQUFRLENBQUMsVUFBVSxDQUFDLGlCQUFpQixFQUFFLENBQUMsUUFBUSxFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQztJQUU1RztRQUNFLHNCQUFZLE1BQU0sRUFBRSxRQUFRLEVBQVUsRUFBZ0IsRUFBVSxTQUFTLEVBQVUsU0FBK0IsRUFBRyxZQUFZLEVBQVUsZUFBZ0M7WUFBckksT0FBRSxHQUFGLEVBQUUsQ0FBYztZQUFVLGNBQVMsR0FBVCxTQUFTLENBQUE7WUFBVSxjQUFTLEdBQVQsU0FBUyxDQUFzQjtZQUF5QixvQkFBZSxHQUFmLGVBQWUsQ0FBaUI7WUFDekssTUFBTSxDQUFDLE9BQU8sR0FBRyxPQUFPLENBQUM7WUFDekIsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbEIsTUFBTSxDQUFDLFdBQVcsR0FBRyxFQUFFLENBQUM7WUFFeEIsTUFBTSxDQUFDLGtCQUFrQixHQUFHLFVBQVUsRUFBVTtnQkFDOUMsRUFBRSxLQUFLLElBQUksSUFBSSxlQUFlLENBQUMscUJBQXFCLENBQUMsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLFVBQUEsS0FBSztvQkFDakUsSUFBTSxVQUFVLEdBQUcsT0FBTyxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUM7b0JBQzVFLElBQU0sYUFBYSxHQUFHLFNBQVMsQ0FBQyxJQUFJLENBQUM7d0JBQ25DLFNBQVMsRUFBRSxJQUFJO3dCQUNmLGNBQWMsRUFBRSxhQUFhO3dCQUM3QixlQUFlLEVBQUUsWUFBWTt3QkFDN0IsV0FBVyxFQUFFLDZDQUE2Qzt3QkFDMUQsVUFBVSxFQUFFLGlCQUFpQjt3QkFDN0IsWUFBWSxFQUFFLElBQUk7d0JBQ2xCLFFBQVEsRUFBRSxVQUFVO3dCQUNwQixJQUFJLEVBQUUsSUFBSTt3QkFDVixPQUFPLEVBQUU7NEJBQ1AsS0FBSyxFQUFFLGNBQU0sT0FBQSxLQUFLLEVBQUwsQ0FBSzs0QkFDbEIsTUFBTSxFQUFFLGNBQU0sT0FBQSxFQUFFLEVBQUYsQ0FBRTt5QkFDakI7cUJBQ0YsQ0FBQyxDQUFBO2dCQUNKLENBQUMsQ0FBQyxDQUFBO1lBQ0osQ0FBQyxDQUFDO1lBRUYsZUFBZSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBQSxHQUFHO2dCQUM1QixFQUFFLENBQUMsR0FBRyxDQUFDO29CQUNMLGVBQWUsQ0FBQyxXQUFXLEVBQUU7b0JBQzdCLGVBQWUsQ0FBQyxXQUFXLEVBQUU7aUJBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFDLEVBQWM7d0JBQWIsYUFBSyxFQUFFLGFBQUs7b0JBQ2pELE1BQU0sQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO29CQUNyQixNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztnQkFDekIsQ0FBQyxDQUFDLENBQUE7WUFDSixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDSCxtQkFBQztJQUFELENBQUMsQUFwQ0QsSUFvQ0M7SUFFRCxRQUFRLENBQUMsVUFBVSxDQUFDLGNBQWMsRUFBRSxDQUFDLFFBQVEsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFdBQVcsRUFBQyxXQUFXLEVBQUUsY0FBYyxFQUFFLGlCQUFpQixFQUFFLFlBQVksQ0FBRSxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgKiBhcyBhbmd1bGFyIGZyb20gJ2FuZ3VsYXJBTUQnO1xuXG5jb25zdCBzZWN1cml0eSA9IGFuZ3VsYXIubW9kdWxlKCdhcHAuc2VjdXJpdHknKTtcblxuaW50ZXJmYWNlIElFbnZTZXJ2aWNlIHtcbiAgZ2V0QmFzZVVSTChwb3J0OiBzdHJpbmcpOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFVzZXIgPSB7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRvbWFpbmlkOiBzdHJpbmc7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGVuYWJsZWQ6IGJvb2xlYW47XG4gIHBhc3N3b3JkOiBzdHJpbmc7XG4gIHNhbHQ6IHN0cmluZztcbiAgdXNlcmlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCB0eXBlIFJvbGUgPSB7XG4gIHJvbGVpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIGRvbWFpbmlkOiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBTZWN1cml0eVNlcnZpY2Uge1xuICBwcml2YXRlIGNyZWRlbnRpYWxzOiBuZy5JUHJvbWlzZTxzdHJpbmc+O1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgJHE6IG5nLklRU2VydmljZSwgcHJpdmF0ZSAkaHR0cDogbmcuSUh0dHBTZXJ2aWNlLCBwcml2YXRlICR3aW5kb3csIHByaXZhdGUgZW52OiBJRW52U2VydmljZSkge1xuICAgIHRoaXMuZW5zdXJlQ3JlbmRlbnRpYWxzKCk7XG4gIH1cblxuICBwcml2YXRlIGVuc3VyZUNyZW5kZW50aWFscygpIHtcbiAgICBjb25zdCBjcmVkZW50aWFsc0RlZmVyID0gdGhpcy4kcS5kZWZlcjxzdHJpbmc+KCk7XG4gICAgdGhpcy5jcmVkZW50aWFscyA9IGNyZWRlbnRpYWxzRGVmZXIucHJvbWlzZTtcblxuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW52LmdldEJhc2VVUkwoJ01EX1NBTCcpfS9vYXV0aDIvdG9rZW5gO1xuICAgIHRoaXMuJGh0dHA8eyBhY2Nlc3NfdG9rZW46IHN0cmluZyB9Pih7XG4gICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgdXJsOiB1cmwsXG4gICAgICBoZWFkZXJzOiB7ICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJyB9LFxuICAgICAgZGF0YTogYGdyYW50X3R5cGU9cGFzc3dvcmQmdXNlcm5hbWU9JHt0aGlzLiR3aW5kb3cuc2Vzc2lvblN0b3JhZ2Uub2RsVXNlcn0mcGFzc3dvcmQ9JHt0aGlzLiR3aW5kb3cuc2Vzc2lvblN0b3JhZ2Uub2RsUGFzc30mc2NvcGU9c2RuYFxuICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgIGNyZWRlbnRpYWxzRGVmZXIucmVzb2x2ZShyZXMuZGF0YSAmJiByZXMuZGF0YS5hY2Nlc3NfdG9rZW4pO1xuICAgIH0sIGVyciA9PiB7XG4gICAgICBjcmVkZW50aWFsc0RlZmVyLnJlamVjdChlcnIpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldCB0b2tlbigpIHtcbiAgICByZXR1cm4gdGhpcy5jcmVkZW50aWFscztcbiAgfVxuXG4gIHB1YmxpYyBnZXRBbGxVc2VycygpOiBuZy5JUHJvbWlzZTxVc2VyW10+IHtcbiAgICBjb25zdCB1cmwgPSBgJHt0aGlzLmVudi5nZXRCYXNlVVJMKCdNRF9TQUwnKX0vYXV0aC92MS91c2Vyc2A7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4udGhlbih0b2tlbiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy4kaHR0cDx7IHVzZXJzOiBVc2VyW10gfT4oe1xuICAgICAgICBtZXRob2Q6IFwiR0VUXCIsXG4gICAgICAgIHVybDogdXJsLFxuICAgICAgICBoZWFkZXJzOiB7ICdBdXRob3JpemF0aW9uJzogYEJlYXJlciAke3Rva2VufWAgfVxuICAgICAgfSkudGhlbihyZXN1bHQgPT4gcmVzdWx0LmRhdGEgJiYgcmVzdWx0LmRhdGEudXNlcnMpXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0QWxsUm9sZXMoKTogbmcuSVByb21pc2U8Um9sZVtdPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnYuZ2V0QmFzZVVSTCgnTURfU0FMJyl9L2F1dGgvdjEvcm9sZXNgO1xuICAgIHJldHVybiB0aGlzLnRva2VuLnRoZW4odG9rZW4gPT4ge1xuICAgICAgcmV0dXJuIHRoaXMuJGh0dHA8eyByb2xlczogUm9sZVtdIH0+KHtcbiAgICAgICAgbWV0aG9kOiBcIkdFVFwiLFxuICAgICAgICB1cmw6IHVybCxcbiAgICAgICAgaGVhZGVyczogeyAnQXV0aG9yaXphdGlvbic6IGBCZWFyZXIgJHt0b2tlbn1gIH1cbiAgICAgIH0pLnRoZW4ocmVzdWx0ID0+IHJlc3VsdC5kYXRhICYmIHJlc3VsdC5kYXRhLnJvbGVzKVxuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIGdldFVzZXJCeUlkKHVzZXJJZDogc3RyaW5nKTogbmcuSVByb21pc2U8VXNlcj4ge1xuICAgIGNvbnN0IHVybCA9IGAke3RoaXMuZW52LmdldEJhc2VVUkwoJ01EX1NBTCcpfS9hdXRoL3YxL3VzZXJzLyR7dXNlcklkfWA7XG4gICAgcmV0dXJuIHRoaXMudG9rZW4udGhlbih0b2tlbiA9PiB7XG4gICAgICByZXR1cm4gdGhpcy4kaHR0cDxVc2VyPih7XG4gICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIGhlYWRlcnM6IHsgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YCB9XG4gICAgICB9KS50aGVuKHJlc3VsdCA9PiByZXN1bHQuZGF0YSAmJiByZXN1bHQuZGF0YSlcbiAgICB9KTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRSb2xlc0ZvckRvbWFpblVzZXIodXNlcklkOiBzdHJpbmcsIGRvbWFpbjogc3RyaW5nPSBcInNkblwiKTogbmcuSVByb21pc2U8Um9sZVtdPiB7XG4gICAgY29uc3QgdXJsID0gYCR7dGhpcy5lbnYuZ2V0QmFzZVVSTCgnTURfU0FMJyl9L2F1dGgvdjEvZG9tYWlucy8ke2RvbWFpbn0vdXNlcnMvJHt1c2VySWR9L3JvbGVzYDtcbiAgICByZXR1cm4gdGhpcy50b2tlbi50aGVuKHRva2VuID0+IHtcbiAgICAgIHJldHVybiB0aGlzLiRodHRwPHsgcm9sZXM6IFJvbGVbXSB9Pih7XG4gICAgICAgIG1ldGhvZDogXCJHRVRcIixcbiAgICAgICAgdXJsOiB1cmwsXG4gICAgICAgIGhlYWRlcnM6IHsgJ0F1dGhvcml6YXRpb24nOiBgQmVhcmVyICR7dG9rZW59YCB9XG4gICAgICB9KS50aGVuKHJlc3VsdCA9PiByZXN1bHQuZGF0YSAmJiByZXN1bHQuZGF0YS5yb2xlcylcbiAgICB9KTtcbiAgfVxufVxuXG5zZWN1cml0eS5zZXJ2aWNlKCdzZWN1cml0eVNlcnZpY2UnLCBbJyRxJywgJyRodHRwJywgJyR3aW5kb3cnLCAnRU5WJywgU2VjdXJpdHlTZXJ2aWNlXSk7IiwiZGVjbGFyZSB2YXIgYW5ndWxhcjogYW5ndWxhci5JQW5ndWxhclN0YXRpYzsgXG5cbmltcG9ydCB7IFNlY3VyaXR5U2VydmljZSwgUm9sZSB9IGZyb20gXCIuL3NlY3VyaXR5LnNlcnZpY2VcIjsgXG5cbmltcG9ydCBcIi4vc2VjdXJpdHkuc2VydmljZVwiO1xuXG5jb25zdCBzZWN1cml0eSA9IGFuZ3VsYXIubW9kdWxlKCdhcHAuc2VjdXJpdHknKTtcblxuY2xhc3MgVXNlckRldGFpbHNDdHJsIHtcbiAgY29uc3RydWN0b3IoJHNjb3BlLCBwcml2YXRlICR1aWJNb2RhbEluc3RhbmNlLCBwdWJsaWMgdXNlcmlkOiBzdHJpbmcsIHB1YmxpYyByb2xlczogUm9sZVtdKSB7XG5cbiAgfVxuXG4gIHB1YmxpYyBvayA9ICgpID0+IHtcbiAgICB0aGlzLiR1aWJNb2RhbEluc3RhbmNlLmNsb3NlKC8qIFBhcmFtZXRlciovKTtcbiAgfTtcblxuICBwdWJsaWMgY2FuY2VsID0gKCkgPT4ge1xuICAgIHRoaXMuJHVpYk1vZGFsSW5zdGFuY2UuZGlzbWlzcygnY2FuY2VsJyk7XG4gIH07XG59XG5cbnNlY3VyaXR5LmNvbnRyb2xsZXIoJ3VzZXJEZXRhaWxzQ3RybCcsIFsnJHNjb3BlJywgJyR1aWJNb2RhbEluc3RhbmNlJywgJ3VzZXJpZCcsICdyb2xlcycsIFVzZXJEZXRhaWxzQ3RybF0pO1xuXG5jbGFzcyBTZWN1cml0eUN0cmwge1xuICBjb25zdHJ1Y3Rvcigkc2NvcGUsICR0aW1lb3V0LCBwcml2YXRlICRxOiBuZy5JUVNlcnZpY2UsIHByaXZhdGUgJHVpYk1vZGFsLCBwcml2YXRlICRkb2N1bWVudCA6IG5nLklEb2N1bWVudFNlcnZpY2UsICAkbXd0bkNvbW1vbnMsIHByaXZhdGUgc2VjdXJpdHlTZXJ2aWNlOiBTZWN1cml0eVNlcnZpY2UpIHtcbiAgICAkc2NvcGUubWVzc2FnZSA9IFwiRW1wdHlcIjtcbiAgICAkc2NvcGUudXNlcnMgPSBbXTtcbiAgICAkc2NvcGUucm9sZXMgPSBbXTtcbiAgICAkc2NvcGUuY3VycmVudFVzZXIgPSB7fTtcblxuICAgICRzY29wZS5nZXRDdXJyZW50VXNlckJ5SWQgPSBmdW5jdGlvbiAoaWQ6IHN0cmluZykge1xuICAgICAgaWQgIT09IG51bGwgJiYgc2VjdXJpdHlTZXJ2aWNlLmdldFJvbGVzRm9yRG9tYWluVXNlcihpZCkudGhlbihyb2xlcyA9PiB7XG4gICAgICAgIGNvbnN0IHBhcmVudEVsZW0gPSBhbmd1bGFyLmVsZW1lbnQoJGRvY3VtZW50WzBdLnF1ZXJ5U2VsZWN0b3IoJyNzZWN1cml0eScpKTtcbiAgICAgICAgY29uc3QgbW9kYWxJbnN0YW5jZSA9ICR1aWJNb2RhbC5vcGVuKHtcbiAgICAgICAgICBhbmltYXRpb246IHRydWUsXG4gICAgICAgICAgYXJpYUxhYmVsbGVkQnk6ICdtb2RhbC10aXRsZScsXG4gICAgICAgICAgYXJpYURlc2NyaWJlZEJ5OiAnbW9kYWwtYm9keScsXG4gICAgICAgICAgdGVtcGxhdGVVcmw6ICdzcmMvYXBwL3NlY3VyaXR5L3RlbXBsYXRlcy91c2VyRGV0YWlscy5odG1sJyxcbiAgICAgICAgICBjb250cm9sbGVyOiAndXNlckRldGFpbHNDdHJsJyxcbiAgICAgICAgICBjb250cm9sbGVyQXM6ICd2bScsXG4gICAgICAgICAgYXBwZW5kVG86IHBhcmVudEVsZW0sXG4gICAgICAgICAgc2l6ZTogJ3NtJyxcbiAgICAgICAgICByZXNvbHZlOiB7XG4gICAgICAgICAgICByb2xlczogKCkgPT4gcm9sZXMsXG4gICAgICAgICAgICB1c2VyaWQ6ICgpID0+IGlkLFxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH0pXG4gICAgfTsgIFxuXG4gICAgc2VjdXJpdHlTZXJ2aWNlLnRva2VuLnRoZW4ocmVzID0+IHtcbiAgICAgICRxLmFsbChbXG4gICAgICAgIHNlY3VyaXR5U2VydmljZS5nZXRBbGxVc2VycygpLFxuICAgICAgICBzZWN1cml0eVNlcnZpY2UuZ2V0QWxsUm9sZXMoKV0pLnRoZW4oKFt1c2Vycywgcm9sZXNdKSA9PiB7XG4gICAgICAgICAgJHNjb3BlLnVzZXJzID0gdXNlcnM7XG4gICAgICAgICAgJHNjb3BlLnJvbGVzID0gcm9sZXM7XG4gICAgICB9KVxuICAgIH0pO1xuICB9XG59XG5cbnNlY3VyaXR5LmNvbnRyb2xsZXIoJ3NlY3VyaXR5Q3RybCcsIFsnJHNjb3BlJywgJyR0aW1lb3V0JywgJyRxJywgJyR1aWJNb2RhbCcsJyRkb2N1bWVudCcsICckbXd0bkNvbW1vbnMnLCAnc2VjdXJpdHlTZXJ2aWNlJywgU2VjdXJpdHlDdHJsIF0pOyJdfQ==
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.controller.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.controller.ts
deleted file mode 100644 (file)
index 4931531..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-declare var angular: angular.IAngularStatic; 
-
-import { SecurityService, Role } from "./security.service"; 
-
-import "./security.service";
-
-const security = angular.module('app.security');
-
-class UserDetailsCtrl {
-  constructor($scope, private $uibModalInstance, public userid: string, public roles: Role[]) {
-
-  }
-
-  public ok = () => {
-    this.$uibModalInstance.close(/* Parameter*/);
-  };
-
-  public cancel = () => {
-    this.$uibModalInstance.dismiss('cancel');
-  };
-}
-
-security.controller('userDetailsCtrl', ['$scope', '$uibModalInstance', 'userid', 'roles', UserDetailsCtrl]);
-
-class SecurityCtrl {
-  constructor($scope, $timeout, private $q: ng.IQService, private $uibModal, private $document : ng.IDocumentService,  $mwtnCommons, private securityService: SecurityService) {
-    $scope.message = "Empty";
-    $scope.users = [];
-    $scope.roles = [];
-    $scope.currentUser = {};
-
-    $scope.getCurrentUserById = function (id: string) {
-      id !== null && securityService.getRolesForDomainUser(id).then(roles => {
-        const parentElem = angular.element($document[0].querySelector('#security'));
-        const modalInstance = $uibModal.open({
-          animation: true,
-          ariaLabelledBy: 'modal-title',
-          ariaDescribedBy: 'modal-body',
-          templateUrl: 'src/app/security/templates/userDetails.html',
-          controller: 'userDetailsCtrl',
-          controllerAs: 'vm',
-          appendTo: parentElem,
-          size: 'sm',
-          resolve: {
-            roles: () => roles,
-            userid: () => id,
-          }
-        })
-      })
-    };  
-
-    securityService.token.then(res => {
-      $q.all([
-        securityService.getAllUsers(),
-        securityService.getAllRoles()]).then(([users, roles]) => {
-          $scope.users = users;
-          $scope.roles = roles;
-      })
-    });
-  }
-}
-
-security.controller('securityCtrl', ['$scope', '$timeout', '$q', '$uibModal','$document', '$mwtnCommons', 'securityService', SecurityCtrl ]);
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.custom.css b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.custom.css
deleted file mode 100644 (file)
index 67bd457..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#security table > thead > tr > th {
-  background: #ddd
-}
-
-#security table > tbody > tr > td {
-  background: #ddd
-}
-
-#security table > tbody > tr:nth-child(odd) > td {
-  background: #eee
-}
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.module.js b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.module.js
deleted file mode 100644 (file)
index dfd7e22..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-define( ["require", "exports"], function (require, exports) {
-    "use strict";
-    Object.defineProperty(exports, "__esModule", { value: true });
-    exports.security = angular.module('app.security', ['app.core']);
-    exports.security.config(function ($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $httpProvider, $translateProvider, $translatePartialLoaderProvider) {
-        //$translatePartialLoaderProvider.addPart('app/security/locale/locale');
-        NavHelperProvider.addControllerUrl('app/security/security.controller');
-        NavHelperProvider.addToMenu('security', {
-            "link": "#/security",
-            "active": "main.security",
-            "title": "Security",
-            "icon": "fa  fa-shield",
-            "page": {
-                "title": "Security",
-                "description": "security"
-            }
-        });
-        $stateProvider.state('main.security', {
-            url: 'security',
-            access: 2,
-            views: {
-                'content': {
-                    templateUrl: 'src/app/security/security.tpl.html',
-                    controller: 'securityCtrl'
-                }
-            }
-        });
-    });
-});
-/* non ES6 export */
-// export = security;
-// export default security;
-//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VjdXJpdHkubW9kdWxlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsic3JjL2FwcC9zZWN1cml0eS9zZWN1cml0eS5tb2R1bGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0lBR2EsUUFBQSxRQUFRLEdBQUcsT0FBTyxDQUFDLE1BQU0sQ0FBQyxjQUFjLEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO0lBRXJFLGdCQUFRLENBQUMsTUFBTSxDQUFDLFVBQVUsY0FBYyxFQUFFLGdCQUFnQixFQUFFLG1CQUFtQixFQUFFLFFBQVEsRUFBRSxpQkFBaUIsRUFBRSxhQUFhLEVBQUUsa0JBQWtCLEVBQUUsK0JBQStCO1FBRTlLLHdFQUF3RTtRQUV4RSxpQkFBaUIsQ0FBQyxnQkFBZ0IsQ0FBQyxrQ0FBa0MsQ0FBQyxDQUFDO1FBQ3ZFLGlCQUFpQixDQUFDLFNBQVMsQ0FBQyxVQUFVLEVBQUU7WUFDdEMsTUFBTSxFQUFFLFlBQVk7WUFDcEIsUUFBUSxFQUFFLGVBQWU7WUFDekIsT0FBTyxFQUFFLFVBQVU7WUFDbkIsTUFBTSxFQUFFLGVBQWU7WUFDdkIsTUFBTSxFQUFFO2dCQUNOLE9BQU8sRUFBRSxVQUFVO2dCQUNuQixhQUFhLEVBQUUsVUFBVTthQUMxQjtTQUNGLENBQUMsQ0FBQztRQUVILGNBQWMsQ0FBQyxLQUFLLENBQUMsZUFBZSxFQUFFO1lBQ3BDLEdBQUcsRUFBRSxVQUFVO1lBQ2YsTUFBTSxFQUFFLENBQUM7WUFDVCxLQUFLLEVBQUU7Z0JBQ0wsU0FBUyxFQUFFO29CQUNULFdBQVcsRUFBRSxvQ0FBb0M7b0JBQ2pELFVBQVUsRUFBRSxjQUFjO2lCQUMzQjthQUNGO1NBQ0YsQ0FBQyxDQUFDO0lBQ0wsQ0FBQyxDQUFDLENBQUM7O0FBRUgsb0JBQW9CO0FBQ3BCLHFCQUFxQjtBQUNyQiwyQkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBpbXBvcnQgKiBhcyBhbmd1bGFyIGZyb20gJ2FuZ3VsYXJBTUQnO1xuZGVjbGFyZSB2YXIgYW5ndWxhcjogYW5ndWxhci5JQW5ndWxhclN0YXRpYzsgXG5cbmV4cG9ydCBjb25zdCBzZWN1cml0eSA9IGFuZ3VsYXIubW9kdWxlKCdhcHAuc2VjdXJpdHknLCBbJ2FwcC5jb3JlJ10pO1xuXG5zZWN1cml0eS5jb25maWcoZnVuY3Rpb24gKCRzdGF0ZVByb3ZpZGVyLCAkY29tcGlsZVByb3ZpZGVyLCAkY29udHJvbGxlclByb3ZpZGVyLCAkcHJvdmlkZSwgTmF2SGVscGVyUHJvdmlkZXIsICRodHRwUHJvdmlkZXIsICR0cmFuc2xhdGVQcm92aWRlciwgJHRyYW5zbGF0ZVBhcnRpYWxMb2FkZXJQcm92aWRlcikge1xuXG4gIC8vJHRyYW5zbGF0ZVBhcnRpYWxMb2FkZXJQcm92aWRlci5hZGRQYXJ0KCdhcHAvc2VjdXJpdHkvbG9jYWxlL2xvY2FsZScpO1xuXG4gIE5hdkhlbHBlclByb3ZpZGVyLmFkZENvbnRyb2xsZXJVcmwoJ2FwcC9zZWN1cml0eS9zZWN1cml0eS5jb250cm9sbGVyJyk7XG4gIE5hdkhlbHBlclByb3ZpZGVyLmFkZFRvTWVudSgnc2VjdXJpdHknLCB7XG4gICAgXCJsaW5rXCI6IFwiIy9zZWN1cml0eVwiLFxuICAgIFwiYWN0aXZlXCI6IFwibWFpbi5zZWN1cml0eVwiLFxuICAgIFwidGl0bGVcIjogXCJTZWN1cml0eVwiLFxuICAgIFwiaWNvblwiOiBcImZhICBmYS1zaGllbGRcIiwgIC8vIEFkZCBuYXZpZ2F0aW9uIGljb24gY3NzIGNsYXNzIGhlcmVcbiAgICBcInBhZ2VcIjoge1xuICAgICAgXCJ0aXRsZVwiOiBcIlNlY3VyaXR5XCIsXG4gICAgICBcImRlc2NyaXB0aW9uXCI6IFwic2VjdXJpdHlcIlxuICAgIH1cbiAgfSk7XG5cbiAgJHN0YXRlUHJvdmlkZXIuc3RhdGUoJ21haW4uc2VjdXJpdHknLCB7XG4gICAgdXJsOiAnc2VjdXJpdHknLFxuICAgIGFjY2VzczogMixcbiAgICB2aWV3czoge1xuICAgICAgJ2NvbnRlbnQnOiB7XG4gICAgICAgIHRlbXBsYXRlVXJsOiAnc3JjL2FwcC9zZWN1cml0eS9zZWN1cml0eS50cGwuaHRtbCcsXG4gICAgICAgIGNvbnRyb2xsZXI6ICdzZWN1cml0eUN0cmwnXG4gICAgICB9XG4gICAgfVxuICB9KTtcbn0pO1xuXG4vKiBub24gRVM2IGV4cG9ydCAqL1xuLy8gZXhwb3J0ID0gc2VjdXJpdHk7XG4vLyBleHBvcnQgZGVmYXVsdCBzZWN1cml0eTsiXX0=
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.module.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.module.ts
deleted file mode 100644 (file)
index e06ae9a..0000000
+++ /dev/null
@@ -1,36 +0,0 @@
-// import * as angular from 'angularAMD';
-declare var angular: angular.IAngularStatic; 
-
-export const security = angular.module('app.security', ['app.core']);
-
-security.config(function ($stateProvider, $compileProvider, $controllerProvider, $provide, NavHelperProvider, $httpProvider, $translateProvider, $translatePartialLoaderProvider) {
-
-  //$translatePartialLoaderProvider.addPart('app/security/locale/locale');
-
-  NavHelperProvider.addControllerUrl('app/security/security.controller');
-  NavHelperProvider.addToMenu('security', {
-    "link": "#/security",
-    "active": "main.security",
-    "title": "Security",
-    "icon": "fa  fa-shield",  // Add navigation icon css class here
-    "page": {
-      "title": "Security",
-      "description": "security"
-    }
-  });
-
-  $stateProvider.state('main.security', {
-    url: 'security',
-    access: 2,
-    views: {
-      'content': {
-        templateUrl: 'src/app/security/security.tpl.html',
-        controller: 'securityCtrl'
-      }
-    }
-  });
-});
-
-/* non ES6 export */
-// export = security;
-// export default security;
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.service.ts b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.service.ts
deleted file mode 100644 (file)
index c881c53..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-import * as angular from 'angularAMD';
-
-const security = angular.module('app.security');
-
-interface IEnvService {
-  getBaseURL(port: string): string;
-}
-
-export type User = {
-  description: string;
-  domainid: string;
-  email: string;
-  enabled: boolean;
-  password: string;
-  salt: string;
-  userid: string;
-}
-
-export type Role = {
-  roleid: string;
-  name: string;
-  description: string;
-  domainid: string;
-}
-
-export class SecurityService {
-  private credentials: ng.IPromise<string>;
-
-  constructor(private $q: ng.IQService, private $http: ng.IHttpService, private $window, private env: IEnvService) {
-    this.ensureCrendentials();
-  }
-
-  private ensureCrendentials() {
-    const credentialsDefer = this.$q.defer<string>();
-    this.credentials = credentialsDefer.promise;
-
-    const url = `${this.env.getBaseURL('MD_SAL')}/oauth2/token`;
-    this.$http<{ access_token: string }>({
-      method: "POST",
-      url: url,
-      headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
-      data: `grant_type=password&username=${this.$window.sessionStorage.odlUser}&password=${this.$window.sessionStorage.odlPass}&scope=sdn`
-    }).then(res => {
-      credentialsDefer.resolve(res.data && res.data.access_token);
-    }, err => {
-      credentialsDefer.reject(err);
-    });
-  }
-
-  public get token() {
-    return this.credentials;
-  }
-
-  public getAllUsers(): ng.IPromise<User[]> {
-    const url = `${this.env.getBaseURL('MD_SAL')}/auth/v1/users`;
-    return this.token.then(token => {
-      return this.$http<{ users: User[] }>({
-        method: "GET",
-        url: url,
-        headers: { 'Authorization': `Bearer ${token}` }
-      }).then(result => result.data && result.data.users)
-    });
-  }
-
-  public getAllRoles(): ng.IPromise<Role[]> {
-    const url = `${this.env.getBaseURL('MD_SAL')}/auth/v1/roles`;
-    return this.token.then(token => {
-      return this.$http<{ roles: Role[] }>({
-        method: "GET",
-        url: url,
-        headers: { 'Authorization': `Bearer ${token}` }
-      }).then(result => result.data && result.data.roles)
-    });
-  }
-
-  public getUserById(userId: string): ng.IPromise<User> {
-    const url = `${this.env.getBaseURL('MD_SAL')}/auth/v1/users/${userId}`;
-    return this.token.then(token => {
-      return this.$http<User>({
-        method: "GET",
-        url: url,
-        headers: { 'Authorization': `Bearer ${token}` }
-      }).then(result => result.data && result.data)
-    });
-  }
-
-  public getRolesForDomainUser(userId: string, domain: string= "sdn"): ng.IPromise<Role[]> {
-    const url = `${this.env.getBaseURL('MD_SAL')}/auth/v1/domains/${domain}/users/${userId}/roles`;
-    return this.token.then(token => {
-      return this.$http<{ roles: Role[] }>({
-        method: "GET",
-        url: url,
-        headers: { 'Authorization': `Bearer ${token}` }
-      }).then(result => result.data && result.data.roles)
-    });
-  }
-}
-
-security.service('securityService', ['$q', '$http', '$window', 'ENV', SecurityService]);
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.tpl.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/security.tpl.html
deleted file mode 100644 (file)
index ea08892..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-<div id="security">
-   <h2>Users</h2>
-   <table class="table">
-     <thead>
-       <tr>
-         <th>UserID</th>
-         <th>Name</th>
-         <th>Description</th>
-         <th>Enabled</th>
-         <th>eMail</th>
-                    <th>Domain</th>
-         <th>Actions</th>
-       </tr>
-     </thead>
-     <tbody>
-       <tr ng-repeat="user in users">
-         <td>{{user.userid}}</td>
-                        <td>{{user.name}}</td>
-         <td>{{user.description}}</td>
-                        <td>{{user.enabled}}</td>
-                               <td>{{user.email}}</td>
-                               <td>{{user.domainid}}</td>
-                               <td>
-          <button class="btn btn-sm btn-success" 
-                  ng-click="getCurrentUserById(user.userid)">Info</button></td>
-       </tr>
-     </tbody>
-   </table>
-<h2>Roles</h2>
-<table class="table">
-       <thead>
-               <tr>
-                       <th>RoleID</th>
-                       <th>Name</th>
-                       <th>Description</th>
-                       <th>Domain</th>
-                       <!-- <th>Actions</th> -->
-               </tr>
-       </thead>
-       <tbody>
-               <tr ng-repeat="role in roles">
-                       <td>{{role.roleid}}</td>
-                       <td>{{role.name}}</td>
-                       <td>{{role.description}}</td>
-                       <td>{{role.domainid}}</td>
-                       <!-- <td><button class="btn btn-sm btn-success">Info</button></td> -->
-               </tr>
-       </tbody>
-</table>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/templates/userDetails.html b/sdnr/wireless-transport/code-Carbon-SR1/ux/security/security-module/src/main/resources/security/src/templates/userDetails.html
deleted file mode 100644 (file)
index 5589263..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<div class="modal-header">
-       <h3 class="modal-title" id="modal-title" style="color: #333;">{{ vm.userid }}</h3>
-</div>
-<div class="modal-body" id="modal-body">
-  <div><b>Roles</b></div>
-  <ul>
-    <li ng-repeat="role in vm.roles">{{ role.name }}</li>
-  </ul>
-       
-</div>
-<div class="modal-footer">
-       <button class="btn btn-primary" type="button" ng-click="vm.ok()">OK</button>
-       <button class="btn btn-warning" type="button" ng-click="vm.cancel()">Cancel</button>
-</div>
\ No newline at end of file
diff --git a/sdnr/wireless-transport/code-Carbon-SR1/ux/ux-dev.sh b/sdnr/wireless-transport/code-Carbon-SR1/ux/ux-dev.sh
deleted file mode 100755 (executable)
index b34f871..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-#!/bin/bash
-
-# build ux
-mvn clean install -DskipTests
-
-# clean
-rm -rf ~/.m2/repository/com/highstreet/technologies/odl/app/closedLoopAutomation-karaf/
-rm -rf ~/.m2/repository/com/highstreet/technologies/odl/app/spectrum/scheduler-karaf/
-find ~/.m2/repository/org/opendaylight/mwtn/* -type d -name "*-module" -exec rm -rf {} \;
-find ~/.m2/repository/com/highstreet/* -type d -name "*-module" -exec rm -rf {} \;
-rm -rf ../dist/cache/schema/tailf*.yang
-rm -rf ../dist/cache/schema/yuma*.yang
-# rm -rf ../dist/data/log/*
-rm -rf ../dist/system/org/opendaylight/mwtn
-rm -rf ../dist/system/com/highstreet 
-
-# deploy
-cp -R ~/.m2/repository/org/opendaylight/mwtn ../dist/system/org/opendaylight 
-cp -R ~/.m2/repository/com/highstreet ../dist/system/com
-
-# uninstall bundles
-## declare array of bundleNames
-declare -a bundleNames=(
-    "ONF :: Wireless :: odlChat-bundle" 
-    "ONF :: Wireless :: help-bundle" 
-    "ONF :: Wireless :: mwtnLog-bundle" 
-    "ONF :: Wireless :: mwtnTest-bundle"
-    "ONF :: Wireless :: mwtnMediator-bundle"
-    "ONF :: Wireless :: mwtnEvents-bundle"
-    "ONF :: Wireless :: mwtnClosedLoop-bundle"
-    "ONF :: Wireless :: mwtnSpectrum-bundle"
-    "ONF :: Wireless :: mwtnCompare-bundle"
-    "ONF :: Wireless :: mwtnTdm-bundle"
-    "ONF :: Wireless :: mwtnTopology-bundle"
-    "ONF :: Wireless :: mwtnInventory-bundle"
-    "ONF :: Wireless :: mwtnPerformanceLink-bundle"
-    "ONF :: Wireless :: mwtnPerformanceHistory-bundle"
-    "ONF :: Wireless :: mwtnPerformanceCurrent-bundle"
-    "ONF :: Wireless :: mwtnFault-bundle"
-    "ONF :: Wireless :: mwtnBrowser-bundle"
-    "ONF :: Wireless :: otnBrowser-bundle"
-    "ONF :: Wireless :: ethService-bundle"
-    "ONF :: Wireless :: onapMso-bundle"
-    "ONF :: Wireless :: onapDcae-bundle"
-    "ONF :: Wireless :: onapAai-bundle"
-    "ONF :: Wireless :: mwtnConnect-bundle"
-    "ONF :: Wireless :: mwtnCommons-bundle"
-)
-
-## execute bundle uninstall 
-names=""
-for bundleName in "${bundleNames[@]}"
-do
-   names+="\"$bundleName\" "
-done
-../dist/bin/client -u karaf "bundle:uninstall $names"
-
-# install bundles
-## declare array of bundleNames
-declare -a bundles=(
-    mvn:com.highstreet.technologies.odl.dlux/mwtnCommons-bundle/0.5.1-SNAPSHOT 
-    mvn:com.highstreet.technologies.odl.dlux/mwtnConnect-bundle/0.5.1-SNAPSHOT 
-
-    mvn:com.highstreet.technologies.odl.dlux/onapAai-bundle/0.5.1-SNAPSHOT 
-    mvn:com.highstreet.technologies.odl.dlux/onapDcae-bundle/0.5.1-SNAPSHOT 
-    mvn:com.highstreet.technologies.odl.dlux/onapMso-bundle/0.5.1-SNAPSHOT 
-
-    # mvn:com.highstreet.technologies.odl.dlux/ethService-bundle/0.5.1-SNAPSHOT
-    # mvn:com.highstreet.technologies.odl.dlux/otnBrowser-bundle/0.5.1-SNAPSHOT
-
-    mvn:com.highstreet.technologies.odl.dlux/mwtnFault-bundle/0.5.1-SNAPSHOT
-    mvn:com.highstreet.technologies.odl.dlux/mwtnBrowser-bundle/0.5.1-SNAPSHOT 
-    mvn:com.highstreet.technologies.odl.dlux/mwtnPerformanceCurrent-bundle/0.5.1-SNAPSHOT 
-    mvn:com.highstreet.technologies.odl.dlux/mwtnPerformanceHistory-bundle/0.5.1-SNAPSHOT 
-    mvn:com.highstreet.technologies.odl.dlux/mwtnPerformanceLink-bundle/0.5.1-SNAPSHOT
-    mvn:com.highstreet.technologies.odl.dlux/mwtnInventory-bundle/0.5.1-SNAPSHOT 
-    mvn:com.highstreet.technologies.odl.dlux/mwtnTopology-bundle/0.5.1-SNAPSHOT 
-    # mvn:com.highstreet.technologies.odl.dlux/mwtnTdm-bundle/0.5.1-SNAPSHOT 
-    # mvn:com.highstreet.technologies.odl.dlux/mwtnCompare-bundle/0.5.1-SNAPSHOT 
-    # mvn:cn.com.zte.odl.dlux/mwtnSpectrum-bundle/0.5.1-SNAPSHOT
-    # mvn:com.highstreet.technologies.odl.dlux/mwtnClosedLoop-bundle/0.5.1-SNAPSHOT 
-    # mvn:com.highstreet.technologies.odl.dlux/mwtnEvents-bundle/0.5.1-SNAPSHOT 
-    # mvn:com.highstreet.technologies.odl.dlux/mwtnTest-bundle/0.5.1-SNAPSHOT
-    mvn:com.highstreet.technologies.odl.dlux/mwtnMediator-bundle/0.5.1-SNAPSHOT
-    mvn:com.highstreet.technologies.odl.dlux/help-bundle/0.5.1-SNAPSHOT
-    # mvn:com.highstreet.technologies.odl.dlux/mwtnLog-bundle/0.5.1-SNAPSHOT 
-    # mvn:com.highstreet.technologies.odl.dlux/odlChat-bundle/0.5.1-SNAPSHOT
-)
-
-## execute bundle uninstall 
-bundleMvns=""
-for bundle in "${bundles[@]}"
-do
-   bundleMvns+="$bundle "
-done
-../dist/bin/client -u karaf "bundle:install -s $bundleMvns"
-
-# open brwoser
-x-www-browser http://localhost:8181/index.html
-
-# remove target folders for easy search functionality
-mvn clean
-find * -type d -name "target-ide" -exec rm -rf {} \;
\ No newline at end of file